* [Buildroot] [PATCH 1/1] support/testing: improve weston test reliablity
@ 2024-12-07 15:01 Julien Olivain
2024-12-08 7:01 ` Peter Korsgaard
2024-12-08 14:48 ` Peter Korsgaard
0 siblings, 2 replies; 3+ messages in thread
From: Julien Olivain @ 2024-12-07 15:01 UTC (permalink / raw)
To: buildroot; +Cc: Julien Olivain
The weston runtime test is unreliable, depending on the execution speed
of its runner. Example of failure is [1], and success is [2]. This
commit improves the test in several ways, to make it more robust to
execution speed variations:
- The command started in background (weston, weston-simple-egl) are
now started in a subshell. This suppresses the job control messages
when they are stopped. Those messages could interfere with the parsing
of the output;
- Wait time are moved outside the emulator;
- The kernel argument vt.global_cursor_default=0 is added, to make sure
cursors are globally disabled, since the test use vkms display CRCs;
- The memory of the emulator is increased to 512M. This test uses cpio
initramfs, and the filesystem size increased;
- The vkms driver emulates a "vsync" event, but can generate a warning
when the system is too slow. This warning is printed on the console by
the klogd daemon in its default configuration. This commit adds the
overlay file /etc/default/klogd to limit only kernel emergency
messages to be printed on the console. This change fixes the failure
seen in [1] ;
- Some sleep time values were adjusted to run on a "performant" idle
host. Those values are not suitable in all situations. In the
meantime a generic retry mechanism is added in the test infra, this
commit adds a retry logic inspired from the test_flutter runtime
test.
Fixes: [1]
[1] https://gitlab.com/buildroot.org/buildroot/-/jobs/8562483474
[2] https://gitlab.com/buildroot.org/buildroot/-/jobs/8435236652
Signed-off-by: Julien Olivain <ju.o@free.fr>
---
support/testing/tests/package/test_weston.py | 36 +++++++++++++------
.../test_weston/overlay/etc/default/klogd | 1 +
2 files changed, 27 insertions(+), 10 deletions(-)
create mode 100644 support/testing/tests/package/test_weston/overlay/etc/default/klogd
diff --git a/support/testing/tests/package/test_weston.py b/support/testing/tests/package/test_weston.py
index f37a73565f..2ed59a7f15 100644
--- a/support/testing/tests/package/test_weston.py
+++ b/support/testing/tests/package/test_weston.py
@@ -40,11 +40,11 @@ class TestWeston(infra.basetest.BRTest, GraphicsBase):
def start_weston(self):
self.assertRunOk("export XDG_RUNTIME_DIR=/tmp")
- cmd = "weston"
+ cmd = "( weston"
cmd += " --config=/etc/weston.ini"
cmd += " --continue-without-input"
cmd += " --log=/tmp/weston.log"
- cmd += " &> /dev/null &"
+ cmd += " &> /dev/null & )"
self.assertRunOk(cmd)
self.assertRunOk("export WAYLAND_DISPLAY=wayland-1")
@@ -57,7 +57,8 @@ class TestWeston(infra.basetest.BRTest, GraphicsBase):
time.sleep(4)
def stop_weston(self):
- cmd = "killall weston && sleep 3"
+ cmd = "killall weston"
+ time.sleep(3)
self.assertRunOk(cmd)
def test_run(self):
@@ -65,14 +66,23 @@ class TestWeston(infra.basetest.BRTest, GraphicsBase):
kern = os.path.join(self.builddir, "images", "Image")
self.emulator.boot(arch="aarch64",
kernel=kern,
- kernel_cmdline=["console=ttyAMA0"],
+ kernel_cmdline=["console=ttyAMA0", "vt.global_cursor_default=0"],
options=["-M", "virt",
"-cpu", "cortex-a57",
"-smp", "4",
- "-m", "256M",
+ "-m", "512M",
"-initrd", img])
self.emulator.login()
+ # This test uses the vkms DRM Kernel driver. This driver can
+ # generate kernel warning messages in some cases (e.g. "vblank
+ # timer overrun"). Those messages can happen on slow test
+ # runners. This warning is not an issue in this test: it is
+ # not checking performance here; it just checks the rendering
+ # pipeline is functional. For that reason, this test adds the
+ # file "/etc/default/klogd" to only show emergency messages
+ # (level value 0) on the console.
+
# Check the weston binary can execute
self.assertRunOk("weston --version")
@@ -96,14 +106,17 @@ class TestWeston(infra.basetest.BRTest, GraphicsBase):
# animation is derived from the system time). Since all the
# rendering (client application and compositor) is in
# software, we sleep a bit to let those program to settle.
- self.assertRunOk("weston-simple-egl >/dev/null 2>&1 &")
- time.sleep(8)
+ self.assertRunOk("( weston-simple-egl >/dev/null 2>&1 & )")
# Since the weston-simple-egl client is supposed to run and
# display something, we are now supposed to measure a
# different display CRC than the one we measured when the
# desktop was empty.
- crc = self.get_n_fb_crc(count=1)[0]
+ for i in range(600):
+ crc = self.get_n_fb_crc(count=1)[0]
+ if crc != weston_desktop_crc:
+ break
+ time.sleep(1)
self.assertNotEqual(crc, weston_desktop_crc)
# While weston-simple-egl is running, we check the VKMS DRM
@@ -121,12 +134,15 @@ class TestWeston(infra.basetest.BRTest, GraphicsBase):
# We stop weston-simple-egl, and sleep a bit to let Weston do
# its cleanup and desktop repaint refresh...
self.assertRunOk("killall weston-simple-egl")
- time.sleep(4)
# After we stopped the application, we should have the initial
# weston desktop background. The CRC we measure now should be
# the same as the one we saved earlier.
- crc = self.get_n_fb_crc(count=1)[0]
+ for i in range(600):
+ crc = self.get_n_fb_crc(count=1)[0]
+ if crc == weston_desktop_crc:
+ break
+ time.sleep(1)
self.assertEqual(crc, weston_desktop_crc)
self.stop_weston()
diff --git a/support/testing/tests/package/test_weston/overlay/etc/default/klogd b/support/testing/tests/package/test_weston/overlay/etc/default/klogd
new file mode 100644
index 0000000000..b4209f50b5
--- /dev/null
+++ b/support/testing/tests/package/test_weston/overlay/etc/default/klogd
@@ -0,0 +1 @@
+KLOGD_ARGS="-c 1"
--
2.47.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [Buildroot] [PATCH 1/1] support/testing: improve weston test reliablity
2024-12-07 15:01 [Buildroot] [PATCH 1/1] support/testing: improve weston test reliablity Julien Olivain
@ 2024-12-08 7:01 ` Peter Korsgaard
2024-12-08 14:48 ` Peter Korsgaard
1 sibling, 0 replies; 3+ messages in thread
From: Peter Korsgaard @ 2024-12-08 7:01 UTC (permalink / raw)
To: Julien Olivain; +Cc: buildroot
>>>>> "Julien" == Julien Olivain <ju.o@free.fr> writes:
> The weston runtime test is unreliable, depending on the execution speed
> of its runner. Example of failure is [1], and success is [2]. This
> commit improves the test in several ways, to make it more robust to
> execution speed variations:
> - The command started in background (weston, weston-simple-egl) are
> now started in a subshell. This suppresses the job control messages
> when they are stopped. Those messages could interfere with the parsing
> of the output;
> - Wait time are moved outside the emulator;
> - The kernel argument vt.global_cursor_default=0 is added, to make sure
> cursors are globally disabled, since the test use vkms display CRCs;
> - The memory of the emulator is increased to 512M. This test uses cpio
> initramfs, and the filesystem size increased;
> - The vkms driver emulates a "vsync" event, but can generate a warning
> when the system is too slow. This warning is printed on the console by
> the klogd daemon in its default configuration. This commit adds the
> overlay file /etc/default/klogd to limit only kernel emergency
> messages to be printed on the console. This change fixes the failure
> seen in [1] ;
> - Some sleep time values were adjusted to run on a "performant" idle
> host. Those values are not suitable in all situations. In the
> meantime a generic retry mechanism is added in the test infra, this
> commit adds a retry logic inspired from the test_flutter runtime
> test.
> Fixes: [1]
> [1] https://gitlab.com/buildroot.org/buildroot/-/jobs/8562483474
> [2] https://gitlab.com/buildroot.org/buildroot/-/jobs/8435236652
> Signed-off-by: Julien Olivain <ju.o@free.fr>
Committed, thanks.
--
Bye, Peter Korsgaard
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Buildroot] [PATCH 1/1] support/testing: improve weston test reliablity
2024-12-07 15:01 [Buildroot] [PATCH 1/1] support/testing: improve weston test reliablity Julien Olivain
2024-12-08 7:01 ` Peter Korsgaard
@ 2024-12-08 14:48 ` Peter Korsgaard
1 sibling, 0 replies; 3+ messages in thread
From: Peter Korsgaard @ 2024-12-08 14:48 UTC (permalink / raw)
To: Julien Olivain; +Cc: buildroot
>>>>> "Julien" == Julien Olivain <ju.o@free.fr> writes:
> The weston runtime test is unreliable, depending on the execution speed
> of its runner. Example of failure is [1], and success is [2]. This
> commit improves the test in several ways, to make it more robust to
> execution speed variations:
> - The command started in background (weston, weston-simple-egl) are
> now started in a subshell. This suppresses the job control messages
> when they are stopped. Those messages could interfere with the parsing
> of the output;
> - Wait time are moved outside the emulator;
> - The kernel argument vt.global_cursor_default=0 is added, to make sure
> cursors are globally disabled, since the test use vkms display CRCs;
> - The memory of the emulator is increased to 512M. This test uses cpio
> initramfs, and the filesystem size increased;
> - The vkms driver emulates a "vsync" event, but can generate a warning
> when the system is too slow. This warning is printed on the console by
> the klogd daemon in its default configuration. This commit adds the
> overlay file /etc/default/klogd to limit only kernel emergency
> messages to be printed on the console. This change fixes the failure
> seen in [1] ;
> - Some sleep time values were adjusted to run on a "performant" idle
> host. Those values are not suitable in all situations. In the
> meantime a generic retry mechanism is added in the test infra, this
> commit adds a retry logic inspired from the test_flutter runtime
> test.
> Fixes: [1]
> [1] https://gitlab.com/buildroot.org/buildroot/-/jobs/8562483474
> [2] https://gitlab.com/buildroot.org/buildroot/-/jobs/8435236652
> Signed-off-by: Julien Olivain <ju.o@free.fr>
Committed to 2024.08.x, thanks.
--
Bye, Peter Korsgaard
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-12-08 14:48 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-07 15:01 [Buildroot] [PATCH 1/1] support/testing: improve weston test reliablity Julien Olivain
2024-12-08 7:01 ` Peter Korsgaard
2024-12-08 14:48 ` Peter Korsgaard
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.