About Me

My photo
London, United Kingdom
SOA tester in London

Monday, September 14, 2015

Formatting Query Results to anything in Oracle SQL Developer

Learned this very useful stuff recently...
 
SELECT /*csv*/ * FROM scott.emp;
SELECT /*xml*/ * FROM scott.emp;
SELECT /*html*/ * FROM scott.emp;
SELECT /*delimited*/ * FROM scott.emp;
SELECT /*insert*/ * FROM scott.emp;
SELECT /*loader*/ * FROM scott.emp;
SELECT /*fixed*/ * FROM scott.emp;
SELECT /*text*/ * FROM scott.emp;

Thursday, September 25, 2014

lftp

Used another powerful linux utility lftp

echo 'mirror -P "for-Karthi/dir with space"' | lftp -u username,password hostname

where -P is parallel download :) 

Tuesday, June 10, 2014

Docker container


When you are doing lots of integration , I see this tool will be handy.

Docker is an open-source project that makes creating and managing Linux containers really easy. Containers are like extremely lightweight VMs – they allow code to run in isolation from other containers but safely share the machine’s resources, all without the overhead of a hypervisor.


Thursday, March 06, 2014

Sequence diagram

While doing some End to End testing, I got to know that I should really document the workflow, however I found that drawing a sequence diagram will really help me.

I found this tool very useful for such activity

http://sdedit.sourceforge.net/

Tuesday, February 04, 2014

SSH config

SSH config can be really useful , esp when you are logging to multiple linux boxes from a jump server.

Basicaly, you do this.


  • Copy the id_rsa key for the user from the jump box to your mac
  • chmod 600 to id_rsa key
  • go to .ssh and create a file config
  • paste this 

Host test04
  •         HostName machine.broadcast..com
            User inttest
            IdentityFile ~/.ssh/id_rsa_inttest
now you could ssh to Test4 box without logging to jump server.


Tuesday, November 05, 2013

strace


Linux Command - Strace

 strace command can be used to know which files are used while the command executed.

Wednesday, November 30, 2011

SOAPUI : Groovy Snippets

test suite use WsdlProject.addNewTestSuite().

Adding a test suite to a project,

test case to test suite and

test step to test case is done by using addNew... methods

**** To get all the methods of a class **

testRunner.testCase.testSuite.project.metaClass.methods.each { log.info it }

******** To list testcase name in a testsuite and WSDL teststep name in each testcase

*****####################################*****

import com.eviware.soapui.impl.wsdl.teststeps.*

def i=0;

for( testCase in testRunner.testCase.testSuite.getTestCaseList() ) {

for( testStep in testCase.getTestStepList() ) {

if( testStep instanceof WsdlTestRequestStep ) {

log.info i++ +"Name of testcases in this suite: " +"[" +testCase.getLabel() +"]" +" Name of the WSDL step is " +testStep.getName();

}

}

}

####################################

// get request property

request1 = groovyUtils.getXmlHolder("Initiallize#Request")

def sam = request1.xml

// set request property

request5 = testRunner.testCase.getTestStepByName( "Calcxml" )

request5.getProperty("request").setValue(sam)

#################################################################################################

// to add Assertions and remove Assertions

import com.eviware.soapui.impl.wsdl.teststeps.*

def i=0;

def a = "SOAP Response"

for( testCase in testRunner.testCase.testSuite.getTestCaseList() ) {

for( testStep in testCase.getTestStepList() ) {

if( testStep instanceof WsdlTestRequestStep ) {

// log.info i++ +" Name of testcases in this suite: " +"[" +testCase.getLabel() +"]" +" Name of the WSDL step is " +testStep.getName();

testStep.addAssertion(a)

testStep.removeAssertion(testStep.getAssertionByName(a))

}

}

}

################################################################################################3

// https://st.berserkgibbons.com/MM_XYZ3_FacadeWeb/sca/Exp_IProductService_SOAP

import com.eviware.soapui.impl.wsdl.teststeps.*

for( testCase in testRunner.testCase.testSuite.getTestCaseList() ) {

log.info("Setting HTTP basic auth for all WSDL test requests in test case ["+

testCase.getLabel()+"]")

for( testStep in testRunner.testCase.getTestStepList() ) {

if( testStep instanceof WsdlTestRequestStep ) {

testStep.getTestRequest()

.setUsername(testSuite

.getPropertyValue("Authorization"))

testStep.getTestRequest()

.setPassword(testSuite

.getPropertyValue("HeaderValue"))

}

}

}

##############################################################################################

log.warn ("Am giving you warning");

log.info ("Am giving you info");

log.error("Am giving you error");

import org.apache.log4j.*;

//BasicConfigurator.configure();

//LogManager.rootLogger.level = Level.INFO;

public static String PATTERN = "%d{ABSOLUTE} %-5p [%c{1}] %m%n"

def simple = new PatternLayout(PATTERN)

BasicConfigurator.configure(new ConsoleAppender(simple))

log.setLevel Level.DEBUG

LogManager.rootLogger.level = Level.ALL

if (log.isDebugEnabled()) {

log.debug "debug statement for var x: " + x

}

