common/tools/ats/ats_specialise_test_drop.pl
author Maciej Seroka <maciejs@symbian.org>
Fri, 11 Dec 2009 13:50:48 +0000
changeset 823 65dc12e0fcac
parent 821 b24df46a3102
child 836 675529c38614
permissions -rw-r--r--
Fixed postAction in ats_specialise_test_drop.pl
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
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    15
#
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    16
# Description:
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    17
#   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
    18
#   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
    19
#   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
    20
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    21
use strict;
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    22
use Getopt::Long;
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    23
use XML::Simple;
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    24
use File::Copy;
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    25
use Data::Dumper;
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    26
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    27
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
    28
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
    29
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
    30
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
    31
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
    32
				# 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
    33
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
    34
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
    35
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
    36
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
    37
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
    38
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
    39
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
    40
my $publish;	# Publishing folder for ats reports.
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    41
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    42
sub usage($);
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    43
sub help();
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    44
sub usage_error();
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    45
sub silent_command($);
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    46
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    47
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
    48
			    'host-name' => \$host_name,
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    49
			    'build-id' => \$build_id,
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    50
			    'src' => \$srcfile,
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    51
			    'dest' => \$destfile,
820
2a9e6403efaf Updated postbuild to publish smoketest results
Maciej Seroka <maciejs@symbian.org>
parents: 819
diff changeset
    52
                'help' => \$help,
2a9e6403efaf Updated postbuild to publish smoketest results
Maciej Seroka <maciejs@symbian.org>
parents: 819
diff changeset
    53
                'publish' => \$publish);
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    54
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    55
GetOptions(\%optmap,
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    56
          '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
    57
          'host-name=s',
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    58
          'build-id=s',
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    59
          'src=s',
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    60
          'dest=s',
820
2a9e6403efaf Updated postbuild to publish smoketest results
Maciej Seroka <maciejs@symbian.org>
parents: 819
diff changeset
    61
          'help!',
2a9e6403efaf Updated postbuild to publish smoketest results
Maciej Seroka <maciejs@symbian.org>
parents: 819
diff changeset
    62
          'publish=s') 
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    63
          or usage_error();
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    64
821
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
    65
# Check if Tie::File module installed
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
    66
eval("use Tie::File");
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
    67
if ($@) { $publish = '' };
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
    68
		  
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    69
if ($help) {
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    70
	help();
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    71
}
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    72
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    73
# --src is mandatory.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    74
usage_error(), unless (defined($srcfile));
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    75
if ($srcfile =~ /(\.xml$)/i) {
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    76
    $srctype = lc($1);
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    77
}
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    78
elsif ($srcfile =~ /(\.zip$)/i) {
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    79
    $srctype = lc($1);
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    80
}
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    81
else {
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    82
	# 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
    83
    usage_error();
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
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
    86
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    87
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
    88
	$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
    89
	$destfile = $temp_dest_name;
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
else {
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    92
    # 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
    93
    $destfile =~ s/$srctype$//;
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
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    96
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
    97
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
    98
    $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
    99
    if ( -f $xml_in) {
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   100
		# Pre-emptively delete anystale xml file.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   101
        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
   102
    }
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   103
    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
   104
        $zipper = "zip -m $destfile.zip test.xml";
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   105
        $unzipper = "unzip -o $srcfile $xml_in -d .";
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   106
    }
279
6aa713519d4e Fixed usage of 7z in ats_specialise_test_drop.pl
ThomasE
parents: 134
diff changeset
   107
    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
   108
        $zipper = "7z u $destfile.zip test.xml";
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   109
        $unzipper = "7z e $srcfile $xml_in";
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   110
    }
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   111
    else { # Got no archiver.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   112
        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
   113
    }
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   114
    # Extract test.xml from zip.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   115
    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
   116
    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
   117
    
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   118
}
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   119
else {
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   120
    $xml_in = $srcfile;
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
# Parse the input XML into hashref.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   124
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
   125
    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
   126
        keyattr => [] );
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   127
    
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   128
# 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
   129
