# HG changeset patch # User dario # Date 1242219596 -3600 # Node ID 1b428f25477e74f1578a95ea524b51818f39e7fa # Parent 91ad95e5509a19d7d060512723d916c565f65169 First drop of smoketest support diff -r 91ad95e5509a -r 1b428f25477e common/build.xml --- a/common/build.xml Thu May 07 12:06:21 2009 +0100 +++ b/common/build.xml Wed May 13 13:59:56 2009 +0100 @@ -28,6 +28,9 @@ + + + @@ -134,7 +137,7 @@ - + @@ -176,6 +179,9 @@ + + + diff -r 91ad95e5509a -r 1b428f25477e common/common_props.ant.xml --- a/common/common_props.ant.xml Thu May 07 12:06:21 2009 +0100 +++ b/common/common_props.ant.xml Wed May 13 13:59:56 2009 +0100 @@ -62,6 +62,17 @@ + + + + + + + + + + + diff -r 91ad95e5509a -r 1b428f25477e common/smoketest/ats3_testdrop.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/common/smoketest/ats3_testdrop.pl Wed May 13 13:59:56 2009 +0100 @@ -0,0 +1,133 @@ +#!/usr/bin/perl + +#curl "http://sym-build01:8080/ats3/XTestRunExecute.do?username=admin&password=admin&testrunpath=D:\smoketests\test_drops\9.zip +use strict; +use Getopt::Long; +use File::Copy; +use File::Spec; + +my $username = "admin"; +my $password = "admin"; +my $host; +my $schedule; +my $host_drop_path; +my $local_drop_path; +my $local_test_pkg; +my $help; +my $dev_null = $^O =~ /^MSWin/ ? "nul" : "/dev/null"; + +sub usage($); +sub help(); +sub usage_error(); + +my %optmap = ( 'host' => \$host, + 'local-test-pkg' => \$local_test_pkg, + 'host-drop-path' => \$host_drop_path, + 'local-drop-path' =>\$local_drop_path, + 'username' => \$username, + 'password' => \$password, + 'schedule' => \$schedule, + 'help' => \$help); + +GetOptions(\%optmap, + 'host=s', + 'local-test-pkg=s', + 'host-drop-path=s', + 'local-drop-path=s', + 'username=s', + 'password=s', + 'schedule=s', + 'help!') + or usage_error(); + +if ($help) { + help(); +} + +usage_error(), unless (defined($host) && defined($local_test_pkg) && defined($local_drop_path) && defined($host_drop_path)); + +my $curl_version = $^O =~ /^MSWin/ ? `curl --version 1> $dev_null 2>&1` : `curl --version 1> $dev_null 2>&1`; +die("Need program \"curl\". Not found"), if ($?); +die("Test drop path \"$local_drop_path\" not found"), unless ( -d "$local_drop_path"); + +$host .= ":8080", unless ($host =~ /:\d+$/); + +my ($vol,$dir,$pkg); +my $local_test_drop; +my $host_test_drop; + +if ($local_test_pkg =~ /^\.\.\.(.+)/ ) { + $pkg = $1; + $local_test_drop = File::Spec->catfile($local_drop_path,$pkg); + die("Test package file \"$local_test_drop\" not found"), unless ( -f "$local_test_drop"); +} +else { + die("Test package file \"$local_test_pkg\" not found"), unless ( -f "$local_test_pkg"); + ($vol,$dir,$pkg) = File::Spec->splitpath($local_test_pkg); + $local_test_drop = File::Spec->catfile($local_drop_path,$pkg); + if ( -f "$local_test_drop") { + my $cmp_local_test_drop = $local_test_drop; + my $cmp_local_test_pkg = $local_test_pkg; + if ($^O =~ /^MSWin/) { + $cmp_local_test_drop = lc($local_test_drop); + $cmp_local_test_pkg = lc($local_test_pkg); + } + if ("$cmp_local_test_drop" eq "$cmp_local_test_pkg") { + if (unlink($local_test_drop) == 0) { + die("Can't delete stale test drop \"$local_test_drop\". $!"); + } + else { + print("A stale test drop \"$local_test_drop\" existed. Deleted\n"); + } + } + } + copy("$local_test_pkg","$local_test_drop") + or die("Cannot copy \"$local_test_pkg\" -> \"$local_test_drop\". $!"); +} +$host_test_drop = File::Spec->catfile($host_drop_path,$pkg); +my $url ="http://$host/ats3/XTestRunExecute.do?username=$username&password=$password&testrunpath=$host_test_drop"; +$url .= "&schedule=$schedule", if (defined($schedule)); +my $curl_cmd = "curl \"$url\""; +system("$curl_cmd"); +die("\nTest drop failed: $!"), if ($?); +print("\nTest drop done"); + +exit 0; + +sub usage($) +{ + my $error = shift; + my $fh = $error == 0 ? *STDOUT : *STDERR; + print $fh "ats3_testdrop.pl\n" . + "Send a test drop to an ATS3 server for execution\n" . + "usage:\n" . + " ats3_testdrop.pl --help\n" . + " ats3_testdrop.pl --host=HOSTNAME --local-test-pkg=PKGFILE --local-drop-path=LOCALPATH " . + " --host-drop-path=HOSTPATH " . + "[--username=ATS3USERNAME] [--password=ATS3PASSWORD] [--schedule=DD.MM.YYYY-HH:MM]\n" . + "options:\n" . + " --help Display this help and exit\n" . + " --host=HOSTAME HOSTNAME is ATS3 server\n" . + " --local-test-pkg=PKGFILE PKGFILE is the test package.\n" . + " If PKGFILE begins "..." a filename in LOCALPATH is assumed\n" . + " --local-drop-path=LOCALPATH Path to local directory where PKGFILE will be dropped\n" . + " --host-drop-path=HOSTPATH Host directory that is mapped to LOCALPATH.\n" . + " Must agree with the properties of the registered device that the test package nominates\n" . + " --username=ATS3USERNAME ATS3 user to whome the test will belong. Default=admin\n" . + " --password=ATS3PASSWORD Password of ATS3 user. Default=admin\n" . + " --schedule=DD.MM.YYYY-HH:MM Date-time at which test is to run. Default=as soon as possible\n"; + exit $error; +} + +sub help() +{ + usage(0); +} + +sub usage_error() +{ + usage(1); +} + +# EOF + \ No newline at end of file diff -r 91ad95e5509a -r 1b428f25477e common/smoketest/make_junction.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/common/smoketest/make_junction.pl Wed May 13 13:59:56 2009 +0100 @@ -0,0 +1,96 @@ +#!/usr/bin/perl + +use strict; +use Getopt::Long; + +my $link; +my $target; +my $help; +my $force = 0; + +sub usage($); +sub help(); +sub usage_error(); + +my %optmap = ( 'link' => \$link, + 'target' => \$target, + 'force' => \$force, + 'help' => \$help); + +GetOptions(\%optmap, + 'link=s', + 'target=s', + 'force!', + 'help!') + or usage_error(); + +if ($help) { + help(); +} + +usage_error(), unless (defined($link) && defined($target)); + +my $junction_help = `junction /?`; +die("Need command \"junction\". Not found\n"), if ($junction_help =~ /is not recognised/); +die("Directory \"$target\" not found\n"), unless -d "$target"; + +if ( -e "$link") { + print("\"$link\" already exists. "); + if (!$force) { + my $choice; + while($choice ne 'y' and $choice ne 'n') { + print "Delete? (y/n)? "; + $choice = ; + chomp($choice); + $choice = lc($choice); + } + $force = $choice eq 'y'; + } + if ($force) { + system("junction -d \"$link\" > nul"); + if ($?) { + die("Cannot delete \"$link\": $!\n"); + } + else { + print "Deleted \"$link\"\n"; + } + } +} + +system("junction \"$link\" \"$target\" > nul"); +if ($?) { + die("Cannot cteate junction \"$link\" -> \"$target\": $!\n"); +} +else { + print("Created junction \"$link\" -> \"$target\"\n"); +} +exit 0; + +sub usage($) +{ + my $error = shift; + my $fh = $error == 0 ? *STDOUT : *STDERR; + print $fh "make_junction.pl\n" . + "Create a Windows junction (a.k.a symbolic link)\n" . + "usage:\n" . + " make_junction.pl --help\n" . + " make_junction.pl --link=LINKDIR --target=TARGDIR\n " . + "options:\n" . + " --help Display this help and exit\n" . + " --link=LINKDIR LINKDIR specifies the junction to be created. Last component is the junction. The rest must exist\n" . + " --target=TARGDIR TARGDIR is directory to which the junction will point.\n"; + exit $error; +} + +sub help() +{ + usage(0); +} + +sub usage_error() +{ + usage(1); +} + +# EOF + \ No newline at end of file diff -r 91ad95e5509a -r 1b428f25477e common/smoketest/smoke_test.ant.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/common/smoketest/smoke_test.ant.xml Wed May 13 13:59:56 2009 +0100 @@ -0,0 +1,26 @@ + + + + + [SF-SMOKE-TEST] + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file