{"action":"closed","number":780,"pull_request":{"url":"https://api.github.com/repos/esnet/iperf/pulls/780","id":207535681,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA3NTM1Njgx","html_url":"https://github.com/esnet/iperf/pull/780","diff_url":"https://github.com/esnet/iperf/pull/780.diff","patch_url":"https://github.com/esnet/iperf/pull/780.patch","issue_url":"https://api.github.com/repos/esnet/iperf/issues/780","number":780,"state":"closed","locked":false,"title":"Bidirect mode implementation","user":{"login":"LikHait","id":22346713,"node_id":"MDQ6VXNlcjIyMzQ2NzEz","avatar_url":"https://avatars1.githubusercontent.com/u/22346713?v=4","gravatar_id":"","url":"https://api.github.com/users/LikHait","html_url":"https://github.com/LikHait","followers_url":"https://api.github.com/users/LikHait/followers","following_url":"https://api.github.com/users/LikHait/following{/other_user}","gists_url":"https://api.github.com/users/LikHait/gists{/gist_id}","starred_url":"https://api.github.com/users/LikHait/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LikHait/subscriptions","organizations_url":"https://api.github.com/users/LikHait/orgs","repos_url":"https://api.github.com/users/LikHait/repos","events_url":"https://api.github.com/users/LikHait/events{/privacy}","received_events_url":"https://api.github.com/users/LikHait/received_events","type":"User","site_admin":false},"body":"Aquantia actively uses iperf3 for our AQC 10G products verification and testing.\r\nMust have testing in our case is bidirect traffic runs. We suffer from iperf3 missing this feature builtin.\r\n\r\nHere is our proposal on implementation of --bidir (bidirectional) option for iperf.\r\n\r\nWe've tried to minimize the impact and reuse existing iperf3 apis an maximum.\r\n\r\nShort overview of the solution:\r\n\r\n* iperf_test: `int sender` is replaced by `enum iperf_mode mode ` with 3 states:\r\n```\r\nenum iperf_mode {\r\n\tSENDER = 1,\r\n\tRECEIVER = 0,\r\n\tBIDIRECTIONAL = -1\r\n};\r\n```\r\n\r\n* iperf_stream: add new flag \"sender\"\r\n\r\n* Now streams are created depending on mode:\r\n    * stream.sender == 1 if test->mode is SENDER\r\n    * stream.sender == 0 if test->mode is RECEIVER\r\n    * if test->mode is BIDIRECTIONAL we double number of streams, half has `sender == 1` and half `sender == 0`. In future it'll be possible to create asymmetric bidir flows.\r\n\r\n* `iperf_new_stream (struct iperf_test * test, int s)` changed to\r\n   `iperf_new_stream (struct iperf_test * test, int s, int sender)`\r\n\r\n* Summary information output is changed for each type of iperf_stream (senders and receivers)\r\n\r\n--------------------\r\n### Examples\r\n\r\n `iperf3 -c localhost --bidir -P 4`\r\n\r\nInterval output:\r\n```\r\n[  5][TX-C]   9.00-10.00  sec   584 MBytes  4.90 Gbits/sec    0   1.87 MBytes       \r\n[  7][TX-C]   9.00-10.00  sec   584 MBytes  4.90 Gbits/sec    0   1.87 MBytes       \r\n[  9][TX-C]   9.00-10.00  sec   584 MBytes  4.90 Gbits/sec    0   1.87 MBytes       \r\n[ 11][TX-C]   9.00-10.00  sec   582 MBytes  4.89 Gbits/sec    0   2.12 MBytes       \r\n[SUM][TX-C]   9.00-10.00  sec  2.28 GBytes  19.6 Gbits/sec    0             \r\n[ 13][RX-C]   9.00-10.00  sec   453 MBytes  3.80 Gbits/sec                  \r\n[ 15][RX-C]   9.00-10.00  sec   453 MBytes  3.80 Gbits/sec                  \r\n[ 17][RX-C]   9.00-10.00  sec   453 MBytes  3.80 Gbits/sec                  \r\n[ 19][RX-C]   9.00-10.00  sec   453 MBytes  3.80 Gbits/sec                  \r\n[SUM][RX-C]   9.00-10.00  sec  1.77 GBytes  15.2 Gbits/sec     \r\n```  \r\n\r\nSum output:          \r\n```\r\n[ ID][Role] Interval           Transfer     Bitrate         Retr\r\n[  5][TX-C]   0.00-10.00  sec  5.83 GBytes  5.01 Gbits/sec    0             sender\r\n[  5][TX-C]   0.00-10.02  sec  5.83 GBytes  5.00 Gbits/sec                  receiver\r\n[  7][TX-C]   0.00-10.00  sec  5.83 GBytes  5.01 Gbits/sec    0             sender\r\n[  7][TX-C]   0.00-10.02  sec  5.83 GBytes  5.00 Gbits/sec                  receiver\r\n[  9][TX-C]   0.00-10.00  sec  5.83 GBytes  5.01 Gbits/sec    0             sender\r\n[  9][TX-C]   0.00-10.02  sec  5.83 GBytes  5.00 Gbits/sec                  receiver\r\n[ 11][TX-C]   0.00-10.00  sec  5.83 GBytes  5.01 Gbits/sec    0             sender\r\n[ 11][TX-C]   0.00-10.02  sec  5.83 GBytes  4.99 Gbits/sec                  receiver\r\n[SUM][TX-C]   0.00-10.00  sec  23.3 GBytes  20.0 Gbits/sec    0             sender\r\n[SUM][TX-C]   0.00-10.02  sec  23.3 GBytes  20.0 Gbits/sec                  receiver\r\n[ 13][RX-C]   0.00-10.00  sec  4.62 GBytes  3.96 Gbits/sec    1             sender\r\n[ 13][RX-C]   0.00-10.02  sec  4.61 GBytes  3.95 Gbits/sec                  receiver\r\n[ 15][RX-C]   0.00-10.00  sec  4.62 GBytes  3.96 Gbits/sec    1             sender\r\n[ 15][RX-C]   0.00-10.02  sec  4.61 GBytes  3.95 Gbits/sec                  receiver\r\n[ 17][RX-C]   0.00-10.00  sec  4.62 GBytes  3.96 Gbits/sec    1             sender\r\n[ 17][RX-C]   0.00-10.02  sec  4.61 GBytes  3.95 Gbits/sec                  receiver\r\n[ 19][RX-C]   0.00-10.00  sec  4.62 GBytes  3.96 Gbits/sec    1             sender\r\n[ 19][RX-C]   0.00-10.02  sec  4.61 GBytes  3.95 Gbits/sec                  receiver\r\n[SUM][RX-C]   0.00-10.00  sec  18.5 GBytes  15.9 Gbits/sec    4             sender\r\n[SUM][RX-C]   0.00-10.02  sec  18.4 GBytes  15.8 Gbits/sec                  receiver\r\n```\r\n\r\n--------------------\r\n### Comparison with legacy runs\r\n\r\nWe did a verification on our Aquantia AQC107 10G NICs.\r\nWe compared legacy usecase (using two servers for bidirect) with `--bidir`.\r\n\r\n#### Two servers run:\r\niperf3 -c server -R -P 4 -t 100\r\n```\r\n[ ID] Interval           Transfer     Bitrate         Retr\r\n[SUM]   0.00-100.03 sec   109 GBytes  9.38 Gbits/sec    0             sender\r\n[SUM]   0.00-100.00 sec   109 GBytes  9.38 Gbits/sec                  receiver\r\n```\r\n\r\niperf3 -c 169.254.177.210 -p 5202 -P 4 -t 100 \r\n```\r\n[ ID] Interval           Transfer     Bitrate         Retr\r\n[SUM]   0.00-100.00 sec   109 GBytes  9.39 Gbits/sec    0             sender\r\n[SUM]   0.00-100.03 sec   109 GBytes  9.39 Gbits/sec                  receiver\r\n```\r\n\r\n#### New, bidir run\r\niperf3 -c 169.254.177.210 --bidir -P 4 -t 100\r\n```\r\n[ ID][Role] Interval           Transfer     Bitrate         Retr\r\n[SUM][TX-C]   0.00-100.00 sec   109 GBytes  9.37 Gbits/sec    0             sender\r\n[SUM][TX-C]   0.00-100.03 sec   109 GBytes  9.37 Gbits/sec                  receiver\r\n[SUM][RX-C]   0.00-100.00 sec   109 GBytes  9.39 Gbits/sec    1             sender\r\n[SUM][RX-C]   0.00-100.03 sec   109 GBytes  9.39 Gbits/sec                  receiver\r\n```\r\n\r\nWe've added an extra column in output, Role: `[TX-C]`. This helps to distinguish results data.\r\nSame data is available in updated json output.\r\nCC @cail ","created_at":"2018-08-10T08:03:52Z","updated_at":"2018-12-13T20:59:03Z","closed_at":"2018-12-13T20:59:03Z","merged_at":"2018-12-13T20:59:03Z","merge_commit_sha":"0778f04c9864fc7e4c91eee05cb51ed08b64e7ee","assignee":{"login":"bmah888","id":6485757,"node_id":"MDQ6VXNlcjY0ODU3NTc=","avatar_url":"https://avatars3.githubusercontent.com/u/6485757?v=4","gravatar_id":"","url":"https://api.github.com/users/bmah888","html_url":"https://github.com/bmah888","followers_url":"https://api.github.com/users/bmah888/followers","following_url":"https://api.github.com/users/bmah888/following{/other_user}","gists_url":"https://api.github.com/users/bmah888/gists{/gist_id}","starred_url":"https://api.github.com/users/bmah888/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bmah888/subscriptions","organizations_url":"https://api.github.com/users/bmah888/orgs","repos_url":"https://api.github.com/users/bmah888/repos","events_url":"https://api.github.com/users/bmah888/events{/privacy}","received_events_url":"https://api.github.com/users/bmah888/received_events","type":"User","site_admin":false},"assignees":[{"login":"bmah888","id":6485757,"node_id":"MDQ6VXNlcjY0ODU3NTc=","avatar_url":"https://avatars3.githubusercontent.com/u/6485757?v=4","gravatar_id":"","url":"https://api.github.com/users/bmah888","html_url":"https://github.com/bmah888","followers_url":"https://api.github.com/users/bmah888/followers","following_url":"https://api.github.com/users/bmah888/following{/other_user}","gists_url":"https://api.github.com/users/bmah888/gists{/gist_id}","starred_url":"https://api.github.com/users/bmah888/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bmah888/subscriptions","organizations_url":"https://api.github.com/users/bmah888/orgs","repos_url":"https://api.github.com/users/bmah888/repos","events_url":"https://api.github.com/users/bmah888/events{/privacy}","received_events_url":"https://api.github.com/users/bmah888/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":82667843,"node_id":"MDU6TGFiZWw4MjY2Nzg0Mw==","url":"https://api.github.com/repos/esnet/iperf/labels/enhancement","name":"enhancement","color":"84b6eb","default":true}],"milestone":null,"commits_url":"https://api.github.com/repos/esnet/iperf/pulls/780/commits","review_comments_url":"https://api.github.com/repos/esnet/iperf/pulls/780/comments","review_comment_url":"https://api.github.com/repos/esnet/iperf/pulls/comments{/number}","comments_url":"https://api.github.com/repos/esnet/iperf/issues/780/comments","statuses_url":"https://api.github.com/repos/esnet/iperf/statuses/873c889bce1233e0e958b7338eac7eb1b333e7f2","head":{"label":"Aquantia:bidirectional","ref":"bidirectional","sha":"873c889bce1233e0e958b7338eac7eb1b333e7f2","user":{"login":"Aquantia","id":25504745,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI1NTA0NzQ1","avatar_url":"https://avatars3.githubusercontent.com/u/25504745?v=4","gravatar_id":"","url":"https://api.github.com/users/Aquantia","html_url":"https://github.com/Aquantia","followers_url":"https://api.github.com/users/Aquantia/followers","following_url":"https://api.github.com/users/Aquantia/following{/other_user}","gists_url":"https://api.github.com/users/Aquantia/gists{/gist_id}","starred_url":"https://api.github.com/users/Aquantia/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Aquantia/subscriptions","organizations_url":"https://api.github.com/users/Aquantia/orgs","repos_url":"https://api.github.com/users/Aquantia/repos","events_url":"https://api.github.com/users/Aquantia/events{/privacy}","received_events_url":"https://api.github.com/users/Aquantia/received_events","type":"Organization","site_admin":false},"repo":{"id":111897249,"node_id":"MDEwOlJlcG9zaXRvcnkxMTE4OTcyNDk=","name":"iperf","full_name":"Aquantia/iperf","private":false,"owner":{"login":"Aquantia","id":25504745,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI1NTA0NzQ1","avatar_url":"https://avatars3.githubusercontent.com/u/25504745?v=4","gravatar_id":"","url":"https://api.github.com/users/Aquantia","html_url":"https://github.com/Aquantia","followers_url":"https://api.github.com/users/Aquantia/followers","following_url":"https://api.github.com/users/Aquantia/following{/other_user}","gists_url":"https://api.github.com/users/Aquantia/gists{/gist_id}","starred_url":"https://api.github.com/users/Aquantia/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Aquantia/subscriptions","organizations_url":"https://api.github.com/users/Aquantia/orgs","repos_url":"https://api.github.com/users/Aquantia/repos","events_url":"https://api.github.com/users/Aquantia/events{/privacy}","received_events_url":"https://api.github.com/users/Aquantia/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/Aquantia/iperf","description":"iperf3:  A TCP, UDP, and SCTP network bandwidth measurement tool","fork":true,"url":"https://api.github.com/repos/Aquantia/iperf","forks_url":"https://api.github.com/repos/Aquantia/iperf/forks","keys_url":"https://api.github.com/repos/Aquantia/iperf/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Aquantia/iperf/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Aquantia/iperf/teams","hooks_url":"https://api.github.com/repos/Aquantia/iperf/hooks","issue_events_url":"https://api.github.com/repos/Aquantia/iperf/issues/events{/number}","events_url":"https://api.github.com/repos/Aquantia/iperf/events","assignees_url":"https://api.github.com/repos/Aquantia/iperf/assignees{/user}","branches_url":"https://api.github.com/repos/Aquantia/iperf/branches{/branch}","tags_url":"https://api.github.com/repos/Aquantia/iperf/tags","blobs_url":"https://api.github.com/repos/Aquantia/iperf/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Aquantia/iperf/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Aquantia/iperf/git/refs{/sha}","trees_url":"https://api.github.com/repos/Aquantia/iperf/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Aquantia/iperf/statuses/{sha}","languages_url":"https://api.github.com/repos/Aquantia/iperf/languages","stargazers_url":"https://api.github.com/repos/Aquantia/iperf/stargazers","contributors_url":"https://api.github.com/repos/Aquantia/iperf/contributors","subscribers_url":"https://api.github.com/repos/Aquantia/iperf/subscribers","subscription_url":"https://api.github.com/repos/Aquantia/iperf/subscription","commits_url":"https://api.github.com/repos/Aquantia/iperf/commits{/sha}","git_commits_url":"https://api.github.com/repos/Aquantia/iperf/git/commits{/sha}","comments_url":"https://api.github.com/repos/Aquantia/iperf/comments{/number}","issue_comment_url":"https://api.github.com/repos/Aquantia/iperf/issues/comments{/number}","contents_url":"https://api.github.com/repos/Aquantia/iperf/contents/{+path}","compare_url":"https://api.github.com/repos/Aquantia/iperf/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Aquantia/iperf/merges","archive_url":"https://api.github.com/repos/Aquantia/iperf/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Aquantia/iperf/downloads","issues_url":"https://api.github.com/repos/Aquantia/iperf/issues{/number}","pulls_url":"https://api.github.com/repos/Aquantia/iperf/pulls{/number}","milestones_url":"https://api.github.com/repos/Aquantia/iperf/milestones{/number}","notifications_url":"https://api.github.com/repos/Aquantia/iperf/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Aquantia/iperf/labels{/name}","releases_url":"https://api.github.com/repos/Aquantia/iperf/releases{/id}","deployments_url":"https://api.github.com/repos/Aquantia/iperf/deployments","created_at":"2017-11-24T08:57:55Z","updated_at":"2018-12-12T13:13:38Z","pushed_at":"2018-12-12T13:13:33Z","git_url":"git://github.com/Aquantia/iperf.git","ssh_url":"git@github.com:Aquantia/iperf.git","clone_url":"https://github.com/Aquantia/iperf.git","svn_url":"https://github.com/Aquantia/iperf","homepage":"","size":10981,"stargazers_count":2,"watchers_count":2,"language":"C","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":4,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":4,"watchers":2,"default_branch":"master"}},"base":{"label":"esnet:master","ref":"master","sha":"a68171340fe2ee4fee8585e7a0c8378838d90103","user":{"login":"esnet","id":1566018,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE1NjYwMTg=","avatar_url":"https://avatars2.githubusercontent.com/u/1566018?v=4","gravatar_id":"","url":"https://api.github.com/users/esnet","html_url":"https://github.com/esnet","followers_url":"https://api.github.com/users/esnet/followers","following_url":"https://api.github.com/users/esnet/following{/other_user}","gists_url":"https://api.github.com/users/esnet/gists{/gist_id}","starred_url":"https://api.github.com/users/esnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/esnet/subscriptions","organizations_url":"https://api.github.com/users/esnet/orgs","repos_url":"https://api.github.com/users/esnet/repos","events_url":"https://api.github.com/users/esnet/events{/privacy}","received_events_url":"https://api.github.com/users/esnet/received_events","type":"Organization","site_admin":false},"repo":{"id":17183871,"node_id":"MDEwOlJlcG9zaXRvcnkxNzE4Mzg3MQ==","name":"iperf","full_name":"esnet/iperf","private":false,"owner":{"login":"esnet","id":1566018,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE1NjYwMTg=","avatar_url":"https://avatars2.githubusercontent.com/u/1566018?v=4","gravatar_id":"","url":"https://api.github.com/users/esnet","html_url":"https://github.com/esnet","followers_url":"https://api.github.com/users/esnet/followers","following_url":"https://api.github.com/users/esnet/following{/other_user}","gists_url":"https://api.github.com/users/esnet/gists{/gist_id}","starred_url":"https://api.github.com/users/esnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/esnet/subscriptions","organizations_url":"https://api.github.com/users/esnet/orgs","repos_url":"https://api.github.com/users/esnet/repos","events_url":"https://api.github.com/users/esnet/events{/privacy}","received_events_url":"https://api.github.com/users/esnet/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/esnet/iperf","description":"iperf3:  A TCP, UDP, and SCTP network bandwidth measurement tool","fork":false,"url":"https://api.github.com/repos/esnet/iperf","forks_url":"https://api.github.com/repos/esnet/iperf/forks","keys_url":"https://api.github.com/repos/esnet/iperf/keys{/key_id}","collaborators_url":"https://api.github.com/repos/esnet/iperf/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/esnet/iperf/teams","hooks_url":"https://api.github.com/repos/esnet/iperf/hooks","issue_events_url":"https://api.github.com/repos/esnet/iperf/issues/events{/number}","events_url":"https://api.github.com/repos/esnet/iperf/events","assignees_url":"https://api.github.com/repos/esnet/iperf/assignees{/user}","branches_url":"https://api.github.com/repos/esnet/iperf/branches{/branch}","tags_url":"https://api.github.com/repos/esnet/iperf/tags","blobs_url":"https://api.github.com/repos/esnet/iperf/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/esnet/iperf/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/esnet/iperf/git/refs{/sha}","trees_url":"https://api.github.com/repos/esnet/iperf/git/trees{/sha}","statuses_url":"https://api.github.com/repos/esnet/iperf/statuses/{sha}","languages_url":"https://api.github.com/repos/esnet/iperf/languages","stargazers_url":"https://api.github.com/repos/esnet/iperf/stargazers","contributors_url":"https://api.github.com/repos/esnet/iperf/contributors","subscribers_url":"https://api.github.com/repos/esnet/iperf/subscribers","subscription_url":"https://api.github.com/repos/esnet/iperf/subscription","commits_url":"https://api.github.com/repos/esnet/iperf/commits{/sha}","git_commits_url":"https://api.github.com/repos/esnet/iperf/git/commits{/sha}","comments_url":"https://api.github.com/repos/esnet/iperf/comments{/number}","issue_comment_url":"https://api.github.com/repos/esnet/iperf/issues/comments{/number}","contents_url":"https://api.github.com/repos/esnet/iperf/contents/{+path}","compare_url":"https://api.github.com/repos/esnet/iperf/compare/{base}...{head}","merges_url":"https://api.github.com/repos/esnet/iperf/merges","archive_url":"https://api.github.com/repos/esnet/iperf/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/esnet/iperf/downloads","issues_url":"https://api.github.com/repos/esnet/iperf/issues{/number}","pulls_url":"https://api.github.com/repos/esnet/iperf/pulls{/number}","milestones_url":"https://api.github.com/repos/esnet/iperf/milestones{/number}","notifications_url":"https://api.github.com/repos/esnet/iperf/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/esnet/iperf/labels{/name}","releases_url":"https://api.github.com/repos/esnet/iperf/releases{/id}","deployments_url":"https://api.github.com/repos/esnet/iperf/deployments","created_at":"2014-02-25T18:42:52Z","updated_at":"2018-12-13T02:52:07Z","pushed_at":"2018-12-13T20:59:03Z","git_url":"git://github.com/esnet/iperf.git","ssh_url":"git@github.com:esnet/iperf.git","clone_url":"https://github.com/esnet/iperf.git","svn_url":"https://github.com/esnet/iperf","homepage":"","size":11099,"stargazers_count":1925,"watchers_count":1925,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":524,"mirror_url":null,"archived":false,"open_issues_count":91,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":524,"open_issues":91,"watchers":1925,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/esnet/iperf/pulls/780"},"html":{"href":"https://github.com/esnet/iperf/pull/780"},"issue":{"href":"https://api.github.com/repos/esnet/iperf/issues/780"},"comments":{"href":"https://api.github.com/repos/esnet/iperf/issues/780/comments"},"review_comments":{"href":"https://api.github.com/repos/esnet/iperf/pulls/780/comments"},"review_comment":{"href":"https://api.github.com/repos/esnet/iperf/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/esnet/iperf/pulls/780/commits"},"statuses":{"href":"https://api.github.com/repos/esnet/iperf/statuses/873c889bce1233e0e958b7338eac7eb1b333e7f2"}},"author_association":"CONTRIBUTOR","merged":true,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":{"login":"bmah888","id":6485757,"node_id":"MDQ6VXNlcjY0ODU3NTc=","avatar_url":"https://avatars3.githubusercontent.com/u/6485757?v=4","gravatar_id":"","url":"https://api.github.com/users/bmah888","html_url":"https://github.com/bmah888","followers_url":"https://api.github.com/users/bmah888/followers","following_url":"https://api.github.com/users/bmah888/following{/other_user}","gists_url":"https://api.github.com/users/bmah888/gists{/gist_id}","starred_url":"https://api.github.com/users/bmah888/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bmah888/subscriptions","organizations_url":"https://api.github.com/users/bmah888/orgs","repos_url":"https://api.github.com/users/bmah888/repos","events_url":"https://api.github.com/users/bmah888/events{/privacy}","received_events_url":"https://api.github.com/users/bmah888/received_events","type":"User","site_admin":false},"comments":10,"review_comments":0,"maintainer_can_modify":false,"commits":50,"additions":836,"deletions":548,"changed_files":9}}
{"actor":{"display_login":"bmah888"}}