################################################################################################

README : setup script

import groovy.sql.Sql;

def DB_prp= new Object[4]; //array to store the db properties

def results;

def DB_connection;

//Groovy open file for reading DB related properties

def target ="D:\\soapui-release-B\\properties\\DB_connection.csv"

def i=0;

def FILE_NOT_EXISTS="$target file NOT present";

File wf= new File(target);

assert wf.exists():FILE_NOT_EXISTS;

wf.eachLine{line->

results = line.tokenize("\t");

//log.info results[1];

DB_prp[i++]=results[1].trim();

}

for (item in DB_prp) {

//log.info item;

print item+" ";

}

try {

DB_connection = Sql.newInstance(DB_prp[0], DB_prp[1],DB_prp[2],DB_prp[3]);

context.setProperty("dbConn", DB_connection);

} catch (Exception e) {

//log.error "Could not establish connection to the database."

print " could not establish connection";

}

################################################################################################

README : setting property at testsuite level

testRunner.testCase.testSuite.setPropertyValue("abc",yourValue);

def propertiesStep = testRunner.testCase.getTestStepByName( "GetVoiceItem" );

assert(propertiesStep != null);

def voiceItemHolder = groovyUtils.getXmlHolder( "GetVoiceItem#Request" )

voiceItemHolder.declareNamespace("voic", "http://www.adomo.com/VoiceItem");

voiceItemHolder.setNodeValue("//voic:identifier","Hello");

voiceItemHolder.updateProperty()

################################################################################################

//log.info context.expand('${getMediaAsset#ResponseAsXML}')

def testSuite = testRunner.testCase.testSuite.project.testSuites['MediaAssetServiceTestSuite'];

for(int i=0; i)

{

// isDisabled() mehod returns boolean value (i.e true or false)

if(!testSuite.getTestCaseAt(i).isDisabled())

{

// Lists out the name of enabled testcases

log.info testSuite.getTestCaseAt(i).getName();

}

}

################################################################################################

import com.eviware.soapui.impl.wsdl.teststeps.*;

import com.eviware.soapui.support.XmlHolder;

def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context );

def i=0;

def WsdlTestRequestName;

for( testStep in testRunner.testCase.getTestStepList() ) {

if( testStep instanceof WsdlTestRequestStep ) {

// log.info i++ +"Name of testcases in this suite: " +"[" +"]" +" Name of the WSDL step is " +testStep.getName();

WsdlTestRequestName=testStep.getName();

}

}

def responseHolder = groovyUtils.getXmlHolder("${WsdlTestRequestName}#Response");

//responseHolder.declareNamespace( 'se', 'http://WEBSITE_FOR_NAME_SPACE')

responseHolder.namespaces["se"] = "http://fabric.XYZ.co.uk/XYZ3/1.0/LIB_MediaAssetService/wsdl/IMediaAssetService"

//MA_UUID=responseHolder.getNodeValue("//se:firstnodee[1]/nodenode[1]/whichnodeIwant[1]");

//holder.namespaces["se"] = "http://fabric.XYZ.co.uk/XYZ3/1.0/LIB_MediaAssetService/wsdl/IMediaAssetService"

def node = responseHolder.getNodeValue( "//se:getMediaAssetResponse[1]/getMediaAssetResponse[1]/mediaAssetInfo[1]/text[1]/UUID[1]" )

assert node != null

log.info node

log.info responseHolder.getPrettyXml();

#########################################################################################333

import com.eviware.soapui.support.XmlHolder

def holder = new XmlHolder( messageExchange.responseContentAsXml )

holder.namespaces["se"] = "http://fabric.XYZ.co.uk/XYZ3/1.0/LIB_MediaAssetService/wsdl/IMediaAssetService"

def nodeCount = holder.getDomNodes("//se:getMediaAssetResponse/getMediaAssetResponse").length

log.info nodeCount

for (def nodeIndex = 1; nodeIndex <= nodeCount; nodeIndex++) {

def node = holder.getDomNodes("//se:getMediaAssetResponse/getMediaAssetResponse/mediaAssetInfo/text/*")

node.each {

log.info "map node " + nodeIndex + " - " + it.QName.toString() + ": " + it.firstChild.nodeValue

}

}

###########################

import org.apache.log4j.*;

//BasicConfigurator.configure();

//LogManager.rootLogger.level = Level.INFO;

def PATTERN = "%d{ABSOLUTE} %-5p [%c{1}] %m%n"

def x=42;

def simple = new PatternLayout(PATTERN)

BasicConfigurator.configure(new ConsoleAppender(simple))

log.setLevel Level.DEBUG

//LogManager.rootLogger.level = Level.ALL

if (log.isDebugEnabled()) {

,    log.debug "debug statement for var x: " + x

}

log.setLevel Level.INFO

if (log.isInfoEnabled()) {

log.info "debug statement for var x: " + x

}

#########################################################################

import com.eviware.soapui.SoapUI;

import com.eviware.soapui.model.testsuite.TestRunContext;

import com.eviware.soapui.model.testsuite.TestRunner;

