dsml_test.xml revision 75e789577e089751d395faac10873e0285bf3a54
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor<?xml version="1.0" encoding="UTF-8" standalone="no"?>
fd9abdda70912b99b24e3bf1a38f26fde908a74cnd ! CDDL HEADER START
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor ! The contents of this file are subject to the terms of the
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor ! Common Development and Distribution License, Version 1.0 only
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor ! (the "License"). You may not use this file except in compliance
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor ! with the License.
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor ! You can obtain a copy of the license at
2e545ce2450a9953665f701bb05350f0d3f26275nd ! See the License for the specific language governing permissions
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen ! and limitations under the License.
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor ! When distributing Covered Code, include this CDDL HEADER in each
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor ! file and include the License file at
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
af33a4994ae2ff15bc67d19ff1a7feb906745bf8rbowen ! add the following below this CDDL HEADER, with the fields enclosed
3f08db06526d6901aa08c110b5bc7dde6bc39905nd ! by brackets "[]" replaced with your own identifying information:
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor ! Portions Copyright [yyyy] [name of copyright owner]
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor ! CDDL HEADER END
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor ! Portions Copyright 2008 Sun Microsystems, Inc.
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor <!--- Test Suite information
0a05fab9aadd37834734ffe106fc8ad4488fb3e3rbowen #@TestSuiteName test
0a05fab9aadd37834734ffe106fc8ad4488fb3e3rbowen #@TestSuitePurpose test for the dsml test suite.
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor #@TestSuiteGroup dsml test
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor if not CurrentTestPath.has_key('group'):
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor CurrentTestPath['group'] = 'dsml'
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor CurrentTestPath['suite'] = STAXCurrentBlock
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor <message>'TESTS_DATA_DIR=%s '%(TESTS_DATA_DIR)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar </message>
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor <!--- Test Case information
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor #@TestMarker test
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor #@TestName test: test webcontainer
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor #@TestIssue none
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor #@TestPurpose test webcontainer responding necessary to the
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar test suite.
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar #@TestPreamble none
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar #@TestSteps get the list of DSML test family
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar #@TestSteps for each family get the list of DSML SOAP requests (testXYZ.dat)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar #@TestSteps for each SOAP request, submit it and store the result (testXYZ.run)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar #@TestSteps for each SOAP result, compare it with reference (testXYZ.run vs testXYZ.res)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar #@TestResult Success if returns 0.
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <sequence>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar { 'name' : 'list DSML suites families',
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar 'location' : STAXServiceMachine,
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar 'service' : 'FS',
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar 'request' : 'LIST DIRECTORY',
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar 'arguments' : '%s/dsml/suites SORTBYNAME TYPE d' % TESTS_DATA_DIR
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <sequence>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar 'Folder %d/dsml/suites does not exist.' % (TESTS_DATA_DIR)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar </message>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar </sequence>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar familyList=STAFResult
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar # The subversion folder could be present, if so remove it
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar except ValueError:
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar print "List element .svn does not exist"
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar import base64
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar runFileRE = re.compile( 'dat$')
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar validAuthRE = re.compile ( '\%VALIDAUTH\%' )
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar sslRE = re.compile( '_ssl' )
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar urls = { \
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar 'noSSL' : 'http://%s:%s/dsml/DSMLServlet' % (WC_HOST,WC_PORT), \
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar 'SSL' : 'https://%s:%s/dsml/DSMLServlet' % (WC_HOST,WC_SSL_PORT) \
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <sequence>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar { 'name' : 'List DSML suite %s input' % family,
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar 'location' : STAXServiceMachine,
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar 'service' : 'FS',
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar 'request' : 'LIST DIRECTORY',
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar SORTBYNAME EXT dat TYPE f' % (TESTS_DATA_DIR,family)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar familyInput = STAFResult
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar { 'name' : 'List DSML suite %s expected results' % family,
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar 'location' : STAXServiceMachine,
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar 'service' : 'FS',
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar 'request' : 'LIST DIRECTORY',
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar SORTBYNAME EXT res TYPE f' % (TESTS_DATA_DIR,family)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar familyExpected = STAFResult
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <testcase name="getTestCaseName('%s-%s' % (family,test))">
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <sequence>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar runFileName = runFileRE.sub('run',test)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar runFilePath = '/tmp/%s_%s' % (family, runFileName)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar (TESTS_DATA_DIR,family,test)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar expectedFileName = runFileRE.sub('res',test)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar (TESTS_DATA_DIR,family,expectedFileName)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar if (sslRE.search(test) != None):
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar url = urls['SSL']
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar url = urls['noSSL']
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar { 'name' : 'List DSML suite %s file %s' % (family,test),
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar 'location' : STAXServiceMachine,
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar 'service' : 'FS',
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar 'request' : 'GET FILE',
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar 'arguments' : requestFilePath
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar from com.ibm.staf import STAFUtil
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar BODYSeparator = '\n\n'
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar BODYStart = STAFResult.index(BODYSeparator)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar h = STAFResult[:BODYStart]
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar for e in kvs[1:]:
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar if (e.upper().startswith("CONTENT-LENGTH:")):
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar if len(e.strip()) == 0:
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar if (e.upper().startswith("AUTHORIZATION:")):
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar (DIRECTORY_INSTANCE_DN,DIRECTORY_INSTANCE_PSWD)) , \
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar s[1]=s[1].strip()
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar if (rs.search(s[1]) != None):
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar s[1] = '"' + s[1] + '"'
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar SOAPHeaders = SOAPHeaders + 'HEADER ' + s[0] + '=' + s[1] + ' '
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar SOAPBody = STAFUtil.wrapData(STAFResult[BODYStart+len(BODYSeparator):])
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar { 'name' : 'Submit SOAPBody',
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar 'location' : STAXServiceMachine,
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar 'service' : 'HTTP',
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar 'request' : 'REQUEST METHOD POST',
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar 'arguments' : 'URL %s FOLLOWREDIRECT %s CONTENT %s RETURNHEADERS ' \
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar % (url, SOAPHeaders, SOAPBody)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar 'returncode' : RC ,
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar 'result' : STAFResult
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <sequence>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar # writing the result file to compare with expected result
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar httpHeaders = result['headers']
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar httpContent = result['content']
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar resultContent = "HTTP1.1 "
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar resultContent += result['statusCode'] + ' '
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar resultContent += result['statusMessage'] + '\n'
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar resultContent += "\n".join(["%s: %s" % (k, v) for k, v in httpHeaders.items()])
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar resultContent += '\n\n' + httpContent
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar f=open(runFilePath,'w')
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar f.write(resultContent)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <message>'Comparing result %s and expected result %s' % (runFilePath, expectedFilePath)</message>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar { 'name' : 'Compare SOAPResult with expected result',
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar 'location' : STAXServiceMachine,
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor 'service' : 'DSML',
e3e52ec6993de04bb0100e098ce0a569c7001382lgentis 'request' : 'COMPARE FILE',
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor 'arguments' : '%s EXP_FILE %s' %(runFilePath, expectedFilePath)
57c845e03570b3641fbf41d4f139e2a9b49e406and 'returncode' : RC ,
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor 'result' : STAXResult
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor </sequence>
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor 'returncode' : result['statusCode'] ,
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor 'result' : result['statusMessage']
da81fc93dd9cb59b907544c3f2d47114ce8f5eeaigalic </sequence>
0237f43ab925775250e266e479d0a337ff374a4btakashi </testcase>
0237f43ab925775250e266e479d0a337ff374a4btakashi </sequence>
0237f43ab925775250e266e479d0a337ff374a4btakashi 'returncode' : RC ,
0237f43ab925775250e266e479d0a337ff374a4btakashi 'result' : STAFResult
0237f43ab925775250e266e479d0a337ff374a4btakashi </sequence>
0237f43ab925775250e266e479d0a337ff374a4btakashi </testcase>
0237f43ab925775250e266e479d0a337ff374a4btakashi </sequence>
da81fc93dd9cb59b907544c3f2d47114ce8f5eeaigalic </sequence>
da81fc93dd9cb59b907544c3f2d47114ce8f5eeaigalic </function>