diff --git a/lib/OpenQA/Schema/Result/ScheduledProducts.pm b/lib/OpenQA/Schema/Result/ScheduledProducts.pm index ef2f5656eabd..b71cc98f1603 100644 --- a/lib/OpenQA/Schema/Result/ScheduledProducts.pm +++ b/lib/OpenQA/Schema/Result/ScheduledProducts.pm @@ -255,7 +255,8 @@ sub _schedule_iso { for my $asset (values %{parse_assets_from_settings($args)}) { my ($name, $type) = ($asset->{name}, $asset->{type}); return {error => 'Asset type and name must not be empty.'} unless $name && $type; - return {error => "Failed to register asset $name."} unless $assets->register($type, $name, {missing_ok => 1}); + return {error => "Failed to register asset $name."} + unless $assets->register($type, $name, {missing_ok => 1, refresh_size => 1}); } # read arguments for deprioritization and obsoleten diff --git a/t/39-scheduled_products-table.t b/t/39-scheduled_products-table.t index 6a5f12a0a633..88593026b646 100644 --- a/t/39-scheduled_products-table.t +++ b/t/39-scheduled_products-table.t @@ -71,6 +71,17 @@ subtest 'handling assets with invalid name' => sub { is $scheduled_product->schedule_iso(\%settings), undef, 'scheduling the same product again prevented'; +subtest 'asset registration on scheduling' => sub { + $schema->storage->dbh->prepare('delete from assets where name = ? ')->execute('dvdsize42.iso'); + is $schema->resultset('Assets')->find({type => 'iso', name => 'dvdsize42.iso'}), undef, + 'dvdsize42.iso is not known yet'; + $scheduled_product = $scheduled_products->create(\%settings); + $scheduled_product->schedule_iso({ISO => 'dvdsize42.iso'}); + is $schema->resultset('Assets')->find({type => 'iso', name => 'dvdsize42.iso'})->size, 42, + 'dvdsize42.iso has known size'; + $scheduled_product->discard_changes; +}; + my $test_job = $scheduled_product->jobs->create({TEST => 'testjob'}); subtest 'cancellation after product has been scheduled' => sub { is $scheduled_product->cancel('test reason 1'), 1, 'cancel returns the number of affected jobs'; diff --git a/t/data/openqa/share/factory/iso/dvdsize42.iso b/t/data/openqa/share/factory/iso/dvdsize42.iso new file mode 100644 index 000000000000..c5666ccc0abb --- /dev/null +++ b/t/data/openqa/share/factory/iso/dvdsize42.iso @@ -0,0 +1 @@ +this asset file is exactly 42 bytes long!