--- a/buildverification/smoketest/SmokeTestSuite.pm Mon Feb 22 17:54:00 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,501 +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:
-# 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 SmokeTestSuite;
-use strict;
-
-my $servicename;
-
-#
-# BuildAndPackage: Used to create a test package for remote execution on the ROM
-#
-sub BuildAndPackage
-{
- #
- # Build Test Package for $_[0]
- #
- print "\n#\n# Build Test Package for $_[0]\n#\n";
- SmokeTest::PrintDateTime();
- my $testbuild = SmokeTest::ExecCommand ("$SmokeTest::TestDriverCmd build -p $_[0] -b udeb -s $SmokeTest::TestSuite");
-
- # now check for results
- $testbuild =~ m/fail\:\s(\d+)\s\%/i;
-
- if ( ($testbuild =~ m/\*\*error\:/i) || $1 == 100 )
- {
- print "\nREMARK: Smoke Test *** Building the Test failed $!\n";
- #&SmokeTest::DieLog("Error In Smoke Test: Building the Test failed");
- }
- else
- {
- print "\n*** Test Building successful ***\n";
- }
-
- SmokeTest::PrintDateTime();
-
- my $testpackage = SmokeTest::ExecCommand ("$SmokeTest::TestDriverCmd package -p $_[0] -b udeb -s $SmokeTest::TestSuite --tp $SmokeTest::SmokeTestDir\\$_[0].tpkg");
- print "\n";
-
- if (($testpackage =~ m/\*\*error/i))
- {
- print "\nREMARK: Smoke Test *** Building the Test Package failed\n\"$1\"\n";
- #&SmokeTest::DieLog("Error In Smoke Test: Building the Test Package failed");
- }
- else
- {
- print "\n*** Building the Test Package successful ***\n";
- }
-
- SmokeTest::PrintDateTime();
-}
-
-#
-# BuildAndPublish: used to build and test the smoketest test suite on an Emulator
-#
-sub BuildAndPublish
-{
- my $runid = 0;
- my $buildname;
-
- #
- # Build Test Suite for $_[0]
- #
- print "\n#\n# Build Test Suite for $_[0]\n#\n";
- SmokeTest::PrintDateTime();
- my $testbuildwinscw = SmokeTest::ExecCommand ("$SmokeTest::TestDriverCmd build -p $_[0] -b udeb -s $SmokeTest::TestSuite");
-
- # now check for results
- $testbuildwinscw =~ m/fail\:\s(\d+)\s\%/i;
-
- if ( ($testbuildwinscw =~ m/\*\*error\:/i) || $1 == 100 )
- {
- print "\nREMARK: Smoke Test *** Building the Test for $_[0] failed $!\n";
- #&SmokeTest::DieLog("Error In Smoke Test: Building the Test failed");
- }
- else
- {
- print "\n*** Test Build successful ***\n";
- }
-
- #
- # Run Test Suite for $_[0]
- #
- print "\n";
- print "#\n# Run Test Package for $_[0]\n#\n";
- print "\n";
- SmokeTest::PrintDateTime();
-
- SmokeTest::ExecCommand ("$SmokeTest::TestDriverCmd run -p $_[0] -b udeb -s $SmokeTest::TestSuite");
-
- SmokeTest::PrintDateTime();
-
- #
- # Publish results of emulator onto publish server
- #
- print "\n";
- print "#\n# Publish results of emulator onto publish server\n#\n";
- print "\n";
-
- #
- # Find the correct directory to publish
- #
- my $source = "$SmokeTest::TestDriverDrive\\TestDriver\\Results";
- if (opendir Results, $source)
- {
- my @dirArray = readdir(Results);
-
- #print "@results";
- # to remove "." and ".." from this list
- shift @dirArray;
- shift @dirArray;
-
- if (!scalar(@dirArray))
- {
- print "REMARK: The emulator for $_[0] has an empty $source directory";
- return;
- }
- else
- {
- print "\nContents of $source = @dirArray\n";
- $source .= "\\$dirArray[0]";
- # dirArray should always have just the one subdir - 0XXXX_Symbian_OS_vX.X
-
- $buildname = $dirArray[0];
-
- if (opendir tempDir, "$source")
- {
- # to remove "." and ".." from this list
- @dirArray = readdir(tempDir);
- shift @dirArray;
- shift @dirArray;
-
- print "\nContents of $source = @dirArray\n";
-
- foreach my $directory (@dirArray)
- {
- if ($directory =~ /(?:$_[0])/i)
- {
- $source .= "\\$directory";
-
- # added this to remove udeb/xx
- if (opendir tempDir, "$source")
- {
- # to remove "." and ".." from this list
- @dirArray = readdir(tempDir);
- shift @dirArray;
- shift @dirArray;
-
- print "\nContents of $source = @dirArray\n";
-
- foreach my $directory (@dirArray)
- {
- if ($directory =~ /(udeb|urel)/i)
- {
- $source .= "\\$directory";
- if (opendir tempDir, "$source")
- {
- # to remove "." and ".." from this list
- @dirArray = readdir(tempDir);
- shift @dirArray;
- shift @dirArray;
-
- print "\nContents of $source = @dirArray\n";
-
- my @iNumericDirList = ();
- foreach my $directory (@dirArray)
- {
- if ($directory =~ /(^[0-9]+)/i)
- {
- push @iNumericDirList, $directory;
- }
- }
- @iNumericDirList = sort { $b <=> $a } @iNumericDirList;
- $runid = $iNumericDirList[0];
- $source .= "\\$runid";
- last;
- }
- last;
- }
- }
- }
-
- }
- }
-
- print "\nThe final source directory = $source\n";
- }
- else
- {
- print "REMARK: The emulator for $_[0] has an empty $source directory";
- return;
- }
- }
- my $emulatorpublish = "$SmokeTest::PublishServer\\$SmokeTest::ProductType\\$SmokeTest::BuildNum\\logs\\SmokeTest\\Emulator\\$_[0]";
-
- SmokeTest::ExecCommand ("MKDIR $emulatorpublish"); # or GoNext("$publishlocation\\$name\\");
-
- SmokeTest::ExecCommand ("XCOPY /C /Y /E $source\\xml $emulatorpublish\\xml\\");
-
- #
- # Copy runXX_<snapshot>_SymbianOS_vYY.xml/html to <snapshot>_Symbian_OS_vYY.xml/html
- #
-
- my $xmlfile = "$source\\run".$runid."_".$buildname."\.xml";
- my $htmlfile = "$source\\run".$runid."_".$buildname."\.html";
-
- if (-e $xmlfile)
- {
- SmokeTest::ExecCommand ("COPY $xmlfile $emulatorpublish\\$buildname.xml");
- }
-
- if (-e $htmlfile)
- {
- SmokeTest::ExecCommand ("COPY $htmlfile $emulatorpublish\\$buildname.html");
- }
-
- #
- # Publish results of emulator onto logs dir
- #
- print "\n";
- print "#\n# Publish results of emulator onto Logs Dir\n#\n";
- print "\n";
-
- my $emulatorpublish = "$SmokeTest::LogsDir\\SmokeTest\\Emulator\\$_[0]\\";
-
- SmokeTest::ExecCommand ("MKDIR $emulatorpublish"); # or GoNext("$publishlocation\\$name\\");
-
- SmokeTest::ExecCommand ("XCOPY /C /Y /E $source $emulatorpublish");
- }
- else
- {
- print "REMARK: Cannot open dir $source: $!";
- return;
- }
- SmokeTest::PrintDateTime();
-}
-
-#
-# PollServers: Polls all the servers from the Pool and picks out the one with the shortest queue.
-#
-sub PollServers
-{
- #
- # Parse ENV and create an array of smoketest servers for $_[0]
- #
- print "\n";
- print "#\n# Parse ENV and create an array of smoketest servers for $_[0]\n#\n";
- print "\n";
- SmokeTest::PrintDateTime();
-
- if (($_[0] eq "Lubbock") || ($_[0] eq "LUBBOCK"))
- {
- $SmokeTest::servicename = "RemoteTestDriverLubbock";
- }
- elsif ($_[0] eq "H2")
- {
- $SmokeTest::servicename = "RemoteTestDriverH2";
- }
- elsif ($_[0] eq "H4HRP")
- {
- $SmokeTest::servicename = "RemoteTestDriverH4HRP";
- }
- else
- {
- &SmokeTest::DieLog("Cannot poll serverpool for pool \"$_[0]\"");
- }
-
- my @servers = split /\#/, $SmokeTest::serverpool;
- if (@servers < 1)
- {
- &SmokeTest::DieLog("*** Error In Smoke Test ***\nNo SmokeTest Servers specified for $_[0]$!\n");
- }
- else
- {
- print "\n*** Retrieved Pool of Smoke Test Servers from ENV for $_[0]***\n";
- }
-
- #
- # Poll each of the smoke test servers and parse the results
- #
- print "\n";
- print "#\n# Poll each of the smoke test servers and parse the results\n#\n";
- print "\n";
-
- my %serverlist;
-
- print "Checking TestDriver Version\n";
- SmokeTest::ExecCommand ("$SmokeTest::TestDriverCmd version");
-
- foreach my $server (@servers)
- {
- print "Polling Server: $server\n";
- my $masterstatus = SmokeTest::ExecCommand ("$SmokeTest::TestDriverCmd masterstatus --srv //$server/$SmokeTest::servicename");
-
- my $value = -2;
- if ($masterstatus =~ m/Master: TestDriver is currently (....)/i)
- {
- if ($1 eq 'free')
- {
- #print "Free!\n";
- $value = 0;
- }
- else
- {
- $masterstatus =~ m/are\s+(\w+)\s+jobs/i;
- if ($1 =~ m/\D+/)
- {
- $value = 1;
- }
- else
- {
- $value = $1 + 1;
- }
- }
- }
- else
- {
- # The master is not running a service
- $value = -1;
- }
- $serverlist{$server} = $value;
- print "\n";
- }
-
- #
- # Decide which server to use
- #
- print "\n";
- print "#\n# STEP8 Decide which server to use\n#\n";
- print "\n";
-
- my $masterserver;
-
- # Loop through first time only to print out all the available servers
- print "\nAvailable Servers\n";
- foreach my $servername (sort { $serverlist{$a} <=> $serverlist{$b} } keys %serverlist)
- {
- print "\n$servername : number in queue are $serverlist{$servername}\n";
- }
-
- # Loop through second time to actually select the correct server
- foreach my $servername (sort { $serverlist{$a} <=> $serverlist{$b} } keys %serverlist)
- {
- if ($serverlist{$servername} > -1)
- {
- $masterserver = $servername;
- last;
- }
- }
-
- if (defined $masterserver)
- {
- print "\n*** The Smoke Test Server to be used for $_[0] is $masterserver ***\n";
- }
- else
- {
- print "\nREMARK: Smoke Test *** No available Smoke Test Servers for $_[0] \n";
- #&SmokeTest::DieLog("Error In Smoke Test: No available Smoke Test Servers for $_[0]");
- }
- SmokeTest::PrintDateTime();
- return $masterserver;
-}
-
-#
-# Usage: RunRemote(Architecture, Testing Board, Server)
-#
-sub RunRemote
-{
- my $masterserver = $_[2];
-
-
- #
- # Call TestDriver runremote for $_[0]
- #
- print "\n";
- print "#\n# Call TestDriver runremote for $_[0]\n#\n";
- print "\n";
- SmokeTest::PrintDateTime();
-
- my $tempZipLocation = "$SmokeTest::SmokeTestDir\\$_[0]\\$_[1]";
- if ($_[3] eq "NAND\\")
- {
- $tempZipLocation .= "\\NAND";
- }
- elsif ($_[3] eq "NAND\(DP\)\\")
- {
- $tempZipLocation .= "\\NAND\(DP\)";
- }
-
- SmokeTest::ExecCommand ("COPY /Y $tempZipLocation\\sys\$rom.zip $SmokeTest::SmokeTestDir\\sys\$rom.zip");
-
- # Decide whether this is a platsec ROM or not
- my $platsec;
- if ($SmokeTest::buildNo eq "9.1" || $SmokeTest::buildNo eq "9.2" || $SmokeTest::buildNo eq "9.3" || $SmokeTest::buildNo eq "Future" || $SmokeTest::buildNo eq "9.4" || $SmokeTest::buildNo eq "9.5" || $SmokeTest::buildNo eq "9.6" || $SmokeTest::buildNo eq "tb92" || $SmokeTest::buildNo eq "tb101sf")
- {
- $platsec = "ON";
- }
- else
- {
- $platsec = "OFF";
- }
-
- # calling testdriver for $_[0]
- my $runremote = SmokeTest::ExecCommand ("$SmokeTest::TestDriverCmd runremote -m async -i $SmokeTest::SmokeTestDir --tp $_[0].tpkg -r sys\$rom.zip --srv //$masterserver/$SmokeTest::servicename --platsec $platsec --testexec ON");
-
- #
- # Parse output to get the job number or error
- #
- print "\n";
- print "#\n# Parse output to get the job number or error\n#\n";
- print "\n";
-
- my $jobid;
-
- if ($runremote =~ m/job id/i)
- {
- $runremote =~ m/job id: (\d+)/i;
- $jobid = $1;
- print "\n*** Job submitted successfully ***\n\nJob Id = $jobid\n";
- }
- else
- {
- print "\nREMARK: Smoke Test Job Submission failed\n";
- #&SmokeTest::DieLog("Error In Smoke Test: Submitting the Job failed");
- return;
- }
-
- #
- # Create a text file with publish details
- #
- print "\n";
- print "#\n# Create a text file with publish details\n#\n";
- print "\n";
-
- my $publishstring;
-
- $publishstring = "Publish: $SmokeTest::PublishServer\\$SmokeTest::ProductType\\$SmokeTest::BuildNum\\logs\\Smoketest\\$_[0]\\$_[1]\\";
- print "$publishstring";
-
- if ( (defined $SmokeTest::PublishServer) && (defined $SmokeTest::ProductType) && (defined $SmokeTest::BuildNum) )
- {
- open PublishFile, ">$_[0]$_[1].txt" or &SmokeTest::DieLog("Cannot open File $_[0]$_[1].txt: $!\n");
- $publishstring = "$SmokeTest::PublishServer\\$SmokeTest::ProductType\\$SmokeTest::BuildNum\\logs\\Smoketest\\$_[0]\\$_[1]\\";
- if ($_[3] eq "NAND\\")
- {
- $publishstring .= "NAND\\";
- }
- elsif ($_[3] eq "NAND\(DP\)\\")
- {
- $publishstring .= "NAND\(DP\)\\";
- }
- print PublishFile "$publishstring";
- $publishstring = "\n$SmokeTest::PublishServer\\$SmokeTest::ProductType\\logs\\$SmokeTest::BuildNum\\Smoketest\\$_[0]\\$_[1]\\";
- if ($_[3] eq "NAND\\")
- {
- $publishstring .= "NAND\\";
- }
- elsif ($_[3] eq "NAND\(DP\)\\")
- {
- $publishstring .= "NAND\(DP\)\\";
- }
- print PublishFile "$publishstring";
- close PublishFile;
- print "\n*** Publish file created successfully ***\n";
- }
- else
- {
- print "\nREMARK: Smoke Test *** Could not Create Publish File\n$!";
- #&SmokeTest::DieLog("Error In Smoke Test: Could not Create Publish File");
- }
-
- #
- # Copy This publish file to the correct directory
- #
- print "\n";
- print "#\n# Copy This publish file to the correct directory \n#\n";
- print "\n";
-
- ###print "\nabout to move /Y $_[0]$_[1].txt \\\\$masterserver\\Jobs\\$jobid\\publish.txt\n";
- SmokeTest::ExecCommand ("MOVE /Y $_[0]$_[1].txt \\\\$masterserver\\Jobs\\$jobid\\publish.txt");
-
- SmokeTest::PrintDateTime();
-}
-
-1;
\ No newline at end of file