Преглед изворни кода

support/testing: test_timezone: fix test by setting a fixed time

Since Buildroot commit [1], the runtime test emulator infra is setting
the emulated system date to the host date.

While this is desired in general, this behaviour is introducing a
variability in the test execution. Depending if the test is executed
during winter or summer time, the output of the command "date +%Z"
will produce a different output.

This commit fixes the issue by setting a fixed date and time on the
emulated system. The date is fixed to Unix Epoch plus one hour. This
is because Linux cannot set the system date to a value less than the
system uptime. So we cannot set the time back to Unix Epoch with the
command "date -s @0" (this would result to a EINVAL Invalid argument).

Fixes:
https://gitlab.com/buildroot.org/buildroot/-/jobs/9922589073
https://gitlab.com/buildroot.org/buildroot/-/jobs/9922589081

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

Signed-off-by: Julien Olivain <ju.o@free.fr>
Julien Olivain пре 2 месеци
родитељ
комит
0839545a9b
1 измењених фајлова са 18 додато и 0 уклоњено
  1. 18 0
      support/testing/tests/core/test_timezone.py

+ 18 - 0
support/testing/tests/core/test_timezone.py

@@ -9,6 +9,24 @@ def boot_armv5_cpio(emulator, builddir):
                   options=["-initrd", img])
     emulator.login()
 
+    # emulator.login() sets the emulated system date to the host
+    # date. In general, this is desirable (for correct SSL certificate
+    # behaviors, for example).
+    #
+    # This timezone runtime test checks that a Buildroot configuration
+    # is reflected in the generated system at runtime, using the
+    # standard "date" command. To make sure this test is stable in
+    # time (i.e. output is independent to the date/time the test is
+    # executed due to daylight saving time changes), we reset the
+    # system date to a constant value.
+    #
+    # We cannot set the system date to a value less than the system
+    # uptime. So we cannot set the time back to Unix Epoch with the
+    # command "date -s @0" (this would result to a EINVAL Invalid
+    # argument). Instead, we set the time at 1 hour after Epoch. This
+    # is sufficient as the emulated system takes few seconds to start.
+    emulator.run("date -s @3600")
+
 
 class TestNoTimezone(infra.basetest.BRTest):
     config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \