common/tools/ats/ats_specialise_test_drop.pl
author Maciej Seroka <maciejs@symbian.org>
Wed, 06 Jan 2010 13:41:51 +0000
changeset 836 675529c38614
parent 823 65dc12e0fcac
child 989 95924ae2e0d6
permissions -rw-r--r--
Added smoke test for making a connection to a web server through ethernet
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
     1
#!/usr/bin/perl
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
     2
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
     3
# Copyright (c) 2009 Symbian Foundation Ltd
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
     4
# This component and the accompanying materials are made available
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
     5
# under the terms of the License "Eclipse Public License v1.0"
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
     6
# which accompanies this distribution, and is available
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
     7
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
     8
#
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
     9
# Initial Contributors:
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    10
# Symbian Foundation Ltd - initial contribution.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    11
#   Mike Kinghan, mikek@symbian.org
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    12
#
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    13
# Contributors:
550
4128d08e7c08 Changed ats_specialise_testdrop and build.test.xml to use the 'HOST' device property to fix the devicem rather than the 'NAME' property
Brendan Donegan brendand@symbian.org
parents: 317
diff changeset
    14
#	Brendan Donegan, brendand@symbian.org
836
675529c38614 Added smoke test for making a connection to a web server through ethernet
Maciej Seroka <maciejs@symbian.org>
parents: 823
diff changeset
    15
#	Maciej Seroka, maciejs@symbian.org
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    16
#
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    17
# Description:
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    18
#   This is a tool for setting the name of an ATS test drop, and/or the build id
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    19
#   of the build being tested, and/or the name of the device on which
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    20
#   it is to be run, by modifying the XML test drop specificcation.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    21
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    22
use strict;
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    23
use Getopt::Long;
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    24
use XML::Simple;
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    25
use File::Copy;
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    26
use Data::Dumper;
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    27
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    28
my $test_drop_name;	# Test drop name to be embedded in output XML
550
4128d08e7c08 Changed ats_specialise_testdrop and build.test.xml to use the 'HOST' device property to fix the devicem rather than the 'NAME' property
Brendan Donegan brendand@symbian.org
parents: 317
diff changeset
    29
my $build_id;   # Build ID to be embedded in output XML 
4128d08e7c08 Changed ats_specialise_testdrop and build.test.xml to use the 'HOST' device property to fix the devicem rather than the 'NAME' property
Brendan Donegan brendand@symbian.org
parents: 317
diff changeset
    30
my $host_name;  # Host name to be embedded in output XML
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    31
my $srcfile;	# Input test drop file, either .xml or .zip
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    32
my $destfile;	# Leafname for output file. Extension will be .xml or .zip as input.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    33
				# If unspecified then the input file is updated. 
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    34
my $help;		# Do help?
550
4128d08e7c08 Changed ats_specialise_testdrop and build.test.xml to use the 'HOST' device property to fix the devicem rather than the 'NAME' property
Brendan Donegan brendand@symbian.org
parents: 317
diff changeset
    35
my $srctype;	# Type of input file, .xml or .zip
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    36
my $dev_null = $^O =~ /^MSWin/ ? "nul" : "/dev/null";	# OS-dependent nul device.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    37
my $zipper;		# Zip command, depending on whether zip or 7z is available.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    38
my $unzipper;	# Unzip command, depending on whether [unzip or 7z is available.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    39
my $xml_in;		# Name of the input xml file. Always 'test.xml' if extracted from zipped test drop.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    40
my $temp_dest_name; # Leafname of temporary output file, if $destfile undefined.
820
2a9e6403efaf Updated postbuild to publish smoketest results
Maciej Seroka <maciejs@symbian.org>
parents: 819
diff changeset
    41
my $publish;	# Publishing folder for ats reports.
836
675529c38614 Added smoke test for making a connection to a web server through ethernet
Maciej Seroka <maciejs@symbian.org>
parents: 823
diff changeset
    42