import com.eviware.soapui.model.testsuite.TestRunner.Status

import com.eviware.soapui.model.testsuite.TestStepResult;

def testcase = testRunner.getTestCase();

def steplist = testcase.getTestStepList() ;

def a3 = steplist[3];

def a4 = steplist[4];

def teststatus = testRunner.getStatus();

//

def step_a = "\n";

def i = 0;

for( r in testRunner.results )

{ i++;

step_a = step_a + i + " - '" + r.testStep.name + "' finished with status " + r.status + "\n" ;

}

// check the status property of the TestStepResult object created for the execution of the corresponding TestStep, available from testRunner.results array

// list possible status values : def step_a3 = com.eviware.soapui.model.testsuite.TestStepResult.TestStepStatus.values();

def P1 = testRunner.testCase.getTestStepByName( "Properties" );

com.eviware.soapui.support.UISupport.showInfoMessage(

"Run testcase = " + testcase.name + "\n"

+ "Functional steps = " + a3.name + " + " + a4.name + "\n"

+ " --> " + "Testcase run status = " + teststatus + "\n"

+ "Test steps run status : " + step_a + "\n" +

"Run parameters : Env= " + P1.getPropertyValue( "testenv" ) + "\n"

}

##################################################################################333

def testRequest = testRunner.testCase.testSteps["Request 1"].testRequest

def out = new FileWriter( "out.txt" )

out.println( testRequest.requestContent )

out.println( testRequest.response.contentAsString )

##################################################################################

// Compare testcase property and XML response property

//gp.callme(log);

/*def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);

def responseHolder = groovyUtils.getXmlHolder("getMediaAsset#Response");

responseHolder.namespaces["se"] = "http://fabric.XYZ.co.uk/XYZ3/1.0/LIB_MediaAssetService/wsdl/IMediaAssetService"

for ( value in responseHolder.getNodeValues("//se:getMediaAssetResponse/getMediaAssetResponse/mediaAssetInfo/text/*"))

{

//log.info "from response:"+value

for(prp in testRunner.testCase.getPropertyNames())

{

if(value == testRunner.testCase.getPropertyValue(prp)){

log.info "Property matches " + value +"=="+testRunner.testCase.getPropertyValue(prp);

//    log.info "Testproperty:" + testRunner.testCase.getPropertyValue(prp)

MATCHES = "True";

break;   

}

}

}

assert MATCHES == "True"*/

########################################################################################

Add new test request to testcase

import com.eviware.soapui.config.TestStepConfig;

import com.eviware.soapui.impl.wsdl.teststeps.*;

import com.eviware.soapui.impl.wsdl.*;

import com.eviware.soapui.impl.wsdl.teststeps.registry.WsdlTestStepFactory

def testStepName="request_" + "create_customer_1"

def interfaceName="Exp_MediaAssetService_SOAP_IMediaAssetServiceHttpBinding";

def operationName="createMediaAsset";

def op = testRunner.testCase.testSuite.project.interfaces[interfaceName].operations[operationName];

def config = com.eviware.soapui.impl.wsdl.teststeps.registry.WsdlTestRequestStepFactory.createConfig( op, testStepName );

def newTestStep = testRunner.testCase.addTestStep( config );

###########################################################################3

README : Add WSDL test Steps for all operations

import com.eviware.soapui.config.TestStepConfig;

import com.eviware.soapui.impl.wsdl.teststeps.*;

import com.eviware.soapui.impl.wsdl.testcase.*;

import com.eviware.soapui.impl.wsdl.teststeps.registry.WsdlTestStepFactory

def interfaceName

def testStepName

def op

def config

def newTestStep

interfaceName= testRunner.testCase.testSuite.project.getInterfaceAt(0).getName();

for ( operationName in testRunner.testCase.testSuite.project.getInterfaceAt(0).getOperationList() ) {

testStepName="request_" + operationName.getName()

op = testRunner.testCase.testSuite.project.interfaces[interfaceName].operations[operationName.getName()];

config = com.eviware.soapui.impl.wsdl.teststeps.registry.WsdlTestRequestStepFactory.createConfig( op, testStepName );

newTestStep = testRunner.testCase.addTestStep( config );

}

############################################################################\

import com.eviware.soapui.config.TestStepConfig;

import com.eviware.soapui.impl.wsdl.teststeps.*;

import com.eviware.soapui.impl.wsdl.*;

import com.eviware.soapui.impl.wsdl.teststeps.registry.WsdlTestStepFactory

def testStepName="request_" + "create_customer_1"

def interfaceName

interfaceName= testRunner.testCase.testSuite.project.getInterfaceAt(0).getName();

def operationName="createMediaAsset";

def op = testRunner.testCase.testSuite.project.interfaces[interfaceName].operations[operationName];

def config = com.eviware.soapui.impl.wsdl.teststeps.registry.WsdlTestRequestStepFactory.createConfig( op, testStepName );

def newtcase = testRunner.testCase.testSuite.addNewTestCase("Trail Name")

def newTestStep = newtcase.addTestStep( config );

##############################################################################3

README : Add datasource step of type .csv and also set start row end row

