tests: iperf3: Support testing parallel iperf3 clients in test

Since tests running a single MS and several of them are really similar,
generic code handling the test for N concurrent iperf3 sessions is
writen an moved to testlib, and existing and new test use that code.

Change-Id: I57799fde49e6845379cca332eec0a1f70aaecd2b
diff --git a/src/osmo_gsm_tester/iperf3.py b/src/osmo_gsm_tester/iperf3.py
index 8f0cddb..55cb546 100644
--- a/src/osmo_gsm_tester/iperf3.py
+++ b/src/osmo_gsm_tester/iperf3.py
@@ -95,7 +95,7 @@
         self.server = iperf3srv
         self.suite_run = suite_run
 
-    def run_test(self, netns=None):
+    def prepare_test_proc(self, netns=None):
         self.log('Starting iperf3-client connecting to %s:%d' % (self.server.addr(), self.server.port()))
         self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name()))
 
@@ -110,6 +110,10 @@
             self.process = process.NetNSProcess(self.name(), self.run_dir, netns, popen_args, env={})
         else:
             self.process = process.Process(self.name(), self.run_dir, popen_args, env={})
+        return self.process
+
+    def run_test_sync(self, netns=None):
+        self.prepare_test_proc(netns)
         self.process.launch_sync()
         return self.get_results()