<?
xml version="1.0" encoding="UTF-8" standalone="no"?>
! 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 ! You can obtain a copy of the license at ! 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 ! 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] ! Copyright 2007-2010 Sun Microsystems, Inc. ! Portions Copyright 2011 ForgeRock AS <
function name="importSharedLibraries">
This function imports the shared function xml libraries.
<!--- Import all the shared xml libraries --> <
iterate var="sharedLib" in="sharedLibs">
<
import machine="STAF_LOCAL_HOSTNAME" file="'%s/%s' % (TESTS_FUNCTIONS_DIR,sharedLib)" />
<
function name="importPythonLibraries">
This function imports the Python libraries and objects,
both starndard and local shared ones.
<!-- Load in any standard python libraries --> <!-- Load in any additional Java classes --> <!-- Load in any standard python functions --> from time import localtime,strftime
<!-- Load in the local shared python objects from libraries --> from replication import *
<
function name="initialiseGlobalVariables">
This function initialises a set of global variables.
<!-- Default LDAP Server Object --> server=directory_server()
<!-- Set the signal handlers --> <
call function="'signals'"/>
<!-- Initialize any global variables --> if is_windows_platform(STAF_REMOTE_HOSTNAME):
if DIRECTORY_INSTANCE_BIN != DIRECTORY_INSTANCE_DIR:
# threshold set so that functions such as getFile may not cause staf
# process to run out of memory (value in bytes)
MAX_READABLE_SIZE = 104800
# this function return a well-formatted testcase name
def getTestCaseName(name):
return '%s: %s: %s' % (CurrentTestPath['group'],CurrentTestPath['suite'],name)
DSREPLICATION = 'dsreplication'
# Replication configuration default names
MultimasterSync = 'Multimaster Synchronization'
MultimasterType = 'multimaster'
# Replication execution mode variables: if not defined, set "random"
# (day of the month % 4) == 0 --> (split servers, eclmode n/a)
# (day of the month % 4) == 1 --> (don't split, opends eclmode)
# (day of the month % 4) == 2 --> (don't split, draft eclmode)
# (day of the month % 4) == 3 --> (don't split, eclmode n/a)
rewriteConfigFile = False
if REPLICATION_SPLIT_SERVERS == '':
oldSplitConfig = """REPLICATION_SPLIT_SERVERS = ''"""
REPLICATION_SPLIT_SERVERS = 'true'
REPLICATION_SPLIT_SERVERS = 'false'
newSplitConfig = """REPLICATION_SPLIT_SERVERS = '%s'""" % \
REPLICATION_SPLIT_SERVERS
newSplitConfig = """REPLICATION_SPLIT_SERVERS = '%s'""" % \
REPLICATION_SPLIT_SERVERS
oldSplitConfig = newSplitConfig
if REPLICATION_ECL_MODE == '':
oldEclmodeConfig = """REPLICATION_ECL_MODE = ''"""
REPLICATION_ECL_MODE = 'opends'
REPLICATION_ECL_MODE = 'draft'
REPLICATION_ECL_MODE = 'n/a'
newEclmodeConfig = """REPLICATION_ECL_MODE = '%s'""" % \
newEclmodeConfig = """REPLICATION_ECL_MODE = '%s'""" % \
oldEclmodeConfig = newEclmodeConfig
# Rewrite the randomly chosen variables in
config.py file
if rewriteConfigFile == True :
configFile = STAXJobScriptFiles[0]
configInput = open(configFile, 'r')
configOutput = open(configFile,'w')
<
function name="GetDirectoryServerInformation">
This function gets information about the Directory Server
InstanceInstallDir= '%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)
<!-- Copy DS zip archive to remote host--> 'Copy DS zip archive to %s %
s.zip.' % (STAF_REMOTE_HOSTNAME,InstanceInstallDir)
<
call function="'copyFile'">
{ 'srcfile' : '%s/%s' % (ZIPPATH,ZIPNAME),
'destfile' : '%
s.zip' % InstanceInstallDir,
'remotehost' : STAF_REMOTE_HOSTNAME }
<!-- Install DS into temporary folder --> 'Extract temporary DS zip archive to %s %s.' % (STAF_REMOTE_HOSTNAME,DIRECTORY_INSTANCE_DIR)
<
call function="'unZipFile'">
{ 'location' : STAF_REMOTE_HOSTNAME,
'zipfile' : '%
s.zip' % InstanceInstallDir,
'unzipdir' : '%s' % DIRECTORY_INSTANCE_DIR }
<!-- Get Directory Server Variables --> <
call function="'GetDirectoryServerVars'">
{ 'location' : STAF_REMOTE_HOSTNAME,
'dsPath' : '%s/%s' % (DIRECTORY_INSTANCE_BIN,OPENDSNAME) }
<
throw exception="'TestExceptionResultFailed'">
<!-- Set Directory Server Variables --> <
call function="'SetVar'">
{ 'location' : STAF_REMOTE_HOSTNAME,
'variable' : 'Job%s_ServerInfo=%s' % (STAXJobID,DSInfoServersDict) }
<
throw exception="'TestExceptionResultFailed'">
<!-- Uninstall DS from temporary folder --> 'Remove temporary DS zip archive from %s %s' % (STAF_REMOTE_HOSTNAME,InstanceInstallDir)
<
call function="'deleteFolder'">
{ 'location' : STAF_REMOTE_HOSTNAME ,
'foldername' : '%s' % InstanceInstallDir }
<
call function="'deleteFile'">
{ 'location' : STAF_REMOTE_HOSTNAME ,
'filename' : '%
s.zip' % InstanceInstallDir }
<
catch exception="'TestExceptionResultFailed'" typevar="eType" var="eInfo">
<
message>'caught %s with %s' % (eType,eInfo)</
message>
'Remove temporary DS zip archive from %s %s' % (STAF_REMOTE_HOSTNAME,InstanceInstallDir)
<
call function="'deleteFolder'">
{ 'location' : STAF_REMOTE_HOSTNAME ,
'foldername' : '%s' % InstanceInstallDir }
<
call function="'deleteFile'">
{ 'location' : STAF_REMOTE_HOSTNAME ,
'filename' : '%
s.zip' % InstanceInstallDir }
<
function name="SetFolders">
This function sets the folders to which test data are written.
<
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 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 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 name="CreateFolders" scope="local">
This function sets the folders to which logs are written
<
call function="'createFolder'">
{ 'location' : STAF_LOCAL_HOSTNAME,
<
message>'Create local folder %s' %
local.temp</
message>
<
call function="'createFolder'">
{ 'location' : STAF_LOCAL_HOSTNAME,
<
message>'Create local folder %s' %
logs.sut</
message>
<
call function="'createFolder'">
{ 'location' : STAF_LOCAL_HOSTNAME,
<
message>'Create local folder %s' %
logs.tests</
message>
<
call function="'createFolder'">
{ 'location' : STAF_LOCAL_HOSTNAME,
<
call function="'createFolder'">
{ 'location' : STAF_LOCAL_HOSTNAME,
<
message>'Create remote folder %s' %
remote.temp</
message>
<
call function="'createFolder'">
{ 'location' : STAF_REMOTE_HOSTNAME,
<
function name="loadGlobalEnvironment">
This function loads the environment (libraries, functions, variables)
needed by the global test job farmer.
'Load environment for test suite execution.'
<
call function="'importSharedLibraries'"/>
<
call function="'importPythonLibraries'"/>
<
call function="'initialiseGlobalVariables'"/>
'Remove files from previous runs under %s.' % DIRECTORY_INSTANCE_DIR
<
call function="'deleteFolder'">
{ 'location' : STAF_REMOTE_HOSTNAME ,
'foldername' : '%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME) }
<
call function="'createFolder'">
{ 'location' : STAF_REMOTE_HOSTNAME ,
'foldername' : '%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME) }
<
call function="'GetDirectoryServerInformation'"/>
<!-- Set variables to build unique path to store data --> logsOS='%s-%s' % (logsOSName,logsArch)
<
call function="'SetFolders'">
{ 'sourceDir' : '%s' % TESTS_ROOT,
'localDir' : '%s' % LOGS_ROOT,
'remoteDir' : DIRECTORY_INSTANCE_DIR }
<
call function="'SetVar'">
{ 'location' : STAF_REMOTE_HOSTNAME,
<!-- Create the local folders to store data --> <
call function="'CreateFolders'"/>
<
message>'Copy OpenDS css and png files under %s' %
logs.reports</
message>
<
call function="'copyFile'">
<
call function="'copyFile'">
<
call function="'copyFile'">
<
function name="loadJobEnvironment">
This function loads the environment (libraries, functions, variables)
<
function-
arg-
def name="parent" type="optional" default="''">
<
function-
arg-
description>
</
function-
arg-
description>
<
function-
arg-
property name="type" value="integer"/>
'Load environment for test suite execution.'
<!-- All exceptions are logged to user log --> <
call function="'importSharedLibraries'"/>
<
call function="'importPythonLibraries'"/>
<
call function="'initialiseGlobalVariables'"/>
<
call function="'GetVar'">
{ 'location' : STAF_REMOTE_HOSTNAME,
'variable' : 'Job%s_LogsDir' % parent }
<!-- TODO: defend against mangled STAFResult --> <
message>'%s' % parentsLogDir</
message>
<
call function="'SetFolders'">
{ 'sourceDir' : '%s' % TESTS_ROOT,
'localDir' : '%s' % parentsLogDir,
'remoteDir' : DIRECTORY_INSTANCE_DIR }