From 7a23e1e2e82fe8fa2bb03a3931587aea692d7ae7 Mon Sep 17 00:00:00 2001 From: Benjamin Pilosov <79300734+bpilosov@users.noreply.github.com> Date: Sat, 3 Dec 2022 22:19:30 -0500 Subject: [PATCH 1/2] Added congestion control support --- examples/client.py | 1 + iperf3/iperf3.py | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/examples/client.py b/examples/client.py index 6407dfa..31269f3 100755 --- a/examples/client.py +++ b/examples/client.py @@ -6,6 +6,7 @@ client.duration = 1 client.server_hostname = '127.0.0.1' client.port = 5201 +client.congestion_control = "bbr" print('Connecting to {0}:{1}'.format(client.server_hostname, client.port)) result = client.run() diff --git a/iperf3/iperf3.py b/iperf3/iperf3.py index c47dd67..88f4c38 100755 --- a/iperf3/iperf3.py +++ b/iperf3/iperf3.py @@ -186,6 +186,10 @@ def __init__(self, self.lib.iperf_run_server.argtypes = (c_void_p,) self.lib.iperf_reset_test.restype = None self.lib.iperf_reset_test.argtypes = (c_void_p,) + self.lib.iperf_get_test_congestion_control.restype = c_char_p + self.lib.iperf_get_test_congestion_control.argtypes = (c_void_p,) + self.lib.iperf_set_test_congestion_control.restype = None + self.lib.iperf_set_test_congestion_control.argtypes = (c_void_p, c_char_p) try: # Only available from iperf v3.1 and onwards @@ -606,6 +610,22 @@ def reverse(self, enabled): self._reverse = enabled + @property + def congestion_control(self): + """Enables different TCP congestion control algorithms + + :rtype: String + """ + return self._congestion_control + + @congestion_control.setter + def congestion_control(self, cc: str): + self.lib.iperf_set_test_congestion_control( + self._test, + c_char_p(cc.encode('utf-8')) + ) + self._congestion_control = cc + def run(self): """Run the current test client. From 8d2d71717734ecf2898081ea0096538ed050dc28 Mon Sep 17 00:00:00 2001 From: Benjamin Pilosov <79300734+bpilosov@users.noreply.github.com> Date: Mon, 5 Dec 2022 19:49:27 -0500 Subject: [PATCH 2/2] Added extra data support --- examples/client.py | 2 ++ iperf3/iperf3.py | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/examples/client.py b/examples/client.py index 31269f3..38ca514 100755 --- a/examples/client.py +++ b/examples/client.py @@ -7,9 +7,11 @@ client.server_hostname = '127.0.0.1' client.port = 5201 client.congestion_control = "bbr" +client.extra_data = "test data" print('Connecting to {0}:{1}'.format(client.server_hostname, client.port)) result = client.run() +print(result) if result.error: print(result.error) diff --git a/iperf3/iperf3.py b/iperf3/iperf3.py index 88f4c38..d4dd730 100755 --- a/iperf3/iperf3.py +++ b/iperf3/iperf3.py @@ -190,6 +190,10 @@ def __init__(self, self.lib.iperf_get_test_congestion_control.argtypes = (c_void_p,) self.lib.iperf_set_test_congestion_control.restype = None self.lib.iperf_set_test_congestion_control.argtypes = (c_void_p, c_char_p) + self.lib.iperf_get_test_extra_data.restype = c_char_p + self.lib.iperf_get_test_extra_data.argtypes = (c_void_p,) + self.lib.iperf_set_test_extra_data.restype = None + self.lib.iperf_set_test_extra_data.argtypes = (c_void_p, c_char_p) try: # Only available from iperf v3.1 and onwards @@ -616,6 +620,7 @@ def congestion_control(self): :rtype: String """ + self._congestion_control = self.lib.iperf_get_test_congestion_control(self._test) return self._congestion_control @congestion_control.setter @@ -626,6 +631,23 @@ def congestion_control(self, cc: str): ) self._congestion_control = cc + @property + def extra_data(self): + """Enables extra-data String field to be included in json output + + :rtype: String + """ + self._extra_data = self.lib.iperf_get_test_extra_data(self._test) + return self._extra_data + + @extra_data.setter + def extra_data(self, dat: str): + self.lib.iperf_set_test_extra_data( + self._test, + c_char_p(dat.encode('utf-8')) + ) + self._extra_data = dat + def run(self): """Run the current test client.