environment.xml revision d81978a0815d5b8a75633c35e3e1f8708d36f017
1N/A<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1N/A<!DOCTYPE stax SYSTEM "/stax.dtd">
1N/A<!--
1N/A ! CDDL HEADER START
1N/A !
1N/A ! 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 2007-2008 Sun Microsystems, Inc.
! -->
<stax>
<function name="importSharedLibraries">
<function-prolog>
This function imports the shared function xml libraries.
</function-prolog>
<sequence>
<!--- Import all the shared xml libraries -->
<import machine="STAF_LOCAL_HOSTNAME"
file="'%s/baselib.xml' % (TESTS_FUNCTIONS_DIR)" />
<import machine="STAF_LOCAL_HOSTNAME"
file="'%s/utils.xml' % (TESTS_FUNCTIONS_DIR)" />
<import machine="STAF_LOCAL_HOSTNAME"
file="'%s/stafcmd.xml' % (TESTS_FUNCTIONS_DIR)" />
<import machine="STAF_LOCAL_HOSTNAME"
file="'%s/staxcmd.xml' % (TESTS_FUNCTIONS_DIR)" />
<import machine="STAF_LOCAL_HOSTNAME"
file="'%s/dsadm.xml' % (TESTS_FUNCTIONS_DIR)" />
<import machine="STAF_LOCAL_HOSTNAME"
file="'%s/dsconfig.xml' % (TESTS_FUNCTIONS_DIR)" />
<import machine="STAF_LOCAL_HOSTNAME"
file="'%s/ldap.xml' % (TESTS_FUNCTIONS_DIR)" />
<import machine="STAF_LOCAL_HOSTNAME"
file="'%s/security.xml' % (TESTS_FUNCTIONS_DIR)" />
<import machine="STAF_LOCAL_HOSTNAME"
file="'%s/topology.xml' % (TESTS_FUNCTIONS_DIR)" />
<import machine="STAF_LOCAL_HOSTNAME"
file="'%s/signals.xml' % (TESTS_FUNCTIONS_DIR)" />
<import machine="STAF_LOCAL_HOSTNAME"
file="'%s/tools.xml' % (TESTS_FUNCTIONS_DIR)" />
<import machine="STAF_LOCAL_HOSTNAME"
file="'%s/webcontainer.xml' % (TESTS_FUNCTIONS_DIR)" />
<import machine="STAF_LOCAL_HOSTNAME"
file="'%s/snmp.xml' % (TESTS_FUNCTIONS_DIR)" />
</sequence>
</function>
<function name="importPythonLibraries">
<function-prolog>
This function imports the Python libraries and objects,
both starndard and local shared ones.
</function-prolog>
<sequence>
<!-- Load in any standard python libraries -->
<script>
import re
import os
import sys
</script>
<!-- Load in any standard python functions -->
<script>
from time import localtime,strftime
</script>
<!-- Load in the local shared python objects from libraries -->
<script>
sys.path.append("%s/shared/python" % TESTS_ROOT )
from common import *
from security import *
from replication import *
from snmp import *
</script>
</sequence>
</function>
<function name="initialiseGlobalVariables">
<function-prolog>
This function initialises a set of global variables.
</function-prolog>
<sequence>
<!-- fixMe: this needs some cleanup -->
<script>
STAXLogMessage = 1
OPENDS_BINPATH ='%s/%s/bin' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)
if is_windows_platform(STAF_REMOTE_HOSTNAME):
fileExt='.bat'
fileFolder='bat'
pathSeparator=';'
newLine='\r\n'
else:
fileExt=''
fileFolder='bin'
pathSeparator=':'
newLine='\n'
</script>
<!-- Set the signal handlers -->
<call function="'signals'"/>
<!-- Initialize any global variables -->
<script>
CurrentTestPath={}
DSInfoServersDict={}
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'
AdminUID = 'admin'
AdminPswd = 'admin'
# Replication configuration default names
MultimasterSync = 'Multimaster Synchronization'
MultimasterType = 'multimaster'
</script>
</sequence>
</function>
<function name="GetDirectoryServerInformation">
<function-prolog>
This function gets information about the Directory Server
</function-prolog>
<try>
<sequence>
<script>
InstanceInstallDir= '%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)
</script>
<!-- Copy DS zip archive to remote host-->
<message>
'Copy DS zip archive to %s %s.zip.' % (STAF_REMOTE_HOSTNAME,InstanceInstallDir)
</message>
<call function="'copyFile'">
{ 'srcfile' : '%s/%s' % (ZIPPATH,ZIPNAME),
'destfile' : '%s.zip' % InstanceInstallDir,
'remotehost' : STAF_REMOTE_HOSTNAME }
</call>
<if expr="RC != 0">
<return>RC</return>
</if>
<!-- Install DS into temporary folder -->
<message>
'Extract temporary DS zip archive to %s %s.' % (STAF_REMOTE_HOSTNAME,DIRECTORY_INSTANCE_DIR)
</message>
<call function="'unZipFile'">
{ 'location' : STAF_REMOTE_HOSTNAME,
'zipfile' : '%s.zip' % InstanceInstallDir,
'unzipdir' : '%s' % DIRECTORY_INSTANCE_DIR }
</call>
<if expr="RC != 0">
<return>RC</return>
</if>
<!-- Get Directory Server Variables -->
<call function="'GetDirectoryServerVars'">
{ 'location' : STAF_REMOTE_HOSTNAME,
'dsPath' : '%s' % InstanceInstallDir }
</call>
<if expr="RC != 0">
<throw exception="'TestExceptionResultFailed'">
'Invalid Result %s' % RC
</throw>
</if>
<!-- Set Directory Server Variables -->
<call function="'SetVar'">
{ 'location' : STAF_REMOTE_HOSTNAME,
'type' : 'shared',
'variable' : 'Job%s_ServerInfo=%s' % (STAXJobID,DSInfoServersDict) }
</call>
<if expr="RC != 0">
<throw exception="'TestExceptionResultFailed'">
'Invalid Result %s' % RC
</throw>
</if>
<!-- Uninstall DS from temporary folder -->
<message>
'Remove temporary DS zip archive from %s %s' % (STAF_REMOTE_HOSTNAME,InstanceInstallDir)
</message>
<call function="'deleteFolder'">
{ 'location' : STAF_REMOTE_HOSTNAME ,
'foldername' : '%s' % InstanceInstallDir }
</call>
<call function="'deleteFile'">
{ 'location' : STAF_REMOTE_HOSTNAME ,
'filename' : '%s.zip' % InstanceInstallDir }
</call>
</sequence>
<catch exception="'TestExceptionResultFailed'" typevar="eType" var="eInfo">
<sequence>
<message>'caught %s with %s' % (eType,eInfo)</message>
<message>
'Remove temporary DS zip archive from %s %s' % (STAF_REMOTE_HOSTNAME,InstanceInstallDir)
</message>
<call function="'deleteFolder'">
{ 'location' : STAF_REMOTE_HOSTNAME ,
'foldername' : '%s' % InstanceInstallDir }
</call>
<call function="'deleteFile'">
{ 'location' : STAF_REMOTE_HOSTNAME ,
'filename' : '%s.zip' % InstanceInstallDir }
</call>
</sequence>
</catch>
</try>
</function>
<function name="SetFolders">
<function-prolog>
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>
logs = test_env.logs(localDir)
source = test_env.source(sourceDir)
local = test_env.data(localDir)
remote = test_env.data(remoteDir)
</script>
<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 local folder %s' % logs.reports</message>
<call function="'createFolder'">
{ 'location' : STAF_LOCAL_HOSTNAME,
'foldername' : '%s' % logs.reports }
</call>
<message>'Create local folder %s' % local.temp</message>
<call function="'createFolder'">
{ 'location' : STAF_LOCAL_HOSTNAME,
'foldername' : '%s' % local.temp }
</call>
<message>'Create local folder %s' % logs.sut</message>
<call function="'createFolder'">
{ 'location' : STAF_LOCAL_HOSTNAME,
'foldername' : '%s' % logs.sut }
</call>
<message>'Create local folder %s' % logs.tests</message>
<call function="'createFolder'">
{ 'location' : STAF_LOCAL_HOSTNAME,
'foldername' : '%s' % logs.tests }
</call>
<message>'Create local folder %s' % local.testdata</message>
<call function="'createFolder'">
{ 'location' : STAF_LOCAL_HOSTNAME,
'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="loadGlobalEnvironment">
<function-prolog>
This function loads the environment (libraries, functions, variables)
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'"/>
<call function="'GetDirectoryServerInformation'"/>
<!-- 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>
<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>