testRunner.testCase.testSteps["DataSource"].modelItem.dataSource = "File"

testRunner.testCase.getTestStepByName("DataSource").getDataSource().setFileName("C:/Temp/366.xml")

testRunner.testCase.testSteps["DataSource"].setEndRow("6");

testRunner.testCase.testSteps["DataSource"].setStartRow("5");

log.info testRunner.testCase.testSteps["DataSource"].getStartRow();

log.info testRunner.testCase.testSteps["DataSource"].getEndRow()

############################################################################

Get headers from CVS file and add to datasource as property

testRunner.testCase.

//csv file containing data

String strFile = "D:\\Systest\\B\\testdata\\create_asset.csv";

//create BufferedReader to read csv file

BufferedReader br = new BufferedReader( new FileReader(strFile));

String strLine = "";

StringTokenizer st = null;

int lineNumber = 0, tokenNumber = 0;

//read comma separated file line by line

while( (strLine = br.readLine()) != null)

{

lineNumber++;

//break comma separated line using ","

st = new StringTokenizer(strLine, ",");

while(st.hasMoreTokens())

{

//display csv values

tokenNumber++;

testRunner.testCase.testSteps["DataSource"].addProperty(st.nextToken());

//log.info("Line " + lineNumber +", Token " + tokenNumber+ ", Token : "+ st.nextToken());

}

break;

//reset token number

tokenNumber = 0;

}

############################################################################\

README: Replace testStep name as testcase name

import com.eviware.soapui.impl.wsdl.teststeps.*

def i=0;

for( testCase in testRunner.testCase.testSuite.getTestCaseList() ) {

for( testStep in testCase.getTestStepList() ) {

if( testStep instanceof WsdlTestRequestStep ) {

def tcasename=testCase.getLabel()

def tstepname=tcasename.replaceAll("TestCase","TestStep");

// log.info i++ +"Name of testcases in this suite: " +"[" +tcasename +"]"

// log.info " NewName of the WSDL step is " + tstepname;

testStep.setName(tstepname);

}

}

}

############################################################################\

README Add New End points.

//****************************************************************************************

/*

// Add New End points.

def endpoints=[];

def CI = "192.168.9.95:9443";

def ST = "192.168.9.95:9443";

def newendpoint;

for ( endpoint in testRunner.testCase.testSuite.project.getInterfaceAt(1).getEndpoints())

endpoints[0]=endpoint

newendpoint=endpoints[0].replace('localhost:9080','192.168.9.95:9443')

//log.info endpoints[0]

//log.info newendpoint

testRunner.testCase.testSuite.project.getInterfaceAt(0).addEndpoint(newendpoint);

for ( endpoint in testRunner.testCase.testSuite.project.getInterfaceAt(0).getEndpoints())

log.info endpoint

*/

//*****************************************************************************************

######################################################################################

//README : Command line arguments for Groovy.

for (arg in this.args) {

println arg

}

######################################################################################

//Parse CSV file

testfile = new File("D:/Release-B/ReleaseA-Enhancement/DMI XYZ3 Release B_Test Cases_Release A Enhancements.csv")

def tcaseDescription =[];

def i=0;

