diff mbox series

[1/1] support/testing: add fping runtime test

Message ID 20240123215454.81191-1-ju.o@free.fr
State Accepted
Headers show
Series [1/1] support/testing: add fping runtime test | expand

Commit Message

Julien Olivain Jan. 23, 2024, 9:54 p.m. UTC
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

Comments

Peter Korsgaard Feb. 5, 2024, 9:41 p.m. UTC | #1
>>>>> "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 mbox series

Patch

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)