diff mbox series

[v2,1/1] support/testing: new dieharder runtime test

Message ID 20240715173822.95475-1-ju.o@free.fr
State Accepted
Headers show
Series [v2,1/1] support/testing: new dieharder runtime test | expand

Commit Message

Julien Olivain July 15, 2024, 5:38 p.m. UTC
Note: this test was not working in Buildroot test infrastructure
before commit [1] was merged, because dieharder has the string "# "
in its output.

[1] https://gitlab.com/buildroot.org/buildroot/-/commit/0cad947b964be5612a182413da136fcf0dc5a1f2

Signed-off-by: Julien Olivain <ju.o@free.fr>
---
Changes v1 -> v2:
Included comments from Arnout:
https://lists.buildroot.org/pipermail/buildroot/2024-July/758014.html
- Removed a test case (the other two are sufficient)
- Reworded comments to clarify that other test cases are expected
  to always succeed/fail.
---
 DEVELOPERS                                    |  1 +
 .../testing/tests/package/test_dieharder.py   | 36 +++++++++++++++++++
 2 files changed, 37 insertions(+)
 create mode 100644 support/testing/tests/package/test_dieharder.py

Comments

Arnout Vandecappelle May 16, 2025, 4:46 p.m. UTC | #1
On 15/07/2024 19:38, Julien Olivain wrote:
> Note: this test was not working in Buildroot test infrastructure
> before commit [1] was merged, because dieharder has the string "# "
> in its output.
> 
> [1] https://gitlab.com/buildroot.org/buildroot/-/commit/0cad947b964be5612a182413da136fcf0dc5a1f2
> 
> Signed-off-by: Julien Olivain <ju.o@free.fr>

  Applied to master, thanks.

  Regards,
  Arnout

> ---
> Changes v1 -> v2:
> Included comments from Arnout:
> https://lists.buildroot.org/pipermail/buildroot/2024-July/758014.html
> - Removed a test case (the other two are sufficient)
> - Reworded comments to clarify that other test cases are expected
>    to always succeed/fail.
> ---
>   DEVELOPERS                                    |  1 +
>   .../testing/tests/package/test_dieharder.py   | 36 +++++++++++++++++++
>   2 files changed, 37 insertions(+)
>   create mode 100644 support/testing/tests/package/test_dieharder.py
> 
> diff --git a/DEVELOPERS b/DEVELOPERS
> index 4a22b74779..7455a6e0c7 100644
> --- a/DEVELOPERS
> +++ b/DEVELOPERS
> @@ -1839,6 +1839,7 @@ F:	support/testing/tests/package/test_cryptsetup.py
>   F:	support/testing/tests/package/test_cryptsetup/
>   F:	support/testing/tests/package/test_ddrescue.py
>   F:	support/testing/tests/package/test_ddrescue/
> +F:	support/testing/tests/package/test_dieharder.py
>   F:	support/testing/tests/package/test_dmidecode.py
>   F:	support/testing/tests/package/test_dos2unix.py
>   F:	support/testing/tests/package/test_ed.py
> diff --git a/support/testing/tests/package/test_dieharder.py b/support/testing/tests/package/test_dieharder.py
> new file mode 100644
> index 0000000000..de09b383b4
> --- /dev/null
> +++ b/support/testing/tests/package/test_dieharder.py
> @@ -0,0 +1,36 @@
> +import os
> +
> +import infra.basetest
> +
> +
> +class TestDieharder(infra.basetest.BRTest):
> +    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
> +        """
> +        BR2_PACKAGE_DIEHARDER=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 run (by showing its version)
> +        self.assertRunOk("dieharder -V")
> +
> +        # The birthdays randomness test on the mt19937 random number
> +        # generator with 25 sample is expected to always succeed.
> +        cmd = "dieharder -g mt19937 -d diehard_birthdays -t 25"
> +        output, exit_code = self.emulator.run(cmd, timeout=10)
> +        self.assertEqual(exit_code, 0)
> +        self.assertIn("PASSED", '\n'.join(output))
> +
> +        # The birthdays randomness test on file /dev/zero is expected
> +        # to always fail.
> +        cmd = "dieharder -g file_input_raw -f /dev/zero -d diehard_birthdays -t 25"
> +        output, exit_code = self.emulator.run(cmd, timeout=40)
> +        self.assertEqual(exit_code, 0)
> +        self.assertIn("FAILED", '\n'.join(output))
diff mbox series

Patch

diff --git a/DEVELOPERS b/DEVELOPERS
index 4a22b74779..7455a6e0c7 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1839,6 +1839,7 @@  F:	support/testing/tests/package/test_cryptsetup.py
 F:	support/testing/tests/package/test_cryptsetup/
 F:	support/testing/tests/package/test_ddrescue.py
 F:	support/testing/tests/package/test_ddrescue/
+F:	support/testing/tests/package/test_dieharder.py
 F:	support/testing/tests/package/test_dmidecode.py
 F:	support/testing/tests/package/test_dos2unix.py
 F:	support/testing/tests/package/test_ed.py
diff --git a/support/testing/tests/package/test_dieharder.py b/support/testing/tests/package/test_dieharder.py
new file mode 100644
index 0000000000..de09b383b4
--- /dev/null
+++ b/support/testing/tests/package/test_dieharder.py
@@ -0,0 +1,36 @@ 
+import os
+
+import infra.basetest
+
+
+class TestDieharder(infra.basetest.BRTest):
+    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
+        """
+        BR2_PACKAGE_DIEHARDER=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 run (by showing its version)
+        self.assertRunOk("dieharder -V")
+
+        # The birthdays randomness test on the mt19937 random number
+        # generator with 25 sample is expected to always succeed.
+        cmd = "dieharder -g mt19937 -d diehard_birthdays -t 25"
+        output, exit_code = self.emulator.run(cmd, timeout=10)
+        self.assertEqual(exit_code, 0)
+        self.assertIn("PASSED", '\n'.join(output))
+
+        # The birthdays randomness test on file /dev/zero is expected
+        # to always fail.
+        cmd = "dieharder -g file_input_raw -f /dev/zero -d diehard_birthdays -t 25"
+        output, exit_code = self.emulator.run(cmd, timeout=40)
+        self.assertEqual(exit_code, 0)
+        self.assertIn("FAILED", '\n'.join(output))