testfile.eachLine{

//log.info it

tcaseDetails = it.split(/,/).toList()

for (tcaseDetail in tcaseDetails)

{ log.info "Cellnumber "+ i++ + tcaseDetail}

######################################################################################

//Parse CSV File and set Testcase description

testfile = new File("C:/test.csv")

def tcaseDescription =[];

def i=0;

testfile.eachLine{

//log.info it

tcaseDetails = it.split(/,/).toList()

tcaseDescription[i++]=tcaseDetails[5]

}

def j=0;

for( testCase in testRunner.testCase.testSuite.getTestCaseList() ) {

testCase.setDescription(tcaseDescription[j++]);

}

for( testCase in testRunner.testCase.testSuite.getTestCaseList() ) {

log.info testCase.getDescription();

}

######################################################################################

/*

// *** Replace Teststeps Name as like TestCase Name

//

import com.eviware.soapui.impl.wsdl.teststeps.*

for( testCase in testRunner.testCase.testSuite.getTestCaseList() ) {

def i=1;

// for( testCase in testRunner.testCase.testSuite.getTestCaseByName("ReAEn_TC.139 MediaAssetService createMediaAsset TestCase") ) {

for( testStep in testCase.getTestStepList() ) {

// if( testStep instanceof WsdlTestRequestStep ) {

def tcasename=testCase.getLabel()

def tstepname=testStep.getLabel()

tstepname=tcasename.replaceAll("TestStep 1","TestStep");

tstepname=tcasename.replaceAll("TestCase","TestStep")+i++;

// log.info i++ +"Name of testcases in this suite: " +"[" +tcasename +"]"

log.info " NewName of the WSDL step is " + tstepname;

testStep.setName(tstepname);

}

}

}

*/

/*

// ** Update Testcase Description from CSV File

//

testfile = new File("C:/test.csv")

def tcaseDescription =[];

def i=0;

testfile.eachLine{

//log.info it

tcaseDetails = it.split(/,/).toList()

tcaseDescription[i++]=tcaseDetails[5]

}

def j=0;

for( testCase in testRunner.testCase.testSuite.getTestCaseList() ) {

testCase.setDescription(tcaseDescription[j++]);

}

for( testCase in testRunner.testCase.testSuite.getTestCaseList() ) {

log.info testCase.getDescription();

}

*/

/*

// ** Add all 3 assertions to teststep

//

import com.eviware.soapui.impl.wsdl.teststeps.*;

def i=0;

def a = "SOAP Response"

def b = "Not SOAP Fault"

def c = "Schema Compliance"

for( testCase in testRunner.testCase.testSuite.getTestCaseList() ) {

for( testStep in testCase.getTestStepList() ) {

if( testStep instanceof WsdlTestRequestStep ) {

if(!testStep.getAssertionByName(a)) testStep.addAssertion(a)

if(!testStep.getAssertionByName(b)) testStep.addAssertion(b)

if(!testStep.getAssertionByName(c)) testStep.addAssertion(c)

}

}

}

*/

######################################################################################

Add datasource step programatically !

def tcase = testRunner.testCase.testSuite.getTestCaseAt(1);

log.info tcase.getLabel();

log.info " "

def newtcase = testRunner.testCase.testSuite.addNewTestCase("AAA")

def config = com.eviware.soapui.impl.wsdl.teststeps.registry.WsdlTestStepRegistry.getInstance().getFactory("datasource").createNewTestStep(tcase,"trial");

newtcase.addTestStep( config );

tcase.addTestStep( config );

######################################################################################

Add datasource step programatically to all testcases in all testsuite

import com.eviware.soapui.impl.wsdl.teststeps.*;

def gi = com.eviware.soapui.impl.wsdl.teststeps.registry.WsdlTestStepRegistry.getInstance();

def gf = gi.getFactory("datasource");

def datasourcename;

def config

for (testsuite in testRunner.testCase.testSuite.project.getTestSuiteList()){

for( testCase in testsuite.getTestCaseList() ) {

datasourcename = testCase.getLabel()+"_datasource";

config = gf.createNewTestStep(testCase,datasourcename);

testCase.addTestStep( config );

}

// log.info testsuite.getLabel();

}

for (testsuite in testRunner.testCase.testSuite.project.getTestSuiteList()){

for( testCase in testsuite.getTestCaseList() ) {

datasourcename = testCase.getLabel()+"_datasource";

testCase.getTestStepByName(datasourcename).modelItem.dataSource = "File"

// log.info testCase.getTestStepByName(datasourcename);

testCase.getTestStepByName(datasourcename).getDataSource().setFileName("C:/Temp/366.xml")

testCase.testSteps[datasourcename].setEndRow("6");

testCase.testSteps[datasourcename].setStartRow("5");

}

}

######################################################################################

def newtcase = testRunner.testCase.testSuite.addNewTestCase("AAA")

def config = com.eviware.soapui.impl.wsdl.teststeps.registry.WsdlTestStepRegistry.getInstance().getFactory("jdbc").createNewTestStep(newtcase,"trial");

newtcase.addTestStep( config );

######################################################################################

def groovyUtils = new com.eviware.soapui.support.GroovyUtilsPro( context );

holder = groovyUtils.getXmlHolder( context.expand( '${JDBC Request#ResponseAsXML}' ) );

quota = holder.getNodeValue("//Results[1]/ResultSet[1]/Row[1]//PRODUCT.ID[1]/text()");

for ( value in holder.getNodeValues("//Results[1]/ResultSet[1]/Row[1]//*"))

log.info value

######################################################################################

//Change Datasource file path to whatever you want :)

import com.eviware.soapui.impl.wsdl.teststeps.*

for (testsuite in testRunner.testCase.testSuite.project.getTestSuiteList()){

for( testCase in testsuite.getTestCaseList() ) {

for( testStep in testCase.getTestStepList() ) {

if( testStep instanceof WsdlDataSourceTestStep ) {

testCase.getTestStepByName(testStep.getLabel()).getDataSource().setFileName("C:/Temp/366.xml")

}

}

}

}

######################################################################3

//Tip to generate a random element from an array

a = [1,2,3,4,5,6,7,8,9]

random = new Random()

log.info a[random.nextInt(50) % 9]

###########################################################################

// Add properties at testsuite level from a file along with a SQL query

import groovy.sql.Sql;

def MA_UUID;

def target ="D:\\soapui-release-B\\properties\\mediaasset.csv"

def i=1;

def FILE_NOT_EXISTS="$target file NOT present";

File wf= new File(target);

wf.write('')

//jdbc:db2://dmmdb4501.berserkgibbons.com:60000/XYZ3CIV41:user=apptest;password=PASS_VALUE;

def sql = Sql.newInstance("jdbc:db2://dmmdb4501.berserkgibbons.com:60000/XYZ3CIV41", "apptest","testing123", "com.ibm.db2.jcc.DB2Driver");

def query_statement = "SELECT * FROM XYZ3.MEDIA_ASSET where XYZ3.MEDIA_ASSET.STATE_ID='1' fetch first 5 rows only";

sql.eachRow(query_statement) { row ->

wf<< "deleltedmediaasset"+i+++"="+row.UUID

wf<< "\n"

}

sql.close();

log.info "Closed Database Connection. "

testRunner.testCase.testSuite.addPropertiesFromFile(target)

###############################################################################################################

// Add a properties in testcase level from a SQL query - random UUID generator

// Add properties at testcase level from a file along with a SQL query

import groovy.sql.Sql;

def MA_UUID;

def target ="D:\\soapui-release-B\\properties\\mediaasset.csv"

def i=1;

def j=0;

def FILE_NOT_EXISTS="$target file NOT present";

File wf= new File(target);

wf.write('')

def mediaassetranduuid=[];

random = new Random()

//jdbc:db2://dmmdb4501.berserkgibbons.com:60000/XYZ3CIV41:user=apptest;password=PASS_VALUE;

def sql = Sql.newInstance("jdbc:db2://dmmdb4501.berserkgibbons.com:60000/XYZ3CIV41", "apptest","testing123", "com.ibm.db2.jcc.DB2Driver");

def query_statement = "SELECT UUID FROM XYZ3.MEDIA_ASSET fetch first 50 rows only";

sql.eachRow(query_statement) { row ->

//wf<< "deleltedmediaasset"+i+++"="+row.UUID

//wf<< "\n"

mediaassetranduuid[j++]=row.UUID

}

sql.close();

def UUID=mediaassetranduuid[random.nextInt(300) % 49];

log.info UUID

testRunner.testCase.testSuite.getTestCaseByName("ReAEn_TC.043 MediaAssetService getMediaAsset TestCase").setPropertyValue("MEDIAASSET_UUID",UUID)

//wf<< "MEDIAASSET_UUID="+UUID

//log.info "MEDIAASSET_UUID="+mediaassetranduuid[random.nextInt(300) % 50]

//log.info "Closed Database Connection. "

//testRunner.testCase.testSuite.getTestCaseByName("ReAEn_TC.043 MediaAssetService getMediaAsset TestCase").removeProperty("MEDIAASSET_UUID")

##############################################################################################

//Parse CSV file - for RESTful services - compare response

def i=0;

def j=0

def k=0

def id=[];

def logicaldelete=[];

def name=[];

testfile = new File("D:/Systest/Test-Data/RefAnnotationTrackType.csv")

testfile.eachLine{

tcaseDetails = it.split(/,/).toList();

id[i++]= tcaseDetails[0];

logicaldelete[j++]= tcaseDetails[1];

name[k++]= tcaseDetails[2];

}

//-------------------------------------   

i=0;

j=0;

k=0;

//-------------------------------------

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);

