<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<!DOCTYPE stax SYSTEM "../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
|
!
|
! Portions 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)" />
|
|
</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 *
|
</script>
|
|
|
</sequence>
|
</function>
|
|
|
|
|
|
<function name="initialiseGlobalVariables">
|
<function-prolog>
|
This function initialises a set of global variables.
|
</function-prolog>
|
|
<sequence>
|
|
<!-- Resolve any OS related variables -->
|
<call function="'getOSvariables'">
|
{ 'hostname' : STAF_REMOTE_HOSTNAME }
|
</call>
|
|
<!-- fixMe: this needs some cleanup -->
|
<script>
|
STAXLogMessage = 1
|
OPENDS_BINPATH ='%s/%s/bin' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)
|
OSName= STAXResult
|
winPattern=re.compile('win', re.IGNORECASE)
|
isWindows=winPattern.search(OSName)
|
if isWindows:
|
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
|
|
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="SetLogsDir">
|
<function-prolog>
|
This function sets the directory to which logs are written
|
</function-prolog>
|
|
<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)
|
</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>
|
|
<!-- Create folders -->
|
<message>'Create folder %s' % logsReportDir</message>
|
<call function="'createFolder'">
|
{ 'location' : STAF_LOCAL_HOSTNAME,
|
'foldername' : '%s' % logsReportDir }
|
</call>
|
|
<message>'Create folder %s' % logsTempDir</message>
|
<call function="'createFolder'">
|
{ 'location' : STAF_LOCAL_HOSTNAME,
|
'foldername' : '%s' % logsTempDir }
|
</call>
|
|
<message>'Create folder %s' % logsSUTDir</message>
|
<call function="'createFolder'">
|
{ 'location' : STAF_LOCAL_HOSTNAME,
|
'foldername' : '%s' % logsSUTDir }
|
</call>
|
|
<message>'Create folder %s' % logsTestsDir</message>
|
<call function="'createFolder'">
|
{ 'location' : STAF_LOCAL_HOSTNAME,
|
'foldername' : '%s' % logsTestsDir }
|
</call>
|
|
<message>'Create folder %s' % logsTestDataDir</message>
|
<call function="'createFolder'">
|
{ 'location' : STAF_LOCAL_HOSTNAME,
|
'foldername' : '%s' % logsTestDataDir }
|
</call>
|
|
</sequence>
|
|
</function>
|
|
<function name="loadEnvironment">
|
<function-prolog>
|
This function loads the environment (libraries, functions, variables)
|
needed by the tests.
|
</function-prolog>
|
|
<sequence>
|
|
<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 }
|
</call>
|
|
|
</sequence>
|
|
</function>
|
|
|
|
|
</stax>
|