diff -r 5d7fec11a5ce -r 03d9ade4748d buildverification/smoketest/SmokeTestServer.pl --- a/buildverification/smoketest/SmokeTestServer.pl Fri Jun 11 16:24:17 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,334 +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: -# TestServer.pl -# This script was born on 19/10/2004 -# -# - -use strict; - -my $jobsfolder = "d:\\Jobs\\"; - -# Loop forever -while (1) -{ - open LogFile, ">>d:\\SmokeTestServerLog.txt" or die "Cannot open log file: $!"; - - print "\n***********************\n"; - print "\n*** START PUBLISHER ***\n"; - print "\n***********************\n"; - print "\n"; - print LogFile "\n***********************\n"; - print LogFile "\n*** START PUBLISHER ***\n"; - print LogFile "\n***********************\n"; - print LogFile "\n"; - - my $localtimes = localtime; - print "\n*** Current Time: $localtimes ***\n"; - print LogFile "\n*** Current Time: $localtimes ***\n"; - - # - # Check if there are any results ready for publishing - # - print "\n"; - print "#\n# Check if there are any results ready for publishing\n#\n"; - print "\n"; - print LogFile "\n"; - print LogFile "#\n# Check if there are any results ready for publishing\n#\n"; - print LogFile "\n"; - - opendir JobDir, $jobsfolder or die "Cannot open jobs dir $jobsfolder: $!"; - - my @jobs = readdir(JobDir); - - # to remove "." and ".." from this list - shift @jobs; - shift @jobs; - - if (!scalar(@jobs)) - { - print "\nNo Jobs to publish\n"; - print LogFile "\nNo Jobs to publish\n"; - } - else - { - # - # Loop though each directory and publish logs - # - print "\n"; - print "#\n# Loop though each directory and publish logs\n#\n"; - print "\n"; - print LogFile "\n"; - print LogFile "#\n# Loop though each directory and publish logs\n#\n"; - print LogFile "\n"; - - foreach my $name (sort { $a <=> $b } @jobs) - { - if ( -d $jobsfolder.$name) - { - print "\n*** Found Job: $name ***\n"; - print LogFile "\n*** Found Job: $name ***\n"; - - # Check to see if job has been completed. - if (isJobFinished($name)) - { - # - # Publish the results - # - print "\n"; - print "#\n# Publish the results\n#\n"; - print "\n"; - print LogFile "\n"; - print LogFile "#\n# Publish the results\n#\n"; - print LogFile "\n"; - - my $publishfile = $jobsfolder.$name."\\publish.txt"; - - if (-r $publishfile) - { - open (PUBLISH, $publishfile) or GoNext("Cannot find publish details for $name"); - my $count = 0; - my $index = 0; - while (my $publishlocation = ) - { - chomp $publishlocation; - - $index++; - - print "\nPublish Location = $publishlocation\n"; - print LogFile "\nPublish Location = $publishlocation\n"; - - `mkdir $publishlocation`; # or GoNext("$publishlocation\\$name\\"); - - my $lookIn = "$jobsfolder$name\\output"; - my ($source,$runid,$buildname) = getSourceDir($lookIn); - - my $srcdir = $source."\\xml"; - my $trgtdir= $publishlocation."xml\\"; - - my $xcopycmd= "xcopy /C /Y /E $srcdir $trgtdir "; - print `$xcopycmd`; - - # - # Copy the contents of Output and reports - - # - # runXX__SymbianOS_vYY.xml/html to _Symbian_OS_vYY.xml/html - # - - my $xmlfile = "$source\\run".$runid."_".$buildname."\.xml"; - my $htmlfile = "$source\\run".$runid."_".$buildname."\.html"; - - if (-e $xmlfile) { - - print "copy $xmlfile to $buildname.xml"; - system "copy $xmlfile $publishlocation\\$buildname.xml"; - } - - if (-e $htmlfile) { - - print "copy $htmlfile to $buildname.html"; - system "copy $htmlfile $publishlocation\\$buildname.html"; - } - - print "\nNumber of Files Copied = $1\n" if $xcopycmd =~ m/(\d+)\s\w+/; - print LogFile "\nNumber of Files Copied = $1\n" if $xcopycmd =~ m/(\d+)\s\w+/; - - $count += $1; - - # The input should be copied onto \\devbuilds\master\.. but not \\devbuilds\logs\master\.. - if ($index < 2) - { - print "\n\nCopy the Input\n"; - $source = "$jobsfolder$name\\input\\*"; - - # Copy the contents of Input - print "\ncmd: xcopy /C /Y /E $source $publishlocation 2>&1\n"; - print LogFile "\ncmd: xcopy /C /Y /E $source $publishlocation 2>&1\n"; - my $xcopy = `xcopy /C /Y /E $source $publishlocation 2>&1`; - print $xcopy; - - print "\nNumber of Files Copied = $1\n" if $xcopy =~ m/(\d+)\s\w+/; - print LogFile "\nNumber of Files Copied = $1\n" if $xcopy =~ m/(\d+)\s\w+/; - $count += $1; - } - } - close Publish; - - print "\nTotal Number of files copied = $count\n"; - print LogFile "\nTotal Number of files copied = $count\n"; - - # Minimum 3 files have to be copied - Trace.txt, sys$rom.bin and armX.tpkg - if ($count >= 3) - { - # it is fine to delete the jobs dir - print "\ncmd: rd $jobsfolder$name /Q /S 2>&1\n"; - print LogFile "\ncmd: rd $jobsfolder$name /Q /S 2>&1\n"; - print `rd $jobsfolder$name /Q /S 2>&1`; - } - } - else - { - print "\n*** Error publishing results ***\n Cannot open publish file: $jobsfolder"."$name"."\\publish.txt\n"; - print LogFile "\n*** Error publishing results ***\n Cannot open publish file: $jobsfolder"."$name"."\\publish.txt\n"; - } - } - else - { - print "\nThe Job $name is either still running or has encountered an error\n"; - print LogFile "\nThe Job $name is either still running or has encountered an error\n"; - } - } - else - { - print "*** Error ***\nDir does not exist! $jobsfolder.$name\n"; - print LogFile "*** Error ***\nDir does not exist! $jobsfolder.$name\n"; - } - } - } - close JobDir; - - my $localtimes = localtime; - print "\n*** Current Time: $localtimes ***\n"; - print LogFile "\n*** Current Time: $localtimes ***\n"; - - print "\n"; - print "\n*********************\n"; - print "\n*** END PUBLISHER ***\n"; - print "\n*********************\n"; - print "\n"; - print "\n"; - print LogFile "\n"; - print LogFile "\n*********************\n"; - print LogFile "\n*** END PUBLISHER ***\n"; - print LogFile "\n*********************\n"; - print LogFile "\n"; - print LogFile "\n"; - - close LogFile; - sleep 900; -} - -sub GoNext -{ - print "\n*** Error in Publisher ***\n $_[0] $!\n"; - print LogFile "\n*** Error in Publisher ***\n $_[0] $!\n"; - next; -} - -# identify if a job has finished -sub isJobFinished($) { - - my $jobid = shift; - my @cmd_out = `testdriver.cmd jobstatus -j $jobid 2>&1`; - - foreach (@cmd_out) { - if (m/completed/) { return 1; } - } - - return 0; -} - -sub getSourceDir($) -{ - my $source = shift; - my $runid = 0; - my $buildname; - - # - # Find the correct directory to publish - # - - 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 result 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 - my @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"; - - foreach my $directory (@dirArray) - { - if ($directory =~ /(^[0-9]+)/i) - { - $source .= "\\$directory"; - $runid = $directory; - last; - } - } - } - last; - } - } - } - - } - } - } - } - } - return ($source, $runid, $buildname); -} \ No newline at end of file