From f12093c0b325d1d57e5415651b6474fb60f41b2b Mon Sep 17 00:00:00 2001 From: Anna Babu Palathingal <148897727+annaibm@users.noreply.github.com> Date: Mon, 15 Apr 2024 17:17:12 -0400 Subject: [PATCH] Added system test prestage jars - Enables to avoid system test prerequisite zip file being empty. related: https://github.com/adoptium/aqa-tests/issues/4912 Signed-off-by: Anna Babu Palathingal --- scripts/getDependencies.pl | 114 ++++++++++++++++++++++++++++++------- 1 file changed, 94 insertions(+), 20 deletions(-) diff --git a/scripts/getDependencies.pl b/scripts/getDependencies.pl index 5623d968..af37da14 100644 --- a/scripts/getDependencies.pl +++ b/scripts/getDependencies.pl @@ -188,14 +188,75 @@ sha1 => '2cc971b6c20949c1ff98d1a4bc741ee848a09523' }); -my @dependencies = split(',', $dependencyList); +my %system_jars = ( + ant_launcher => { + url => 'https://repo1.maven.org/maven2/org/apache/ant/ant-launcher/1.8.1/ant-launcher-1.8.1.jar', + dir => 'apache-ant/lib', + fname => 'ant-launcher.jar', + sha1 => 'c99d018fcc43a1540e465b9a097508b19075198c' + }, + asm => { + url => 'https://repository.ow2.org/nexus/content/repositories/releases/org/ow2/asm/asm/9.0/asm-9.0.jar', + dir => 'asm', + fname => 'asm.jar', + sha1 => 'af582ff60bc567c42d931500c3fdc20e0141ddf9' + }, + cvsclient => { + url => 'https://repo1.maven.org/maven2/org/netbeans/lib/cvsclient/20060125/cvsclient-20060125.jar', + dir => 'cvsclient', + fname => 'org-netbeans-lib-cvsclient.jar', + sha1 => 'cc80bd0085c79be7ed332cbdc1db77498bff1fda' + }, + hamcrest_core => { + url => 'https://repo1.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar', + dir => 'junit', + fname => 'hamcrest-core.jar', + sha1 => '42a25dc3219429f0e5d060061f71acb49bf010a0' + }, + junit => { + url => 'https://repo1.maven.org/maven2/junit/junit/4.12/junit-4.12.jar', + dir => 'junit', + fname => 'junit.jar', + sha1 => '2973d150c0dc1fefe998f834810d68f278ea58ec' + }, + log4j_api => { + url => 'https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-api/2.15.0/log4j-api-2.15.0.jar', + dir => 'log4j', + fname => 'log4j-api.jar', + sha1 => '4a5aa7e55a29391c6f66e0b259d5189aa11e45d0' + }, + log4j_core => { + url => 'https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-core/2.15.0/log4j-core-2.15.0.jar', + dir => 'log4j', + fname => 'log4j-core.jar', + sha1 => 'ba55c13d7ac2fd44df9cc8074455719a33f375b9' + }, + mauve => { + url => 'https://ci.adoptium.net/job/systemtest.getDependency/lastSuccessfulBuild/artifact/systemtest_prereqs/mauve/mauve.jar', + dir => 'mauve', + fname => 'mauve.jar', + sha1 => '8ed5b172be6a8885b72d0015f44e2a0b6c172d47' + }, + tools => { + url => 'https://ci.adoptium.net/job/systemtest.getDependency/lastSuccessfulBuild/artifact/systemtest_prereqs/tools/tools.jar', + dir => 'tools', + fname => 'tools.jar', + sha1 => '6f3219b1f8b346380664c525bf97018fc1420159' + }); +my %jars_to_use; +if ($path =~ /system_lib/) { + %jars_to_use = (%base, %system_jars); +} else { + %jars_to_use = %base; +} +my @dependencies = split(',', $dependencyList); # Put all dependent jars hash to array to prepare downloading my @jars_info; -foreach my $dependency (keys %base) { +foreach my $dependency (keys %jars_to_use) { foreach my $i (@dependencies) { if ($i eq "all" || $dependency eq $i) { - push(@jars_info, $base{$dependency}); + push(@jars_info, $jars_to_use{$dependency}); } } } @@ -212,7 +273,15 @@ for my $i (0 .. $#jars_info) { my $url = $jars_info[$i]{url}; my $fn = $jars_info[$i]{fname}; - my $filename = $path . $sep . $fn; + my $dir = $jars_info[$i]{dir} // ""; + my $full_dir_path = File::Spec->catdir($path, $dir); + + if (!-d $full_dir_path) { + make_path($full_dir_path, {chmod => 0777, verbose => 1}) or die "Failed to create directory: $full_dir_path: $!"; + print "Directory created: $full_dir_path\n"; + } + + my $filename = File::Spec->catfile($full_dir_path, $fn); my $shaurl = $jars_info[$i]{shaurl}; my $shafn = $jars_info[$i]{shafn}; @@ -257,30 +326,35 @@ next; } + my $ignoreChecksum = ($url =~ /systemtest.getDependency/); # download the dependent third party jar downloadFile($url, $filename); # if shaurl is provided, re-download the sha file and reset the expectedsha value # as the dependent third party jar is newly downloadeded - if ($shaurl) { - downloadFile($shaurl, $shafn); - $expectedsha = getShaFromFile($shafn, $fn); - } + if (!$ignoreChecksum) { + if ($shaurl) { + downloadFile($shaurl, $shafn); + $expectedsha = getShaFromFile($shafn, $fn); + } - if (!$expectedsha) { - die "ERROR: cannot get the expected sha for file $fn.\n"; - } + if (!$expectedsha) { + die "ERROR: cannot get the expected sha for file $fn.\n"; + } - # validate dependencies sha sum - $sha = Digest::SHA->new($shaalg); - $sha->addfile($filename); - $digest = $sha->hexdigest; + # validate dependencies sha sum + $sha = Digest::SHA->new($shaalg); + $sha->addfile($filename); + $digest = $sha->hexdigest; - if ($digest ne $expectedsha) { - print "Expected sha is: $expectedsha,\n"; - print "Actual sha is : $digest.\n"; - print "Please delete $filename and rerun the program!"; - die "ERROR: sha checksum error.\n"; + if ($digest ne $expectedsha) { + print "Expected sha is: $expectedsha,\n"; + print "Actual sha is : $digest.\n"; + print "Please delete $filename and rerun the program!"; + die "ERROR: sha checksum error.\n"; + } + } else { + print "Checksum verification skipped for $filename\n"; } } print "downloaded dependent third party jars successfully\n";