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-01-26 11:02:38 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/os-autoinst (Old) and /work/SRC/openSUSE:Factory/.os-autoinst.new.1928 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "os-autoinst" Mon Jan 26 11:02:38 2026 rev:560 rq:1328963 version:5.1769153586.72cabd0 Changes: -------- --- /work/SRC/openSUSE:Factory/os-autoinst/os-autoinst.changes 2026-01-17 21:43:24.363534416 +0100 +++ /work/SRC/openSUSE:Factory/.os-autoinst.new.1928/os-autoinst.changes 2026-01-26 11:03:07.964020152 +0100 @@ -1,0 +2,13 @@ +Fri Jan 23 21:33:15 UTC 2026 - [email protected] + +- Update to version 5.1769153586.72cabd0: + * Replace remaining functions with subroutine signatures in 18-qemu.t + * Fix snapshot overlay mechanism to avoid duplication + * fix(dist): provide proper copyright headers in all spec-files + * fix(dist): try to fix os-autoinst-obs-auto-submit reverting content + * fix(dist): exclude unstable t/28-signalblocker.t in OBS checks + * Add documentation of APPEND variable + * Add undocumented KERNEL/INITRD to the supported variables + * os-autoinst-generate-needle-preview: Embed PNG + +------------------------------------------------------------------- Old: ---- os-autoinst-5.1768577300.b85e486.obscpio New: ---- os-autoinst-5.1769153586.72cabd0.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ os-autoinst-devel-test.spec ++++++ --- /var/tmp/diff_new_pack.Shgbc7/_old 2026-01-26 11:03:11.064152008 +0100 +++ /var/tmp/diff_new_pack.Shgbc7/_new 2026-01-26 11:03:11.068152178 +0100 @@ -18,7 +18,7 @@ %define short_name os-autoinst-devel Name: %{short_name}-test -Version: 5.1768577300.b85e486 +Version: 5.1769153586.72cabd0 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ os-autoinst-openvswitch-test.spec ++++++ --- /var/tmp/diff_new_pack.Shgbc7/_old 2026-01-26 11:03:11.108153879 +0100 +++ /var/tmp/diff_new_pack.Shgbc7/_new 2026-01-26 11:03:11.112154050 +0100 @@ -19,7 +19,7 @@ %define name_ext -test %define short_name os-autoinst-openvswitch Name: %{short_name}%{?name_ext} -Version: 5.1768577300.b85e486 +Version: 5.1769153586.72cabd0 Release: 0 Summary: test package for %{short_name} License: GPL-2.0-or-later ++++++ os-autoinst-test.spec ++++++ --- /var/tmp/diff_new_pack.Shgbc7/_old 2026-01-26 11:03:11.144155411 +0100 +++ /var/tmp/diff_new_pack.Shgbc7/_new 2026-01-26 11:03:11.144155411 +0100 @@ -19,7 +19,7 @@ %define name_ext -test %define short_name os-autoinst Name: %{short_name}%{?name_ext} -Version: 5.1768577300.b85e486 +Version: 5.1769153586.72cabd0 Release: 0 Summary: test package for os-autoinst License: GPL-2.0-or-later ++++++ os-autoinst.spec ++++++ --- /var/tmp/diff_new_pack.Shgbc7/_old 2026-01-26 11:03:11.184157112 +0100 +++ /var/tmp/diff_new_pack.Shgbc7/_new 2026-01-26 11:03:11.188157282 +0100 @@ -17,7 +17,7 @@ Name: os-autoinst -Version: 5.1768577300.b85e486 +Version: 5.1769153586.72cabd0 Release: 0 Summary: OS-level test automation License: GPL-2.0-or-later ++++++ os-autoinst-5.1768577300.b85e486.obscpio -> os-autoinst-5.1769153586.72cabd0.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1768577300.b85e486/OpenQA/Qemu/BlockDev.pm new/os-autoinst-5.1769153586.72cabd0/OpenQA/Qemu/BlockDev.pm --- old/os-autoinst-5.1768577300.b85e486/OpenQA/Qemu/BlockDev.pm 2026-01-16 16:28:20.000000000 +0100 +++ new/os-autoinst-5.1769153586.72cabd0/OpenQA/Qemu/BlockDev.pm 2026-01-23 08:33:06.000000000 +0100 @@ -168,8 +168,6 @@ sub gen_unlink_list ($self) { return () unless $self->needs_creating; - return ($self->file, $self->backing_file->gen_unlink_list()) - if defined $self->backing_file; return ($self->file); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1768577300.b85e486/OpenQA/Qemu/BlockDevConf.pm new/os-autoinst-5.1769153586.72cabd0/OpenQA/Qemu/BlockDevConf.pm --- old/os-autoinst-5.1768577300.b85e486/OpenQA/Qemu/BlockDevConf.pm 2026-01-16 16:28:20.000000000 +0100 +++ new/os-autoinst-5.1769153586.72cabd0/OpenQA/Qemu/BlockDevConf.pm 2026-01-23 08:33:06.000000000 +0100 @@ -210,6 +210,8 @@ die 'The last block device in ' . $drive->id . "'s block device chain is a snapshot" unless defined $snap->backing_file; + # This prevents deleted overlays breaking the sequence + $snap->overlay(undef); # Will cause the snapshot overlay to be recreated when init_blockdev_images is run $snap->needs_creating(1); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1768577300.b85e486/OpenQA/Qemu/DriveDevice.pm new/os-autoinst-5.1769153586.72cabd0/OpenQA/Qemu/DriveDevice.pm --- old/os-autoinst-5.1768577300.b85e486/OpenQA/Qemu/DriveDevice.pm 2026-01-16 16:28:20.000000000 +0100 +++ new/os-autoinst-5.1769153586.72cabd0/OpenQA/Qemu/DriveDevice.pm 2026-01-23 08:33:06.000000000 +0100 @@ -151,7 +151,8 @@ bootindex => $self->bootindex, serial => $self->serial, id => $self->id, - num_queues => $self->num_queues}; + num_queues => $self->num_queues, + last_overlay_id => $self->last_overlay_id}; } sub _from_map ($self, $map, $cont_conf, $snap_conf) { @@ -166,7 +167,8 @@ ->bootindex($map->{bootindex}) ->serial($map->{serial}) ->id($map->{id}) - ->num_queues($map->{num_queues}); + ->num_queues($map->{num_queues}) + ->last_overlay_id($map->{last_overlay_id} // 0); } sub CARP_TRACE ($self) { 'OpenQA::Qemu::DriveDevice(' . ($self->id || '') . ')' } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1768577300.b85e486/t/18-qemu.t new/os-autoinst-5.1769153586.72cabd0/t/18-qemu.t --- old/os-autoinst-5.1768577300.b85e486/t/18-qemu.t 2026-01-16 16:28:20.000000000 +0100 +++ new/os-autoinst-5.1769153586.72cabd0/t/18-qemu.t 2026-01-23 08:33:06.000000000 +0100 @@ -236,9 +236,10 @@ $ss = $ssc->revert_to_snapshot('a snapshot'); is($ss->sequence, 1, 'Returned snapshot sequence number'); -$bdc->for_each_drive(sub { - my $drive = shift; - $bdc->revert_to_snapshot($drive, $ss); +$bdc->for_each_drive(sub ($drive) { + my $unlinks = $bdc->revert_to_snapshot($drive, $ss); + is(scalar(@$unlinks), 0, 'Correct number of overlay files need unlinking for ' . $drive->id); + is($drive->drive->{overlay}, undef, 'Reverted snapshot has no forward link'); is($drive->drive->needs_creating, 1, 'Active layer set to be recreated for drive ' . $drive->id); }); @gcmdl = $proc->gen_cmdline(); @@ -302,8 +303,7 @@ $ss = $ssc->revert_to_snapshot('snapshot 1'); is($ss->sequence, 1, 'Returned snapshot sequence number'); -$bdc->for_each_drive(sub { - my $drive = shift; +$bdc->for_each_drive(sub ($drive) { my $unlinks = $bdc->revert_to_snapshot($drive, $ss); is(scalar(@$unlinks), 9, 'Correct number of overlay files need unlinking for ' . $drive->id); }); @@ -358,8 +358,7 @@ $ss = $ssc->revert_to_snapshot('snapshot 1'); is($ss->sequence, 1, 'Returned snapshot sequence number'); -$bdc->for_each_drive(sub { - my $drive = shift; +$bdc->for_each_drive(sub ($drive) { my $unlinks = $bdc->revert_to_snapshot($drive, $ss); is(scalar(@$unlinks), 10, 'Correct number of overlay files need unlinking for ' . $drive->id); }); @@ -434,8 +433,7 @@ subtest 'qemu is not called on an empty file when ISO_1 is an empty string' => sub { my $mock_proc = Test::MockModule->new('OpenQA::Qemu::Proc'); my $call_count = 0; - $mock_proc->redefine(get_img_size => sub { - my ($iso) = @_; # uncoverable statement + $mock_proc->redefine(get_img_size => sub ($iso) { $call_count++; # uncoverable statement die 'get_img_size called on an empty string' unless $iso; # uncoverable statement }); @@ -593,4 +591,58 @@ is $diag[0], 'Unlinking foo', 'Message about unlinking foo'; }; +subtest 'verify incremental overlay mapping to snapshot' => sub { + %vars = (NUMDISKS => 1, + HDDMODEL => 'scsi-hd', + CDMODEL => 'scsi-cd', + ISO => "$Bin/data/Core-7.2.iso", + HDDSIZEGB => 10, + SCSICONTROLLER => 'virtio-scsi-device'); + + $proc = qemu_proc('-static-args', \%vars); + $ssc = $proc->snapshot_conf; + $bdc = $proc->blockdev_conf; + + for my $i (1 .. 3) { + my $ss = $ssc->add_snapshot("snapshot$i"); + $bdc->for_each_drive(sub ($drive) { + $bdc->add_snapshot_to_drive($drive, $ss); + is $drive->last_overlay_id, $i, 'Each snapshot is a chain with increased last_overlay_id'; + + }); + } + $bdc->mark_all_created(); + + my %overlay_files; + subtest 'check overlay chain' => sub { + $bdc->for_each_drive(sub ($drive) { + $drive->for_each_overlay(sub ($overlay) { + my $olfile = $overlay->file; + $overlay_files{$olfile}++; + }); + }); + for my $olfile (keys %overlay_files) { + ok(exists $overlay_files{"$olfile"}, 'hd0-overlay1 exists for snapshot1'); + } + }; + + subtest 'no duplicated overlays are being created' => sub { + my @duplicates = grep { $overlay_files{$_} > 1 } keys %overlay_files; + is(scalar(@duplicates), 0, 'No duplicate overlay filenames found') + or always_explain \@duplicates; + }; + + subtest 'revert_to_snapshot should recreate overlay1' => sub { + my $ss = $ssc->revert_to_snapshot('snapshot1'); + $bdc->for_each_drive(sub ($drive) { $bdc->revert_to_snapshot($drive, $ss) }); + + my @unlink_list = $bdc->gen_unlink_list(); + my @hd_overlays = grep { /hd0-overlay/ } @unlink_list; + is(scalar(@hd_overlays), 1, 'should only include the overlay marked for recreation'); + like($hd_overlays[0], qr/hd0-overlay1$/, 'Correct overlay1 marked for unlinking'); + my @base_files = grep { !/overlay/ } @unlink_list; + is(scalar(@base_files), 0, 'No base backing files in unlink list'); + }; +}; + done_testing(); ++++++ os-autoinst.obsinfo ++++++ --- /var/tmp/diff_new_pack.Shgbc7/_old 2026-01-26 11:03:13.728265319 +0100 +++ /var/tmp/diff_new_pack.Shgbc7/_new 2026-01-26 11:03:13.736265659 +0100 @@ -1,5 +1,5 @@ name: os-autoinst -version: 5.1768577300.b85e486 -mtime: 1768577300 -commit: b85e4864b41e812c63df80ccd7adb4bf0cd4b2f9 +version: 5.1769153586.72cabd0 +mtime: 1769153586 +commit: 72cabd06219204bb1c60c664ac5edbd87f26e030
