Message ID | 20240123215454.81191-1-ju.o@free.fr |
---|---|
State | Accepted |
Headers | show |
Series | [1/1] support/testing: add fping runtime test | expand |
>>>>> "Julien" == Julien Olivain <ju.o@free.fr> writes: > Signed-off-by: Julien Olivain <ju.o@free.fr> > --- > DEVELOPERS | 1 + > support/testing/tests/package/test_fping.py | 45 +++++++++++++++++++++ > 2 files changed, 46 insertions(+) > create mode 100644 support/testing/tests/package/test_fping.py > diff --git a/DEVELOPERS b/DEVELOPERS > index 9528837dd0..fa760cb3ed 100644 > --- a/DEVELOPERS > +++ b/DEVELOPERS > @@ -1769,6 +1769,7 @@ F: support/testing/tests/package/test_ddrescue/ > F: support/testing/tests/package/test_dos2unix.py > F: support/testing/tests/package/test_fluidsynth.py > F: support/testing/tests/package/test_fluidsynth/ > +F: support/testing/tests/package/test_fping.py > F: support/testing/tests/package/test_gawk.py > F: support/testing/tests/package/test_glslsandbox_player.py > F: support/testing/tests/package/test_glslsandbox_player/ > diff --git a/support/testing/tests/package/test_fping.py b/support/testing/tests/package/test_fping.py > new file mode 100644 > index 0000000000..58a1c92c0b > --- /dev/null > +++ b/support/testing/tests/package/test_fping.py > @@ -0,0 +1,45 @@ > +import os > +import time > + > +import infra.basetest > + > + > +class TestFping(infra.basetest.BRTest): > + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ > + """ > + BR2_PACKAGE_FPING=y > + BR2_TARGET_ROOTFS_CPIO=y > + # BR2_TARGET_ROOTFS_TAR is not set > + """ > + > + def test_run(self): > + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") > + self.emulator.boot(arch="armv5", > + kernel="builtin", > + options=["-initrd", cpio_file]) > + self.emulator.login() > + > + # Check the program can execute. > + self.assertRunOk("fping --version") > + > + # Fping v5.1 need to wait few seconds after a kernel booted > + # before starting. This sleep time can be removed when the > + # issue will be closed and the package updated. See: > + # https://github.com/schweikert/fping/issues/288 > + time.sleep(5) That's annoying, but indeed not much we can do about it. From the looks of it, the fping code initializes the timestamp to zero (using calloc) and then complains when (the delta from) CLOCK_REALTIME is less than 10s. The only thing we could do better is to take timeout_multiplier into consideration, so I multiplied with that and applied, thanks.
diff --git a/DEVELOPERS b/DEVELOPERS index 9528837dd0..fa760cb3ed 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1769,6 +1769,7 @@ F: support/testing/tests/package/test_ddrescue/ F: support/testing/tests/package/test_dos2unix.py F: support/testing/tests/package/test_fluidsynth.py F: support/testing/tests/package/test_fluidsynth/ +F: support/testing/tests/package/test_fping.py F: support/testing/tests/package/test_gawk.py F: support/testing/tests/package/test_glslsandbox_player.py F: support/testing/tests/package/test_glslsandbox_player/ diff --git a/support/testing/tests/package/test_fping.py b/support/testing/tests/package/test_fping.py new file mode 100644 index 0000000000..58a1c92c0b --- /dev/null +++ b/support/testing/tests/package/test_fping.py @@ -0,0 +1,45 @@ +import os +import time + +import infra.basetest + + +class TestFping(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_FPING=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # Check the program can execute. + self.assertRunOk("fping --version") + + # Fping v5.1 need to wait few seconds after a kernel booted + # before starting. This sleep time can be removed when the + # issue will be closed and the package updated. See: + # https://github.com/schweikert/fping/issues/288 + time.sleep(5) + + # Run 3 pings on localhost. + self.assertRunOk("fping -e -c 3 localhost") + + # Run pings on a local subnet and print statistics. + self.assertRunOk("fping -s -g 127.0.0.0/28") + + # Test an IPv6 ping. + self.assertRunOk("fping -6 ::1") + + # Create a prohibited route to make fping fail. + self.assertRunOk("ip route add to prohibit 192.168.12.0/24") + + # We expect fping to fail when pinging the prohibited network. + _, ret = self.emulator.run("fping 192.168.12.34") + self.assertNotEqual(ret, 0)
Signed-off-by: Julien Olivain <ju.o@free.fr> --- DEVELOPERS | 1 + support/testing/tests/package/test_fping.py | 45 +++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 support/testing/tests/package/test_fping.py