iperf3: Support using configuring UDP protocol

Change-Id: I0b3545847b01ae3d029881f243fea276f0fa39de
diff --git a/sysmocom/scenarios/cfg-iperf3-proto@.conf b/sysmocom/scenarios/cfg-iperf3-proto@.conf
new file mode 100644
index 0000000..8e2c350
--- /dev/null
+++ b/sysmocom/scenarios/cfg-iperf3-proto@.conf
@@ -0,0 +1,3 @@
+config:
+  iperf3cli:
+    protocol: ${param1}
diff --git a/sysmocom/suites/4g/iperf3_dl.py b/sysmocom/suites/4g/iperf3_dl.py
index d4fa649..bcc569a 100755
--- a/sysmocom/suites/4g/iperf3_dl.py
+++ b/sysmocom/suites/4g/iperf3_dl.py
@@ -1,17 +1,6 @@
 #!/usr/bin/env python3
 from osmo_gsm_tester.testenv import *
 
-def print_result_node(result, node_str):
-    sent = result['end']['sum_sent']
-    recv = result['end']['sum_received']
-    print("Result %s:" % node_str)
-    print("\tSEND: %d KB, %d kbps, %d seconds (%s retrans)" % (sent['bytes']/1000, sent['bits_per_second']/1000, sent['seconds'], str(sent.get('retransmits', 'unknown'))))
-    print("\tRECV: %d KB, %d kbps, %d seconds" % (recv['bytes']/1000, recv['bits_per_second']/1000, recv['seconds']))
-
-def print_results(cli_res, srv_res):
-    print_result_node(cli_res, 'client')
-    print_result_node(srv_res, 'server')
-
 epc = tenv.epc()
 enb = tenv.enb()
 ue = tenv.modem()
@@ -41,7 +30,9 @@
 print("Running iperf3 client to %s through %s" % (str(iperf3cli), ue.netns()))
 proc.launch_sync()
 iperf3srv.stop()
-print_results(iperf3cli.get_results(), iperf3srv.get_results())
+
+iperf3cli.print_results()
+iperf3srv.print_results(iperf3cli.proto() == iperf3cli.PROTO_UDP)
 
 max_rate = enb.ue_max_rate(downlink=True)
 res_str = ue.verify_metric(max_rate * 0.8, operation='avg', metric='dl_brate', criterion='gt')
diff --git a/sysmocom/suites/4g/iperf3_ul.py b/sysmocom/suites/4g/iperf3_ul.py
index 64d476b..a92a658 100755
--- a/sysmocom/suites/4g/iperf3_ul.py
+++ b/sysmocom/suites/4g/iperf3_ul.py
@@ -1,17 +1,6 @@
 #!/usr/bin/env python3
 from osmo_gsm_tester.testenv import *
 
-def print_result_node(result, node_str):
-    sent = result['end']['sum_sent']
-    recv = result['end']['sum_received']
-    print("Result %s:" % node_str)
-    print("\tSEND: %d KB, %d kbps, %d seconds (%s retrans)" % (sent['bytes']/1000, sent['bits_per_second']/1000, sent['seconds'], str(sent.get('retransmits', 'unknown'))))
-    print("\tRECV: %d KB, %d kbps, %d seconds" % (recv['bytes']/1000, recv['bits_per_second']/1000, recv['seconds']))
-
-def print_results(cli_res, srv_res):
-    print_result_node(cli_res, 'client')
-    print_result_node(srv_res, 'server')
-
 epc = tenv.epc()
 enb = tenv.enb()
 ue = tenv.modem()
@@ -41,7 +30,9 @@
 print("Running iperf3 client to %s through %s" % (str(iperf3cli), ue.netns()))
 proc.launch_sync()
 iperf3srv.stop()
-print_results(iperf3cli.get_results(), iperf3srv.get_results())
+
+iperf3cli.print_results()
+iperf3srv.print_results(iperf3cli.proto() == iperf3cli.PROTO_UDP)
 
 max_rate = enb.ue_max_rate(downlink=False)
 res_str = ue.verify_metric(max_rate * 0.8, operation='avg', metric='ul_brate', criterion='gt')
diff --git a/sysmocom/suites/gprs/lib/testlib.py b/sysmocom/suites/gprs/lib/testlib.py
index 636ee2b..765f463 100644
--- a/sysmocom/suites/gprs/lib/testlib.py
+++ b/sysmocom/suites/gprs/lib/testlib.py
@@ -1,21 +1,9 @@
 #!/usr/bin/env python3
 from osmo_gsm_tester.testenv import *
 
-def print_result_node(result, node_str):
-    try:
-        sent = result['end']['sum_sent']
-        recv = result['end']['sum_received']
-        print("Result %s:" % node_str)
-        print("\tSEND: %d KB, %d kbps, %d seconds (%s retrans)" % (sent['bytes']/1000, sent['bits_per_second']/1000, sent['seconds'], str(sent.get('retransmits', 'unknown'))))
-        print("\tRECV: %d KB, %d kbps, %d seconds" % (recv['bytes']/1000, recv['bits_per_second']/1000, recv['seconds']))
-    except Exception as e:
-        print("Exception while using iperf3 %s results: %r" % (node_str, repr(result)))
-        raise e
-
-
-def print_results(cli_res, srv_res):
-    print_result_node(cli_res, 'client')
-    print_result_node(srv_res, 'server')
+def print_results(cli, srv):
+        cli.print_results()
+        srv.print_results(cli.proto() == cli.PROTO_UDP)
 
 def run_iperf3_cli_parallel(iperf3clients, ms_li, ready_cb):
     assert len(iperf3clients) == len(ms_li)
@@ -114,7 +102,7 @@
     for i in range(num_ms):
         servers[i].stop()
         print("Results for %s through %r" % (str(servers[i]), repr(ms_li[i].tmp_ctx_id)))
-        print_results(clients[i].get_results(), servers[i].get_results())
+        print_results(clients[i], servers[i])
 
     for ms in ms_li:
         ms.deactivate_context(ms.tmp_ctx_id)