Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package os-autoinst for openSUSE:Factory checked in at 2026-07-12 16:21:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/os-autoinst (Old) and /work/SRC/openSUSE:Factory/.os-autoinst.new.1991 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "os-autoinst" Sun Jul 12 16:21:07 2026 rev:613 rq:1364946 version:5.1783672666.346fbe5 Changes: -------- --- /work/SRC/openSUSE:Factory/os-autoinst/os-autoinst.changes 2026-07-09 22:20:47.549009520 +0200 +++ /work/SRC/openSUSE:Factory/.os-autoinst.new.1991/os-autoinst.changes 2026-07-12 16:22:00.873743171 +0200 @@ -1,0 +2,11 @@ +Fri Jul 10 12:56:21 UTC 2026 - [email protected] + +- Update to version 5.1783672666.346fbe5: + * fix(consoles): strip video parameters from shm sink name + * feat(consoles): add mediadev/mediaentity parameters for ustreamer + * refactor(consoles): use Mojo::URL for GENERAL_HW_VIDEO_STREAM_URL + * feat(consoles): add ustreamer version 10 frame format + * feat: Log module step in case of failed needle match + * feat: allow UEFI_PFLASH_CODE as asset + +------------------------------------------------------------------- Old: ---- os-autoinst-5.1783514748.b19cdea.obscpio New: ---- os-autoinst-5.1783672666.346fbe5.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ os-autoinst-devel-test.spec ++++++ --- /var/tmp/diff_new_pack.ccDksL/_old 2026-07-12 16:22:01.789774046 +0200 +++ /var/tmp/diff_new_pack.ccDksL/_new 2026-07-12 16:22:01.793774181 +0200 @@ -18,7 +18,7 @@ %define short_name os-autoinst-devel Name: %{short_name}-test -Version: 5.1783514748.b19cdea +Version: 5.1783672666.346fbe5 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ os-autoinst-openvswitch-test.spec ++++++ --- /var/tmp/diff_new_pack.ccDksL/_old 2026-07-12 16:22:01.833775529 +0200 +++ /var/tmp/diff_new_pack.ccDksL/_new 2026-07-12 16:22:01.833775529 +0200 @@ -19,7 +19,7 @@ %define name_ext -test %define short_name os-autoinst-openvswitch Name: %{short_name}%{?name_ext} -Version: 5.1783514748.b19cdea +Version: 5.1783672666.346fbe5 Release: 0 Summary: test package for %{short_name} License: GPL-2.0-or-later ++++++ os-autoinst-test.spec ++++++ --- /var/tmp/diff_new_pack.ccDksL/_old 2026-07-12 16:22:01.865776607 +0200 +++ /var/tmp/diff_new_pack.ccDksL/_new 2026-07-12 16:22:01.869776742 +0200 @@ -19,7 +19,7 @@ %define name_ext -test %define short_name os-autoinst Name: %{short_name}%{?name_ext} -Version: 5.1783514748.b19cdea +Version: 5.1783672666.346fbe5 Release: 0 Summary: test package for os-autoinst License: GPL-2.0-or-later ++++++ os-autoinst.spec ++++++ --- /var/tmp/diff_new_pack.ccDksL/_old 2026-07-12 16:22:01.893777552 +0200 +++ /var/tmp/diff_new_pack.ccDksL/_new 2026-07-12 16:22:01.897777686 +0200 @@ -17,7 +17,7 @@ Name: os-autoinst -Version: 5.1783514748.b19cdea +Version: 5.1783672666.346fbe5 Release: 0 Summary: OS-level test automation License: GPL-2.0-or-later ++++++ os-autoinst-5.1783514748.b19cdea.obscpio -> os-autoinst-5.1783672666.346fbe5.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1783514748.b19cdea/consoles/video_stream.pm new/os-autoinst-5.1783672666.346fbe5/consoles/video_stream.pm --- old/os-autoinst-5.1783514748.b19cdea/consoles/video_stream.pm 2026-07-08 14:45:48.000000000 +0200 +++ new/os-autoinst-5.1783672666.346fbe5/consoles/video_stream.pm 2026-07-10 10:37:46.000000000 +0200 @@ -133,18 +133,24 @@ } sub _get_ustreamer_cmd ($self, $url, $sink_name) { - my $fps = $url =~ s/[\?&]fps=([0-9]+)// ? $1 : 5; - my $format = $url =~ s/[\?&]format=([A-Z0-9]+(swap)?)// ? $1 : 'UYVY'; + my $parsed_url = Mojo::URL->new($url); + my $dev = $parsed_url->path; + my $fps = $parsed_url->query->param('fps') // 5; + my $format = $parsed_url->query->param('format') // 'UYVY'; + my $mediadev = $parsed_url->query->param('mediadev'); + my $mediaentity = $parsed_url->query->param('mediaentity'); my $swap = ($format =~ /swap$/); $format =~ s/swap$//; my $cmd = [ - 'ustreamer', '--device', $url, '-f', $fps, + 'ustreamer', '--device', $dev, '-f', $fps, '-m', $format, # specify preferred format '-c', 'NOOP', # do not produce JPEG stream '--raw-sink', $sink_name, '--raw-sink-rm', # raw memsink '--persistent', # smarter watching for reconnecting HDMI, and since ustreamer 6.0 - necessary for --dv-timings to work '--dv-timings', # enable using DV timings (getting resolution, and reacting to changes) ]; + push @$cmd, ('--media-device', $mediadev) if ($mediadev); + push @$cmd, ('--media-entity-name', $mediaentity) if ($mediaentity); # workaround for https://github.com/raspberrypi/linux/issues/6068 push @$cmd, qw(--format-swap-rgb 1) if ($swap); return $cmd; @@ -165,6 +171,7 @@ my $dev = ($url =~ m^ustreamer://(.*)^)[0]; my $sink_name = "raw-sink$dev.raw"; $sink_name =~ s^/^-^g; + $sink_name =~ s^\?.*\.raw^.raw^g; my $cmd = $self->_get_ustreamer_cmd($dev, $sink_name); my $ffmpeg; $self->{ustreamerpid} = open $ffmpeg, '-|', @$cmd @@ -318,6 +325,44 @@ # // 128 # ... data # } us_memsink_shared_s; + # + # #define US_MEMSINK_VERSION ((u32)10) + # typedef struct { + # uint width; + # uint height; + # uint format; + # uint fps; + # bool key; + # } us_memsink_wants_s; + # + # typedef struct { + # uint64_t magic; + # uint32_t version; + # // pad + # uint64_t id; + # size_t used; + # // 32 + # long double last_client_ts; + # us_memsink_wants_s wants; + # + # unsigned width; + # unsigned height; + # unsigned format; + # unsigned stride; + # /* Stride is a bytesperline in V4L2 */ \ + # /* https://www.kernel.org/doc/html/v4.14/media/uapi/v4l/pixfmt-v4l2.html */ \ + # /* https://medium.com/@oleg.shipitko/what-does-stride-mean-in-image-processing-bba158a72bcd */ \ + # bool online; + # bool key; + # unsigned gop; + # + # long double grab_begin_ts; + # long double grab_end_ts; + # long double encode_begin_ts; + # long double encode_end_ts; + # // 160 + # ... data + # } us_memsink_shared_s; my ($magic, $version, $id, $used) = unpack 'QLx4QQ', $ustreamer_map; # This is US_MEMSINK_MAGIC, but perl considers hex literals over 32bits non-portable @@ -334,6 +379,10 @@ $client_clock_offset = 32; $data_offset = 128; $meta_offset = 52; + } elsif ($version == 10) { + $client_clock_offset = 32; + $data_offset = 160; + $meta_offset = 68; } else { die "Unsupported ustreamer version '$version' (only versions 4, 7 and 8 are supported)"; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1783514748.b19cdea/doc/backend_vars.md new/os-autoinst-5.1783672666.346fbe5/doc/backend_vars.md --- old/os-autoinst-5.1783514748.b19cdea/doc/backend_vars.md 2026-07-08 14:45:48.000000000 +0200 +++ new/os-autoinst-5.1783672666.346fbe5/doc/backend_vars.md 2026-07-10 10:37:46.000000000 +0200 @@ -323,7 +323,7 @@ | GENERAL_HW_VNC_DEPTH | integer | 16 | Color depth for VNC server | | GENERAL_HW_VNC_JPEG | integer | 0 | Advertise support for Tight JPEG encoding | | GENERAL_HW_NO_SERIAL | boolean | | Don't use serial | -| GENERAL_HW_VIDEO_STREAM_URL | string | | Video stream URL (in ffmpeg's syntax) to receive, for example 'udp://@:5004' or '/dev/video0'. Using 'ustreamer:///dev/videoN' will use ustreamer from PiKVM instead of ffmpeg to read '/dev/videoN'. The URL can have '?fps=..' appended to specify desired FPS to capture with. The URL can also have 'format=' parameter to specify ustream format (default is UYVY, can be also set to BGR24, RGB24, RGB24swap). Ustreamer support requires pack("D") working, which rules out openSUSE 15.5's perl. | +| GENERAL_HW_VIDEO_STREAM_URL | string | | Video stream URL (in ffmpeg's syntax) to receive, for example 'udp://@:5004' or '/dev/video0'. Using 'ustreamer:///dev/videoN' will use ustreamer from PiKVM instead of ffmpeg to read '/dev/videoN'. The URL can have '?fps=..' appended to specify desired FPS to capture with. The URL can also have 'format=' parameter to specify ustream format (default is UYVY, can be also set to BGR24, RGB24, RGB24swap). The URL can also have 'mediadev=...' and 'mediaentity=' parameters, necessary on Raspberry Pi 5. Ustreamer support requires pack("D") working, which rules out openSUSE 15.5's perl. | | GENERAL_HW_VIDEO_CMD_PREFIX | string | | Prefix to prepend to 'ffmpeg' and 'v4l2-ctl' commands, can be used to run them on a different host via SSH. Example: 'ssh root@pikvm'. Note: the value is tokenized on spaces, so avoid their use in command name or any of the parameters. | | VIDEO_STREAM_PIPE_BUFFER_SIZE | integer | 1680*1050*3+20 | Buffer containing at least a single PPM frame for video capturing | | GENERAL_HW_KEYBOARD_URL | string | | URL to keyboard emulation device. eg. 'http://1.2.3.4/cmd' - see https://github.com/os-autoinst/os-autoinst-distri-opensuse/tree/master/data/generalhw_scripts/rpi_pico_w_keyboard[rpi_pico_w_keyboard] | diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1783514748.b19cdea/t/03-testapi.t new/os-autoinst-5.1783672666.346fbe5/t/03-testapi.t --- old/os-autoinst-5.1783514748.b19cdea/t/03-testapi.t 2026-07-08 14:45:48.000000000 +0200 +++ new/os-autoinst-5.1783672666.346fbe5/t/03-testapi.t 2026-07-10 10:37:46.000000000 +0200 @@ -500,8 +500,19 @@ $report_timeout_called = 0; + subtest 'module step logging' => sub { + local $autotest::current_test->{script} = 'dummy'; + local $autotest::current_test->{category} = 'cat'; + combined_like { + throws_ok { assert_screen('foo', 3, timeout => 2) } + qr/no candidate needle/, + 'error message like expeected'; + } qr{\Q[step:cat,basetest,16]\E.*called testapi::assert_screen}, 'module step logged in case of failed assert_screen'; + }; + subtest 'handle assert_screen timeout' => sub { $cmds = []; + $report_timeout_called = 0; # simulate that we don't want to pause at all and just let it fail throws_ok { assert_screen('foo', 3, timeout => 2) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1783514748.b19cdea/t/26-video_stream.t new/os-autoinst-5.1783672666.346fbe5/t/26-video_stream.t --- old/os-autoinst-5.1783514748.b19cdea/t/26-video_stream.t 2026-07-08 14:45:48.000000000 +0200 +++ new/os-autoinst-5.1783672666.346fbe5/t/26-video_stream.t 2026-07-10 10:37:46.000000000 +0200 @@ -150,20 +150,29 @@ '-c', 'NOOP', '--raw-sink', 'raw-sink-dev-video0.raw', '--raw-sink-rm', '--persistent', '--dv-timings'], 'correct cmd built for fps=2 and format=BGR24'; - $cmd = $mock_console->original('_get_ustreamer_cmd')->($console, '/dev/video0&format=BGR24', 'raw-sink-dev-video0.raw'); + $cmd = $mock_console->original('_get_ustreamer_cmd')->($console, '/dev/video0?format=BGR24', 'raw-sink-dev-video0.raw'); is_deeply $cmd, [ 'ustreamer', '--device', '/dev/video0', '-f', '5', '-m', 'BGR24', '-c', 'NOOP', '--raw-sink', 'raw-sink-dev-video0.raw', '--raw-sink-rm', '--persistent', '--dv-timings'], 'correct cmd built for format=BGR24'; - $cmd = $mock_console->original('_get_ustreamer_cmd')->($console, '/dev/video0&format=RGB24swap', 'raw-sink-dev-video0.raw'); + $cmd = $mock_console->original('_get_ustreamer_cmd')->($console, '/dev/video0?format=RGB24swap', 'raw-sink-dev-video0.raw'); is_deeply $cmd, [ 'ustreamer', '--device', '/dev/video0', '-f', '5', '-m', 'RGB24', '-c', 'NOOP', '--raw-sink', 'raw-sink-dev-video0.raw', '--raw-sink-rm', '--persistent', '--dv-timings', '--format-swap-rgb', '1'], 'correct cmd built for format=RGB24swap'; + $cmd = $mock_console->original('_get_ustreamer_cmd')->($console, '/dev/video0?fps=5&format=BGR24&mediadev=/dev/media-csi&mediaentity=tc358743 11-000f', 'raw-sink-dev-video0.raw'); + is_deeply $cmd, [ + 'ustreamer', '--device', '/dev/video0', '-f', '5', + '-m', 'BGR24', + '-c', 'NOOP', + '--raw-sink', 'raw-sink-dev-video0.raw', '--raw-sink-rm', + '--persistent', '--dv-timings', + '--media-device', '/dev/media-csi', + '--media-entity-name', 'tc358743 11-000f'], 'correct cmd built with media device params'; }; subtest 'frames parsing' => sub { @@ -297,6 +306,16 @@ ok $received_img, 'current screen available to read for BGR3 v7 frame' or return; is $received_img->similarity($img), 1_000_000, 'received correct BGR3 v7 frame'; $console->disable_video; + + # ustreamer v10 frame, full frame encoded as JPEG + copy($data_dir . 'ustreamer10-shared-full-frame-jpeg', '/dev/shm/raw-sink-dev-video0.raw'); + $console->connect_remote({url => 'ustreamer:///dev/video0?format=JPEG'}); + + $img = tinycv::read($data_dir . 'ustreamer10-shared-full-frame-jpeg.png'); + $received_img = $console->current_screen(); + ok $received_img, 'current screen available to read for JPEG v10 frame' or return; + is $received_img->similarity($img), 1_000_000, 'received correct JPEG v10 frame'; + $console->disable_video; }; subtest 'v4l2 resolution' => sub { Binary files old/os-autoinst-5.1783514748.b19cdea/t/data/ustreamer10-shared-full-frame-jpeg and new/os-autoinst-5.1783672666.346fbe5/t/data/ustreamer10-shared-full-frame-jpeg differ Binary files old/os-autoinst-5.1783514748.b19cdea/t/data/ustreamer10-shared-full-frame-jpeg.png and new/os-autoinst-5.1783672666.346fbe5/t/data/ustreamer10-shared-full-frame-jpeg.png differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1783514748.b19cdea/testapi.pm new/os-autoinst-5.1783672666.346fbe5/testapi.pm --- old/os-autoinst-5.1783514748.b19cdea/testapi.pm 2026-07-08 14:45:48.000000000 +0200 +++ new/os-autoinst-5.1783672666.346fbe5/testapi.pm 2026-07-10 10:37:46.000000000 +0200 @@ -336,6 +336,7 @@ overall => (!$rsp->{saveresult} && $check) ? undef : 'fail', frame => $l->{frame}, ); + bmwqemu::update_line_number(); } # Handle case where a stall was detected: fail if this is an # assert_screen, warn if it's a check_screen ++++++ os-autoinst.obsinfo ++++++ --- /var/tmp/diff_new_pack.ccDksL/_old 2026-07-12 16:22:04.277858301 +0200 +++ /var/tmp/diff_new_pack.ccDksL/_new 2026-07-12 16:22:04.285858585 +0200 @@ -1,5 +1,5 @@ name: os-autoinst -version: 5.1783514748.b19cdea -mtime: 1783514748 -commit: b19cdeaf9793917db2bd16bc64fd707d01dff10b +version: 5.1783672666.346fbe5 +mtime: 1783672666 +commit: 346fbe526713586654b58f57623daf98bf546088