def responseHolder = groovyUtils.getXmlHolder("RefAspectRatio#ResponseAsXml");

node = responseHolder.getDomNodes("//Response/e[*]/id[1]" )

node.each {

assert it.firstChild.nodeValue == id[i++]

}

node2 = responseHolder.getDomNodes("//Response/e[*]/logicalDelete[1]" )

node2.each {

assert it.firstChild.nodeValue == logicaldelete[j++]

}

node3 = responseHolder.getDomNodes("//Response/e[*]/name[1]" )

node3.each {

assert it.firstChild.nodeValue == name[k++]

}

##############################################################################################

//README : Set file name of datasource testSTep automatically..

import com.eviware.soapui.impl.wsdl.teststeps.*

def i=0;

/*

def post = context.getProperty("postMethod")

post.setRequestHeader("Test", "Hello") <-- adding header

for ( h in post.getRequestHeaders() )

log.info( h )

*/

for( testCase in testRunner.testCase.testSuite.getTestCaseList() ) {

for( testStep in testCase.getTestStepList() ) {

if( testStep instanceof ProJdbcRequestTestStep ) {

//log.info i++ +"Name of testcases in this suite: " +"[" +testCase.getLabel() +"]" +" Name of the WSDL step is " +testStep.getName();

log.info testRunner.testCase.getTestStepByName(testStep.getName()).setFileName("C:/Temp/366.xml")

}

}

}

##############################################################################################

README : Get Database connection string from Project level properties.

//def con = testSuite.project.getConfig()

//def dbcc = con.getDatabaseConnectionContainer()

//log.info dbcc.getDatabaseConnectionArray(0).getConnectionString()

##############################################################################################

setup scripts for DB connection

NOTE: You have to run as a testcase ..if you run only teststep it will fail... ok ..run testcase level.

---------------------------------

1) put this in setup script at testcase level

----------------------------------------------

import groovy.sql.Sql;

try {

def DB_connection = Sql.newInstance("jdbc:db2://dmmdb4501.berserkgibbons.com:60000/XYZ3CIV41", "apptest","testing123", "com.ibm.db2.jcc.DB2Driver");

context.setProperty("dbConn", DB_connection);

log.info "Made DB connection"

} catch (Exception e) {

log.info "Could not establish Database Connection";

}

2) Put this in Groovy step where ever you are

-----------------------------------------------

//Check if connection to database is available

if (context.dbConn)

