From 75e789577e089751d395faac10873e0285bf3a54 Mon Sep 17 00:00:00 2001
From: gary_williams <gary_williams@localhost>
Date: Wed, 03 Sep 2008 09:46:18 +0000
Subject: [PATCH] make each test group a job
---
opends/tests/shared/functions/environment.xml | 215 +++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 157 insertions(+), 58 deletions(-)
diff --git a/opends/tests/shared/functions/environment.xml b/opends/tests/shared/functions/environment.xml
index a7f94c0..db57ea9 100755
--- a/opends/tests/shared/functions/environment.xml
+++ b/opends/tests/shared/functions/environment.xml
@@ -151,6 +151,15 @@
True = 1
False = 0
+ # 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)
+
DSCONFIG = 'dsconfig'
DSREPLICATION = 'dsreplication'
@@ -272,111 +281,201 @@
</function>
- <function name="SetLogsDir">
+ <function name="SetFolders">
<function-prolog>
- This function sets the directory to which logs are written
+ This function sets the folders to which test data are written.
</function-prolog>
+ <function-map-args>
+ <function-arg-def name="sourceDir" type="required">
+ <function-arg-description>
+ A locally accessable directory to the tests source
+ </function-arg-description>
+ <function-arg-property name="type" value="structure"/>
+ </function-arg-def>
+ <function-arg-def name="localDir" type="required">
+ <function-arg-description>
+ A locally accessable directory to write test information
+ </function-arg-description>
+ <function-arg-property name="type" value="structure"/>
+ </function-arg-def>
+ <function-arg-def name="remoteDir" type="required">
+ <function-arg-description>
+ A remotely accessable directory to write test information
+ </function-arg-description>
+ <function-arg-property name="type" value="structure"/>
+ </function-arg-def>
+ </function-map-args>
<sequence>
<script>
- logsDate=strftime("%Y%m%d-%H%M%S",localtime())
- logsArch=DSInfo.getServerArch(DSInfo.ServerDict['system os'])
- logsOSName=DSInfo.getServerOSName(DSInfo.ServerDict['system os'])
- logsOS='%s-%s' % (logsOSName,logsArch)
- logsJvm=DSInfo.getServerJavaMajorMinor(DSInfo.ServerDict['java version'])
- logsDir='%s/%s/%s-jvm%s' % (LOGS_ROOT,logsDate,logsOS,logsJvm)
- logsTestsDir='%s/testlogs' % logsDir
- logsReportDir='%s/reports' % logsDir
- logsSUTDir='%s/sutlogs' % logsDir
- logsTestDataDir='%s/testdata' % logsDir
- logsTempDir='%s/temp' % logsDir
-
- relativeSharedDir='shared'
- relativeJavaDir='%s/java' % relativeSharedDir
- relativeDataDir='%s/data' % relativeSharedDir
- logsLocalDataDir='%s/%s' % (logsTestDataDir,relativeDataDir)
- logsRemoteDataDir='%s/%s' % (DIRECTORY_INSTANCE_DIR,relativeDataDir)
+ logs = test_env.logs(localDir)
+ source = test_env.source(sourceDir)
+ local = test_env.data(localDir)
+ remote = test_env.data(remoteDir)
</script>
- <message>
- 'Tests logs output set to %s' % logsDir
- </message>
-
- <call function="'SetVar'">
- { 'location' : STAF_REMOTE_HOSTNAME,
- 'type' : 'shared',
- 'variable' : 'Job%s_LogsDir=%s' % (STAXJobID,logsDir) }
- </call>
+ <message>'source.directory = %s' % source.directory</message>
+ <message>'local.directory = %s' % local.directory</message>
+ <message>'remote.directory = %s' % remote.directory</message>
+ <message>'logs.directory = %s' % logs.directory</message>
+
+ <return>
+ local.directory
+ </return>
+ </sequence>
+
+ </function>
+
+ <function name="CreateFolders" scope="local">
+ <function-prolog>
+ This function sets the folders to which logs are written
+ </function-prolog>
+
+ <sequence>
+
<!-- Create folders -->
- <message>'Create folder %s' % logsReportDir</message>
+ <message>'Create local folder %s' % logs.reports</message>
<call function="'createFolder'">
{ 'location' : STAF_LOCAL_HOSTNAME,
- 'foldername' : '%s' % logsReportDir }
+ 'foldername' : '%s' % logs.reports }
</call>
- <message>'Create folder %s' % logsTempDir</message>
+ <message>'Create local folder %s' % local.temp</message>
<call function="'createFolder'">
{ 'location' : STAF_LOCAL_HOSTNAME,
- 'foldername' : '%s' % logsTempDir }
+ 'foldername' : '%s' % local.temp }
</call>
- <message>'Create folder %s' % logsSUTDir</message>
+ <message>'Create local folder %s' % logs.sut</message>
<call function="'createFolder'">
{ 'location' : STAF_LOCAL_HOSTNAME,
- 'foldername' : '%s' % logsSUTDir }
+ 'foldername' : '%s' % logs.sut }
</call>
- <message>'Create folder %s' % logsTestsDir</message>
+ <message>'Create local folder %s' % logs.tests</message>
<call function="'createFolder'">
{ 'location' : STAF_LOCAL_HOSTNAME,
- 'foldername' : '%s' % logsTestsDir }
+ 'foldername' : '%s' % logs.tests }
</call>
- <message>'Create folder %s' % logsTestDataDir</message>
+ <message>'Create local folder %s' % local.testdata</message>
<call function="'createFolder'">
{ 'location' : STAF_LOCAL_HOSTNAME,
- 'foldername' : '%s' % logsTestDataDir }
+ 'foldername' : '%s' % local.testdata }
+ </call>
+
+ <message>'Create remote folder %s' % remote.temp</message>
+ <call function="'createFolder'">
+ { 'location' : STAF_REMOTE_HOSTNAME,
+ 'foldername' : '%s' % remote.temp }
</call>
</sequence>
</function>
- <function name="loadEnvironment">
+ <function name="loadGlobalEnvironment">
<function-prolog>
This function loads the environment (libraries, functions, variables)
- needed by the tests.
+ needed by the global test job farmer.
</function-prolog>
<sequence>
- <message>
- 'Load environment for test suite execution.'
- </message>
-
- <call function="'importSharedLibraries'"/>
-
- <call function="'importPythonLibraries'"/>
-
- <call function="'initialiseGlobalVariables'"/>
-
+ <message>
+ 'Load environment for test suite execution.'
+ </message>
+
+ <call function="'importSharedLibraries'"/>
+
+ <call function="'importPythonLibraries'"/>
+
+ <call function="'initialiseGlobalVariables'"/>
+
<call function="'GetDirectoryServerInformation'"/>
- <call function="'SetLogsDir'"/>
-
- <call function="'checkRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult }
+ <!-- Set variables to build unique path to store data -->
+ <script>
+ # Private
+ logsDate=strftime("%Y%m%d-%H%M%S",localtime())
+ logsArch=\
+ DSInfo.getServerArch(DSInfo.ServerDict['system os'])
+ logsOSName=\
+ DSInfo.getServerOSName(DSInfo.ServerDict['system os'])
+ logsOS='%s-%s' % (logsOSName,logsArch)
+ logsJvm=\
+ DSInfo.getServerJavaMajorMinor(DSInfo.ServerDict['java version'])
+ </script>
+
+ <call function="'SetFolders'">
+ { 'sourceDir' : '%s' % TESTS_ROOT,
+ 'localDir' : '%s/%s/%s-jvm%s' % (LOGS_ROOT,logsDate,logsOS,logsJvm),
+ 'remoteDir' : DIRECTORY_INSTANCE_DIR }
</call>
-
-
- </sequence>
+
+ <call function="'SetVar'">
+ { 'location' : STAF_REMOTE_HOSTNAME,
+ 'type' : 'shared',
+ 'variable' : 'Job%s_LogsDir=%s' % (STAXJobID,local.directory) }
+ </call>
+
+ <!-- Create the local folders to store data -->
+ <call function="'CreateFolders'"/>
+
+ </sequence>
</function>
+ <function name="loadJobEnvironment">
+ <function-prolog>
+ This function loads the environment (libraries, functions, variables)
+ needed by the test jobs.
+ </function-prolog>
+ <function-map-args>
+ <function-arg-def name="parent" type="optional" default="''">
+ <function-arg-description>
+ Location of target host
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ </function-map-args>
+
+ <sequence>
+ <message>
+ 'Load environment for test suite execution.'
+ </message>
+
+ <call function="'importSharedLibraries'"/>
+
+ <call function="'importPythonLibraries'"/>
+
+ <call function="'initialiseGlobalVariables'"/>
+
+ <call function="'GetVar'">
+ { 'location' : STAF_REMOTE_HOSTNAME,
+ 'type' : 'shared',
+ 'variable' : 'Job%s_LogsDir' % parent }
+ </call>
+
+ <!-- TODO: defend against mangled STAFResult -->
+ <script>
+ parentsLogDir=STAFResult
+ </script>
+
+ <message>'%s' % parentsLogDir</message>
+
+ <call function="'SetFolders'">
+ { 'sourceDir' : '%s' % TESTS_ROOT,
+ 'localDir' : '%s' % parentsLogDir,
+ 'remoteDir' : DIRECTORY_INSTANCE_DIR }
+ </call>
+
+ </sequence>
+
+ </function>
</stax>
--
Gitblit v1.10.0