Jul 5, 2012

Incrementing test case property value using groovy script


def curJobId = testRunner.testCase.getPropertyValue( "JobIdIncre" );
int curJob=Integer.parseInt(curJobId);
def jobId = context.expand( '${#TestCase#JobID}' )
//Composing the JodId for this event
def returnJobID=jobId+curJob;
//Incrementing the JobID for next event
curJob=curJob+1;
testRunner.testCase.setPropertyValue( "JobIdIncre",curJob.toString() );
return returnJobID;

adding properties to test case using other properties using groovy script




/* Property Names
  1.UserIcre
  2.JobIdIcre
  3.UserNameProp
  4.PasswordProp
  5.MaxLimit
*/
def deviceNo = context.expand( '${HelloSource#DeviceNo}' );
def userLimit = context.expand( '${HelloSource#UserLimit}' );
def userName = context.expand( '${HelloSource#UserName}' );
//To compose UUID
def serialNumber = context.expand( '${HelloSource#SerialNumber}' )
def modelName = context.expand( '${HelloSource#ModelName}' )
def UUID="SN"+serialNumber+"MN"+modelName;
//TO Compose JOB ID
def jobCom="SN"+serialNumber+"JB00000";
//JOBID format :SN9000035X00JB000000
//              SN8506666X00JB000000961
//To set the starting value of the JobID
def preJobId=testRunner.testCase.getPropertyValue("JobIdIncre");
int pJobID;
if(preJobId != null)
 {
  //It will display the current JobId if JobId Already exist
  pJobID=Integer.parseInt(preJobId);  
 }else{
  //To set the starting value as '1'
  pJobID=1;
  testRunner.testCase.setPropertyValue( "JobIdIncre",pJobID.toString() );
 }
int uLimit = Integer.parseInt(userLimit);
int devNo=Integer.parseInt(deviceNo);
//log.info "userLimit:"+uLimit+"DevNO:"+devNo;
devNo=devNo-1;
testRunner.testCase.setPropertyValue( "UserNameProp",userName+((devNo*uLimit)+1) );
testRunner.testCase.setPropertyValue( "PasswordProp",userName+((devNo*uLimit)+1) );
testRunner.testCase.setPropertyValue( "UserIncre",((devNo*uLimit)+1).toString() );
testRunner.testCase.setPropertyValue( "MaxLimit",((devNo*uLimit)+uLimit).toString());
testRunner.testCase.setPropertyValue( "UUID",UUID);
testRunner.testCase.setPropertyValue( "JobID",jobCom);
return "Starting JobID::"+pJobID;


Groovy Script to process TestStep Pass/Fail status and store the result in properties


import com.eviware.soapui.model.testsuite.TestRunner.Status
import com.eviware.soapui.model.testsuite.TestStepResult;
def i = 0;
def results=testRunner.getResults()
def reve=results.reverse()
def UserIDResult;
def DeviceIDResult;
def JoblogResult;
def UserServiceIDResult;
def GroupIDResult;
def joblogcountTResult;
def joblogtotalTResult;
def joblogdetailTResult;
def joblogspecialTResult;
def joblogextendTResult;
for( r in reve )
{  i++;
  if (i==12) {break}
  if(r.testStep.name =='Verify_joblogextend_table')
  { joblogextendTResult= r.status.toString()}
  else if(r.testStep.name =='Verify_joblogspecial_table')
   { joblogspecialTResult= r.status.toString()}
   else if(r.testStep.name =='Verify_joblogtotal_table')
            { joblogtotalTResult= r.status.toString()}
   else if(r.testStep.name =='Verify_joblogdetails_table')
   { joblogdetailTResult= r.status.toString()}
   else if(r.testStep.name =='Verify_Joblogcount_table')
   { joblogcountTResult= r.status.toString()}
   else if(r.testStep.name =='UserServcieIDCheck')
   { UserServiceIDResult= r.status.toString()}
   else if(r.testStep.name =='GroupIDCheck')
     { GroupIDResult= r.status.toString()}
   else if(r.testStep.name =='UserIDCheck')
   { UserIDResult= r.status.toString()}
   else if(r.testStep.name =='DeviceIDCheck')
   { DeviceIDResult=r.status.toString()}
   else if(r.testStep.name =='JoblogCheck')
   { JoblogResult=r.status.toString()/*;if(r.status.toString()=='FAILED'){def msg=r.getMessages(); log.fatal ""+msg[0]+msg[1]}*/}
   else {log.fatal "Prasad:StepName condition missed :and actual TestName is "+r.testStep.name}  
}
//To Set the ResultProp
def TC=testRunner.getTestCase().getTestStepByName( "ResultProp" )
TC.setPropertyValue("JoblogResult",JoblogResult);
TC.setPropertyValue("DeviceIDResult",DeviceIDResult);
TC.setPropertyValue("UserIDResult",UserIDResult);
TC.setPropertyValue("GroupIDResult",GroupIDResult);
TC.setPropertyValue("UserServiceIDResult",UserServiceIDResult);
TC.setPropertyValue("joblogcountTResult",joblogcountTResult);
TC.setPropertyValue("joblogdetailTResult",joblogdetailTResult);
TC.setPropertyValue("joblogtotalTResult",joblogtotalTResult);
TC.setPropertyValue("joblogspecialTResult",joblogspecialTResult);
TC.setPropertyValue("joblogextendTResult",joblogextendTResult);