my $bld_drive;  # Subst'd drive
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    43
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    44
sub usage($);
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    45
sub help();
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    46
sub usage_error();
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    47
sub silent_command($);
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    48
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    49
my %optmap = (  'test-drop-name' => \$test_drop_name,
550
4128d08e7c08 Changed ats_specialise_testdrop and build.test.xml to use the 'HOST' device property to fix the devicem rather than the 'NAME' property
Brendan Donegan brendand@symbian.org
parents: 317
diff changeset
    50
			    'host-name' => \$host_name,
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    51
			    'build-id' => \$build_id,
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    52
			    'src' => \$srcfile,
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    53
			    'dest' => \$destfile,
820
2a9e6403efaf Updated postbuild to publish smoketest results
Maciej Seroka <maciejs@symbian.org>
parents: 819
diff changeset
    54
                'help' => \$help,
836
675529c38614 Added smoke test for making a connection to a web server through ethernet
Maciej Seroka <maciejs@symbian.org>
parents: 823
diff changeset
    55
                'publish' => \$publish,
675529c38614 Added smoke test for making a connection to a web server through ethernet
Maciej Seroka <maciejs@symbian.org>
parents: 823
diff changeset
    56
				'bld-drive' => \$bld_drive);
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    57
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    58
GetOptions(\%optmap,
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    59
          'test-drop-name=s',
550
4128d08e7c08 Changed ats_specialise_testdrop and build.test.xml to use the 'HOST' device property to fix the devicem rather than the 'NAME' property
Brendan Donegan brendand@symbian.org
parents: 317
diff changeset
    60
          'host-name=s',
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    61
          'build-id=s',
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    62
          'src=s',
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    63
          'dest=s',
820
2a9e6403efaf Updated postbuild to publish smoketest results
Maciej Seroka <maciejs@symbian.org>
parents: 819
diff changeset
    64
          'help!',
836
675529c38614 Added smoke test for making a connection to a web server through ethernet
Maciej Seroka <maciejs@symbian.org>
parents: 823
diff changeset
    65
          'publish=s', 
675529c38614 Added smoke test for making a connection to a web server through ethernet
Maciej Seroka <maciejs@symbian.org>
parents: 823
diff changeset
    66
		  'bld-drive=s') 
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    67
          or usage_error();
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    68
821
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
    69
# Check if Tie::File module installed
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
    70
eval("use Tie::File");
836
675529c38614 Added smoke test for making a connection to a web server through ethernet
Maciej Seroka <maciejs@symbian.org>
parents: 823
diff changeset
    71
if ($@) { $publish = ''; $bld_drive = ''; };
821
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
    72
		  
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    73
if ($help) {
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    74
	help();
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    75
}
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    76
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    77
# --src is mandatory.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    78
usage_error(), unless (defined($srcfile));
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    79
if ($srcfile =~ /(\.xml$)/i) {
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    80
    $srctype = lc($1);
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    81
}
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    82
elsif ($srcfile =~ /(\.zip$)/i) {
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    83
    $srctype = lc($1);
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    84
}
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    85
else {
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    86
	# src file must have extension .xml or .zip
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    87
    usage_error();
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    88
}
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    89
die("File \"$srcfile\" does not exist"), unless -f $srcfile;
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    90
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    91
if (!$destfile) { # dest file unspecified. We will update the src file.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    92
	$temp_dest_name = "ats_specialise_test_drop.out";
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    93
	$destfile = $temp_dest_name;
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    94
}
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    95
else {
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    96
    # If dest file has same extension as src then strip off, cos we'll append it anyway.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    97
    $destfile =~ s/$srctype$//;
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    98
}
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    99
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   100
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   101
if ($srctype =~ /^\.zip$/) { # Test drop is zip. Must contain test.xml.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   102
    $xml_in = "test.xml"; # This is our input XML.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   103
    if ( -f $xml_in) {
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   104
		# Pre-emptively delete anystale xml file.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   105
        unlink($xml_in) or die("Cannot delete stale $xml_in: $!\n");
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   106
    }
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   107
    if (!silent_command("zip -v")) { # See if we've got zip
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   108
        $zipper = "zip -m $destfile.zip test.xml";
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   109
        $unzipper = "unzip -o $srcfile $xml_in -d .";
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   110
    }
279
6aa713519d4e Fixed usage of 7z in ats_specialise_test_drop.pl
ThomasE
parents: 134
diff changeset
   111
    elsif (!silent_command("7z -h")) { # Else see if we've got 7zip
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   112
        $zipper = "7z u $destfile.zip test.xml";
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   113
        $unzipper = "7z e $srcfile $xml_in";
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   114
    }
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   115
    else { # Got no archiver.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   116
        die ("Need programs zip/unzip or 7z. Not found\n");
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   117
    }
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   118
    # Extract test.xml from zip.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   119
    system("$unzipper > $dev_null") and die("Could not unzip \"$srcfile\"\n");
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   120
    die("Did not find $xml_in within \"$srcfile\"\n"), unless( -f "$xml_in");
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   121
    
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   122
}
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   123
else {
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   124
    $xml_in = $srcfile;
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   125
}
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   126
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   127
# Parse the input XML into hashref.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   128
my $test_drop = XMLin("./$xml_in", keeproot => 1,
823
65dc12e0fcac Fixed postAction in ats_specialise_test_drop.pl
Maciej Seroka <maciejs@symbian.org>
parents: 821
diff changeset
   129
    forcearray => [ 'name', 'id','owner','priority','buildid','postAction','type','target','device', 'property', 'command', 'param'],#
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   130
        keyattr => [] );
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   131
    
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   132
# Insert the specified test drop name, if any.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   133
$test_drop->{'test'}->{'name'}->[0] = $test_drop_name, if $test_drop_name;
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   134
# Insert the specified build id, if any.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   135
$test_drop->{'test'}->{'buildid'}->[0] = $build_id, if $build_id;
819
3df98b3b0a8d Updated ats_specialise_test_drop.pl to insert FileStoreAction param
Maciej Seroka <maciejs@symbian.org>
parents: 730
diff changeset
   136
