2788N/A<?
xml version="1.0" encoding="UTF-8" standalone="no"?>
2788N/A ! The contents of this file are subject to the terms of the 2788N/A ! Common Development and Distribution License, Version 1.0 only 2788N/A ! (the "License"). You may not use this file except in compliance 6982N/A ! You can obtain a copy of the license at 2788N/A ! See the License for the specific language governing permissions 2788N/A ! and limitations under the License. 6982N/A ! When distributing Covered Code, include this CDDL HEADER in each 6982N/A ! file and include the License file at 6982N/A ! add the following below this CDDL HEADER, with the fields enclosed 2788N/A ! by brackets "[]" replaced with your own identifying information: 2788N/A ! Portions Copyright [yyyy] [name of copyright owner] 6063N/A ! Copyright 2007-2009 Sun Microsystems, Inc. 3853N/A This function checks a return code against an expected return code
3853N/A <
function-
arg-
def name="returncode" type="required">
3853N/A return code received from command
3853N/A </
function-
arg-
description>
3853N/A <
function-
arg-
property name="type" value="integer"/>
3853N/A <
function-
arg-
def name="result" type="required">
3853N/A </
function-
arg-
description>
3853N/A <
function-
arg-
property name="type" value="integer"/>
3853N/A <
function-
arg-
def name="expected" type="optional" default="0">
3853N/A </
function-
arg-
description>
3853N/A <
function-
arg-
property name="type" value="integer"/>
6304N/A <
if expr="expected == 'noCheck'">
6304N/A <
if expr="returncode == expected">
6304N/A 'RC=%s, Result=Ok' % (returncode)
6304N/A 'RC=%s, Result=%s' % (returncode,result)
6304N/A <
message log="1" level="'Error'">
6304N/A 'RC=%s, Expected %s, Result=%s' % (returncode,expected,result)
6304N/A <
function name="checktestRC">
6304N/A This function checks the return code against an expected return code for a testcase
6304N/A <
function-
arg-
def name="returncode" type="required">
6304N/A return code received from command
6304N/A </
function-
arg-
description>
6304N/A <
function-
arg-
property name="type" value="integer"/>
6304N/A <
function-
arg-
def name="result" type="required">
6304N/A </
function-
arg-
description>
6304N/A <
function-
arg-
property name="type" value="integer"/>
6387N/A <
function-
arg-
def name="expected" type="optional" default="0">
6387N/A </
function-
arg-
description>
6387N/A <
function-
arg-
property name="type" value="integer"/>
6387N/A <
function-
arg-
def name="issue" type="optional" default="None">
6387N/A Issue id. Corresponds to an issue number.
6387N/A </
function-
arg-
description>
6387N/A <
function-
arg-
property name="type" value="string"/>
6387N/A <
if expr="expected == 'noCheck'">
6387N/A <
if expr="returncode == expected">
6387N/A <
if expr="STAXCurrentTestcase != None">
6387N/A <
tcstatus result="'pass'"/>
6387N/A <
if expr="VERBOSE_MODE == 'true'">
6387N/A 'SUCCESS: RC=%s, Expected %s, Result=%s' % (returncode,expected,result)
6304N/A 'SUCCESS: RC=%s, Expected %s' % (returncode,expected)
6304N/A <
if expr="STAXCurrentTestcase != None">
6304N/A <
tcstatus result="'fail'"/>
6304N/A <
call function="'setKnownIssue'">
4865N/A <
message log="1" level="'Error'">
2788N/A 'ERROR : RC=%s, Expected %s, Result=%s' % (returncode,expected,result)
5764N/A <
function name="setKnownIssue">
5764N/A This function set the known issue flag and maintains list of known issues
5764N/A <
function-
arg-
def name="issueId" type="required">
3853N/A </
function-
arg-
description>
4153N/A <
function-
arg-
property name="type" value="string"/>
2788N/A if issueId not in issuesList:
2788N/A print 'Issues list undefined. Unable to add issue %s' % issueId
2788N/A <
message log="1" level="'Error'">
3853N/A 'ERROR: HIT **** Known Issue (%s) ****' % issueId
3853N/A 'KnownIssue: %s' % issuesList
5551N/A<!-- Set the test status to PASS --> 5551N/A <
function name="testPassed">
5551N/A This function set the status of the tests: PASS
2788N/A <
message>'Set test status to PASS'</
message>
2788N/A <
tcstatus result="'pass'"/>
2788N/A<!-- Set the test status to FAIL --> 2788N/A <
function name="testFailed">
2788N/A This function set the status of the tests: FAIL
2788N/A <
message>'Set test status to FAIL'</
message>
2788N/A <
tcstatus result="'fail'"/>
2788N/A <
function name="searchString" scope="local">
2788N/A This function search for a string in the retrun string of a testcase
2788N/A Return 0 if the string is found, 1 otherwise
2788N/A <
function-
arg-
def name="expectedString" type="required">
2788N/A the substring expected from the command
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="string"/>
2788N/A <
function-
arg-
def name="returnString" type="required">
2788N/A the return string received from command
2788N/A </
function-
arg-
description>
4865N/A <
function-
arg-
property name="type" value="string"/>
2788N/A <
function-
arg-
def name="knownIssue" type="optional" default="None">
2788N/A Known issue. Corresponds to an issue number.
2788N/A </
function-
arg-
description>
3194N/A <
function-
arg-
property name="type" value="string"/>
4618N/A <
function-
arg-
def name="expectedRC" type="optional" default="0">
4618N/A Expected return code value. Default value is 0.
4618N/A Wildcard 'noCheck' to not check the RC
4618N/A </
function-
arg-
description>
3951N/A <
function-
arg-
property name="type" value="string"/>
6387N/A <!-- Check that returnString is really a string --> 6387N/A <
message log="1" level="'Error'">
6387N/A <
return>[myRC, myReason]</
return>
6397N/A <!-- Search for the expectedString --> 6397N/A 'Found substring, %s, in the return string' \
6387N/A 'Did not find substring, %s, in the return string, %s' \
6387N/A % (expectedString, returnString)
6391N/A myReason = 'String not found'
6391N/A <!-- Manage expectedRC and knownIssue --> 6391N/A <
if expr="expectedRC != 'noCheck'">
6391N/A <
if expr="myRC == expectedRC">
6391N/A 'SUCCESS: searchString successful'
6391N/A <
tcstatus result="'pass'"/>
6391N/A <
message log="1" level="'Error'">
6387N/A <
if expr="knownIssue == None">
6387N/A <
tcstatus result="'fail'"/>
2788N/A <
call function="'setKnownIssue'">
3853N/A <
return>[myRC, myReason]</
return>
5551N/A <!-- DEPRECATED, use searchString function --> 5551N/A <
function name="checktestString">
2788N/A This function checks the return string against an expected return substring for a testcase
2788N/A <
function-
arg-
def name="expectedString" type="required">
2788N/A the substring expected from the command
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="string"/>
2788N/A <
function-
arg-
def name="returnString" type="required">
2788N/A the return string received from command
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="string"/>
2788N/A <
function-
arg-
def name="issue" type="optional" default="None">
2788N/A Known issue. Corresponds to an issue number.
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="string" />
2788N/A <!-- Check that returnString is really a string --> 2788N/A <
message log="1" level="'Error'">
3194N/A <
tcstatus result="'fail'"/>
2788N/A <
tcstatus result="'pass'"/>
2788N/A 'SUCCESS : Found substring, %s, in the return string' % (expectedString)
6103N/A <
tcstatus result="'fail'"/>
6103N/A <
call function="'setKnownIssue'">
6103N/A <
message log="1" level="'Error'">
6103N/A 'ERROR : Did not find substring, %s, in the return string, %s' % (expectedString, returnString)
6103N/A <!-- DEPRECATED, use searchString function --> 6103N/A <
function name="checktestStringNotPresent">
6103N/A This function checks the return string against an expected return substring that should not be present for a testcase
6103N/A <
function-
arg-
def name="testString" type="required">
6103N/A the substring being tested from the command
6103N/A </
function-
arg-
description>
6103N/A <
function-
arg-
property name="type" value="string"/>
6103N/A <
function-
arg-
def name="returnString" type="required">
6103N/A the return string received from command
6103N/A </
function-
arg-
description>
6103N/A <
function-
arg-
property name="type" value="string"/>
6103N/A <
function-
arg-
def name="issue" type="optional" default="None">
6103N/A Known issue. Corresponds to an issue number.
6103N/A </
function-
arg-
description>
6103N/A <
function-
arg-
property name="type" value="string" />
6103N/A <
tcstatus result="'pass'"/>
6103N/A 'Did Not Find substring, %s, in the return string' % (testString)
6103N/A <
tcstatus result="'fail'"/>
6103N/A <
call function="'setKnownIssue'">
6103N/A <
message log="1" level="'Error'">
6103N/A 'Found substring, %s, in the return string, %s' % (testString, returnString)
6103N/A <!-- DEPRECATED, use searchString function --> 6103N/A <
function name="searchStringForSubstring">
6103N/A This function simply searches a string for a substring
6103N/A <
function-
arg-
def name="testString" type="required">
6103N/A the substring being tested from the command
6103N/A </
function-
arg-
description>
6103N/A <
function-
arg-
property name="type" value="string"/>
6103N/A <
function-
arg-
def name="returnString" type="required">
6103N/A the return string received from command
6103N/A </
function-
arg-
description>
6103N/A <
function-
arg-
property name="type" value="string"/>
6103N/A <
function-
arg-
def name="expectedResult" type="optional" default="'2'">
6103N/A the expected result, 0 for false (not present), 1 for true (present), 2 for old behavior
6103N/A </
function-
arg-
description>
6103N/A <
function-
arg-
property name="type" value="string"/>
6103N/A <!-- Until all the test cases are refactored to use the expectedResult param, 6103N/A we need this if-else conditional. --> 6103N/A <
if expr="expectedResult == '2'">
6103N/A <
script>returnCode='0'</
script>
6103N/A 'Did Not Find substring, %s, in the return string' % (testString)
6103N/A <
script>returnCode='1'</
script>
6103N/A 'Found substring, %s, in the return string' % (testString)
6103N/A <
return>returnCode</
return>
6103N/A <
script>returnCode='0'</
script>
6103N/A <
if expr="expectedResult == '0'">
6103N/A <
tcstatus result="'pass'"/>
6103N/A 'SUCCESS : Did Not Find substring, %s, in the return string' % (testString)
6103N/A <
tcstatus result="'fail'"/>
6103N/A <
message log="1" level="'Error'">
6103N/A 'ERROR : Did Not Find substring, %s, in the return string' % (testString)
2788N/A <
script>returnCode='1'</
script>
2788N/A <
if expr="expectedResult == '1'">
2788N/A <
tcstatus result="'pass'"/>
2788N/A 'SUCCESS : Found substring, %s, in the return string' % (testString)
2788N/A <
tcstatus result="'fail'"/>
2788N/A <
message log="1" level="'Error'">
2788N/A 'ERROR : Found substring, %s, in the return string' % (testString)
4865N/A <
return>returnCode</
return>
2788N/A <
function name="isAlive" scope="local">
2788N/A Checks that the ldap server is running
2788N/A <
function-
arg-
def name="location" type="optional" default="STAF_REMOTE_HOSTNAME">
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="hostname"/>
2788N/A <
function-
arg-
def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_BIN,OPENDSNAME)">
2788N/A Pathname to installation root
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="pathname"/>
3194N/A <
function-
arg-
def name="noOfLoops" type="required">
3194N/A </
function-
arg-
description>
3194N/A <
function-
arg-
property name="type" value="integer"/>
3194N/A <
function-
arg-
def name="noOfMilliSeconds" type="required">
3951N/A Number of seconds to wait between iterations
3951N/A </
function-
arg-
description>
3951N/A <
function-
arg-
property name="type" value="seconds"/>
2788N/A <
function-
arg-
def name="dsInstanceHost" type="optional" default="DIRECTORY_INSTANCE_HOST">
2788N/A Directory server hostname or IP address
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="hostname"/>
2788N/A <
function-
arg-
def name="dsInstancePort" type="optional" default="DIRECTORY_INSTANCE_PORT">
2788N/A Directory server port number
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="Port number"/>
2788N/A <
function-
arg-
def name="dsInstanceDn" type="optional" default="DIRECTORY_INSTANCE_DN">
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="DN"/>
2788N/A <
function-
arg-
def name="dsInstancePswd" type="optional" default="DIRECTORY_INSTANCE_PSWD">
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="string"/>
5073N/A <
loop from="1" to="noOfLoops" while="ldapRC != 0">
5073N/A <
call function="'SearchObject'">
5073N/A 'dsInstanceHost' : myhost ,
5073N/A 'dsInstancePort' : myport ,
5073N/A 'dsInstancePswd' : mypswd ,
5073N/A 'dsFilter' : 'objectclass=*' ,
5073N/A 'LOOP %s => RC=%s' % (myLoop, ldapRC)
5073N/A { 'sleepForMilliSeconds' : noOfMilliSeconds }
5073N/A <
call function="'checktestRC'">
5073N/A 'result' : 'Check is alive' }
5073N/A Sleep for number of milliseconds
5073N/A <
function-
arg-
def name="sleepForMilliSeconds" type="required">
5073N/A Number of milliseconds to sleep
5073N/A </
function-
arg-
description>
5073N/A <
function-
arg-
property name="type" value="seconds"/>
5073N/A <
stafcmd name="'STAF Command: Delay'">
5073N/A <
location>STAXServiceMachine</
location>
5073N/A 'delay %i' % sleepForMilliSeconds
5073N/A <
call function="'checkRC'">
2788N/A <
function name="getOSvariables">
2788N/A <
function-
arg-
def name="hostname" type="required">
3194N/A Name of host on which to retrieve variables
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="hostname"/>
2788N/A <
stafcmd name="'STAF Command: Get OS Name'">
2788N/A <
location>'%s' % hostname</
location>
2788N/A <
return>STAFResult</
return>
3853N/A <
function name="testCase_StartBanner">
4153N/A Pretty prints a banner at the start of a test.
2788N/A <
message level="'start'">'testcase: %s' % STAXCurrentTestcase</
message>
2788N/A <
message>'****************************************************'</
message>
2788N/A <
message>'*** STARTING TEST CASE %s.' % STAXCurrentTestcase</
message>
2788N/A <
function name="testCase_EndBanner">
3853N/A Pretty prints a banner at the end of a test.
2788N/A <
message>'*** ENDING TEST CASE %s.' % STAXCurrentTestcase</
message>
2788N/A <
message>'****************************************************'</
message>
2788N/A <
message level="'stop'">'testcase: %s' % STAXCurrentTestcase</
message>
2788N/A <
function name="testCase_Preamble">
2788N/A Performs all the preoperations for a test case
2788N/A testcaseStartTime=strftime("%Y%m%d@%H:%M:%S",localtime())
2788N/A for logType in ['errors','access']:
2788N/A logfile=open('%s/%
s/
logs/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME,logType),'a')
2788N/A <
call function="'testCase_StartBanner'" />
2788N/A <
function name="testCase_Postamble">
2788N/A Performs all the post operations for a test suite
2788N/A <!-- Check the SignalRaised flag --> 2788N/A 'A signal (%s) was raised during this test case' % SignalRaised
4865N/A <
tcstatus result="'fail'"/>
2788N/A <!-- Reset the SignalRaised flag --> 2788N/A <!-- Query the test case results --> 2788N/A <
call function="'queryTestcase'" />
2788N/A numPass=int(STAFResult['numPasses'])
2788N/A numFail=int(STAFResult['numFails'])
2788N/A _status='KNOWN ISSUES %s' % str(issuesList)
2788N/A <
message level="'status'">'## Test Verdict: %s ##' % _status</
message>
2788N/A <
call function="'testCase_EndBanner'" />
2788N/A testcaseEndTime = strftime("%Y%m%d@%H:%M:%S",localtime())
2788N/A <
call function="'queryLogs'">
2788N/A { 'location' : STAXServiceMachine,
2788N/A 'logname' : 'STAX_Job_%s_User' % STAXJobID,
2788N/A 'startfrom' : testcaseStartTime,
2788N/A 'endat' : testcaseEndTime }
2788N/A def __init__(self, group, suite, fullname, start, stop, failures, successes, issues, duration):
3194N/A xml = ' <test>%s' % newLine
3951N/A xml += ' <issues>%s' % newLine
2788N/A xml += ' <issue>%s</issue>%s' % (issue,newLine)
2788N/A xml += ' </issues>%s' % newLine
2788N/A xml += ' <log>%s' % newLine
2788N/A xml += ' <![CDATA[%s' % newLine
2788N/A xml += ' ]]>%s' % newLine
2788N/A xml += ' </log>%s' % newLine
2788N/A xml += ' <error>%s' % newLine
2788N/A xml += ' <![CDATA[%s' % newLine
2788N/A xml += ' ]]>%s' % newLine
2788N/A xml += ' </error>%s' % newLine
2788N/A xml += ' <access>%s' % newLine
2788N/A xml += ' <![CDATA[%s' % newLine
2788N/A xml += ' ]]>%s' % newLine
2788N/A xml += ' </access>%s' % newLine
2788N/A xml += ' </test>%s' % newLine
2788N/A def appendLog(self, category, log):
2788N/A wrappedLog+='%s%s%s' % (_leftPadding,_logChunk,newLine)
2788N/A wrappedLog += '%s%s%s' % (_leftPadding,_line,newLine)
2788N/A testcaseDuration=testcaseStop-testcaseStart
2788N/A thisTest = Test(CurrentTestPath['group'],CurrentTestPath['suite'],STAXCurrentTestcase, testcaseStartTime,testcaseEndTime,numFail,numPass,issuesList,testcaseDuration)
2788N/A # loop through the log lines
3951N/A # this test is BEFORE the append so we don't get the
2788N/A # end of testcase banner in the XML but only the relevant data
6103N/A # if the current element is actually this test's output then log it
5061N/A # this test is AFTER the append log so we don't get the
5061N/A # "starting testcase ..." header in the XML
5061N/A tmp = element['message'].split(':')
5061N/A # this is a verification that we start logging for the right
5061N/A # test case. this is especially useful for tests that execute
5061N/A # within the same second (that is the resolution of the STAF
5061N/A # parse the server's error log
5061N/A # TODO: figure out how to do this for multiple instance for the replication
5061N/A for logType in ['errors','access']:
5061N/A logfile=open('%s/%
s/
logs/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME,logType),'a')
5815N/A logfile=open('%s/%
s/
logs/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME,logType), 'r')
5073N/A # clean the temporary log files for this test
2788N/A # this MUST be done AFTER the call to toXML or the logs will appear empty
2788N/A <
message>'%s' % _message</
message>
2788N/A <
function name="testSuite_Preamble">
2788N/A Performs all the pre operations for a test suite
2788N/A <!-- Take the values from the current test path --> 2788N/A CurrentTestPath['group']='unknown-group'
2788N/A CurrentTestPath['suite']='unknown-suite'
5073N/A ThisGroupName=CurrentTestPath['group']
5073N/A ThisSuiteName=CurrentTestPath['suite']
5073N/A <!-- Start time of test suite --> 2788N/A TestSuiteStartTime=strftime("%Y%m%d@%H:%M:%S",localtime())
2788N/A '#### %s/%s suite preamble ####' % (ThisGroupName,ThisSuiteName)
2788N/A <
function name="testSuite_Postamble">
2788N/A Performs all the post operations for a test suite
2788N/A <!-- Take the values from the current test path --> 2788N/A ThisSuiteName=CurrentTestPath['suite']
2788N/A ThisSuiteName='unknown-suite'
5073N/A ThisGroupName=CurrentTestPath['group']
2788N/A ThisGroupName='unknown-group'
2788N/A '#### %s/%s suite postamble ####' % (ThisGroupName,ThisSuiteName)
5073N/A <!-- Start time of test suite --> 5073N/A TestSuiteEndTime=strftime("%Y%m%d@%H:%M:%S",localtime())
5073N/A <!-- Format the test group and suite names to create folder --> 5073N/A FormattedTestcase=format_testcase()
5073N/A TestLogFile='%s/%s' % (TestLogDir,FormattedTestsuite)
2788N/A <
call function="'WriteLogsForTestCase'">
5073N/A { 'starttime' : TestSuiteStartTime,
5073N/A 'endtime' : TestSuiteEndTime,
5073N/A del CurrentTestPath['suite']
5073N/A <
function name="testGroup_Preamble">
5073N/A Performs all the pre operations for a test group
5073N/A <!-- Take the values from the current test path --> 5073N/A CurrentTestPath['group']='unknown-group'
5073N/A ThisGroupName=CurrentTestPath['group']
5073N/A <
message>'##### %s group preamble #####' % ThisGroupName</
message>
5073N/A <
function name="testGroup_Postamble">
5073N/A Performs all the post operations for a test group
2788N/A ThisGroupName=CurrentTestPath['group']
2788N/A ThisGroupName='unknown-group'
2788N/A <
message>'##### %s group postamble #####' % ThisGroupName</
message>
2788N/A coverageFiles=','.join(coverageEcs)
2788N/A srcArgs = " -sp ".join(srcPaths)
2788N/A <
call function="'runCommand'">
2788N/A { 'name' : 'Generate coverage xml report for test group %s' % CurrentTestPath['group'],
2788N/A 'arguments' : ' -Xms64M -Xmx1G -cp %s emma report -r html -in %s,%s
-Dreport.html.out.file=%s -sp %s' % (emmaJar, coverageEm, coverageFiles, coverageHtml, srcArgs),
2788N/A del CurrentTestPath['group']
2788N/A <
function name="WriteLogsForTestCase" scope="local">
5073N/A Queries the staf logs for the test case and write to file as text
5912N/A <
function-
arg-
def name="starttime" type="required">
5073N/A timestamp to start logging from
5073N/A </
function-
arg-
description>
5073N/A <
function-
arg-
property name="type" value="timestamp"/>
5073N/A <
function-
arg-
def name="endtime" type="required">
5073N/A timestamp to start logging to
5073N/A </
function-
arg-
description>
5073N/A <
function-
arg-
property name="type" value="timestamp"/>
5073N/A <
function-
arg-
def name="logFile" type="required">
5073N/A name of file to write the logs
5073N/A </
function-
arg-
description>
5073N/A <
function-
arg-
property name="type" value="filepath"/>
5912N/A <!-- Query STAF to obtain the logs for the test case --> 5073N/A <
call function="'queryLogs'">
5073N/A { 'location' : STAXServiceMachine,
5073N/A 'logname' : 'STAX_Job_%s_User' % STAXJobID,
5073N/A <!-- Write out the logs into an XML file --> 5073N/A <
call function="'WriteXmlLogs'">
5073N/A { 'queryresult' : STAFResult,
5073N/A <!-- Transform the XML file into an HTML file --> 5073N/A <
call function="'WriteHtmlLogs'">
5073N/A <
function name="WriteXmlLogs" scope="local">
5073N/A Process staf log query results and write them to a file
5073N/A <
function-
arg-
def name="queryresult" type="required">
5073N/A result of the staf log query
5073N/A </
function-
arg-
description>
5073N/A <
function-
arg-
property name="type" value="string"/>
5073N/A <
function-
arg-
def name="output" type="required">
5073N/A name of the XML file to where results are written
5073N/A </
function-
arg-
description>
5073N/A <
function-
arg-
property name="type" value="string"/>
5073N/A <
message>'Creating XML log file %s' % logFile</
message>
5073N/A <
call function="'createFolder'">
5912N/A { 'location' : STAXServiceMachine,
5073N/A # Create the qa base element
5073N/A # Try to pass only the pretty print of the test suite name
5073N/A suite=CurrentTestPath['suite'].split('.')[2].strip()
5073N/A formattedTestcase = format_testcase()
5073N/A <
if expr="queryresult == '[]'">
5073N/A output1 = 'queryresult is empty'
5073N/A output2 = 'check the date between the OS, the logs'
5073N/A output3 = 'and the local time zone'
5073N/A output = '%s %s %s' % (output1,output2,output3)
5073N/A <
call function="'checktestRC'">
2788N/A <
iterate var="element" in="queryresult">
2788N/A timestamp=element['timestamp']
2788N/A _message='Generated XML test case report.'
2788N/A testlogfh=open('%s' % logFile,'w')
4153N/A except AttributeError,details:
2788N/A _message='Unable to generate XML test case report %s.' % details
2788N/A _message='Unable to generate XML test case report !!!'
3853N/A <
message>_message</
message>
4865N/A <
function name="WriteHtmlLogs" scope="local">
3853N/A Process XML file and transform that to an HTML log file
2788N/A <
function-
arg-
def name="input" type="required">
2788N/A name of the XML file to where results are obtained
3853N/A </
function-
arg-
description>
3853N/A <
function-
arg-
property name="type" value="string"/>
3853N/A <
function-
arg-
def name="output" type="required">
3853N/A name of the HTML file to where results are written
3853N/A </
function-
arg-
description>
3853N/A <
function-
arg-
property name="type" value="string"/>
3853N/A <
function-
arg-
def name="stylesheet" type="required">
2788N/A name of the XSL stylesheet used to transform results
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="string"/>
5476N/A <
message>'Inputting XML file %s' % xmlFile</
message>
5476N/A <
message>'Transform XSL file %s' % xslFile</
message>
5476N/A <
message>'Creating HTML file %s' % htmlFile</
message>
2788N/A _message='Generated test case logs.'
2788N/A testCaseLogs=report_generation()
3853N/A _message='Unable to generate test case logs %s.' % details
2788N/A _message='Unable to generate test case logs %s.' % details
2788N/A _message='Unable to generate test case logs !!!'
3853N/A <
message>'%s' % _message</
message>
2788N/A <
function name="CheckMatches">
3853N/A check the number of matching sub-string in a string
2788N/A <
function-
arg-
def name="string2find" type="required">
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="string"/>
5476N/A <
function-
arg-
def name="mainString" type="required">
5476N/A the main string where the search is done
5476N/A </
function-
arg-
description>
5476N/A <
function-
arg-
property name="type" value="string"/>
5476N/A <
function-
arg-
def name="caseSensitive" type="optional" default="True">
3853N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="string"/>
2788N/A <
function-
arg-
def name="nbExpected" type="optional" default="1">
2788N/A number of expected sub-string that must be in the main string
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="integer"/>
2788N/A <
function-
arg-
def name="issue" type="optional" default="None">
2788N/A Issue id. Corresponds to an issue number.
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="string"/>
2788N/A caseSensitiveInfo = '[case sensitive mode]'
2788N/A caseSensitiveInfo = '[case insensitive mode]'
2788N/A myMessage = 'SUCCESS : %s matches %s time(s) (expected %s) %s' % (string2find,nbFound,nbExpected,caseSensitiveInfo)
2788N/A myMessage = 'ERROR : %s matches %s time(s) (expected %s) in "%s" %s' % (string2find,nbFound,nbExpected,mainString,caseSensitiveInfo)
2788N/A <
tcstatus result="'pass'"/>
2788N/A <
tcstatus result="'fail'"/>
2788N/A <
call function="'setKnownIssue'">
4153N/A <
message log="1" level="'Error'">
5476N/A <
return>myRC,myMessage</
return>
5476N/A <
function name="runFunction" scope="local">
5476N/A <
function-
arg-
def name="functionName" type="required">
5540N/A Name of the function to run
5540N/A </
function-
arg-
description>
5476N/A <
function-
arg-
def name="functionArguments" type="optional">
5476N/A Arguments to be passed on to the called function.
5476N/A This can be a map or a list of arguments, whatever the called function
5476N/A expects will be carried on here.
5476N/A . for a map, pass the arguments like this:
5476N/A { 'argumentA' : 'argumentAvalue' ,
5476N/A . for a list, pass the arguments like this:
5476N/A [ 'argumentAvalue, 1, ... ]
5476N/A </
function-
arg-
description>
5476N/A <
function-
arg-
def name="expectedRC" type="optional" default="0">
5476N/A The expected return code of the function to run.
5476N/A This is then passed onto the checkRC function.
5476N/A It is also used to throw an exception if the argument
5476N/A functionException is provided and set the test case status if the
5476N/A argument functionSetsTCStatus is provided
5476N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="integer"/>
5476N/A <
function-
arg-
def name="functionException" type="optional">
5540N/A The exception to throw if the return code differs from the expected
5540N/A RC. The exception is appended to STAXException.
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
def name="functionMessage" type="optional">
4673N/A An optional message to display before running the function
5476N/A </
function-
arg-
description>
2788N/A <
function-
arg-
def name="functionSetsTCStatus" type="optional">
2788N/A Whether the function to run sets the testcase status or not.
2788N/A If this is set, the test case status is set according to whether
2788N/A or not the function meets the expected return code.
2788N/A True or False should be used for this argument.
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
def name="functionFailureTC" type="optional">
2788N/A If this argument is provided, a testcase will be created with
2788N/A this argument's value for name and set to fail only upon failure
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
def name="functionSignal" type="optional">
2788N/A If this argument is provided, a signal will be raised upon unsuccesful
4673N/A execution of the function to run
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
def name="functionCallBack" type="optional">
2788N/A If this argument is provided then functionCallBack will be called
2788N/A after the execution of function name.
2788N/A </
function-
arg-
description>
3853N/A <
function-
arg-
def name="functionCallBackArguments" type="optional">
3853N/A This allows to specify arguments for the call back function
3853N/A </
function-
arg-
description>
2788N/A <!-- defining the booleans here should temporary while I find a nicer 2788N/A solution. We have a chicken and egg problem between the 2788N/A loadGlobalEnvironment and loadSharedLibraries functions in 2788N/A _expectedRC=int(expectedRC)
2788N/A <
message log="1" level="'info'" if="_displayMessage == True">
4865N/A <
message log="1" level="'debug'">
4865N/A 'runFunction: %s: called with parameters [%s]' % (functionName,functionArguments)
4865N/A <
call function="functionName">functionArguments</
call>
2788N/A _functionResult = STAXResult
2788N/A <!-- this section handles the optional case when we need to set the 2788N/A <
if expr="_doSetTCStatus == True">
2788N/A <
if expr="_functionRC == _expectedRC">
2788N/A <
script>_tcStatus='pass'</
script>
4865N/A <
tcstatus result="_tcStatus" />
2788N/A <!-- this section handles the optional case when we need to throw an 2788N/A exception upon unexpected function return code 2788N/A <
if expr="_throwException == True" >
2788N/A <
if expr="_functionRC != _expectedRC" >
2788N/A <
throw exception="'STAXException.%s' % functionException" />
2788N/A <!-- this section handles the optional case when we need to set a 2788N/A test case status to fail to reflect the failure in the test report. 2788N/A <
if expr="_createFailureTC == True" >
2788N/A <
if expr="_functionRC != _expectedRC" >
2788N/A <
testcase name="'!!! %s [%s]' % (functionFailureTC,functionName)">
4865N/A <
tcstatus result="'fail'" />
4865N/A <!-- TODO: implement the signal raising mechanism --> 5184N/A <!-- TODO: implement the call back function mechanism --> 4865N/A <!-- bubble the function return code and result up one level --> 4865N/A <
return>[_functionRC,_functionResult]</
return>
2788N/A <
function name="runCommand" >
2788N/A A general wrapper to run a command without having to write a dedicated
2788N/A <
function-
arg-
def name="command" type="required">
2788N/A </
function-
arg-
description>
4865N/A <
function-
arg-
def name="path" type="optional" default="dsBinPath">
2788N/A the path where the command is to be run from
2788N/A </
function-
arg-
description>
4865N/A <
function-
arg-
def name="arguments" type="optional" default="''">
2788N/A the path where the command is to be found
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
def name="envCmd" 2788N/A the environment variables to set. The default set here should just
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
def name="location" 2788N/A default="STAXServiceMachine">
2788N/A Which machine should the command be executed on
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
def name="name" 2788N/A default="'Running %s' % command" 2788N/A The name to give the process (only matters in the STAX Monitor really)
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
def name="stripOutput" default="True" type="optional">
2788N/A A boolean (use True or False here, case matters) to enable disable
4865N/A stripping the output of a command
2788N/A TODO: consider allowing passing a function name to enable custom
2788N/A output manipulation (overkill?)
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="enum">
2788N/A <
function-
arg-
property-
description>
2788N/A This argument can only have boolean values
4865N/A </
function-
arg-
property-
description>
2788N/A <
function-
arg-
property-
data type="choice" value="True"/>
2788N/A <
function-
arg-
property-
data type="choice" value="False"/>
4865N/A <
function-
arg-
def name="timerDuration" 4865N/A The duration that the process is allowed to run
4865N/A </
function-
arg-
description>
3406N/A <
function-
arg-
def name="inputFile" type="optional" default="'None'">
3406N/A input file containing the command input
3406N/A </
function-
arg-
description>
3406N/A <
function-
arg-
property name="type" value="file"/>
4865N/A <
function-
arg-
def name="outputFile" type="optional" default="'None'">
4865N/A Output file containing the command output
4865N/A </
function-
arg-
description>
4865N/A <
function-
arg-
property name="type" value="file"/>
4865N/A <
function-
arg-
def name="expectedRC" type="optional" default="0">
3406N/A Expected return code value. Default value is 0.
3951N/A Wildcard 'noCheck' to not check the RC
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
def name="knownIssue" type="optional" default="None">
2788N/A Known issue. Corresponds to an issue number.
2788N/A </
function-
arg-
description>
4865N/A <
function-
arg-
def name="logStderr" type="optional" default="True">
2788N/A If true, stderr for the command is redirect to stdout.
4865N/A </
function-
arg-
description>
4865N/A <
function-
arg-
property name="type" value="enum">
2788N/A <
function-
arg-
property-
description>
2788N/A This argument can only have boolean values
5912N/A </
function-
arg-
property-
description>
5912N/A <
function-
arg-
property-
data type="choice" value="True"/>
4865N/A <
function-
arg-
property-
data type="choice" value="False"/>
4865N/A if is_windows_platform(location):
4865N/A env.append('PATH=%s\\bin;C:\\Windows;C:\\Windows\\system32;%s' % (REMOTE_STAF_ROOT,path))
4865N/A '%s: Running command:\n %s %s\nlocation: %s\nenv: %s\nworkdir: %s' % (_id,command,arguments,location,env,path)
4865N/A <!-- If 'logStderr' is True then redirect sdterr to sdtout --> 4865N/A <
if expr="logStderr == True">
2788N/A <
location>location</
location>
4865N/A <
stdout if="outputFile != 'None'" mode="'replace'">'%s' % outputFile</
stdout>
4865N/A <
elseif expr="inputFile != 'None'">
4865N/A <
location>location</
location>
4865N/A <
stdin>'%s' % inputFile</
stdin>
4865N/A <
location>location</
location>
4865N/A <
stdout if="outputFile != 'None'" mode="'replace'">'%s' % outputFile</
stdout>
5912N/A <!-- The problem here is that STAXResult can either be a 5912N/A string, list or a map object --> 4865N/A if var.__class__==[].__class__:
2788N/A if var.__class__==''.__class__:
4865N/A return 'could not evaluate the following component: %s' % var
5073N/A <
if expr="expectedRC != 'noCheck'">
4865N/A <
call function="'checktestRC'">
5912N/A <
function-
arg-
def name="location" 2788N/A default="STAF_REMOTE_HOSTNAME">
3853N/A </
function-
arg-
description>
3853N/A <
function-
arg-
property name="type" value="hostname"/>
2788N/A <
function-
arg-
def name="dsPath" 2788N/A % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
3853N/A Pathname to installation root
3853N/A </
function-
arg-
description>
4153N/A <
function-
arg-
property name="type" value="pathname"/>
4865N/A 'Kill server running on %s at %s' % (location, dsPath)
3853N/A <
call function="'runSTAFCommand'">
2849N/A { 'name' : 'Read server pid file',
2849N/A if is_windows_platform(location):
2788N/A <
call function="'runCommand'">
2788N/A { 'name' : 'Kill DS server',
2788N/A <
return>STAXResult</
return>
2788N/A <
function name="runSTAFCommand" >
2788N/A A general wrapper to run a STAF command without having to write a
2849N/A <
function-
arg-
def name="location" type="optional" default="STAXServiceMachine">
2849N/A Which machine should the command be executed on
4865N/A </
function-
arg-
description>
2951N/A <
function-
arg-
def name="name" type="required">
3194N/A The name to give the process
3194N/A </
function-
arg-
description>
2951N/A <
function-
arg-
def name="service" type="required">
3951N/A </
function-
arg-
description>
3951N/A <
function-
arg-
def name="request" type="required">
4162N/A </
function-
arg-
description>
4162N/A <
function-
arg-
def name="arguments" type="optional" default="''">
4162N/A the arguments for the service request
4162N/A </
function-
arg-
description>
2788N/A '%s: Running STAF command:\n %s %s %s\nlocation: %s\n' % (_id,service,request,arguments,location)
2849N/A <
block name="'%s:Wrapper for %s' % (_id,name)">
2849N/A <
stafcmd name="'STAF Command: %s' % name">
4865N/A <
location>'%s' % location</
location>
4865N/A '%s %s' % (request,arguments)
2849N/A '%s: STAF Command returned:\n%s' % (_id,STAFResult)
4162N/A This function search for a given string in a given file.
2849N/A BEWARE! of potential performance degradation when grepping big files due
4162N/A to the use of getFile, which loads the whole file content into a variable.
4162N/A <
function-
arg-
def name="location" 4464N/A default="STAF_REMOTE_HOSTNAME">
2849N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="hostname"/>
5912N/A <
function-
arg-
def name="filename" type="required">
5912N/A </
function-
arg-
description>
5912N/A <
function-
arg-
property name="type" value="pathname"/>
2788N/A <
function-
arg-
def name="testString" type="required">
4865N/A </
function-
arg-
description>
5912N/A <
function-
arg-
property name="type" value="string"/>
5912N/A <
function-
arg-
def name="expectedRC" type="optional" default="0">
2788N/A Expected return code value.
2849N/A 0 for successful grep, 1 for unsuccessful grep. Default value is 0.
2849N/A Wildcard 'noCheck' to not check the RC
2849N/A </
function-
arg-
description>
3194N/A 'Search for string \"%s\" in file %s on host %s' % \
2849N/A (testString, filename, location)
2788N/A <
call function="'getFile'">
2788N/A # getFile returns: STAXResult = [cmdRC, cmdResult]
2788N/A filecontent = STAXResult[1]
2788N/A if (expectedRC == 'noCheck'):
2788N/A # don't care about expected result
4153N/A # expect testString to be present in filecontent
2788N/A # expect testString not to be present in filecontent
2788N/A <
call function="'searchStringForSubstring'">
2788N/A 'returnString' : filecontent,
2788N/A 'expectedResult' : myExpectedResult
2788N/A <
return>STAXResult</
return>
2788N/A <
function name="compareFile">
2788N/A This function compares two files.
2788N/A Print the differences if the comparison failed.
2788N/A <
function-
arg-
def name="location" 2788N/A default="STAXServiceMachine">
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="hostname"/>
2788N/A <
function-
arg-
def name="remotehost" 2788N/A default="STAF_REMOTE_HOSTNAME">
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="hostname"/>
2788N/A <
function-
arg-
def name="dsPath" 2788N/A default="'%s/%s' % (DIRECTORY_INSTANCE_BIN,OPENDSNAME)">
2788N/A Pathname to installation root
2788N/A </
function-
arg-
description>
4865N/A <
function-
arg-
property name="type" value="hostname"/>
2788N/A <
function-
arg-
def name="outputFile" type="required">
2788N/A file containing output from the command
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="file"/>
2788N/A <
function-
arg-
def name="outputPath" type="optional">
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="filepath"/>
2788N/A <
function-
arg-
def name="refFile" type="optional">
2788N/A reference file containing expected output
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="file"/>
2788N/A <
function-
arg-
def name="refPath" type="optional">
2788N/A reference path containing refFile
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="filepath"/>
2788N/A <
function-
arg-
def name="diffFile" type="optional">
2788N/A file containing diff output
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="file"/>
2788N/A <
function-
arg-
def name="diffPath" type="optional">
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="filepath"/>
2788N/A <
function-
arg-
def name="knownIssue" type="optional" default="None">
2788N/A Known issue. Corresponds to an issue number.
2788N/A </
function-
arg-
description>
3406N/A <
function-
arg-
property name="type" value="string" />
2788N/A ThisGroupName = CurrentTestPath['group']
2788N/A ThisGroupName = 'unknown-group'
4865N/A FormattedTestcase = format_testcase()
5544N/A outputPath = '%s/..' % (dsPath)
2788N/A <!-- Check if 'diffPath' is already created --> 2788N/A <
call function="'GetEntry'">
2788N/A <!-- If 'diffPath' is not already created then create it --> 2788N/A 'Create folder %s' % diffPath
2788N/A <
call function="'createFolder'">
2788N/A 'Copy file %s/%s (on %s) to %s/%s (on %s)' % \
2788N/A (outputPath, outputFile, cfremotehost, diffPath, outputFile, cflocation)
2788N/A <
call function="'copyFile'">
2788N/A 'location' : cfremotehost ,
2788N/A 'srcfile' : '%s/%s' % (outputPath, outputFile) ,
2788N/A 'destfile' : '%s/%s' % (diffPath, outputFile) ,
2788N/A 'Copy file %s/%s (on %s) to %s/%s (on %s)' % \
3406N/A (refPath, refFile, cflocation, diffPath, refFile, cflocation)
2788N/A <
call function="'copyFile'">
3269N/A 'srcfile' : '%s/%s' % (refPath, refFile) ,
3269N/A 'destfile' : '%s/%s' % (diffPath, refFile) ,
2788N/A <!-- If the copy of 'outputFile' and 'refFile' succeed 2788N/A then compare these files --> 2788N/A <
if expr="outputRC == 0 and refRC == 0">
4865N/A 'Compare file %s/%s to %s/%s on %s' % \
4865N/A (diffPath, outputFile, diffPath, refFile, cflocation)
3406N/A CompareFile = compare_file('%s/%s' % (diffPath, outputFile),
4865N/A '%s/%s' % (diffPath, refFile),
2788N/A '%s/%s' % (diffPath, diffFile))
2849N/A <
tcstatus result="'pass'"/>
2788N/A 'SUCCESS : No differences were found between %s and %s' % \
3853N/A <
if expr="knownIssue == None">
3853N/A <
tcstatus result="'fail'"/>
2788N/A <
call function="'setKnownIssue'">
4153N/A 'ERROR : Differences were found between %s and %s\n%s' % \
2788N/A (outputFile, refFile, diff)
2788N/A 'ERROR : Diff file is here: %s/%s' % (diffPath, diffFile)
3853N/A <
tcstatus result="'fail'"/>
3853N/A 'ERROR : Error during file comparision'
2849N/A <
function name="compileJava" scope="local">
2849N/A This function compile java files.
2849N/A <
function-
arg-
def name="location" 4865N/A default="STAXServiceMachine">
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="hostname"/>
2788N/A <
function-
arg-
def name="foldername" type="optional">
2788N/A Path containing java files to compile
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="filepath"/>
4865N/A <
function-
arg-
def name="destfolder" type="optional">
2849N/A Path where to place generated class files
2849N/A </
function-
arg-
description>
2849N/A <
function-
arg-
property name="type" value="filepath"/>
4865N/A <
function-
arg-
def name="classpath" type="optional">
3194N/A </
function-
arg-
description>
3194N/A <
function-
arg-
property name="type" value="string"/>
2951N/A <
function-
arg-
def name="expectedRC" type="optional" default="0">
3951N/A Expected return code value. Default value is 0.
3951N/A Wildcard 'noCheck' to not check the RC
3951N/A </
function-
arg-
description>
4162N/A if is_windows_platform(location):
4162N/A cp = 'CLASSPATH=%s%s.' % (classpath, separator)
2849N/A if location == STAXServiceMachine:
2849N/A env = ['JAVA_HOME=%s' % JAVA_HOME, '%s' % cp]
2849N/A cmdOptions = '-d %s' % destfolder
2849N/A <
call function="'listFolderByExtension'" >
2849N/A 'foldername' : foldername ,
4464N/A <
if expr="cmdResult != 'Folder does not exist.'">
2849N/A <
call function="'runCommand'" >
2849N/A 'name' : 'Compile Java files' ,
2849N/A 'arguments' : '-target 1.5 %s %s' % (cmdOptions,list) ,
4865N/A <
tcstatus result="'fail'"></
tcstatus>
2788N/A <
function name="createJar" scope="local">
2788N/A This function create a jar file.
2788N/A <
function-
arg-
def name="location" 2788N/A default="STAXServiceMachine">
4153N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="hostname"/>
2788N/A <
function-
arg-
def name="jarname" type="required">
2788N/A Name of the jar file to create
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="string"/>
2788N/A <
function-
arg-
def name="entrypoint" type="required">
2788N/A Path where to find generated class files
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="string"/>
2788N/A <
function-
arg-
def name="pathfolder" type="required">
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="filepath"/>
2788N/A <
function-
arg-
def name="manifestpath" type="optional">
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="filepath"/>
2788N/A <
function-
arg-
def name="expectedRC" type="optional" default="0">
2788N/A Expected return code value. Default value is 0.
2788N/A Wildcard 'noCheck' to not check the RC
2788N/A </
function-
arg-
description>
2788N/A if location == STAXServiceMachine:
2788N/A cmdOptions = 'cmf %s' % manifestpath
2788N/A <!-- Check if the classfolder exists --> 2788N/A <
call function="'GetEntry'">
3406N/A 'entry' : '%s/%s' % (pathfolder,entrypoint) ,
2788N/A <
call function="'runCommand'" >
2788N/A 'name' : 'Create Jar file' ,
3611N/A 'arguments' : '%s %s %s' % (cmdOptions,jarname,entrypoint) ,
3611N/A <
tcstatus result="'fail'"></
tcstatus>
2788N/A <
function name="getFreePort" scope="local">
2788N/A Returns the first free TCP port greater or equal to given number
2788N/A <
function-
arg-
def name="host" 2788N/A default="STAXServiceMachine">
2788N/A Which machine to look for the free port
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
def name="port" type="required">
2788N/A The minimal port number to be returned
2788N/A </
function-
arg-
description>
2788N/A # returns first free port in [port; port+5]
2788N/A # if no free port in this interval, return -1
3406N/A <
function name="checkFileExists" scope="local">
2788N/A Set testcase result to FAIL if file (as param) does not exist
3269N/A <
function-
arg-
def name="location" 3269N/A default="STAXServiceMachine">
2788N/A </
function-
arg-
description>
4865N/A <
function-
arg-
property name="type" value="hostname"/>
3269N/A <
function-
arg-
def name="file" type="required">
2788N/A The file to check existence
2788N/A </
function-
arg-
description>
4865N/A <
call function="'GetEntry'">
3406N/A 'location' : STAF_REMOTE_HOSTNAME ,
2788N/A <
tcstatus result="'fail'"/>
2788N/A <
message log="1" level="'Error'">
2788N/A 'ERROR : File %s does not exist' % file
2788N/A <
function name="checkFileNotExists" scope="local">
2788N/A Set testcase result to FAIL if file (as param) exists
4153N/A <
function-
arg-
def name="location" 2788N/A default="STAXServiceMachine">
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="hostname"/>
2788N/A <
function-
arg-
def name="file" type="required">
2788N/A </
function-
arg-
description>
2788N/A <
call function="'GetEntry'">
2788N/A 'location' : STAF_REMOTE_HOSTNAME ,
2788N/A <
tcstatus result="'fail'"/>
2788N/A <
message log="1" level="'Error'">
2788N/A 'ERROR : File %s does not exist' % file
4865N/A This function execute the ldclt tools.
4865N/A <
function-
arg-
def name="location" 4865N/A default="STAF_CLIENT_HOSTNAME">
4865N/A </
function-
arg-
description>
4865N/A <
function-
arg-
property name="type" value="hostname"/>
4865N/A <
function-
arg-
def name="dsInstanceHost" 4865N/A default="DIRECTORY_INSTANCE_HOST">
4865N/A Directory server hostname or IP address
3406N/A </
function-
arg-
description>
3406N/A <
function-
arg-
property name="type" value="hostname"/>
3406N/A <
function-
arg-
def name="dsInstancePort" 4865N/A default="DIRECTORY_INSTANCE_PORT">
2788N/A Directory server port number
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="Port number"/>
2788N/A <
function-
arg-
def name="dsInstanceDn" 2788N/A default="DIRECTORY_INSTANCE_DN">
3611N/A </
function-
arg-
description>
3611N/A <
function-
arg-
property name="type" value="DN"/>
3611N/A <
function-
arg-
def name="dsInstancePswd" 3611N/A default="DIRECTORY_INSTANCE_PSWD">
3611N/A </
function-
arg-
description>
3816N/A <
function-
arg-
property name="type" value="string"/>
2788N/A <
function-
arg-
def name="dsBaseDn" 2788N/A default="DIRECTORY_INSTANCE_SFX">
2788N/A The baseDN for the LDAP operation
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="dn"/>
2788N/A <
function-
arg-
def name="ldcltOptions" 2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="dn"/>
2788N/A <
function-
arg-
def name="outputFile" 2788N/A File containing output from the command
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="file"/>
2788N/A <
function-
arg-
def name="outputPath" 2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="filepath"/>
2788N/A <
function-
arg-
def name="expectedRC" type="optional" default="0">
2788N/A Expected return code value. Default value is 0
2788N/A Wildcard 'noCheck' to not check the RC
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="integer"/>
3269N/A <
function-
arg-
def name="knownIssue" 2788N/A Known issue. Corresponds to an issue number.
2788N/A </
function-
arg-
description>
3406N/A <
function-
arg-
property name="type" value="string"/>
4865N/A STAFCmdParams=' '.join(STAFCmdParamsList)
2788N/A <
call function="'runCommand'" >
2788N/A 'arguments' : STAFCmdParams ,
2788N/A 'outputFile' : '%s/%s' % (outputPath, outputFile) ,
2788N/A 'expectedRC' : expectedRC ,
2788N/A <!-- This function uses make ldif to generate LDIF data files --> 2788N/A <
function name="MakeALdcltTemplate">
2788N/A This function makes a ldclt template file
2788N/A <
function-
arg-
def name="templateFile" type="required">
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="filename"/>
2788N/A <
function-
arg-
def name="templateLocation" 4865N/A default="STAF_CLIENT_HOSTNAME">
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="filename"/>
4865N/A <
function-
arg-
def name="extraLine" type="optional">
2788N/A Extra line to add to the mkae-ldif template
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="string"/>
3406N/A <!-- Build the import task configuration object --> 3611N/A ldifLines.append('telephoneNumber: 0[RNDN(1;5;1)] [RNDN(0;99;2)] [RNDN(0;99;2)] [RNDN(0;99;2)] [RNDN(0;99;2)]')
3816N/A <!-- Write out the make-ldif template file --> 2788N/A outfile = open(tmpTemplateFile,"w")
2788N/A 'creation of a ldclt template failed (Code=%s,Reason=%s).' % (STAXCode,STAXReason)
2788N/A <
call function="'checktestRC'">
2788N/A { 'returncode' : STAXCode ,
2788N/A <
call function="'copyFile'">
2788N/A { 'location' : STAXServiceMachine,
2788N/A 'srcfile' : tmpTemplateFile,
2788N/A 'remotehost' : templateLocation }
2788N/A <
call function="'checktestRC'">
2788N/A <
return>[RC, STAXResult]</
return>