diff options
Diffstat (limited to 'tools/testing/selftests/drivers/net/lib/py')
| -rw-r--r-- | tools/testing/selftests/drivers/net/lib/py/load.py | 23 | 
1 files changed, 18 insertions, 5 deletions
| diff --git a/tools/testing/selftests/drivers/net/lib/py/load.py b/tools/testing/selftests/drivers/net/lib/py/load.py index d9c10613ae67..44151b7b1a24 100644 --- a/tools/testing/selftests/drivers/net/lib/py/load.py +++ b/tools/testing/selftests/drivers/net/lib/py/load.py @@ -1,5 +1,6 @@  # SPDX-License-Identifier: GPL-2.0 +import re  import time  from lib.py import ksft_pr, cmd, ip, rand_port, wait_port_listen @@ -10,12 +11,11 @@ class GenerateTraffic:          self.env = env -        if port is None: -            port = rand_port() -        self._iperf_server = cmd(f"iperf3 -s -1 -p {port}", background=True) -        wait_port_listen(port) +        self.port = rand_port() if port is None else port +        self._iperf_server = cmd(f"iperf3 -s -1 -p {self.port}", background=True) +        wait_port_listen(self.port)          time.sleep(0.1) -        self._iperf_client = cmd(f"iperf3 -c {env.addr} -P 16 -p {port} -t 86400", +        self._iperf_client = cmd(f"iperf3 -c {env.addr} -P 16 -p {self.port} -t 86400",                                   background=True, host=env.remote)          # Wait for traffic to ramp up @@ -56,3 +56,16 @@ class GenerateTraffic:              ksft_pr(">> Server:")              ksft_pr(self._iperf_server.stdout)              ksft_pr(self._iperf_server.stderr) +        self._wait_client_stopped() + +    def _wait_client_stopped(self, sleep=0.005, timeout=5): +        end = time.monotonic() + timeout + +        live_port_pattern = re.compile(fr":{self.port:04X} 0[^6] ") + +        while time.monotonic() < end: +            data = cmd("cat /proc/net/tcp*", host=self.env.remote).stdout +            if not live_port_pattern.search(data): +                return +            time.sleep(sleep) +        raise Exception(f"Waiting for client to stop timed out after {timeout}s") | 