# Insert the FileStoreAction parameter
820
2a9e6403efaf Updated postbuild to publish smoketest results
Maciej Seroka <maciejs@symbian.org>
parents: 819
diff changeset
   137
my $postaction_params = $test_drop->{'test'}->{'postAction'}->[0]->{'params'}->{'param'}, if $publish;
821
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   138
$postaction_params->[1] = { 'name' => "to-folder", 'value' => $publish }, if $publish;
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   139
550
4128d08e7c08 Changed ats_specialise_testdrop and build.test.xml to use the 'HOST' device property to fix the devicem rather than the 'NAME' property
Brendan Donegan brendand@symbian.org
parents: 317
diff changeset
   140
if ($host_name) { # Also insert specified host name
730
9837304abcc6 host name is added for any number of devices
brendand
parents: 639
diff changeset
   141
	my $devices = $test_drop->{'test'}->{'target'}->[0]->{'device'};
9837304abcc6 host name is added for any number of devices
brendand
parents: 639
diff changeset
   142
    
9837304abcc6 host name is added for any number of devices
brendand
parents: 639
diff changeset
   143
    foreach my $device (@{$devices}) {
9837304abcc6 host name is added for any number of devices
brendand
parents: 639
diff changeset
   144
        my $device_properties = $device->{'property'};
9837304abcc6 host name is added for any number of devices
brendand
parents: 639
diff changeset
   145
        my $num_properties = @{$device_properties};
9837304abcc6 host name is added for any number of devices
brendand
parents: 639
diff changeset
   146
        
9837304abcc6 host name is added for any number of devices
brendand
parents: 639
diff changeset
   147
        $device_properties->[$num_properties] = { 'name' => "HOST", 'value' => "$host_name" };
9837304abcc6 host name is added for any number of devices
brendand
parents: 639
diff changeset
   148
        $device->{'property'} = $device_properties;
9837304abcc6 host name is added for any number of devices
brendand
parents: 639
diff changeset
   149
    }
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   150
}
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   151
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   152
if ($srctype =~ /^\.xml$/i ) { # Input file was XML
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   153
    # Write new XML to dest file.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   154
    open OUT,">$destfile.xml" or die("Cannot open file \"$destfile.xml\" for writing. $!\n");
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   155
    print OUT XMLout($test_drop, keeproot => 1);
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   156
    close OUT;    
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   157
}
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   158
else { #Input file was a zip.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   159
    # Write new XML to test.xml
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   160
    open OUT,">test.xml" or die("Cannot open file \"test.xml\" for writing. $!\n");
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   161
    print OUT XMLout($test_drop, keeproot => 1);
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   162
    close OUT;
821
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   163
	if ($publish) { #Move <type>FileStoreAction</type> above <params>
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   164
		my @lines;
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   165
		tie @lines, 'Tie::File', "test.xml" or die("Cannot tie file \"test.xml\". $!\n");
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   166
		my $current_line = 0;
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   167
		for (@lines) {
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   168
			if (/FileStoreAction/) {
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   169
				my $line_to_move = @lines[$current_line];
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   170
				splice @lines, $current_line, 1;
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   171
				splice @lines, $current_line-4, 0, $line_to_move;
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   172
				last;
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   173
			}
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   174
		  $current_line++;
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   175
	    }
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   176
	untie @lines;
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   177
	}
836
675529c38614 Added smoke test for making a connection to a web server through ethernet
Maciej Seroka <maciejs@symbian.org>
parents: 823
diff changeset
   178
	if ($bld_drive) { #Replace D:\ATS\winscw_smoketest path with subst'd drive
675529c38614 Added smoke test for making a connection to a web server through ethernet
Maciej Seroka <maciejs@symbian.org>
parents: 823
diff changeset
   179
		my @LINE;
675529c38614 Added smoke test for making a connection to a web server through ethernet
Maciej Seroka <maciejs@symbian.org>
parents: 823
diff changeset
   180
		tie @LINE, 'Tie::File', "test.xml" or die("Cannot tie file \"test.xml\". $!\n");
675529c38614 Added smoke test for making a connection to a web server through ethernet
Maciej Seroka <maciejs@symbian.org>
parents: 823
diff changeset
   181
		for (@LINE) {
675529c38614 Added smoke test for making a connection to a web server through ethernet
Maciej Seroka <maciejs@symbian.org>
parents: 823
diff changeset
   182
			s/D:\\ATS\\winscw_smoketest/$bld_drive/g;
675529c38614 Added smoke test for making a connection to a web server through ethernet
Maciej Seroka <maciejs@symbian.org>
parents: 823
diff changeset
   183
		}
675529c38614 Added smoke test for making a connection to a web server through ethernet
Maciej Seroka <maciejs@symbian.org>
parents: 823
diff changeset
   184
	untie @LINE;	
675529c38614 Added smoke test for making a connection to a web server through ethernet
Maciej Seroka <maciejs@symbian.org>
parents: 823
diff changeset
   185
	}
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   186
    if ( -f "$destfile.zip") {
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   187
        unlink("$destfile.zip") or die("Could not delete \"$destfile.zip\": $!\n");
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   188
    } 
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   189
    copy("$srcfile","$destfile.zip") or die("Could not copy \"$srcfile\" -> \"$destfile.zip\": $!\n");
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   190
    system("$zipper > $dev_null") and die("Could not zip \"test.xml\" into \"$destfile\"\n");    
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   191
}
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   192
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   193
if ($temp_dest_name) { # We are to update the src file. dest file is a temporary.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   194
   # Delete src file 
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   195
   unlink($srcfile) or die("Cannot delete file \"$srcfile\" to replace: $!\n");
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   196
   # Replace with temporary.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   197
   move("$destfile$srctype","$srcfile") or die("Could not move \"$destfile$srctype\" -> \"$srcfile\": $!\n");
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   198
}
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   199
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   200
print "OK\n";
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   201
exit 0;
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   202
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   203
sub usage($)
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   204
{
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   205
    my $error = shift;
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   206
    my $fh = $error == 0 ? *STDOUT : *STDERR;
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   207
    print $fh "ats_specialise_test_drop.pl\n" .
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   208
            "Specify the name, build id and target device in an ATS XML test drop\n" .
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   209
            "synopsis:\n" .
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   210
            "  ats_specialise_test_drop.pl --help\n" .
550
4128d08e7c08 Changed ats_specialise_testdrop and build.test.xml to use the 'HOST' device property to fix the devicem rather than the 'NAME' property
Brendan Donegan brendand@symbian.org
parents: 317
diff changeset
   211
            "  ats_specialise_test_drop.pl [--test-drop-name=TESTNAME] [--build-id=BUILDID] [--host-name=HOSTNAME] [--dest=FILE] --src=FILE \n" .
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   212
            "options:\n" .
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   213
            "  --help                        Display this help and exit\n" .
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   214
            "  --test-drop-name=TESTNAME     TESTNAME is the desired name of the test drop. If not specified then the test drop name is not modified.\n" .
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   215
            "  --build-id=BUILDID            BUILDID is id of the build being tested. If not specified then the build id is not modified.\n" .            
639
9b547c4a9812 ATS target 'sf-build-smoketestpkg' - fix for argument name change in 'ats_specialise_test_drop.pl'. Update command-line help for 'ats_specialise_test_drop.pl'
MattD <mattd@symbian.org>
parents: 550
diff changeset
   216
            "  --host-name=HOSTNAME        HOSTNAME  is the name of the ATS worker on which the test should be run. " .
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   217
            "If not specified then the test device name is not modified.\n" .
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   218
            "  --src=INFILE                  INFILE is the file containing the test drop XML to be modified, or else a zip file " .
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   219
            "                                containing the test drop XML in the file 'test.xml'. INFILE must have extension .xml or.zip\n" .
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   220
            "  --dest=OUTFILE                The modified output will be written to the file OUTFILE.EXT " .
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   221
            "where EXT is same extention, .xml or .zip, found on INFILE. " .
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   222
            "If OUTFILE is not specified then INFILE is modified\n";              
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   223
    exit $error;            
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   224
}
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   225
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   226
sub help()
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   227
{
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   228
    usage(0);
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   229
}
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   230
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   231
sub usage_error()
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   232
{
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   233
    usage(1);
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   234
}             
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   235
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   236
sub silent_command($)
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   237
{
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   238
    my $cmd = shift;
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   239
    system("$cmd 1> $dev_null 2>&1");
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   240
    return $? >> 8;
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   241
}