186
|
1 |
#!/usr/bin/perl
|
|
2 |
|
|
3 |
#curl "http://sym-build01:8080/ats3/XTestRunExecute.do?username=admin&password=admin&testrunpath=D:\smoketests\test_drops\9.zip
|
|
4 |
use strict;
|
|
5 |
use Getopt::Long;
|
|
6 |
use File::Copy;
|
|
7 |
use File::Spec;
|
|
8 |
|
|
9 |
my $username = "admin";
|
|
10 |
my $password = "admin";
|
|
11 |
my $host;
|
|
12 |
my $schedule;
|
|
13 |
my $host_drop_path;
|
|
14 |
my $local_drop_path;
|
|
15 |
my $local_test_pkg;
|
|
16 |
my $help;
|
|
17 |
my $dev_null = $^O =~ /^MSWin/ ? "nul" : "/dev/null";
|
|
18 |
|
|
19 |
sub usage($);
|
|
20 |
sub help();
|
|
21 |
sub usage_error();
|
|
22 |
|
|
23 |
my %optmap = ( 'host' => \$host,
|
|
24 |
'local-test-pkg' => \$local_test_pkg,
|
|
25 |
'host-drop-path' => \$host_drop_path,
|
|
26 |
'local-drop-path' =>\$local_drop_path,
|
|
27 |
'username' => \$username,
|
|
28 |
'password' => \$password,
|
|
29 |
'schedule' => \$schedule,
|
|
30 |
'help' => \$help);
|
|
31 |
|
|
32 |
GetOptions(\%optmap,
|
|
33 |
'host=s',
|
|
34 |
'local-test-pkg=s',
|
|
35 |
'host-drop-path=s',
|
|
36 |
'local-drop-path=s',
|
|
37 |
'username=s',
|
|
38 |
'password=s',
|
|
39 |
'schedule=s',
|
|
40 |
'help!')
|
|
41 |
or usage_error();
|
|
42 |
|
|
43 |
if ($help) {
|
|
44 |
help();
|
|
45 |
}
|
|
46 |
|
|
47 |
usage_error(), unless (defined($host) && defined($local_test_pkg) && defined($local_drop_path) && defined($host_drop_path));
|
|
48 |
|
|
49 |
my $curl_version = $^O =~ /^MSWin/ ? `curl --version 1> $dev_null 2>&1` : `curl --version 1> $dev_null 2>&1`;
|
|
50 |
die("Need program \"curl\". Not found"), if ($?);
|
|
51 |
die("Test drop path \"$local_drop_path\" not found"), unless ( -d "$local_drop_path");
|
|
52 |
|
|
53 |
$host .= ":8080", unless ($host =~ /:\d+$/);
|
|
54 |
|
|
55 |
my ($vol,$dir,$pkg);
|
|
56 |
my $local_test_drop;
|
|
57 |
my $host_test_drop;
|
|
58 |
|
|
59 |
if ($local_test_pkg =~ /^\.\.\.(.+)/ ) {
|
|
60 |
$pkg = $1;
|
|
61 |
$local_test_drop = File::Spec->catfile($local_drop_path,$pkg);
|
|
62 |
die("Test package file \"$local_test_drop\" not found"), unless ( -f "$local_test_drop");
|
|
63 |
}
|
|
64 |
else {
|
|
65 |
die("Test package file \"$local_test_pkg\" not found"), unless ( -f "$local_test_pkg");
|
|
66 |
($vol,$dir,$pkg) = File::Spec->splitpath($local_test_pkg);
|
|
67 |
$local_test_drop = File::Spec->catfile($local_drop_path,$pkg);
|
|
68 |
if ( -f "$local_test_drop") {
|
|
69 |
my $cmp_local_test_drop = $local_test_drop;
|
|
70 |
my $cmp_local_test_pkg = $local_test_pkg;
|
|
71 |
if ($^O =~ /^MSWin/) {
|
|
72 |
$cmp_local_test_drop = lc($local_test_drop);
|
|
73 |
$cmp_local_test_pkg = lc($local_test_pkg);
|
|
74 |
}
|
|
75 |
if ("$cmp_local_test_drop" eq "$cmp_local_test_pkg") {
|
|
76 |
if (unlink($local_test_drop) == 0) {
|
|
77 |
die("Can't delete stale test drop \"$local_test_drop\". $!");
|
|
78 |
}
|
|
79 |
else {
|
|
80 |
print("A stale test drop \"$local_test_drop\" existed. Deleted\n");
|
|
81 |
}
|
|
82 |
}
|
|
83 |
}
|
|
84 |
copy("$local_test_pkg","$local_test_drop")
|
|
85 |
or die("Cannot copy \"$local_test_pkg\" -> \"$local_test_drop\". $!");
|
|
86 |
}
|
|
87 |
$host_test_drop = File::Spec->catfile($host_drop_path,$pkg);
|
|
88 |
my $url ="http://$host/ats3/XTestRunExecute.do?username=$username&password=$password&testrunpath=$host_test_drop";
|
|
89 |
$url .= "&schedule=$schedule", if (defined($schedule));
|
|
90 |
my $curl_cmd = "curl \"$url\"";
|
|
91 |
system("$curl_cmd");
|
|
92 |
die("\nTest drop failed: $!"), if ($?);
|
|
93 |
print("\nTest drop done");
|
|
94 |
|
|
95 |
exit 0;
|
|
96 |
|
|
97 |
sub usage($)
|
|
98 |
{
|
|
99 |
my $error = shift;
|
|
100 |
my $fh = $error == 0 ? *STDOUT : *STDERR;
|
|
101 |
print $fh "ats3_testdrop.pl\n" .
|
|
102 |
"Send a test drop to an ATS3 server for execution\n" .
|
|
103 |
"usage:\n" .
|
|
104 |
" ats3_testdrop.pl --help\n" .
|
|
105 |
" ats3_testdrop.pl --host=HOSTNAME --local-test-pkg=PKGFILE --local-drop-path=LOCALPATH " .
|
|
106 |
" --host-drop-path=HOSTPATH " .
|
|
107 |
"[--username=ATS3USERNAME] [--password=ATS3PASSWORD] [--schedule=DD.MM.YYYY-HH:MM]\n" .
|
|
108 |
"options:\n" .
|
|
109 |
" --help Display this help and exit\n" .
|
|
110 |
" --host=HOSTAME HOSTNAME is ATS3 server\n" .
|
|
111 |
" --local-test-pkg=PKGFILE PKGFILE is the test package.\n" .
|
|
112 |
" If PKGFILE begins "..." a filename in LOCALPATH is assumed\n" .
|
|
113 |
" --local-drop-path=LOCALPATH Path to local directory where PKGFILE will be dropped\n" .
|
|
114 |
" --host-drop-path=HOSTPATH Host directory that is mapped to LOCALPATH.\n" .
|
|
115 |
" Must agree with the properties of the registered device that the test package nominates\n" .
|
|
116 |
" --username=ATS3USERNAME ATS3 user to whome the test will belong. Default=admin\n" .
|
|
117 |
" --password=ATS3PASSWORD Password of ATS3 user. Default=admin\n" .
|
|
118 |
" --schedule=DD.MM.YYYY-HH:MM Date-time at which test is to run. Default=as soon as possible\n";
|
|
119 |
exit $error;
|
|
120 |
}
|
|
121 |
|
|
122 |
sub help()
|
|
123 |
{
|
|
124 |
usage(0);
|
|
125 |
}
|
|
126 |
|
|
127 |
sub usage_error()
|
|
128 |
{
|
|
129 |
usage(1);
|
|
130 |
}
|
|
131 |
|
|
132 |
# EOF
|
|
133 |
|