Jun 9, 2012

Uploading flat files into Postgres Database for specific tables


#!/bin/sh
if [ ! $# -eq 2 ] ; then
echo "Invalid arguments! Usage : DATTFilesToDB.sh  inputdir(fullpath) tablelistfilename";
echo "ex:DATFilesToDB.sh  usr/1L_joblogs joblogtables.txt";
exit;
else
echo "Executing database  uploading from DAT flies ..." ;
exec<$2
echo "----------- FLAT FILES (.dat) to DATABSE Tables------------------">>/usr/FFtoDB.log
echo "---Start Date:"$(date)>>/usr/FFtoDB.log
echo "-------------------------------------------------">>/usr/FFtoDB.log
echo "FlatFiles Loc:$1">>/usr/FFtoDB.log
cd $1
value=0;
while read line
 do
   value=`expr $value + 1`;
   echo "Currently running File/Table:$line">>/usr/FFtoDB.log
   query="COPY "$line" FROM '"$1"/public_"$line".dat' WITH DELIMITER ' ';"
   echo $query
   psql -h localhost -d webacc -U postgres -c "$query">> /usr/FFtoDB.log 2>&1
 done
echo "****$value file got created..";
echo "****$value file got created..">>/usr/FFtoDB.log
echo "---End Date:"$(date)>>/usr/FFtoDB.log
fi
echo "---------------------------------End of Script-----------------------";


.txt file should contain the table names.Script will upload flat files data into selected tables from the input dir. Errors and return values will be saved in  /usr/FFtoDB.log file.



Jun 7, 2012

sed command to identify date pattern yyyy-mm-dd hh:mm:ss.mse and replace with current date

sed -e "s/[0-9][0-9]\([0-9][0-9]\)-\([0-9][0-9]\)-\([0-9][0-9]\) \([0-9][0-9]\):\([0-9][0-9]\):\([0-9][0-9]\).\([0-9][0-9][0-9]\)/$(date +"%F %T.")$(($(date +%N)/1000000))/g" inputfile > newfile

Creating postgres database tables into Flat files (.copy) using shell script


#!/bin/sh
if [ ! $# -eq 2 ] ; then
echo "Invalid arguments! Usage : creatflatfiles.sh  outpurdir tablelistfilename";
echo "ex:creatflatfiles.sh  1L_joblogs tableslist.txt";
exit;
else
echo "Executing database  downloading to faltflies ..." ;
exec<$2
/bin/mkdir -p $1
cd $1
value=0;
while read line
 do
   value=`expr $value + 1`;  
   touch $line.copy;
   chmod 666 $line.copy;
   query="COPY "$line" TO '/usr/"$1"/"$line".copy';"
   echo $query
  #psql -h localhost -d databasename -U username -c command
   psql -h localhost -d webacc -U postgres -c "$query" >> /usr/FFtoDB.log 2>&1
 done
echo "****$value file got created..";
fi
#------------------------------------------

tableslist.txt should contain the table names.Script will generate tables data into flat files (tablename.copy) in the outputdir. Errors and return values will be saved in  /usr/FFtoDB.log file.