From 5c73b681a27a6b5e5d1e96a809cfdbb0cdb7ca4c Mon Sep 17 00:00:00 2001
From: gary_williams <gary_williams@localhost>
Date: Tue, 20 Jan 2009 17:54:22 +0000
Subject: [PATCH] harden the DSML functional-tests
---
opends/tests/staf-tests/functional-tests/testcases/dsml/dsml_test.xml | 452 ++++++++++++++++++++++++++++++-------------------------
1 files changed, 246 insertions(+), 206 deletions(-)
diff --git a/opends/tests/staf-tests/functional-tests/testcases/dsml/dsml_test.xml b/opends/tests/staf-tests/functional-tests/testcases/dsml/dsml_test.xml
index 5834ac7..4cb9ee5 100755
--- a/opends/tests/staf-tests/functional-tests/testcases/dsml/dsml_test.xml
+++ b/opends/tests/staf-tests/functional-tests/testcases/dsml/dsml_test.xml
@@ -30,228 +30,268 @@
<function name="dsml_test">
<block name="'test'">
<sequence>
- <!--- Test Suite information
- #@TestSuiteName test
- #@TestSuitePurpose test for the dsml test suite.
- #@TestSuiteGroup dsml test
- #@TestScript dsml_test.xml
- -->
- <script>
- if not CurrentTestPath.has_key('group'):
- CurrentTestPath['group'] = 'dsml'
- CurrentTestPath['suite'] = STAXCurrentBlock
- </script>
- <call function="'testSuite_Preamble'"/>
-
- <message>'TESTS_DATA_DIR=%s ' % (local.data)</message>
-
- <!--- Test Case information
- #@TestMarker test
- #@TestName test: test webcontainer
- #@TestIssue none
- #@TestPurpose test webcontainer responding necessary to the
- test suite.
- #@TestPreamble none
- #@TestSteps get the list of DSML test family
- #@TestSteps for each family get the list of DSML SOAP requests (testXYZ.dat)
- #@TestSteps for each SOAP request, submit it and store the result (testXYZ.run)
- #@TestSteps for each SOAP result, compare it with reference (testXYZ.run vs testXYZ.res)
- #@TestResult Success if returns 0.
- -->
-
- <message>'List DSML suites families'</message>
-
- <call function="'runSTAFCommand'">
- { 'name' : 'list DSML suites families',
- 'location' : STAXServiceMachine,
- 'service' : 'FS',
- 'request' : 'LIST DIRECTORY',
- 'arguments' : '%s/dsml/suites SORTBYNAME TYPE d' % local.data
- }
- </call>
-
- <if expr="RC != 0">
+ <try>
<sequence>
- <message>
- 'Folder %d/dsml/suites does not exist.' % (local.data)
- </message>
- <return>0</return>
- </sequence>
- </if>
-
- <script>
- cmdRC=RC
- familyList=STAFResult
- # The subversion folder could be present, if so remove it
- if familyList.count != 0:
- try:
- familyList.remove('.svn')
- except ValueError:
- print "List element .svn does not exist"
- import re
- import base64
- runFileRE = re.compile( 'dat$')
- validAuthRE = re.compile ( '\%VALIDAUTH\%' )
- sslRE = re.compile( '_ssl' )
- urls = { \
- 'noSSL' : 'http://%s:%s/dsml/DSMLServlet' % (WC_HOST,WC_PORT), \
- 'SSL' : 'https://%s:%s/dsml/DSMLServlet' % (WC_HOST,WC_SSL_PORT) \
- }
- </script>
- <message>'DSML familyList = %s' % familyList</message>
- <iterate var="family" in="familyList">
- <sequence>
- <message>'DSML family %s ' % family</message>
-
+ <!--- Test Suite information
+ #@TestSuiteName test
+ #@TestSuitePurpose test for the dsml test suite.
+ #@TestSuiteGroup dsml test
+ #@TestScript dsml_test.xml
+ -->
+ <script>
+ if not CurrentTestPath.has_key('group'):
+ CurrentTestPath['group'] = 'dsml'
+ CurrentTestPath['suite'] = STAXCurrentBlock
+ </script>
+ <call function="'testSuite_Preamble'"/>
+
+ <message>'TESTS_DATA_DIR=%s ' % (local.data)</message>
+
+ <!--- Test Case information
+ #@TestMarker test
+ #@TestName test: test webcontainer
+ #@TestIssue none
+ #@TestPurpose test webcontainer responding necessary to the
+ test suite.
+ #@TestPreamble none
+ #@TestSteps get the list of DSML test family
+ #@TestSteps for each family get the list of DSML SOAP requests (testXYZ.dat)
+ #@TestSteps for each SOAP request, submit it and store the result (testXYZ.run)
+ #@TestSteps for each SOAP result, compare it with reference (testXYZ.run vs testXYZ.res)
+ #@TestResult Success if returns 0.
+ -->
+
+ <message>'List DSML suites families'</message>
+
<call function="'runSTAFCommand'">
- { 'name' : 'List DSML suite %s input' % family,
+ { 'name' : 'list DSML suites families',
'location' : STAXServiceMachine,
'service' : 'FS',
'request' : 'LIST DIRECTORY',
- 'arguments' : '%s/dsml/suites/%s/data \
- SORTBYNAME EXT dat TYPE f' % (local.data,family)
+ 'arguments' : '%s/dsml/suites SORTBYNAME TYPE d' % local.data
}
</call>
-
+
+ <if expr="RC != 0">
+ <sequence>
+ <message>
+ 'Folder %d/dsml/suites does not exist.' % (local.data)
+ </message>
+ <return>0</return>
+ </sequence>
+ </if>
+
<script>
- familyInput = STAFResult
- </script>
-
- <call function="'runSTAFCommand'">
- { 'name' : 'List DSML suite %s expected results' % family,
- 'location' : STAXServiceMachine,
- 'service' : 'FS',
- 'request' : 'LIST DIRECTORY',
- 'arguments' : '%s/dsml/suites/%s/data \
- SORTBYNAME EXT res TYPE f' % (local.data,family)
+ cmdRC=RC
+ familyList=STAFResult
+ # The subversion folder could be present, if so remove it
+ if familyList.count != 0:
+ try:
+ familyList.remove('.svn')
+ except ValueError:
+ print "List element .svn does not exist"
+ import re
+ import base64
+ runFileRE = re.compile( 'dat$')
+ validAuthRE = re.compile ( '\%VALIDAUTH\%' )
+ sslRE = re.compile( '_ssl' )
+ urls = { \
+ 'noSSL' : 'http://%s:%s/dsml/DSMLServlet' % (WC_HOST,WC_PORT), \
+ 'SSL' : 'https://%s:%s/dsml/DSMLServlet' % (WC_HOST,WC_SSL_PORT) \
}
- </call>
-
- <script>
- familyExpected = STAFResult
</script>
-
- <iterate var="test" in="familyInput">
- <testcase name="getTestCaseName('%s-%s' % (family,test))">
- <sequence>
- <call function="'testCase_Preamble'"/>
- <script>
- runFileName = runFileRE.sub('run',test)
- runFilePath = '/tmp/%s_%s' % (family, runFileName)
- requestFilePath = '%s/dsml/suites/%s/data/%s' % \
- (local.data,family,test)
- expectedFileName = runFileRE.sub('res',test)
- expectedFilePath = '%s/dsml/suites/%s/data/%s' % \
- (local.data,family,expectedFileName)
- if (sslRE.search(test) != None):
- url = urls['SSL']
- else:
- url = urls['noSSL']
- </script>
-
- <call function="'runSTAFCommand'">
- { 'name' : 'List DSML suite %s file %s' % (family,test),
- 'location' : STAXServiceMachine,
- 'service' : 'FS',
- 'request' : 'GET FILE',
- 'arguments' : requestFilePath
- }
- </call>
-
- <script>
- from com.ibm.staf import STAFUtil
- BODYSeparator = '\n\n'
- BODYStart = STAFResult.index(BODYSeparator)
- h = STAFResult[:BODYStart]
- kvs=h.split("\n")
- SOAPHeaders = "HEADER content-type=text/xml "
-
- for e in kvs[1:]:
- if (e.upper().startswith("CONTENT-LENGTH:")):
- continue
- if len(e.strip()) == 0:
- continue
- if (e.upper().startswith("AUTHORIZATION:")):
- e = validAuthRE.sub( base64.encodestring('%s:%s' % \
- (DIRECTORY_INSTANCE_DN,DIRECTORY_INSTANCE_PSWD)) , \
- e )
- s = e.split(':')
- rs = re.compile(' ')
- s[1]=s[1].strip()
- if (rs.search(s[1]) != None):
- s[1] = '"' + s[1] + '"'
- SOAPHeaders = SOAPHeaders + 'HEADER ' + s[0] + '=' + s[1] + ' '
-
- SOAPBody = STAFUtil.wrapData(STAFResult[BODYStart+len(BODYSeparator):])
- </script>
-
- <call function="'runSTAFCommand'">
- { 'name' : 'Submit SOAPBody',
- 'location' : STAXServiceMachine,
- 'service' : 'HTTP',
- 'request' : 'REQUEST METHOD POST',
- 'arguments' : 'URL %s FOLLOWREDIRECT %s CONTENT %s RETURNHEADERS ' \
- % (url, SOAPHeaders, SOAPBody)
- }
- </call>
-
- <call function="'checktestRC'">
- {
- 'returncode' : RC ,
- 'result' : STAFResult
- }
- </call>
- <if expr="result['statusCode'] == '200'">
+ <message>'DSML familyList = %s' % familyList</message>
+ <iterate var="family" in="familyList">
+ <sequence>
+ <message>'DSML family %s ' % family</message>
+
+ <call function="'runSTAFCommand'">
+ { 'name' : 'List DSML suite %s input' % family,
+ 'location' : STAXServiceMachine,
+ 'service' : 'FS',
+ 'request' : 'LIST DIRECTORY',
+ 'arguments' : '%s/dsml/suites/%s/data \
+ SORTBYNAME EXT dat TYPE f' % (local.data,family)
+ }
+ </call>
+
+ <script>
+ familyInput = STAFResult
+ </script>
+
+ <call function="'runSTAFCommand'">
+ { 'name' : 'List DSML suite %s expected results' % family,
+ 'location' : STAXServiceMachine,
+ 'service' : 'FS',
+ 'request' : 'LIST DIRECTORY',
+ 'arguments' : '%s/dsml/suites/%s/data \
+ SORTBYNAME EXT res TYPE f' % (local.data,family)
+ }
+ </call>
+
+ <script>
+ familyExpected = STAFResult
+ </script>
+
+ <iterate var="test" in="familyInput">
+ <testcase name="getTestCaseName('%s-%s' % (family,test))">
<sequence>
- <script>
- # writing the result file to compare with expected result
- httpHeaders = result['headers']
- httpContent = result['content']
- resultContent = "HTTP1.1 "
- resultContent += result['statusCode'] + ' '
- resultContent += result['statusMessage'] + '\n'
- resultContent += "\n".join(["%s: %s" % (k, v) for k, v in httpHeaders.items()])
- resultContent += '\n\n' + httpContent
- f=open(runFilePath,'w')
- f.write(resultContent)
- f.close()
- </script>
- <message>'Comparing result %s and expected result %s' % (runFilePath, expectedFilePath)</message>
+ <try>
+ <sequence>
+ <message>
+ 'Test Name = %s' % STAXCurrentTestcase
+ </message>
+ <call function="'testCase_Preamble'"/>
+ <script>
+ runFileName = runFileRE.sub('run',test)
+ runFilePath = '/tmp/%s_%s' % (family, runFileName)
+ requestFilePath = '%s/dsml/suites/%s/data/%s' % \
+ (local.data,family,test)
+ expectedFileName = runFileRE.sub('res',test)
+ expectedFilePath = '%s/dsml/suites/%s/data/%s' % \
+ (local.data,family,expectedFileName)
+ if (sslRE.search(test) != None):
+ url = urls['SSL']
+ else:
+ url = urls['noSSL']
+ </script>
+
+ <call function="'runSTAFCommand'">
+ { 'name' : 'List DSML suite %s file %s' % (family,test),
+ 'location' : STAXServiceMachine,
+ 'service' : 'FS',
+ 'request' : 'GET FILE',
+ 'arguments' : requestFilePath
+ }
+ </call>
+
+ <script>
+ from com.ibm.staf import STAFUtil
+ BODYSeparator = '\n\n'
+ BODYStart = STAFResult.index(BODYSeparator)
+ h = STAFResult[:BODYStart]
+ kvs=h.split("\n")
+ SOAPHeaders = "HEADER content-type=text/xml "
+
+ for e in kvs[1:]:
+ if (e.upper().startswith("CONTENT-LENGTH:")):
+ continue
+ if len(e.strip()) == 0:
+ continue
+ if (e.upper().startswith("AUTHORIZATION:")):
+ e = validAuthRE.sub( base64.encodestring('%s:%s' % \
+ (DIRECTORY_INSTANCE_DN,DIRECTORY_INSTANCE_PSWD)) , \
+ e )
+ s = e.split(':')
+ rs = re.compile(' ')
+ s[1]=s[1].strip()
+ if (rs.search(s[1]) != None):
+ s[1] = '"' + s[1] + '"'
+ SOAPHeaders = SOAPHeaders + 'HEADER ' + s[0] + '=' + s[1] + ' '
+
+ SOAPBody = STAFUtil.wrapData(STAFResult[BODYStart+len(BODYSeparator):])
+ </script>
+
+ <call function="'runSTAFCommand'">
+ { 'name' : 'Submit SOAPBody',
+ 'location' : STAXServiceMachine,
+ 'service' : 'HTTP',
+ 'request' : 'REQUEST METHOD POST',
+ 'arguments' : 'URL %s FOLLOWREDIRECT %s CONTENT %s RETURNHEADERS ' \
+ % (url, SOAPHeaders, SOAPBody)
+ }
+ </call>
- <call function="'runSTAFCommand'">
- { 'name' : 'Compare SOAPResult with expected result',
- 'location' : STAXServiceMachine,
- 'service' : 'DSML',
- 'request' : 'COMPARE FILE',
- 'arguments' : '%s EXP_FILE %s' %(runFilePath, expectedFilePath)
- }
- </call>
+ <!-- Check the STAFResult is expected class type -->
+ <if expr='STAFResult.__class__ is not org.python.core.PyDictionary'>
+ <sequence>
+ <message log="1" level="'Error'">
+ 'ERROR : Invalid result type (%s), requires org.python.core.PyDictionary.' % STAFResult.__class__
+ </message>
+ <throw exception="'STAXException.Results.TestCaseException'">
+ 'Result not a PyDictionary object.'
+ </throw>
+ </sequence>
+ </if>
- <call function="'checktestRC'">
- {
- 'returncode' : RC ,
- 'result' : STAXResult
- }
- </call>
+ <call function="'checktestRC'">
+ {
+ 'returncode' : RC ,
+ 'result' : STAFResult
+ }
+ </call>
+
+ <if expr="result['statusCode'] == '200'">
+ <sequence>
+ <script>
+ # writing the result file to compare with expected result
+ httpHeaders = result['headers']
+ httpContent = result['content']
+ resultContent = "HTTP1.1 "
+ resultContent += result['statusCode'] + ' '
+ resultContent += result['statusMessage'] + '\n'
+ resultContent += "\n".join(["%s: %s" % (k, v) for k, v in httpHeaders.items()])
+ resultContent += '\n\n' + httpContent
+ f=open(runFilePath,'w')
+ f.write(resultContent)
+ f.close()
+ </script>
+ <message>'Comparing result %s and expected result %s' % (runFilePath, expectedFilePath)</message>
+
+ <call function="'runSTAFCommand'">
+ { 'name' : 'Compare SOAPResult with expected result',
+ 'location' : STAXServiceMachine,
+ 'service' : 'DSML',
+ 'request' : 'COMPARE FILE',
+ 'arguments' : '%s EXP_FILE %s' %(runFilePath, expectedFilePath)
+ }
+ </call>
+
+ <call function="'checktestRC'">
+ {
+ 'returncode' : RC ,
+ 'result' : STAXResult
+ }
+ </call>
+ </sequence>
+ <else>
+ <call function="'checktestRC'">
+ {
+ 'returncode' : result['statusCode'] ,
+ 'result' : result['statusMessage']
+ }
+ </call>
+ </else>
+ </if>
+ </sequence>
+ <catch exception="'...'" typevar="eType" var="eInfo">
+ <sequence>
+ <message log="1" level="'fatal'">
+ 'Test case (%s) failed. eType(%s),eInfo(%s)' % (STAXCurrentTestcase,eType,eInfo)
+ </message>
+ <tcstatus result="'fail'"/>
+ </sequence>
+ </catch>
+ <finally>
+ <call function="'testCase_Postamble'"/>
+ </finally>
+ </try>
</sequence>
- <else>
- <call function="'checktestRC'">
- {
- 'returncode' : result['statusCode'] ,
- 'result' : result['statusMessage']
- }
- </call>
- </else>
- </if>
-
- <call function="'testCase_Postamble'"/>
- </sequence>
- </testcase>
+ </testcase>
+ </iterate>
+ </sequence>
</iterate>
- </sequence>
- </iterate>
- <call function="'testSuite_Postamble'"/>
+ </sequence>
+ <catch exception="'...'" typevar="eType" var="eInfo">
+ <message log="1" level="'fatal'">
+ 'Test suite (%s) failed. eType(%s),eInfo(%s)' % (CurrentTestPath['suite'],eType,eInfo)
+ </message>
+ </catch>
+ <finally>
+ <call function="'testSuite_Postamble'"/>
+ </finally>
+ </try>
</sequence>
</block>
</function>
--
Gitblit v1.10.0