From f72ba67d081a728a13f76cb8d18e2b5b781d2a46 Mon Sep 17 00:00:00 2001 From: Julien Olivain Date: Mon, 5 Feb 2024 22:48:37 +0100 Subject: [PATCH] support/testing: netcat: improve test robustness Under some conditions (mostly slow execution due to test host load), the netcat runtime test can randomly fail. This is due to several facts: - the sleep time between the server and client is too short, - the use of netcat option -c could close the connection before the server could receive all the data. This commit improves the test robustness by increasing the sleep time, and by reducing the amount of transferred data (from 1MB of random data, to a simpler string of few bytes). Also, to make sure netcat cannot wait on DNS resolution, this commit also adds the -n option. Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6093854664 Signed-off-by: Julien Olivain Signed-off-by: Romain Naour --- support/testing/tests/package/test_netcat.py | 21 ++++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/support/testing/tests/package/test_netcat.py b/support/testing/tests/package/test_netcat.py index b3efa4c40b..88d58a72f3 100644 --- a/support/testing/tests/package/test_netcat.py +++ b/support/testing/tests/package/test_netcat.py @@ -22,20 +22,19 @@ class TestNetCat(infra.basetest.BRTest): self.assertRunOk("nc --version") - in_file = "input.bin" - out_file = "output.bin" + msg = "Hello Buildroot!" + out_file = "output.txt" port = 12345 - cmd = f"dd if=/dev/urandom of={in_file} bs=1k count=1k" + cmd = f"nc -n -l -p {port} > {out_file} 2> /dev/null &" self.assertRunOk(cmd) - cmd = f"nc -l -p {port} > {out_file} &" + time.sleep(5) + + cmd = f"echo '{msg}' | nc -n -c 127.0.0.1 {port}" self.assertRunOk(cmd) - time.sleep(1) - - cmd = f"cat {in_file} | nc -c 127.0.0.1 {port}" - self.assertRunOk(cmd) - - cmd = f"cmp {in_file} {out_file}" - self.assertRunOk(cmd) + cmd = f"cat {out_file}" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0) + self.assertEqual(out[0], msg)