1*b1cdbd2cSJim Jagielskipackage cwstestresulthelper; 2*b1cdbd2cSJim Jagielski 3*b1cdbd2cSJim Jagielski#************************************************************** 4*b1cdbd2cSJim Jagielski# 5*b1cdbd2cSJim Jagielski# Licensed to the Apache Software Foundation (ASF) under one 6*b1cdbd2cSJim Jagielski# or more contributor license agreements. See the NOTICE file 7*b1cdbd2cSJim Jagielski# distributed with this work for additional information 8*b1cdbd2cSJim Jagielski# regarding copyright ownership. The ASF licenses this file 9*b1cdbd2cSJim Jagielski# to you under the Apache License, Version 2.0 (the 10*b1cdbd2cSJim Jagielski# "License"); you may not use this file except in compliance 11*b1cdbd2cSJim Jagielski# with the License. You may obtain a copy of the License at 12*b1cdbd2cSJim Jagielski# 13*b1cdbd2cSJim Jagielski# http://www.apache.org/licenses/LICENSE-2.0 14*b1cdbd2cSJim Jagielski# 15*b1cdbd2cSJim Jagielski# Unless required by applicable law or agreed to in writing, 16*b1cdbd2cSJim Jagielski# software distributed under the License is distributed on an 17*b1cdbd2cSJim Jagielski# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 18*b1cdbd2cSJim Jagielski# KIND, either express or implied. See the License for the 19*b1cdbd2cSJim Jagielski# specific language governing permissions and limitations 20*b1cdbd2cSJim Jagielski# under the License. 21*b1cdbd2cSJim Jagielski# 22*b1cdbd2cSJim Jagielski#************************************************************** 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielskiuse English; 27*b1cdbd2cSJim Jagielskiuse warnings; 28*b1cdbd2cSJim Jagielskiuse strict; 29*b1cdbd2cSJim Jagielskiuse Cwd; 30*b1cdbd2cSJim Jagielskiuse Cwd 'chdir'; 31*b1cdbd2cSJim Jagielski 32*b1cdbd2cSJim Jagielskiuse stringhelper; 33*b1cdbd2cSJim Jagielskiuse loghelper; 34*b1cdbd2cSJim Jagielskiuse oshelper; 35*b1cdbd2cSJim Jagielskiuse filehelper; 36*b1cdbd2cSJim Jagielskiuse CallExternals; 37*b1cdbd2cSJim Jagielski 38*b1cdbd2cSJim JagielskiBEGIN { 39*b1cdbd2cSJim Jagielski use Exporter (); 40*b1cdbd2cSJim Jagielski our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS); 41*b1cdbd2cSJim Jagielski 42*b1cdbd2cSJim Jagielski $VERSION = 1.00; 43*b1cdbd2cSJim Jagielski # if using RCS/CVS, this may be preferred 44*b1cdbd2cSJim Jagielski $VERSION = do { my @r = (q$Revision: 1.1 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; # must be all one line, for MakeMaker 45*b1cdbd2cSJim Jagielski @ISA = qw(Exporter); 46*b1cdbd2cSJim Jagielski @EXPORT = qw(&cwstestresult); 47*b1cdbd2cSJim Jagielski %EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ], 48*b1cdbd2cSJim Jagielski # your exported package globals go here, 49*b1cdbd2cSJim Jagielski # as well as any optionally exported functions 50*b1cdbd2cSJim Jagielski @EXPORT_OK = ( ); # qw($Var1 %Hashit &func3); 51*b1cdbd2cSJim Jagielski} 52*b1cdbd2cSJim Jagielski 53*b1cdbd2cSJim Jagielskisub cwstestresult($$$$$$) 54*b1cdbd2cSJim Jagielski{ 55*b1cdbd2cSJim Jagielski my $sStatus = shift; 56*b1cdbd2cSJim Jagielski my $sDBdistinct = shift; 57*b1cdbd2cSJim Jagielski my $sourceversion = shift; 58*b1cdbd2cSJim Jagielski my $destinationversion = shift; 59*b1cdbd2cSJim Jagielski 60*b1cdbd2cSJim Jagielski my $sSOLARENV; # = getSolenvPath(); 61*b1cdbd2cSJim Jagielski my $nSOLARENV_fake = 0; 62*b1cdbd2cSJim Jagielski my $sCOMMON_ENV_TOOLS; 63*b1cdbd2cSJim Jagielski my $nCOMMON_ENV_TOOLS_fake = 0; 64*b1cdbd2cSJim Jagielski 65*b1cdbd2cSJim Jagielski my $MAJOR; 66*b1cdbd2cSJim Jagielski my $MINOR; 67*b1cdbd2cSJim Jagielski # we need an extra state in DB 68*b1cdbd2cSJim Jagielski # if this state is given here, we need to add information in cws back. 69*b1cdbd2cSJim Jagielski if ( ! $sSOLARENV) 70*b1cdbd2cSJim Jagielski { 71*b1cdbd2cSJim Jagielski my @MAJORMINOR=split('_', $sourceversion); 72*b1cdbd2cSJim Jagielski if ($#MAJORMINOR < 1) 73*b1cdbd2cSJim Jagielski { 74*b1cdbd2cSJim Jagielski print "Failure with sourceversion '$sourceversion' not splitable.\n"; 75*b1cdbd2cSJim Jagielski return; 76*b1cdbd2cSJim Jagielski } 77*b1cdbd2cSJim Jagielski $MAJOR=$MAJORMINOR[0]; # DEV300, OOH310, ... 78*b1cdbd2cSJim Jagielski $MINOR=$MAJORMINOR[1]; # m45, ... 79*b1cdbd2cSJim Jagielski if (getEnvironment() eq "wntmsci") 80*b1cdbd2cSJim Jagielski { 81*b1cdbd2cSJim Jagielski $sSOLARENV="o:/$MAJOR/ooo.$MINOR/solenv"; 82*b1cdbd2cSJim Jagielski if (! -e $sSOLARENV) 83*b1cdbd2cSJim Jagielski { 84*b1cdbd2cSJim Jagielski # fallback to old before ause103 (treeconfig) 85*b1cdbd2cSJim Jagielski $sSOLARENV="o:/$MAJOR/src.$MINOR/solenv"; 86*b1cdbd2cSJim Jagielski } 87*b1cdbd2cSJim Jagielski } 88*b1cdbd2cSJim Jagielski elsif (getEnvironment() eq "unxlngi" || 89*b1cdbd2cSJim Jagielski getEnvironment() eq "unxsoli") 90*b1cdbd2cSJim Jagielski { 91*b1cdbd2cSJim Jagielski $sSOLARENV="/so/ws/$MAJOR/ooo.$MINOR/solenv"; 92*b1cdbd2cSJim Jagielski # automount 93*b1cdbd2cSJim Jagielski system("ls -al $sSOLARENV >/dev/null"); 94*b1cdbd2cSJim Jagielski sleep(1); 95*b1cdbd2cSJim Jagielski if (! -e $sSOLARENV) 96*b1cdbd2cSJim Jagielski { 97*b1cdbd2cSJim Jagielski # fallback to old before ause103 (treeconfig) 98*b1cdbd2cSJim Jagielski $sSOLARENV="/so/ws/$MAJOR/src.$MINOR/solenv"; 99*b1cdbd2cSJim Jagielski } 100*b1cdbd2cSJim Jagielski } 101*b1cdbd2cSJim Jagielski else 102*b1cdbd2cSJim Jagielski { 103*b1cdbd2cSJim Jagielski log_print("cwstestresult(): This environment is not supported."); 104*b1cdbd2cSJim Jagielski return; 105*b1cdbd2cSJim Jagielski } 106*b1cdbd2cSJim Jagielski } 107*b1cdbd2cSJim Jagielski if ( !defined($ENV{SOLARENV}) || length($ENV{SOLARENV}) == 0 ) 108*b1cdbd2cSJim Jagielski { 109*b1cdbd2cSJim Jagielski $ENV{SOLARENV} = $sSOLARENV; 110*b1cdbd2cSJim Jagielski log_print(" SOLARENV is: $ENV{SOLARENV} faked\n"); 111*b1cdbd2cSJim Jagielski $nSOLARENV_fake = 1; 112*b1cdbd2cSJim Jagielski } 113*b1cdbd2cSJim Jagielski if ( ! $sCOMMON_ENV_TOOLS) 114*b1cdbd2cSJim Jagielski { 115*b1cdbd2cSJim Jagielski if (isWindowsEnvironment()) 116*b1cdbd2cSJim Jagielski { 117*b1cdbd2cSJim Jagielski $sCOMMON_ENV_TOOLS="r:/etools"; 118*b1cdbd2cSJim Jagielski } 119*b1cdbd2cSJim Jagielski elsif (isUnixEnvironment() ) 120*b1cdbd2cSJim Jagielski { 121*b1cdbd2cSJim Jagielski $sCOMMON_ENV_TOOLS="/so/env/etools"; 122*b1cdbd2cSJim Jagielski # automount 123*b1cdbd2cSJim Jagielski system("ls -al $sCOMMON_ENV_TOOLS >/dev/null"); 124*b1cdbd2cSJim Jagielski sleep(1); 125*b1cdbd2cSJim Jagielski } 126*b1cdbd2cSJim Jagielski else 127*b1cdbd2cSJim Jagielski { 128*b1cdbd2cSJim Jagielski log_print("cwstestresult(): This environment is not supported. (variable COMMON_ENV_TOOLS not set.)"); 129*b1cdbd2cSJim Jagielski return; 130*b1cdbd2cSJim Jagielski } 131*b1cdbd2cSJim Jagielski } 132*b1cdbd2cSJim Jagielski if ( !defined($ENV{COMMON_ENV_TOOLS}) || length($ENV{COMMON_ENV_TOOLS}) == 0 ) 133*b1cdbd2cSJim Jagielski { 134*b1cdbd2cSJim Jagielski $ENV{COMMON_ENV_TOOLS} = $sCOMMON_ENV_TOOLS; 135*b1cdbd2cSJim Jagielski log_print( "COMMON_ENV_TOOLS is: $ENV{COMMON_ENV_TOOLS} faked\n"); 136*b1cdbd2cSJim Jagielski $nCOMMON_ENV_TOOLS_fake = 1; 137*b1cdbd2cSJim Jagielski } 138*b1cdbd2cSJim Jagielski 139*b1cdbd2cSJim Jagielski # if ( !defined($ENV{WORK_STAMP}) ) 140*b1cdbd2cSJim Jagielski # { 141*b1cdbd2cSJim Jagielski # $ENV{WORK_STAMP} = $MAJOR; 142*b1cdbd2cSJim Jagielski # log_print( " WORK_STAMP is: $ENV{WORK_STAMP} faked\n"); 143*b1cdbd2cSJim Jagielski # } 144*b1cdbd2cSJim Jagielski # if ( !defined($ENV{UPDMINOR}) ) 145*b1cdbd2cSJim Jagielski # { 146*b1cdbd2cSJim Jagielski # $ENV{UPDMINOR} = $MINOR; 147*b1cdbd2cSJim Jagielski # log_print( " UPDMINOR is: $ENV{UPDMINOR} faked\n"); 148*b1cdbd2cSJim Jagielski # } 149*b1cdbd2cSJim Jagielski 150*b1cdbd2cSJim Jagielski my $nWORK_STAMP_fake = 0; 151*b1cdbd2cSJim Jagielski my $nUPDMINOR_fake = 0; 152*b1cdbd2cSJim Jagielski 153*b1cdbd2cSJim Jagielski if ( !defined($ENV{WORK_STAMP}) || length($ENV{WORK_STAMP}) == 0 ) 154*b1cdbd2cSJim Jagielski { 155*b1cdbd2cSJim Jagielski $ENV{WORK_STAMP} = $MAJOR; 156*b1cdbd2cSJim Jagielski log_print(" WORK_STAMP is: $ENV{WORK_STAMP} faked\n"); 157*b1cdbd2cSJim Jagielski $nWORK_STAMP_fake = 1; 158*b1cdbd2cSJim Jagielski } 159*b1cdbd2cSJim Jagielski if ( !defined($ENV{UPDMINOR}) || length($ENV{WORK_STAMP}) == 0 ) 160*b1cdbd2cSJim Jagielski { 161*b1cdbd2cSJim Jagielski $ENV{UPDMINOR} = $MINOR; 162*b1cdbd2cSJim Jagielski log_print(" UPDMINOR is: $ENV{UPDMINOR} faked\n"); 163*b1cdbd2cSJim Jagielski $nUPDMINOR_fake = 1; 164*b1cdbd2cSJim Jagielski } 165*b1cdbd2cSJim Jagielski 166*b1cdbd2cSJim Jagielski # my $sStatus = "ok"; 167*b1cdbd2cSJim Jagielski # if ($nFailure == 0) 168*b1cdbd2cSJim Jagielski # { 169*b1cdbd2cSJim Jagielski # $sStatus = $sInfo; 170*b1cdbd2cSJim Jagielski # } 171*b1cdbd2cSJim Jagielski # elsif ($nFailure == 1) 172*b1cdbd2cSJim Jagielski # { 173*b1cdbd2cSJim Jagielski # $sStatus = "failed"; 174*b1cdbd2cSJim Jagielski # } 175*b1cdbd2cSJim Jagielski # elsif ($nFailure == 2) 176*b1cdbd2cSJim Jagielski # { 177*b1cdbd2cSJim Jagielski # $sStatus = "incomplete"; 178*b1cdbd2cSJim Jagielski # } 179*b1cdbd2cSJim Jagielski 180*b1cdbd2cSJim Jagielski # system("cwstestresult -c mycws -n Performance -p Windows ok"); 181*b1cdbd2cSJim Jagielski my $sPerlProgram = appendPath($sSOLARENV, "bin/cwstestresult.pl"); 182*b1cdbd2cSJim Jagielski # if ( -e "cwstestresult.pl" ) 183*b1cdbd2cSJim Jagielski # { 184*b1cdbd2cSJim Jagielski # # use a local version instead 185*b1cdbd2cSJim Jagielski # $sPerlProgram = "cwstestresult.pl"; 186*b1cdbd2cSJim Jagielski # } 187*b1cdbd2cSJim Jagielski # else 188*b1cdbd2cSJim Jagielski # { 189*b1cdbd2cSJim Jagielski # my $currentdir =cwd(); 190*b1cdbd2cSJim Jagielski # log_print( "We are in $currentdir\n"); 191*b1cdbd2cSJim Jagielski # } 192*b1cdbd2cSJim Jagielski 193*b1cdbd2cSJim Jagielski my $sPerlParam; 194*b1cdbd2cSJim Jagielski # $sPerlParam = " -m $MAJOR"; # master CWS 195*b1cdbd2cSJim Jagielski $sPerlParam .= " -c $destinationversion"; # name of CWS 196*b1cdbd2cSJim Jagielski $sPerlParam .= " -n ConvWatch"; # ConvWatch need to be capitalised for cwstestresult 197*b1cdbd2cSJim Jagielski my $sCWSEnv; 198*b1cdbd2cSJim Jagielski if (isWindowsEnvironment()) 199*b1cdbd2cSJim Jagielski { 200*b1cdbd2cSJim Jagielski $sCWSEnv = "Windows"; 201*b1cdbd2cSJim Jagielski } 202*b1cdbd2cSJim Jagielski elsif (getEnvironment() eq "unxlngi") 203*b1cdbd2cSJim Jagielski { 204*b1cdbd2cSJim Jagielski $sCWSEnv = "Linux"; 205*b1cdbd2cSJim Jagielski } 206*b1cdbd2cSJim Jagielski elsif (getEnvironment() eq "unxsoli") 207*b1cdbd2cSJim Jagielski { 208*b1cdbd2cSJim Jagielski $sCWSEnv = "SolarisX86"; 209*b1cdbd2cSJim Jagielski } 210*b1cdbd2cSJim Jagielski else 211*b1cdbd2cSJim Jagielski { 212*b1cdbd2cSJim Jagielski log_print("cwstestresult(): This environment is not supported. (getEnvironment() returns wrong value?)"); 213*b1cdbd2cSJim Jagielski return; 214*b1cdbd2cSJim Jagielski } 215*b1cdbd2cSJim Jagielski $sPerlParam .= " -p " . $sCWSEnv; 216*b1cdbd2cSJim Jagielski $sPerlParam .= " -r http://so-gfxcmp-lin.germany.sun.com/gfxcmp_ui/status_new.php?distinct=$sDBdistinct"; 217*b1cdbd2cSJim Jagielski 218*b1cdbd2cSJim Jagielski $sPerlParam .= " "; 219*b1cdbd2cSJim Jagielski $sPerlParam .= $sStatus; 220*b1cdbd2cSJim Jagielski 221*b1cdbd2cSJim Jagielski 222*b1cdbd2cSJim Jagielski # my $sSetcwsAndPerl = "setcws $destinationversion; " . getPerlExecutable(); 223*b1cdbd2cSJim Jagielski 224*b1cdbd2cSJim Jagielski my $err = callperl(getPerlExecutable(), $sPerlProgram, $sPerlParam); 225*b1cdbd2cSJim Jagielski if ($err != 0) 226*b1cdbd2cSJim Jagielski { 227*b1cdbd2cSJim Jagielski log_print( "Can't call cwstestresult.pl\n"); 228*b1cdbd2cSJim Jagielski } 229*b1cdbd2cSJim Jagielski if ($nSOLARENV_fake == 1) 230*b1cdbd2cSJim Jagielski { 231*b1cdbd2cSJim Jagielski $ENV{SOLARENV} = ""; 232*b1cdbd2cSJim Jagielski undef( $ENV{SOLARENV} ); 233*b1cdbd2cSJim Jagielski $nSOLARENV_fake = 0; 234*b1cdbd2cSJim Jagielski # if ( defined($ENV{SOLARENV}) ) 235*b1cdbd2cSJim Jagielski # { 236*b1cdbd2cSJim Jagielski # print "SOLARENV always defined.\n"; 237*b1cdbd2cSJim Jagielski # } 238*b1cdbd2cSJim Jagielski } 239*b1cdbd2cSJim Jagielski if ($nCOMMON_ENV_TOOLS_fake == 1) 240*b1cdbd2cSJim Jagielski { 241*b1cdbd2cSJim Jagielski $ENV{COMMON_ENV_TOOLS} = ""; 242*b1cdbd2cSJim Jagielski undef( $ENV{COMMON_ENV_TOOLS} ); 243*b1cdbd2cSJim Jagielski $nCOMMON_ENV_TOOLS_fake = 0; 244*b1cdbd2cSJim Jagielski } 245*b1cdbd2cSJim Jagielski 246*b1cdbd2cSJim Jagielski if ( $nWORK_STAMP_fake == 1 ) 247*b1cdbd2cSJim Jagielski { 248*b1cdbd2cSJim Jagielski # undef($ENV{WORK_STAMP}); 249*b1cdbd2cSJim Jagielski $ENV{WORK_STAMP} = ""; 250*b1cdbd2cSJim Jagielski undef($ENV{WORK_STAMP}); 251*b1cdbd2cSJim Jagielski $nWORK_STAMP_fake = 0; 252*b1cdbd2cSJim Jagielski } 253*b1cdbd2cSJim Jagielski if ( $nUPDMINOR_fake == 1 ) 254*b1cdbd2cSJim Jagielski { 255*b1cdbd2cSJim Jagielski $ENV{UPDMINOR} = ""; 256*b1cdbd2cSJim Jagielski undef($ENV{UPDMINOR}); 257*b1cdbd2cSJim Jagielski $nUPDMINOR_fake = 0; 258*b1cdbd2cSJim Jagielski } 259*b1cdbd2cSJim Jagielski 260*b1cdbd2cSJim Jagielski 261*b1cdbd2cSJim Jagielski} 262*b1cdbd2cSJim Jagielski 263*b1cdbd2cSJim Jagielski 264*b1cdbd2cSJim Jagielski1; 265