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 2025-01-28 14:59:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/os-autoinst (Old) and /work/SRC/openSUSE:Factory/.os-autoinst.new.2316 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "os-autoinst" Tue Jan 28 14:59:27 2025 rev:491 rq:1240646 version:4.6.1737980001.69ac906 Changes: -------- --- /work/SRC/openSUSE:Factory/os-autoinst/os-autoinst.changes 2025-01-22 17:54:04.666025043 +0100 +++ /work/SRC/openSUSE:Factory/.os-autoinst.new.2316/os-autoinst.changes 2025-01-28 15:00:18.828873869 +0100 @@ -1,0 +2,11 @@ +Mon Jan 27 20:34:38 UTC 2025 - ok...@suse.com + +- Update to version 4.6.1737980001.69ac906: + * Add more code coverage for video_stream.pm + * Clone the disk image with nvram for vmware guest + * Update loadtestdir with correct paths + * Fix passing of variables + * Extract method in OpenQA::Isotovideo::Dewebsockify + * t: Fix 'The signatures feature is experimental' in t/39-dewebsockify.t + +------------------------------------------------------------------- Old: ---- os-autoinst-4.6.1737544150.75887b5.obscpio New: ---- os-autoinst-4.6.1737980001.69ac906.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ os-autoinst-devel-test.spec ++++++ --- /var/tmp/diff_new_pack.ELxCUz/_old 2025-01-28 15:00:19.508901982 +0100 +++ /var/tmp/diff_new_pack.ELxCUz/_new 2025-01-28 15:00:19.508901982 +0100 @@ -18,7 +18,7 @@ %define short_name os-autoinst-devel Name: %{short_name}-test -Version: 4.6.1737544150.75887b5 +Version: 4.6.1737980001.69ac906 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ os-autoinst-openvswitch-test.spec ++++++ --- /var/tmp/diff_new_pack.ELxCUz/_old 2025-01-28 15:00:19.532902975 +0100 +++ /var/tmp/diff_new_pack.ELxCUz/_new 2025-01-28 15:00:19.536903140 +0100 @@ -19,7 +19,7 @@ %define name_ext -test %define short_name os-autoinst-openvswitch Name: %{short_name}%{?name_ext} -Version: 4.6.1737544150.75887b5 +Version: 4.6.1737980001.69ac906 Release: 0 Summary: test package for %{short_name} License: GPL-2.0-or-later ++++++ os-autoinst-test.spec ++++++ --- /var/tmp/diff_new_pack.ELxCUz/_old 2025-01-28 15:00:19.560904132 +0100 +++ /var/tmp/diff_new_pack.ELxCUz/_new 2025-01-28 15:00:19.564904297 +0100 @@ -19,7 +19,7 @@ %define name_ext -test %define short_name os-autoinst Name: %{short_name}%{?name_ext} -Version: 4.6.1737544150.75887b5 +Version: 4.6.1737980001.69ac906 Release: 0 Summary: test package for os-autoinst License: GPL-2.0-or-later ++++++ os-autoinst.spec ++++++ --- /var/tmp/diff_new_pack.ELxCUz/_old 2025-01-28 15:00:19.592905455 +0100 +++ /var/tmp/diff_new_pack.ELxCUz/_new 2025-01-28 15:00:19.596905621 +0100 @@ -17,7 +17,7 @@ Name: os-autoinst -Version: 4.6.1737544150.75887b5 +Version: 4.6.1737980001.69ac906 Release: 0 Summary: OS-level test automation License: GPL-2.0-or-later ++++++ os-autoinst-4.6.1737544150.75887b5.obscpio -> os-autoinst-4.6.1737980001.69ac906.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-4.6.1737544150.75887b5/codecov.yml new/os-autoinst-4.6.1737980001.69ac906/codecov.yml --- old/os-autoinst-4.6.1737544150.75887b5/codecov.yml 2025-01-22 12:09:10.000000000 +0100 +++ new/os-autoinst-4.6.1737980001.69ac906/codecov.yml 2025-01-27 13:13:21.000000000 +0100 @@ -30,6 +30,7 @@ - consoles/sshIucvconn.pm - consoles/sshXtermVt.pm - consoles/ssh_screen.pm + - consoles/video_stream.pm - consoles/virtio_terminal.pm - consoles/vnc_base.pm - commands.pm diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-4.6.1737544150.75887b5/consoles/sshVirtsh.pm new/os-autoinst-4.6.1737980001.69ac906/consoles/sshVirtsh.pm --- old/os-autoinst-4.6.1737544150.75887b5/consoles/sshVirtsh.pm 2025-01-22 12:09:10.000000000 +0100 +++ new/os-autoinst-4.6.1737980001.69ac906/consoles/sshVirtsh.pm 2025-01-27 13:13:21.000000000 +0100 @@ -366,6 +366,17 @@ die "Can't create thin VMware image" if $retval; } +sub _copy_nvram_vmware ($self, $name, $vmware_openqa_datastore, $vmware_disk_path) { + # If the nvram exists in the source vmx file, then copy the source file as destination nvram. + my $vmware_vmx_path = $vmware_disk_path =~ s/\.vmdk/\.vmx/r; + my $vmware_nvram_path = $vmware_disk_path =~ s/\.vmdk/\.nvram/r; + my $cmd = + "set -x; if [ -e $vmware_vmx_path ] && [ -e $vmware_nvram_path ]; then " . + "cp -f $vmware_nvram_path ${vmware_openqa_datastore}${name}.nvram; fi;"; + my $retval = $self->run_cmd($cmd, domain => 'sshVMwareServer'); + die "No nvram was set in the source vmx file" if $retval; +} + sub _system (@cmd) { system @cmd } # uncoverable statement sub _copy_image_else ($self, $file, $file_basename, $basedir) { @@ -395,6 +406,7 @@ if ($cdrom || $backingfile) { if ($self->vmm_family eq 'vmware') { $self->_copy_image_vmware($name, $backingfile, $file_basename, $vmware_openqa_datastore, $vmware_disk_path, $vmware_disk_path_thinfile); + $self->_copy_nvram_vmware($name, $vmware_openqa_datastore, $vmware_disk_path) if ($backingfile); } else { $self->_copy_image_else($args->{file}, $file_basename, $basedir); @@ -566,6 +578,12 @@ # set default boot delay $self->run_cmd(qq{echo 'bios.bootDelay = "10000"' >> $vmx}, domain => 'sshVMwareServer'); + # set default nvram + my $nvram = $self->name . '.nvram'; + my $nvram_path = sprintf('/vmfs/volumes/%s/openQA/%s', $bmwqemu::vars{VMWARE_DATASTORE} // 'datastore1', $nvram); + $ret = $self->run_cmd("test -e $nvram_path", domain => 'sshVMwareServer'); + $self->run_cmd(qq{echo 'nvram = "$nvram"' >> $vmx}, domain => 'sshVMwareServer') unless ($ret); + my $fb_tool = $bmwqemu::vars{GUESTINFO_CONFIG}; if ($fb_tool && $fb_tool ne 'wizard') { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-4.6.1737544150.75887b5/t/22-svirt.t new/os-autoinst-4.6.1737980001.69ac906/t/22-svirt.t --- old/os-autoinst-4.6.1737544150.75887b5/t/22-svirt.t 2025-01-22 12:09:10.000000000 +0100 +++ new/os-autoinst-4.6.1737980001.69ac906/t/22-svirt.t 2025-01-27 13:13:21.000000000 +0100 @@ -213,6 +213,8 @@ $s . ' undefine --snapshots-metadata openQA-SUT-1 |& grep -v "\\(failed to get domain\\|Domain not found\\)"', $s . ' define /var/lib/libvirt/images/openQA-SUT-1.xml', 'echo \'bios.bootDelay = "10000"\' >> /vmfs/volumes/datastore1/openQA/openQA-SUT-1.vmx', + 'test -e /vmfs/volumes/datastore1/openQA/openQA-SUT-1.nvram', + 'echo \'nvram = "openQA-SUT-1.nvram"\' >> /vmfs/volumes/datastore1/openQA/openQA-SUT-1.vmx', $s . ' start openQA-SUT-1 2> >(tee /tmp/os-autoinst-openQA-SUT-1-stderr.log >&2)', $s . ' dumpxml openQA-SUT-1' ], 'expected commands invoked' or always_explain \@cmds; @@ -285,6 +287,8 @@ $s . ' undefine --snapshots-metadata openQA-SUT-1 |& grep -v "\\(failed to get domain\\|Domain not found\\)"', $s . ' define /var/lib/libvirt/images/openQA-SUT-1.xml', 'echo \'bios.bootDelay = "10000"\' >> /vmfs/volumes/datastore1/openQA/openQA-SUT-1.vmx', + 'test -e /vmfs/volumes/datastore1/openQA/openQA-SUT-1.nvram', + 'echo \'nvram = "openQA-SUT-1.nvram"\' >> /vmfs/volumes/datastore1/openQA/openQA-SUT-1.vmx', 'echo \'guestinfo.combustion.script = "testingCombustion"\' >> /vmfs/volumes/datastore1/openQA/openQA-SUT-1.vmx', $s . ' start openQA-SUT-1 2> >(tee /tmp/os-autoinst-openQA-SUT-1-stderr.log >&2)', $s . ' dumpxml openQA-SUT-1' @@ -320,6 +324,8 @@ $s . ' undefine --snapshots-metadata openQA-SUT-1 |& grep -v "\\(failed to get domain\\|Domain not found\\)"', $s . ' define /var/lib/libvirt/images/openQA-SUT-1.xml', 'echo \'bios.bootDelay = "10000"\' >> /vmfs/volumes/datastore1/openQA/openQA-SUT-1.vmx', + 'test -e /vmfs/volumes/datastore1/openQA/openQA-SUT-1.nvram', + 'echo \'nvram = "openQA-SUT-1.nvram"\' >> /vmfs/volumes/datastore1/openQA/openQA-SUT-1.vmx', 'echo \'guestinfo.ignition.config.data.encoding = "gzip+base64"\' >> /vmfs/volumes/datastore1/openQA/openQA-SUT-1.vmx', 'echo \'guestinfo.ignition.config.data = "ignitionTEST"\' >> /vmfs/volumes/datastore1/openQA/openQA-SUT-1.vmx', $s . ' start openQA-SUT-1 2> >(tee /tmp/os-autoinst-openQA-SUT-1-stderr.log >&2)', @@ -356,6 +362,8 @@ $s . ' undefine --snapshots-metadata openQA-SUT-1 |& grep -v "\\(failed to get domain\\|Domain not found\\)"', $s . ' define /var/lib/libvirt/images/openQA-SUT-1.xml', 'echo \'bios.bootDelay = "10000"\' >> /vmfs/volumes/datastore1/openQA/openQA-SUT-1.vmx', + 'test -e /vmfs/volumes/datastore1/openQA/openQA-SUT-1.nvram', + 'echo \'nvram = "openQA-SUT-1.nvram"\' >> /vmfs/volumes/datastore1/openQA/openQA-SUT-1.vmx', 'echo \'guestinfo.userdata.encoding = "gzip+base64"\' >> /vmfs/volumes/datastore1/openQA/openQA-SUT-1.vmx', 'echo \'guestinfo.metadata.encoding = "gzip+base64"\' >> /vmfs/volumes/datastore1/openQA/openQA-SUT-1.vmx', 'echo \'guestinfo.userdata = "CI_test_CONF"\' >> /vmfs/volumes/datastore1/openQA/openQA-SUT-1.vmx', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-4.6.1737544150.75887b5/t/26-video_stream.t new/os-autoinst-4.6.1737980001.69ac906/t/26-video_stream.t --- old/os-autoinst-4.6.1737544150.75887b5/t/26-video_stream.t 2025-01-22 12:09:10.000000000 +0100 +++ new/os-autoinst-4.6.1737980001.69ac906/t/26-video_stream.t 2025-01-27 13:13:21.000000000 +0100 @@ -106,6 +106,14 @@ is_deeply $cmd, [ 'ffmpeg', '-loglevel', 'fatal', '-i', '/dev/video0', '-vcodec', 'ppm', '-f', 'rawvideo', '-r', 3, '-'], "correct cmd built for fps=3"; + + $mock_console->redefine(update_framebuffer => sub ($self) { $self->{_last_update_received} = 200; return 0; }); + my $start_time = time; + $console->request_screen_update(); + is $console->{dv_timings_supported}, 1, 'dv timings are supported'; + cmp_ok $console->{dv_timings_last_check}, '>=', $start_time, 'dv_timings_last_check ok'; + $mock_console->unmock('update_framebuffer'); + $console->disable_video; }; subtest 'connect stream ustreamer' => sub { @@ -166,6 +174,14 @@ my $received_update = $console->update_framebuffer(); is $received_update, 0, "detected incomplete frame"; $console->disable_video; + + # now invalid frame - not in PPM format to test exception + $mock_video_source = $data_dir . 'accept-ssh-host-key.png'; + $console->connect_remote({url => 'udp://@:5004'}); + waitpid($console->{ffmpegpid}, 0); + + throws_ok { $console->update_framebuffer() } qr/Invalid PPM header/, 'dies ok - input is not in PPM format'; + $console->disable_video; }; subtest 'frame parsing - ustreamer' => sub { @@ -266,7 +282,7 @@ %v4l2_ctl_results = ( '--query-dv-timings' => '640x480p60', ); - $console->{dv_timings_last_check} = time - 4; + $console->{dv_timings_last_check} = consoles::video_stream::DV_TIMINGS_CHECK_INTERVAL; $console->update_framebuffer(); is $console->{dv_timings}, '640x480p60', 'correct resolution detected'; @@ -282,7 +298,7 @@ '--get-dv-timings' => '1024x768p60', '--set-dv-bt-timings query' => 'BT timings set', ); - $console->{dv_timings_last_check} = time - 4; + $console->{dv_timings_last_check} = consoles::video_stream::DV_TIMINGS_CHECK_INTERVAL; $console->update_framebuffer(); is $console->{dv_timings}, '1024x768p60', 'correct resolution detected'; @@ -291,6 +307,23 @@ [('/dev/video0', 'ssh host', '--set-dv-bt-timings query')], [('/dev/video0', 'ssh host', '--get-dv-timings')], ], "calls to v4l2-ctl"; + + @v4l2_ctl_calls = (); + + # test video disconnection + %v4l2_ctl_results = ( + '--query-dv-timings' => '0', + '--get-dv-timings' => '1024x768p60', + '--set-dv-bt-timings query' => 'BT timings set', + ); + $console->{dv_timings_last_check} = consoles::video_stream::DV_TIMINGS_CHECK_INTERVAL; + + $console->update_framebuffer(); + is $console->{dv_timings}, '', 'correct dv_timings returned'; + is_deeply \@v4l2_ctl_calls, [ + [('/dev/video0', 'ssh host', '--query-dv-timings')] + ], "calls to v4l2-ctl matching"; + $console->disable_video; }; @@ -361,6 +394,12 @@ 'http://127.0.0.42:42000/cmd?sendkey=ctrl-x', 'http://127.0.0.42:42000/cmd?type=some+test%0A' ], "correct kbd emu requests sent"; + + $console->activate; + $console->mouse_set({x => 60, y => 60}); + my $mouse_position = $console->get_last_mouse_set(); + is_deeply($mouse_position, {x => 60, y => 60}, 'Got correct mouse position'); + $console->disable; }; done_testing; ++++++ os-autoinst.obsinfo ++++++ --- /var/tmp/diff_new_pack.ELxCUz/_old 2025-01-28 15:00:21.188971439 +0100 +++ /var/tmp/diff_new_pack.ELxCUz/_new 2025-01-28 15:00:21.192971604 +0100 @@ -1,5 +1,5 @@ name: os-autoinst -version: 4.6.1737544150.75887b5 -mtime: 1737544150 -commit: 75887b5b86e7e662b04854126347a8d9cca559bf +version: 4.6.1737980001.69ac906 +mtime: 1737980001 +commit: 69ac9064b094b1bd57b9f3ec8c964ac80bd41451