From 4e7101fd2097719f302d0948d855f23fff6059f8 Mon Sep 17 00:00:00 2001
From: Christophe Sovant <christophe.sovant@forgerock.com>
Date: Mon, 26 Oct 2009 15:18:37 +0000
Subject: [PATCH] Frontport of 2.2 tests to the trunk
---
opends/tests/staf-tests/shared/functions/utils.xml | 164 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 159 insertions(+), 5 deletions(-)
diff --git a/opends/tests/staf-tests/shared/functions/utils.xml b/opends/tests/staf-tests/shared/functions/utils.xml
index ccf0a4f..be8d47f 100755
--- a/opends/tests/staf-tests/shared/functions/utils.xml
+++ b/opends/tests/staf-tests/shared/functions/utils.xml
@@ -702,6 +702,84 @@
</sequence>
</function>
+ <function name="isStopped" scope="local">
+ <function-prolog>
+ Checks that the ldap server is stopped
+ </function-prolog>
+ <function-map-args>
+ <function-arg-def name="location"
+ type="optional"
+ default="STAF_REMOTE_HOSTNAME">
+ <function-arg-description>
+ Location of target host
+ </function-arg-description>
+ <function-arg-property name="type" value="hostname"/>
+ </function-arg-def>
+ <function-arg-def name="dsPath"
+ type="optional"
+ default="'%s/%s' % (DIRECTORY_INSTANCE_BIN,OPENDSNAME)">
+ <function-arg-description>
+ Pathname to installation root
+ </function-arg-description>
+ <function-arg-property name="type" value="pathname"/>
+ </function-arg-def>
+ <function-arg-def name="noOfLoops"
+ type="optional"
+ default="10">
+ <function-arg-description>
+ Number of iterations
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="noOfMilliSeconds"
+ type="optional"
+ default="2000">
+ <function-arg-description>
+ Number of seconds to wait between iterations
+ </function-arg-description>
+ <function-arg-property name="type" value="seconds"/>
+ </function-arg-def>
+ </function-map-args>
+
+ <sequence>
+ <script>checkRC=9999</script>
+ <loop from="1" to="noOfLoops" var="loop" while="checkRC != 48">
+ <sequence>
+ <message>
+ 'Check if %s/logs/server.pid still exists on host %s' \
+ % (dsPath,location)
+ </message>
+
+ <call function="'GetEntry'">
+ { 'location' : location,
+ 'entry' : '%s/logs/server.pid' % dsPath,
+ 'attribute' : 'TYPE'
+ }
+ </call>
+
+ <script>
+ checkRC = RC
+ </script>
+
+ <message>'LOOP %s => RC %s' % (loop,checkRC)</message>
+
+ <message>'Sleep for %sms' % noOfMilliSeconds</message>
+ <call function="'Sleep'">
+ { 'sleepForMilliSeconds' : noOfMilliSeconds }
+ </call>
+ </sequence>
+ </loop>
+
+ <if expr="checkRC != 48">
+ <message>
+ 'Server is not stopped after %sms \
+ (%s/logs/server.pid still exists on %s)' \
+ % (noOfLoops*noOfMilliSeconds,dsPath,location)
+ </message>
+ </if>
+ </sequence>
+ </function>
+
<function name="Sleep">
<function-prolog>
Sleep for number of milliseconds
@@ -855,15 +933,23 @@
if numFail == 0:
if numPass == 0:
_status='INCONCLUSIVE'
+ _result='unknown'
else:
_status='PASS'
+ _result='pass'
else:
if len(issuesList)==0:
_status='FAIL'
+ _result='fail'
else:
_status='KNOWN ISSUES %s' % str(issuesList)
+ _result='fail'
</script>
- <message level="'status'">'## Test Verdict: %s ##' % _status</message>
+
+ <message level="'status'">
+ '## Test Verdict: %s ##' % _status
+ </message>
+
<call function="'testCase_EndBanner'" />
<script>
@@ -877,7 +963,7 @@
xml.createAttr(doc,xml.testcase,"name",STAXCurrentTestcase)
xml.createAttr(doc,xml.testcase,"duration",testcaseDuration)
xml.createAttr(doc,xml.testcase,"group",ThisGroupName)
- xml.createAttr(doc,xml.testcase,"result",_status)
+ xml.createAttr(doc,xml.testcase,"result",_result)
xml.createAttr(doc,xml.testcase,"shortname",shortName.lower())
xml.createAttr(doc,xml.testcase,"start",startTimestamp)
xml.createAttr(doc,xml.testcase,"stop",testcaseEndTime)
@@ -885,6 +971,15 @@
xml.createAttr(doc,xml.testcase,"info",information)
xml.testsuite.appendChild(xml.testcase)
+ if len(issuesList)!=0:
+ xml.issues = doc.createElement("issues")
+ xml.testcase.appendChild(xml.issues)
+
+ for issueID in issuesList:
+ xml.issue = doc.createElement("issue")
+ xml.createAttr(doc,xml.issue,"id",issueID)
+ xml.issues.appendChild(xml.issue)
+
xml.writeXMLfile(doc,"%s/results2.xml" % logs.reports)
</script>
@@ -1702,6 +1797,9 @@
else:
env.append('PATH=/bin:/usr/bin:%s' % path)
env.append('JAVA_HOME=%s' % JAVA_HOME)
+
+ if command.endswith('setup.bat') or command.endswith('uninstall.bat'):
+ arguments = arguments + ' & set PROCESSRC=%ERRORLEVEL% & exit %PROCESSRC%'
</script>
<message>
'%s: Running command:\n %s %s\nlocation: %s\nenv: %s\nworkdir: %s' % (_id,command,arguments,location,env,path)
@@ -1745,7 +1843,7 @@
</process>
</else>
</if>
-
+
<!-- The problem here is that STAXResult can either be a
string, list or a map object -->
<script>
@@ -2660,7 +2758,7 @@
STAFCmdParams=' '.join(STAFCmdParamsList)
- ld = 'LD_LIBRARY_PATH=%s/lib' % LDCLT_DIR
+ ld = 'LD_LIBRARY_PATH='
env = ['%s' % ld]
</script>
@@ -2834,7 +2932,63 @@
prevVal = val
</script>
- <return> parsedEntry </return>
+ <return> parsedEntry </return>
+ </sequence>
+ </function>
+
+
+ <!-- This function parses several ldif entries -->
+ <function name="parseLdifEntries">
+ <function-prolog>
+ This function parses several ldif entries and returns a list of
+ dictionaries such as those produced by parseLdifEntry
+ </function-prolog>
+
+ <function-map-args>
+ <function-arg-def name="ldifEntries" type="required">
+ <function-arg-description>
+ Ldif entries to parse (single string).
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ </function-map-args>
+ <sequence>
+ <script>
+ parsedEntryList = []
+ ldifEntryList = []
+ ldifEntryLines = []
+ ldifEntry = None
+
+ for line in ldifEntries.splitlines():
+ notBlank = (len(line.strip()) != 0)
+ if notBlank:
+ ldifEntryLines.append(line)
+ else:
+ if len(ldifEntryLines) != 0:
+ ldifEntry = '\n'.join(ldifEntryLines)
+ ldifEntryList.append(ldifEntry)
+ ldifEntryLines = []
+
+ if len(ldifEntryLines) != 0:
+ ldifEntry = '\n'.join(ldifEntryLines)
+ ldifEntryList.append(ldifEntry)
+ ldifEntryLines = []
+ </script>
+
+ <if expr="len(ldifEntryList) != 0">
+ <iterate var="entryToParse" in="ldifEntryList">
+ <sequence>
+ <call function="'parseLdifEntry'">
+ { 'ldifEntry' : entryToParse }
+ </call>
+ <script>
+ parsedEntryList.append(STAXResult)
+ </script>
+ </sequence>
+ </iterate>
+ </if>
+
+ <return> parsedEntryList </return>
</sequence>
</function>
--
Gitblit v1.10.0