diff options
| author | Maxime Ripard <[email protected]> | 2024-07-04 15:19:33 +0200 |
|---|---|---|
| committer | Maxime Ripard <[email protected]> | 2024-07-04 15:19:33 +0200 |
| commit | afeea2758b4f1210361ce2a91d8fa3e7df606ad2 (patch) | |
| tree | 969164f4e52fac6d4ec7d275540e702375e80950 /tools/testing/selftests/drivers/net/lib/py/load.py | |
| parent | 539d33b5783804f22a62bd62ff463dfd1cef4265 (diff) | |
| parent | 896868eded124059023be0af92d68cdaf9b4de70 (diff) | |
Merge drm-misc-next-2024-07-04 into drm-misc-next-fixes
Let's start the drm-misc-next-fixes cycle.
Signed-off-by: Maxime Ripard <[email protected]>
Diffstat (limited to 'tools/testing/selftests/drivers/net/lib/py/load.py')
| -rw-r--r-- | tools/testing/selftests/drivers/net/lib/py/load.py | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tools/testing/selftests/drivers/net/lib/py/load.py b/tools/testing/selftests/drivers/net/lib/py/load.py new file mode 100644 index 000000000000..abdb677bdb1c --- /dev/null +++ b/tools/testing/selftests/drivers/net/lib/py/load.py @@ -0,0 +1,41 @@ +# SPDX-License-Identifier: GPL-2.0 + +import time + +from lib.py import ksft_pr, cmd, ip, rand_port, wait_port_listen + +class GenerateTraffic: + def __init__(self, env): + env.require_cmd("iperf3", remote=True) + + self.env = env + + port = rand_port() + self._iperf_server = cmd(f"iperf3 -s -p {port}", background=True) + wait_port_listen(port) + time.sleep(0.1) + self._iperf_client = cmd(f"iperf3 -c {env.addr} -P 16 -p {port} -t 86400", + background=True, host=env.remote) + + # Wait for traffic to ramp up + pkt = ip("-s link show dev " + env.ifname, json=True)[0]["stats64"]["rx"]["packets"] + for _ in range(50): + time.sleep(0.1) + now = ip("-s link show dev " + env.ifname, json=True)[0]["stats64"]["rx"]["packets"] + if now - pkt > 1000: + return + pkt = now + self.stop(verbose=True) + raise Exception("iperf3 traffic did not ramp up") + + def stop(self, verbose=None): + self._iperf_client.process(terminate=True) + if verbose: + ksft_pr(">> Client:") + ksft_pr(self._iperf_client.stdout) + ksft_pr(self._iperf_client.stderr) + self._iperf_server.process(terminate=True) + if verbose: + ksft_pr(">> Server:") + ksft_pr(self._iperf_server.stdout) + ksft_pr(self._iperf_server.stderr) |