{

//connection to the database

def sql = context.dbConn

row = sql.firstRow("SELECT * FROM XYZ3.MEDIA_ASSET fetch first 1 rows only ")

log.info row.UUID

}

else log.info "Setup failed DB not running"

##############################################################################################

Add HTTP headers to Requests

NOTE: will work only in 3.5.1 version

import com.eviware.soapui.impl.wsdl.teststeps.*

import com.eviware.soapui.support.types.StringToStringMap ;

def tc = testRunner.testCase.testSuite.getTestCaseByName("ReAEn_TC.042 MediaAssetService createMediaAsset TestCase")

def ts = tc.getTestStepByName("ReAEn_TC.042 MediaAssetService createMediaAsset TestStep1")

def ts2 =tc.getTestStepByName("r1")

def headers = new StringToStringMap()

headers.putIfMissing("Authorization","Basic VEVTVF9JJkFfU3VwZXJVc2VyOmZhYnJpYzEwMQ==")

log.info ts2.getHttpRequest().getRequestHeaders()

ts2.getHttpRequest().setRequestHeaders(headers)

log.info ts2.getHttpRequest().getRequestHeaders()

-------------------------------------------------------

import com.eviware.soapui.impl.wsdl.teststeps.*

import com.eviware.soapui.support.types.StringToStringMap ;

def headers = new StringToStringMap()

headers.putIfMissing("Authorization","Basic VEVTVF9JJkFfU3VwZXJVc2VyOmZhYnJpYzEwMQ==")

for( testCase in testRunner.testCase.testSuite.getTestCaseList() ) {

for( testStep in testCase.getTestStepList() ) {

if( testStep instanceof WsdlTestRequestStep ) {

testStep.getHttpRequest().setRequestHeaders(headers)

}

}

}

##############################################################################################

RESTful service - compare Response

import com.eviware.soapui.impl.wsdl.teststeps.*;

def teststep = testRunner.testCase.testSuite.getTestCaseByName("RefAddtnlTvMusicCode TestCase").getTestStepByName("RefAspectRatio")

teststep.addAssertion("XPath Match")

def assertion = teststep.getAssertionByName("XPath Match")

def responseAsXml = context.expand( '${RefAspectRatio#ResponseAsXml#//Response[1]}' )

//assertion.setExpectedContent(responseAsXml);

//assertion.setPath("//Response[1]");

##############################################################################################

Testcase level passing lists / properties

http://forum.eviware.com/viewtopic.php?f=2&t=4716&p=15639

##############################################################################################333

REST endpoint change

// Add New End points.

def endpoints=[];

def newendpoint;

def i=0;

