<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<!DOCTYPE stax SYSTEM "../../shared/stax.dtd">
|
<!--
|
! CDDL HEADER START
|
!
|
! The contents of this file are subject to the terms of the
|
! Common Development and Distribution License, Version 1.0 only
|
! (the "License"). You may not use this file except in compliance
|
! with the License.
|
!
|
! You can obtain a copy of the license at
|
! trunk/opends/resource/legal-notices/OpenDS.LICENSE
|
! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
|
! See the License for the specific language governing permissions
|
! and limitations under the License.
|
!
|
! When distributing Covered Code, include this CDDL HEADER in each
|
! file and include the License file at
|
! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
|
! add the following below this CDDL HEADER, with the fields enclosed
|
! by brackets "[]" replaced with your own identifying information:
|
! Portions Copyright [yyyy] [name of copyright owner]
|
!
|
! CDDL HEADER END
|
!
|
! Copyright 2006-2008 Sun Microsystems, Inc.
|
! -->
|
<stax>
|
<defaultcall function="main" />
|
<function name="main">
|
<sequence>
|
<!--- Load the environment for the test suite execution -->
|
<import machine="STAF_LOCAL_HOSTNAME"
|
file="'%s/environment.xml' % TESTS_FUNCTIONS_DIR" />
|
<call function="'loadEnvironment'" />
|
|
<!-- The Functional Tests -->
|
<import machine="STAF_LOCAL_HOSTNAME"
|
file="'%s/testcases/security/security.xml' % TESTS_DIR" />
|
<!--
|
add keyword 'main_security' in run-custom-suites.dat file to run this specific testsuite or run CLI : build run-my-tests
|
-->
|
|
<import machine="STAF_LOCAL_HOSTNAME"
|
file="'%s/testcases/aci/aci.xml' % TESTS_DIR" />
|
<!--
|
add keyword 'main_aci' in run-custom-suites.dat file to run this specific testsuite or run CLI : build run-my-tests
|
-->
|
|
<import machine="STAF_LOCAL_HOSTNAME"
|
file="'%s/testcases/privileges/privileges.xml' % TESTS_DIR" />
|
<!--
|
add keyword 'main_privileges' in run-custom-suites.dat file to run this specific testsuite or run CLI : build run-my-tests
|
-->
|
|
<import machine="STAF_LOCAL_HOSTNAME"
|
file="'%s/testcases/dsconfig/dsconfig.xml' % TESTS_DIR" />
|
<!--
|
add keyword 'main_dsconfig' in run-custom-suites.dat file to run this specific testsuite or run CLI : build run-my-tests
|
-->
|
|
<import machine="STAF_LOCAL_HOSTNAME"
|
file="'%s/testcases/backends/backends.xml' % TESTS_DIR" />
|
<!--
|
add keyword 'main_backends' in run-custom-suites.dat file to run this specific testsuite or run CLI : build run-my-tests
|
-->
|
|
<import machine="STAF_LOCAL_HOSTNAME"
|
file="'%s/testcases/clu/clu.xml' % TESTS_DIR" />
|
<!--
|
add keyword 'main_clu' in run-custom-suites.dat file to run this specific testsuite or run CLI : build run-my-tests
|
-->
|
|
<import machine="STAF_LOCAL_HOSTNAME"
|
file="'%s/testcases/core/core.xml' % TESTS_DIR" />
|
<!--
|
add keyword 'main_core' in run-custom-suites.dat file to run this specific testsuite or run CLI : build run-my-tests
|
-->
|
|
<import machine="STAF_LOCAL_HOSTNAME"
|
file="'%s/testcases/schema/schema.xml' % TESTS_DIR" />
|
<!--
|
add keyword 'main_schema' in run-custom-suites.dat file to run this specific testsuite or run CLI : build run-my-tests
|
-->
|
|
<import machine="STAF_LOCAL_HOSTNAME"
|
file="'%s/testcases/replication/replication.xml' % TESTS_DIR" />
|
<!--
|
add keyword 'main_replication' in run-custom-suites.dat file to run this specific testsuite or run CLI : build run-my-tests
|
-->
|
|
<import machine="STAF_LOCAL_HOSTNAME"
|
file="'%s/testcases/indexes/indexes.xml' % TESTS_DIR" />
|
<!--
|
add keyword 'indexes' in run-custom-suites.dat file to run this specific testsuite or run CLI : build run-my-tests
|
-->
|
|
<import machine="STAF_LOCAL_HOSTNAME"
|
file="'%s/testcases/groups/groups.xml' % TESTS_DIR" />
|
<!--
|
add keyword 'main_groups' in run-custom-suites.dat file to run this specific testsuite or run CLI : build run-my-tests
|
-->
|
|
<import machine="STAF_LOCAL_HOSTNAME"
|
file="'%s/testcases/logging/logging.xml' % (TESTS_DIR)" />
|
<!--
|
add keyword 'main_logging' in run-custom-suites.dat file to run this specific testsuite or run CLI : build run-my-tests
|
-->
|
|
<import machine="STAF_LOCAL_HOSTNAME"
|
file="'%s/testcases/plugins/plugins.xml' % (TESTS_DIR)" />
|
<!--
|
add keyword 'main_plugins' in run-custom-suites.dat file to run this specific testsuite or run CLI : build run-my-tests
|
-->
|
|
<import machine="STAF_LOCAL_HOSTNAME"
|
file="'%s/testcases/tasks/tasks.xml' % (TESTS_DIR)" />
|
<!--
|
add keyword 'main_tasks' in run-custom-suites.dat file to run this specific testsuite or run CLI : build run-my-tests
|
-->
|
|
<import machine="STAF_LOCAL_HOSTNAME"
|
file="'%s/testcases/virtualAttributes/virtualAttributes.xml' % (TESTS_DIR)" />
|
<!--
|
add keyword 'main_virtualAttributes' in run-custom-suites.dat file to run this specific testsuite or run CLI : build run-my-tests
|
-->
|
|
<import machine="STAF_LOCAL_HOSTNAME"
|
file="'%s/testcases/monitoring/monitoring.xml' % (TESTS_DIR)" />
|
<!--
|
add keyword 'main_monitoring' in run-custom-suites.dat file to run this specific testsuite or run CLI : build run-my-tests
|
-->
|
|
<import machine="STAF_LOCAL_HOSTNAME"
|
file="'%s/testcases/dsml/dsml.xml' % (TESTS_DIR)" />
|
<!--
|
add keyword 'main_dsml' in run-custom-suites.dat file to run this specific testsuite or run CLI : build run-my-tests
|
-->
|
|
<import machine="STAF_LOCAL_HOSTNAME"
|
file="'%s/testcases/setup/setup.xml' % (TESTS_DIR)" />
|
<!--
|
add keyword 'main_setup' in run-custom-suites.dat file to run this specific testsuite or run CLI : build run-my-tests
|
-->
|
|
<import machine="STAF_LOCAL_HOSTNAME"
|
file="'%s/testcases/snmp/snmp.xml' % TESTS_DIR" />
|
<!--
|
add keyword 'main_snmp' in run-custom-suites.dat file to run this specific testsuite or run CLI : build run-my-tests
|
-->
|
|
<import machine="STAF_LOCAL_HOSTNAME"
|
file="'%s/testcases/sample/sample.xml' % TESTS_DIR" />
|
<script>
|
# this function return a well-formatted testcase name
|
def getTestCaseName(name):
|
return '%s: %s: %s' % (CurrentTestPath['group'],CurrentTestPath['suite'],name)
|
|
# this functions adds a known issue to a testcase's known issues list
|
issuesList=[]
|
def knownIssue(issue):
|
issuesList.append(issue)
|
|
class functionToRun:
|
def __init__(self, name):
|
self.name = name
|
|
def getName(self):
|
return self.name
|
|
testlog=open('%s/tests-log.xml' % logsTestsDir,'w')
|
testlog.write('<qa>\n')
|
testlog.write(' <functional-tests>\n')
|
testlog.write(' <results>\n')
|
testlog.close()
|
|
suitesFileName='%s/testcases/run-custom-suites.dat' % TESTS_DIR
|
|
if not os.path.exists(suitesFileName):
|
suitesFileName='%s/testcases/run-default-suites.dat' % TESTS_DIR
|
|
f = open(suitesFileName, 'r')
|
functionsToRun = []
|
for line in f.readlines():
|
functionsToRun.append(functionToRun(line.rstrip()))
|
f.close()
|
</script>
|
<iterate var="function" in="functionsToRun">
|
<sequence>
|
<message>'calling function [%s]' % function.getName()</message>
|
<call function="function.getName()" />
|
</sequence>
|
</iterate>
|
|
<!-- in this section we'll compute the coverage for all the tests
|
if coverage is turned on
|
so far I could only get through this on either machines with a lot
|
of memory or small sets of tests
|
-->
|
<if expr="os.path.exists('%s/lib/emma.jar' % dsPath)">
|
<sequence>
|
<script>
|
coverageFiles=''
|
for group in os.listdir('%s/coverage/' % TMPDIR):
|
coverageFiles+='%s/coverage/%s/coverage.ec' % (TMPDIR,group)
|
</script>
|
<call function="'runCommand'">
|
{ 'name' : 'Generate global coverage xml report',
|
'command' : 'java',
|
'arguments' : ' -Xms64M -Xmx1024M -cp %s/lib/emma.jar emma report -r xml,html -in %s/coverage.em,%s -Dreport.xml.out.file=%s/coverage/coverage.xml -Dreport.html.out.file=%s/coverage/coverage.html -sp %s/../../../src' % (dsPath,dsPath,coverageFiles,TMPDIR,TMPDIR,TMPDIR),
|
'path' : TMPDIR
|
}
|
</call>
|
<script>
|
from java.io import FileInputStream
|
from javax.xml.transform.stream import StreamSource
|
from javax.xml.transform.stream import StreamResult
|
from javax.xml.parsers import DocumentBuilderFactory
|
from org.w3c.dom import *
|
|
factory = DocumentBuilderFactory.newInstance()
|
builder = factory.newDocumentBuilder()
|
|
input = FileInputStream("%s/coverage/coverage.xml" % TMPDIR)
|
document = builder.parse(input)
|
dom = document.getDocumentElement()
|
coverageNodes = dom.getElementsByTagName("all").item(0).getChildNodes()
|
for coverageNodeIndex in range(coverageNodes.getLength()):
|
thisNode = coverageNodes.item(coverageNodeIndex)
|
if thisNode.getNodeName() == 'coverage':
|
thisNodeAttributes = thisNode.getAttributes()
|
if thisNodeAttributes.getNamedItem("type").getNodeValue() == 'block, %':
|
rawCoverage = thisNodeAttributes.getNamedItem("value").getNodeValue()
|
coverage = rawCoverage.split('%')[0]
|
testlog=open('%s/tests-log.xml' % logsTestsDir,'a')
|
testlog.seek(0,2)
|
testlog.write(" <all>\n")
|
testlog.write(" <coverage>\n")
|
testlog.write(" %s\n" % coverage)
|
testlog.write(" </coverage>\n")
|
testlog.write(" </all>\n")
|
testlog.close()
|
</script>
|
</sequence>
|
<else>
|
<script>
|
testlog=open('%s/tests-log.xml' % logsTestsDir,'a')
|
testlog.seek(0,2)
|
testlog.write(" <all>\n")
|
testlog.write(" <coverage>\n")
|
testlog.write(" N/A\n")
|
testlog.write(" </coverage>\n")
|
testlog.write(" </all>\n")
|
testlog.close()
|
</script>
|
</else>
|
</if>
|
|
<!-- here goes the section where we get the product's info -->
|
<call function="'GetVar'">
|
{ 'location' : STAF_REMOTE_HOSTNAME,
|
'type' : 'shared',
|
'variable' : 'Job%s_ServerInfo' % STAXJobID
|
}
|
</call>
|
|
<if expr="RC != 0">
|
<script>
|
STAFResult='{}'
|
</script>
|
</if>
|
|
<!-- Build the Servers Information Dictionary -->
|
<script>
|
ServersInfoDict=eval(STAFResult)
|
|
ServerVersion='unknown'
|
ServerBuildId='unknown'
|
ServerJavaVersion='unknown'
|
ServerJavaVendor='unknown'
|
ServerJVMVersion='unknown'
|
ServerJVMVendor='unknown'
|
ServerJVMArchitecture='unknown'
|
ServerSystemOS='unknown'
|
ServerSystemName='unknown'
|
ServerSvnRevision='unknown'
|
|
if ServersInfoDict.has_key('%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)):
|
ServerInfoDict=ServersInfoDict['%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)]
|
|
ServerInfoKey='server version'
|
if ServerInfoDict.has_key(ServerInfoKey):
|
ServerVersion=ServerInfoDict[ServerInfoKey]
|
|
ServerInfoKey='server buildid'
|
if ServerInfoDict.has_key(ServerInfoKey):
|
ServerBuildId=ServerInfoDict[ServerInfoKey]
|
|
ServerInfoKey='java version'
|
if ServerInfoDict.has_key(ServerInfoKey):
|
ServerJavaVersion=ServerInfoDict[ServerInfoKey]
|
|
ServerInfoKey='java vendor'
|
if ServerInfoDict.has_key(ServerInfoKey):
|
ServerJavaVendor=ServerInfoDict[ServerInfoKey]
|
|
ServerInfoKey='jvm version'
|
if ServerInfoDict.has_key(ServerInfoKey):
|
ServerJVMVersion=ServerInfoDict[ServerInfoKey]
|
|
ServerInfoKey='jvm vendor'
|
if ServerInfoDict.has_key(ServerInfoKey):
|
ServerJVMVendor=ServerInfoDict[ServerInfoKey]
|
|
ServerInfoKey='jvm architecture'
|
if ServerInfoDict.has_key(ServerInfoKey):
|
ServerJVMArchitecture=ServerInfoDict[ServerInfoKey]
|
|
ServerInfoKey='system os'
|
if ServerInfoDict.has_key(ServerInfoKey):
|
ServerSystemOS=ServerInfoDict[ServerInfoKey]
|
|
ServerInfoKey='system name'
|
if ServerInfoDict.has_key(ServerInfoKey):
|
ServerSystemName=ServerInfoDict[ServerInfoKey]
|
|
ServerInfoKey='svn revision'
|
if ServerInfoDict.has_key(ServerInfoKey):
|
ServerSvnRevision=ServerInfoDict[ServerInfoKey]
|
|
else:
|
ServerInfoDict='No key found (%s/%s)' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)
|
|
# Platform and JVM can be overridden from config file
|
try:
|
if TEST_OS_STRING:
|
ServerOsString=TEST_OS_STRING
|
else:
|
ServerOsString=ServerSystemOS
|
except NameError,details:
|
ServerOsString=ServerSystemOS
|
|
try:
|
if TEST_JVM_STRING:
|
ServerJVMString=TEST_JVM_STRING
|
else:
|
ServerJVMString=ServerJVMVersion
|
except NameError,details:
|
ServerJVMString=ServerJVMVersion
|
|
testlog=open('%s/tests-log.xml' % logsTestsDir,'a')
|
testlog.seek(0,2)
|
testlog.write(' </results>\n')
|
testlog.write(' <identification>\n')
|
testlog.write(' <version>\n')
|
testlog.write(' %s\n' % ServerVersion)
|
testlog.write(' </version>\n')
|
testlog.write(' <buildid>\n')
|
testlog.write(' %s\n' % ServerBuildId)
|
testlog.write(' </buildid>\n')
|
testlog.write(' <revision>\n')
|
testlog.write(' %s\n' % ServerSvnRevision)
|
testlog.write(' </revision>\n')
|
testlog.write(' <platform>\n')
|
testlog.write(' %s\n' % ServerSystemOS)
|
testlog.write(' </platform>\n')
|
testlog.write(' <os-label>\n')
|
testlog.write(' %s\n' % ServerOsString)
|
testlog.write(' </os-label>\n')
|
testlog.write(' <jvm-version>\n')
|
testlog.write(' %s\n' % ServerJVMVersion)
|
testlog.write(' </jvm-version>\n')
|
testlog.write(' <jvm-label>\n')
|
testlog.write(' %s\n' % ServerJVMString)
|
testlog.write(' </jvm-label>\n')
|
testlog.write(' <jvm-vendor>\n')
|
testlog.write(' %s\n' % ServerJVMVendor)
|
testlog.write(' </jvm-vendor>\n')
|
testlog.write(' <tests-dir>\n')
|
testlog.write(' %s\n' % logsDir)
|
testlog.write(' </tests-dir>\n')
|
testlog.write(' </identification>\n')
|
testlog.write(' </functional-tests>\n')
|
testlog.write('</qa>\n')
|
testlog.close()
|
</script>
|
</sequence>
|
</function>
|
</stax>
|