$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
   130
# Insert the specified build id, if any.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   131
$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
   132
# Insert the FileStoreAction parameter
820
2a9e6403efaf Updated postbuild to publish smoketest results
Maciej Seroka <maciejs@symbian.org>
parents: 819
diff changeset
   133
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
   134
$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
   135
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
   136
if ($host_name) { # Also insert specified host name
730
9837304abcc6 host name is added for any number of devices
brendand
parents: 639
diff changeset
   137
	my $devices = $test_drop->{'test'}->{'target'}->[0]->{'device'};
9837304abcc6 host name is added for any number of devices
brendand
parents: 639
diff changeset
   138
    
9837304abcc6 host name is added for any number of devices
brendand
parents: 639
diff changeset
   139
    foreach my $device (@{$devices}) {
9837304abcc6 host name is added for any number of devices
brendand
parents: 639
diff changeset
   140
        my $device_properties = $device->{'property'};
9837304abcc6 host name is added for any number of devices
brendand
parents: 639
diff changeset
   141
        my $num_properties = @{$device_properties};
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
        $device_properties->[$num_properties] = { 'name' => "HOST", 'value' => "$host_name" };
9837304abcc6 host name is added for any number of devices
brendand
parents: 639
diff changeset
   144
        $device->{'property'} = $device_properties;
9837304abcc6 host name is added for any number of devices
brendand
parents: 639
diff changeset
   145
    }
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   146
}
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   147
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   148
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
   149
    # Write new XML to dest file.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   150
    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
   151
    print OUT XMLout($test_drop, keeproot => 1);
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   152
    close OUT;    
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   153
}
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   154
else { #Input file was a zip.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   155
    # Write new XML to test.xml
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   156
    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
   157
    print OUT XMLout($test_drop, keeproot => 1);
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   158
    close OUT;
821
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   159
	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
   160
		my @lines;
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   161
		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
   162
		my $current_line = 0;
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   163
		for (@lines) {
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   164
			if (/FileStoreAction/) {
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   165
				my $line_to_move = @lines[$current_line];
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   166
				splice @lines, $current_line, 1;
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   167
				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
   168
				last;
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   169
			}
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   170
		  $current_line++;
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   171
	    }
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   172
	untie @lines;
b24df46a3102 Implemented exporting Smoke Test Report to Diamonds
Maciej Seroka <maciejs@symbian.org>
parents: 820
diff changeset
   173
	}
134
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   174
    if ( -f "$destfile.zip") {
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   175
        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
   176
    } 
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   177
    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
   178
    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
   179
}
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   180
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   181
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
   182
   # Delete src file 
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   183
   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
   184
   # Replace with temporary.
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   185
   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
   186
}
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   187
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   188
print "OK\n";
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   189
exit 0;
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   190
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   191
sub usage($)
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
    my $error = shift;
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   194
    my $fh = $error == 0 ? *STDOUT : *STDERR;
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   195
    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
   196
            "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
   197
            "synopsis:\n" .
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   198
            "  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
   199
            "  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
   200
            "options:\n" .
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   201
            "  --help                        Display this help and exit\n" .
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   202
            "  --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
   203
            "  --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
   204
            "  --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
   205
            "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
   206
            "  --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
   207
            "                                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
   208
            "  --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
   209
            "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
   210
            "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
   211
    exit $error;            
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   212
}
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   213
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   214
sub help()
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   215
{
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   216
    usage(0);
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   217
}
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   218
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   219
sub usage_error()
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   220
{
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   221
    usage(1);
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   222
}             
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   223
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   224
sub silent_command($)
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
    my $cmd = shift;
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   227
    system("$cmd 1> $dev_null 2>&1");
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   228
    return $? >> 8;
039d0b7e56f3 Comments and code tidying for ats3_testdrop.pl
Mike Kinghan <mikek@symbian.org>
parents:
diff changeset
   229
}