buildverification/smoketest/SmokeTest.pm
branchRCL_3
changeset 19 4ca382093dae
parent 5 6beaa9cf4752
child 20 493058e57c8c
--- a/buildverification/smoketest/SmokeTest.pm	Mon Feb 22 17:54:00 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,434 +0,0 @@
-# Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-# SmokeTestSuite.pm 
-# The SmokeTestSuite package contains subroutines that are needed to build a 
-# testdriver test suite.
-# This script was born on 18/04/2005
-# 
-#
-
-#!/usr/bin/perl -w
-package SmokeTest;
-use SmokeTestROM;
-use SmokeTestSuite;
-use FindBin;
-use lib "$FindBin::Bin\\..\\..\\generic\\utils\\GenResult\\";
-use FileRead; #Need to include a Findbin::path
-use strict;
-
-#
-# Global Variables
-#
-our $BuildDir = $ENV{'BuildDir'}; # usually M:
-our $serverpool = $ENV{'SmokeTestServerPool'};
-our $buildNo = $ENV{'BuildShortName'}; # Eg. 9.1
-# The Client is run from the dir where SmokeTestClient.pl is located
-# This is to ensure that any ROMs and test packages created are stored there.
-our $sourceDir = "$BuildDir\\src\\common\\testtools";
-our $TestSuite = "SmokeTest";
-our $SmokeTestDir;
-our $NandDir;
-our $TestDriverLocation   = "\\epoc32\\tools\\TDEP";   # location for TD zips
-our $TestDriverDrive = "M:";
-our $TestDriverCmd = "$TestDriverDrive\\testdriver\\testdriver.cmd";
-our $TestDriverXML;
-
-# Publish details
-our $PublishServer = $ENV{'PublishLocation'};
-our $ProductType   = $ENV{'Type'};
-our $BuildNum      = $ENV{'BuildNumber'};
-our $LogsDir       = $ENV{'LogsDir'};
-
-# Epocwind.out
-my $tempDirLocation = $ENV{'TEMP'};
-
-#
-# CheckVars: ensures that the essential environment vars and directories exist
-#
-sub CheckVars
-{
-	print "\n** Settings **\n";
-	print "Build Drive                = $BuildDir\n";
-	print "Smoke Test Server Pool     = $serverpool\n";
-	print "Build Product              = $buildNo\n";
-	print "TestDriver Zip Location    = $TestDriverLocation\n";
-	print "TestDriver XML Location    = $TestDriverXML\n";
-	print "TestDriver Source Location = $sourceDir\n";
-	print "TestDriver Drive           = $TestDriverDrive\n";
-	print "SmokeTest working directory= $SmokeTestDir\n";
-	print "NAND build directory       = $NandDir\n";
-	
-	print "\n** Publishing Information **\n";
-	
-	print "Publish server = $PublishServer\n";
-	print "Product Type   = $ProductType\n";
-	print "Build Number   = $BuildNum\n";
-	
-	DieLog("CheckVars: \"Build Directory\" not defined") if !defined $BuildDir;
-	DieLog("CheckVars: \"Smoke Test Server Pool\" not defined") if !defined $serverpool;
-	DieLog("CheckVars: \"Build Product\" not defined") if !defined $buildNo;
-	DieLog("CheckVars: \"Publish server\" not defined") if !defined $PublishServer;
-	DieLog("CheckVars: \"Product Type\" not defined") if !defined $ProductType;
-	DieLog("CheckVars: \"Build Number\" not defined") if !defined $BuildNum;
-	DieLog("CheckVars: Directory \"SmokeTest working directory\" does not exist") if ! -e $SmokeTestDir;
-	DieLog("CheckVars: Directory \"TestDriver Zip Location\" does not exist") if ! -e $TestDriverLocation;
-}
-
-sub main
-{
-	print "\n\n*** START OF SMOKE TEST ***\n\n";
-
-	PrintDateTime();
-	
-	my ($iSourceDir,       $iTestSuite,   $iProduct, $iServerPool, $iProductType,
-	    $iPublishLocation, $iBuildNumber, $iXML,     $iUnzip,      $iBuildDrive, $iTDDrive) = @_;
-	
-	$TestSuite       = $iTestSuite           if defined $iTestSuite;
-	$BuildDir        = $iBuildDrive          if defined $iBuildDrive;
-	$sourceDir       = $BuildDir.$iSourceDir if defined $iSourceDir;
-	$buildNo         = $iProduct             if defined $iProduct;
-	$serverpool      = $iServerPool          if defined $iServerPool;
-	$ProductType     = $iProductType         if defined $iProductType;
-	$PublishServer   = $iPublishLocation     if defined $iPublishLocation;
-	$BuildNum        = $iBuildNumber         if defined $iBuildNumber;
-	$TestDriverDrive = $iTDDrive             if defined $iTDDrive;
-	
-	$SmokeTestDir    = "$sourceDir\\$TestSuite";
-	if (defined $iXML)
-	{
-		$TestDriverXML = $iXML;
-	}
-	else
-	{
-		$TestDriverXML = $SmokeTestDir."\\xml";
-	}
-	$NandDir = "$BuildDir\\src\\cedar\\generic\\base\\e32\\rombuild";
-	
-	CheckVars();
-	
-	# change dir to Smoketest dir
-	chdir "$SmokeTestDir" or DieLog("Can't cd to $SmokeTestDir");
-	
-	# unzip latest version of TD
-	if (defined $iUnzip)
-	{
-		unpackTestDriver2();
-	}
-	
-	# configure TD
-	configureTestDriver2();
-	
-	#
-	# Copy the correct configuration.cfg file
-	# But such source only exists for these products: 8.0a, 8.0b, 8.1a, 8.1b, 9.0, 9.1
-	#
-	print "\n#\n# Copy the correct configuration.cfg file\n#\n";
-	ExecCommand("COPY /Y $SmokeTestDir\\Group\\$buildNo\\configuration.cfg $SmokeTestDir\\Group\\configuration.cfg");
-	
-	#Read in hash of smoketests to be run for each product.
-	my ($iCfgFileLocation) = "$FindBin::Bin\\..\\..\\generic\\utils\\GenResult";
-	
-	#Read in the smoketest list from a cfg file
-	my $text = &FileRead::file_read ("$iCfgFileLocation\\Product.cfg");
-	#Search for an entry matching (At the beginning of line there should be 1 or more alphanumberic chars
-	#Followed by a "."(optional to allow codenames) followed by more alphanumberic chars followed by 0 or more spaces then an = then 0
-	#or more spaces then any amount of chars till the end of the line.
-	#8.1b = EMULATOR_WINSCW ARM4_LUBBOCK ARMV5_LUBBOCK
-	my %iProducts = $text =~ /^\s*(\w+\.?\w+)\s*=\s*(.+)$/mg ;
-	
-	#Get the list of platforms to be smoketested for the product.
-	#Need to turn the hash value into an array using split
-	my @iPlatforms = split (/ /,$iProducts{$buildNo});
-	#Build and Execute Test package for each platform as read from configuration file and create and zip rom.
-	ProcessPlatforms (@iPlatforms);
-	
-	#
-	# Build Test Package for ROMs
-	#
-	if ($buildNo eq '8.1a' || $buildNo eq '8.1b')
-	{
-		&SmokeTestSuite::BuildAndPackage("ARM4");
-	}
-	
-	if ($buildNo ne '8.1a')
-	{
-		&SmokeTestSuite::BuildAndPackage("ARMv5");
-	}
-	
-	#
-	# Find out which server to use
-	#
-	print "\n#\n# Find out which server to use\n#\n";
-	ProcessPlatformsforSmoketest(@iPlatforms);
-	
-	#
-	# End of Smoke Test
-	#
-	print "\n\n*** END OF SMOKE TEST ***\n\n";
-}
-	
-#
-# DieLog: Exits script and inserts a Remark in the build log, which will be picked up by htmlscanlog
-#
-sub DieLog
-{
-	die "\nREMARK: $_[0]\n $!\n\n\n";
-}
-
-
-#
-# Build and publish based on entries in the Product.cfg file
-#
-sub ProcessPlatforms 
-{
-
-my $i = 0;
-my @temp;
-my @iPlatforms = @_;
-
-foreach my $platform (@iPlatforms)
- {  
-  undef @temp;
-  @temp = split (/_/,$iPlatforms[$i]);
-  $i++;
-  
-  if( $temp[0] eq "EMULATOR")
-  {
-	&SmokeTestSuite::BuildAndPublish("$temp[1]");
-	CheckPlatsecErrors("$temp[1]");
-  }
-  else
-  {
-		
-	if(3 == scalar(@temp)) # there are 3 arguments, so this will be a NAND ROM
-	{
-		if((lc($temp[1]) eq "h4hrp") && (lc($temp[2]) eq "nand\(dp\)" )) # H4HRP Demand Paging ROM options is -D_NAND2
-		{
-			&SmokeTestROM::CreateAndZipROM("$temp[0]", "$temp[1]", "pagedrom", "PlatSec", "$buildNo", "-D_NAND2" );
-		}
-		elsif((lc($temp[1]) eq "h4hrp") && (lc($temp[2]) eq "nand" )) # H4 options is -D_NAND2
-		{
-			&SmokeTestROM::CreateAndZipROM("$temp[0]", "$temp[1]", "-DRVCT", "PlatSec", "$buildNo", "-D_NAND2");
-		}
-		elsif(lc($temp[1]) eq "h2") # H2 options is -D_NAND# H2 option is NAND2 due to CR 0844 (Both H2 and H4 use -D_NAND2)
-                {
-			&SmokeTestROM::CreateAndZipROM("$temp[0]", "$temp[1]", "-DRVCT", "PlatSec", "$buildNo", "-D_NAND2");		
-		}
-		else	# Bad option entered
-		{
-			die "SmokeTest::ProcessPlatforms error: invalid board type entered: $temp[1]. Check that Product.cfg is correct.\n";
-		}		
-	}
-	else # This is the NOR ROM.
-	{
-		&SmokeTestROM::CreateAndZipROM("$temp[0]", "$temp[1]", "-DRVCT", "PlatSec", "$buildNo");
-	}
-  }
-  
- }
-
-}
-
-#
-# Build and publish based on entries in the Product.cfg file
-#
-sub ProcessPlatformsforSmoketest
-{
-
-my $i = 0;
-my @temp;
-my @iPlatforms = @_;
-
-foreach my $platform (@iPlatforms)
- {  
-    undef @temp;
-    @temp = split (/_/,$iPlatforms[$i]);
-    $i++;
-    if( $temp[0] eq "EMULATOR")
-    {
-        next;
-    }
-	my $mServ = &SmokeTestSuite::PollServers("$temp[1]");
-	unless (defined $mServ)
-    {
-        next;
-    }
-	if(3 == scalar(@temp))
-	{
-		if(lc($temp[2]) eq "nand\(dp\)" ) 
-		{
-		    &SmokeTestSuite::RunRemote("$temp[0]", "$temp[1]", $mServ, "NAND\(DP\)\\");
-		}
-        elsif(lc($temp[2]) eq "nand") 
-	    {
-		    &SmokeTestSuite::RunRemote("$temp[0]", "$temp[1]", $mServ, "NAND\\");
-	    }
-	}
-	else
-	{
-		&SmokeTestSuite::RunRemote("$temp[0]", "$temp[1]", $mServ);
-	}
- }
-}
- 
-#
-# Check for platsec errors - checks the epocwind.out on build machine
-#
-sub CheckPlatsecErrors
-{
-	print "\n";
-	print "#\n# Check for platsec errors\n#\n";
-	print "\n";
-	PrintDateTime();
-	
-	# open epocwind.out and parse for both errors and warnings
-	open EPOCWIND, "$tempDirLocation\\epocwind.out" or print "\nERROR: Cannot open EPOCWIND.OUT\n";
-	my @epocWind = <EPOCWIND>;
-	close EPOCWIND;
-	
-	foreach my $tempEW (@epocWind)
-	{
-		if ($tempEW =~ m/(\*PlatSec\* ERROR)(.*)/i)
-		{
-			print "\nERROR: $_[0] - $1$2";
-		}
-		elsif ($tempEW =~ m/(\*PlatSec\* WARNING)(.*)/i)
-		{
-			print "\nWARNING: $_[0] - $1$2";
-		}
-	}
-}
-
-#
-# Take TestDriver and unpack into a given location.
-#
-sub unpackTestDriver2()
-{
-	#
-	# Unzip TestDriver
-	#
-	print "\n#\n# Unzip TestDriver\n#\n";
-	PrintDateTime();
-	
-	# first remove the "old" version of test driver
-	print "\n";
-	ExecCommand("RMDIR $TestDriverDrive\\testdriver\\ /Q /S");
-	
-	# now unzip the latest version of testdriver which has been synced down
-	ExecCommand("%EPOCROOT%epoc32\\tools\\unzip.exe $TestDriverLocation\\TestDriver2.zip -d $TestDriverDrive\\testdriver\\");
-	
-	# now copy the latest version of testdriver_new.cmd which has been obtained
-	ExecCommand("COPY \\\\builds01\\devbuilds\\buildteam\\testdriverv2\\testdriver_new.cmd  $TestDriverCmd");
-	
-	# now copy the latest version of logging.properties which has been obtained
-	ExecCommand("COPY \\\\builds01\\devbuilds\\buildteam\\testdriverv2\\logging.properties  $TestDriverDrive\\testdriver\\");
-	
-    # 11-08-08 - additional steps required for SITK1.2 version of TD2
-    ExecCommand("MKDIR $TestDriverDrive\\testdriver\\eclipse\\links\\");
-
-    ExecCommand("COPY \\\\builds01\\devbuilds\\buildteam\\testdriverv2\\testdriver.link $TestDriverDrive\\testdriver\\eclipse\\links\\");
-	
-	#
-	# Unzip JRE v1.5
-	#
-	print "\n";
-	print "#\n# Unzip JRE 1.5 required by TestDriver v2\n#\n";
-	print "\n";
-	
-	ExecCommand("%EPOCROOT%epoc32\\tools\\unzip.exe \\\\builds01\\devbuilds\\BuildPCs\\Software\\JDK1.5.0_13\\jre1.5.zip -d $TestDriverDrive\\testdriver\\");
-
-}
-
-sub configureTestDriver2()
-{
-	#
-	# Configure TestDriver
-	#
-	print "\n";
-	print "#\n# Configure TestDriver\n#\n";
-	print "\n";
-	my $localtimes = localtime;
-	PrintDateTime();
-	
-	ExecCommand("$TestDriverDrive\\testdriver\\testdriver.cmd config -e $BuildDir\\
-								-x $TestDriverXML
-								-l $TestDriverDrive\\TestDriver\\Results
-								--source $sourceDir
-								-s smoketest
-								-r $TestDriverDrive\\TestDriver\\Repos
-								-c $TestDriverDrive\\TestDriver\\Results");
-
-	ExecCommand("$TestDriverDrive\\testdriver\\testdriver.cmd config --commdb overwrite");
-	ExecCommand("$TestDriverDrive\\testdriver\\testdriver.cmd config --bldclean off");
-
-	# platsec for > 9.x only
-	if ($buildNo ne "8.1a" && $buildNo ne "8.1b")
-	{
-		ExecCommand("$TestDriverDrive\\testdriver\\testdriver.cmd config -p ON");
-	}
-	
-	# Setup commdb for WINSCW smoketest
-	print "\n*** Setup commdb for WINSCW to use WinTAP ***\n";
-	
-	# export smoketest_commdb.xml to a place that ced.exe can see it
-	ExecCommand("copy $SmokeTestDir\\smoketest_commdb.xml $BuildDir\\epoc32\\WINSCW\\c\\");
-	ExecCommand("$BuildDir\\epoc32\\release\\WINSCW\\udeb\\ced.exe c:\\smoketest_commdb.xml");
-	
-	print "\n*** Confirm TestDriver Config ***\n";
-	ExecCommand("$TestDriverDrive\\testdriver\\testdriver.cmd config");
-	print "\n";
-}
-
-# ExecCommand
-#
-# Execute a system command, having first echoed it. Display and return the output of the command.
-#
-# Input: Command string (without final newline)
-#
-# Output: Command output (including STDERR) to STDOUT
-#
-# Return: Command output (including STDERR)
-#
-sub ExecCommand
-{
-    my $iCmd = shift;
-    print "\n================================================================\n";
-    print "Command: $iCmd\n";
-    print   "----------------------------------------------------------------\n";
-    my $iRet = `$iCmd 2>&1`;
-    chomp $iRet;
-    print "Return:  $iRet\n";
-    print   "================================================================\n";
-    return $iRet;
-}
-
-# PrintDateTime
-#
-# Print to STDOUT, Current Date and Time
-#
-# Input: none
-#
-# Output: text to STDOUT
-#
-sub PrintDateTime
-{
-    my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
-    #### my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) = gmtime(time);
-    $year += 1900;
-    $mon += 1;
-	printf "\n*** Current Time: %04d/%02d/%02d %02d:%02d:%02d ***\n", $year,$mon,$mday,$hour,$min,$sec;
-}
-
-1;
-