for ( i=0;i

{

for ( endpoint in testRunner.testCase.testSuite.project.getInterfaceAt(i).getEndpoints() )

{

endpoints[0]=endpoint

log.info "Old end point is : " +endpoints[0]

String splitPattern = "/";

tokens = endpoints[0].split(splitPattern);

def lasttoken = tokens[tokens.length-1].toLowerCase() - "ref"

newendpoint="https://st.berserkgibbons.com/XYZ3/gateway/reference/rest/data/"+lasttoken

log.info "New endpoint is :" +newendpoint

testRunner.testCase.testSuite.project.getInterfaceAt(i).changeEndpoint(endpoints[0],newendpoint);

}

}

------------------------------------------------------------

Generate UUID - Groovy way

##############################################################

def validChars ="abcdefghijklmnopqrstuvwxyz1234567890"

j=0

String resultID = ""

int maxIndex = validChars.length()

for ( def IDlength in [8,4,4,4,12]) {

java.util.Random rnd = new java.util.Random(System.currentTimeMillis()*(new java.util.Random().nextInt()))

for ( j in 0..IDlength ) {

int rndPos = Math.abs(rnd.nextInt() % maxIndex);

resultID += validChars.charAt(rndPos)

number=resultID

}

if(IDlength!=12)

resultID = resultID+"-"

}

log.info resultID

------------------------------------------------------------

REST - Check HTTP Return Code

assert messageExchange.getResponseStatusCode() == 200

def res = messageExchange.getResponseContent()

assert res != null , 'Response must not be null'

teststeps.RestTestRequestStep

----------------------------------------------------------------

import com.eviware.soapui.impl.wsdl.teststeps.*

def ga = "Script Assertion"

String endofline = System.getProperty("line.separator");

String scripttext = "assert messageExchange.getResponseStatusCode() == 200" + endofline + "def res = messageExchange.getResponseContent()" + endofline +"assert res != null , 'Response must not be null'";

for( testCase in testRunner.testCase.testSuite.getTestCaseByName("GET_searchlocation_Stock_REST TestCase") ) {

for( testStep in testCase.getTestStepList() ) {

if (testStep instanceof RestTestRequestStep) {

if(!testStep.getAssertionByName(ga))

testStep.addAssertion(ga);

testStep.getAssertionByName("Script Assertion").setScriptText(scripttext);

testStep.getAssertionByName("Script Assertion").setName("Check HTTP Return Code");

}

}

}

----------------------------------------------------------------

Add JDBC request to all testcase

##############################################

for( testCase in testRunner.testCase.testSuite.getTestCaseList() ) {

testCase.addTestStep("jdbc","PreJDBC Request")

}

##############################################

import com.eviware.soapui.impl.wsdl.teststeps.*

Iterator iterator;

for( testCase in testRunner.testCase.testSuite.getTestCaseList() ) {

for( testStep in testCase.getTestStepList() ) {

if( testStep instanceof ProJdbcRequestTestStep ) {

testStep.setDriver("com.ibm.db2.jcc.DB2Driver")

}

}

}

#############################################################################

import com.eviware.soapui.impl.wsdl.teststeps.*

for( testCase in testRunner.testCase.testSuite.getTestCaseList() ) {

for( testStep in testCase.getTestStepList() ) {

if( testStep instanceof ProJdbcRequestTestStep )

{

testStep.setDbConnectionName("ST");

}

}

}

#############################################################################

def props = new java.util.Properties();

props = testRunner.testCase.getTestStepByName(“Properties”);

def propValue = props.getPropertyValue(“PropertyName”);

To access these properties in Groovy script:

def propValue = testRunner.testCase.getPropertyValue(“PropertyName”)

#######################################################################################

Send Files to FTP Location : Remember to download and place apache FTP client file in /lib/ext location

new FTPClient().with {

def media_ID = context.expand( '${DataSource_Delivery_ID#Media_ID}' )

connect host

log.info replyString

login user, password

log.info replyString

changeWorkingDirectory(remote_path);

files = listFiles(remote_path)

for (myfiles in files) {

if(myfiles.getName() =~ /Sky*/) {

log.info "Renaming : " + myfiles.getName();

rename(myfiles.getName(),media_ID);

log.info "Newfilename:" + media_ID;

}

}

disconnect();

}

########################################################################################

set DATE and time

def eventDateTime = new Date().format("yyyy-MM-dd")

def eventDateTime = new Date().format("yyyy-MM-dd'T'HH:mm:ss")

def props = new java.util.Properties();

props = testRunner.testCase.getTestStepByName("Properties");

props.setPropertyValue("filename","NEWIPTEST" + media_ID);

props.setPropertyValue("deliveryId",media_ID);

########################################################################################

To get Request and Response from PRocess instance Xpath

import com.eviware.soapui.impl.wsdl.teststeps.*;

import com.eviware.soapui.support.XmlHolder;

/* Clear log Start*/

// Karthi don't know how to do this !! :)

/* Clear log Done */

def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context );

def responseHolder = groovyUtils.getXmlHolder("getCommunication#Response");

responseHolder.namespaces["axis2ns89099"] ="http://www.apache.org/ode/pmapi"

responseHolder.namespaces["ns"]="http://www.apache.org/ode/pmapi/types/2006/08/02/"

def nodeCount = responseHolder.getDomNodes("//axis2ns89099:getCommunicationResponse[1]/getCommunicationResponse[1]/ns:restoreInstance[1]/*").length

log.info nodeCount

for (def nodeIndex = 1; nodeIndex <= nodeCount; nodeIndex++) {

def node = responseHolder.getDomNodes("//axis2ns89099:getCommunicationResponse[1]/getCommunicationResponse[1]/ns:restoreInstance[1]/ns:exchange[$nodeIndex]/ns:operation[1]")

node.each {

// log.info "Node " + nodeIndex + " - " + it.QName.toString() + ": " + it.firstChild.nodeValue

// log.info "Node " + nodeIndex + " - " + it.firstChild.nodeValue

if (it.firstChild.nodeValue == "storeItem")

{

log.info "Am in storeItem"

log.info nodeIndex

def request = responseHolder.getDomNode("//ns:exchange[$nodeIndex]/ns:in[1]//*")

log.info request.toString();

def response = responseHolder.getDomNode("//ns:exchange[$nodeIndex]/ns:out[1]//*")

log.info response.toString();

}

}

########################################################################################

// How to set properties values from teststep to another testcase

import com.eviware.soapui.support.*;

def props = new java.util.Properties();

def target_prpname="CREA"

def target_testcasename="Check_Process_Status";

def prp_name = "Properties"

def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context );

def holder = groovyUtils.getXmlHolder( messageExchange.responseContent );

def instanceID = holder.getNodeValue("//ns1:event[1]/ns1:sourceInstanceId[1]");

props = context.getTestCase().getTestSuite().getTestCaseByName(target_testcasename).getTestStepByName(prp_name);

props.setPropertyValue(target_prpname,instanceID)

########################################################################################

Get Endpoint WSDL URL from interface

for( inter in testRunner.testCase.testSuite.project.getInterfaces() ) {

log.info inter.getValue().getDefinition()

}

******************

//testRunner.testCase.testSuite.project.getWorkspace().createProject("Via_my_groovy", new File ("C:/Bskyb/soapui-project-files/karthi_test.xml"))

//testRunner.testCase.testSuite.project.getWorkspace().save(true)

for( inter in testRunner.testCase.testSuite.project.getInterfaces() ) {

log.info inter.getClass();

log.info inter

}