2788N/A<?
xml version="1.0" encoding="UTF-8" standalone="no"?>
2788N/A ! The contents of this file are subject to the terms of the 2788N/A ! Common Development and Distribution License, Version 1.0 only 2788N/A ! (the "License"). You may not use this file except in compliance 2788N/A ! You can obtain a copy of the license at 2788N/A ! See the License for the specific language governing permissions 2788N/A ! and limitations under the License. 2788N/A ! When distributing Covered Code, include this CDDL HEADER in each 2788N/A ! file and include the License file at 2788N/A ! add the following below this CDDL HEADER, with the fields enclosed 2788N/A ! by brackets "[]" replaced with your own identifying information: 2788N/A ! Portions Copyright [yyyy] [name of copyright owner] 5061N/A ! Copyright 2007-2010 Sun Microsystems, Inc. 6184N/A ! Portions Copyright 2011-2013 ForgeRock AS. 2788N/A <
function name="createTopology">
3071N/A <
function-
arg-
def name="topologyDescFile" 2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="filePath"/>
3071N/A <
function-
arg-
def name="initialiseInstance" 3071N/A Specifies whether the instance should be initialised with
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="boolean"/>
3071N/A <
function-
arg-
def name="sharedDataFolder" 2788N/A Specifies a relative folder that holds the shared data for the tests
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="string"/>
4865N/A <
function-
arg-
def name="fileExtensions" 4865N/A </
function-
arg-
description>
4865N/A <
function-
arg-
property name="type" value="string"/>
4631N/A <
function-
arg-
def name="splitReplicationServers" 4631N/A Specifies whether the replication servers should be split from the
4631N/A ldap servers and be configured on separate instances.
4631N/A </
function-
arg-
description>
4631N/A <
function-
arg-
property name="type" value="boolean"/>
2788N/A sharedDataFolder=CurrentTestPath['group']
4631N/A _topologyReplServerList = []
2788N/A <
call function="'prepareInstanceCreation'">
4865N/A { 'groupDataDir' : sharedDataFolder,
4865N/A 'fileExtensions' : fileExtensions
2788N/A <
if expr="topologyDescFile == None">
2788N/A <
call function="'createInstance'" />
2788N/A <
if expr="RC == 0 and initialiseInstance == True">
2788N/A <!-- Load the server with default data --> 2788N/A <
import machine="STAF_LOCAL_HOSTNAME" 2788N/A <
call function="'main_quickstart'"/>
3361N/A <!-- MULTIPLE instance deployment: read parameters from 3361N/A 'MULTIPLE instance deployment: read parameters from %s' \
3361N/A <!-- Parse the topology description file and set 3361N/A <
call function="'readTopology'">
3361N/A { 'file' : topologyDescFile }
4631N/A <
if expr="splitReplicationServers">
5540N/A 'Replication servers will be split from ldap servers.'
4631N/A <
iterate var="server" in="_topologyServerList" indexvar="i">
4631N/A _splitServerList = _topologyServerList
3361N/A 'Number of server instances required by the deployment: %s' \
4631N/A <
iterate var="server" in="_splitServerList">
3361N/A <!-- Create the instance--> 3361N/A <
call function="'createInstance'">
2788N/A <
function name="prepareInstanceCreation">
2788N/A This function prepares locally the necessary
2788N/A files to create an instance: data zip file and OpenDS zip file.
3071N/A <
function-
arg-
def name="groupDataDir" 3071N/A Specifies a relative folder that holds the shared data for the test
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="string"/>
3361N/A <
function-
arg-
def name="fileExtensions" 3361N/A </
function-
arg-
description>
3361N/A <
function-
arg-
property name="type" value="list"/>
5507N/A <
function-
arg-
def name="javaProjects" 5507N/A </
function-
arg-
description>
5507N/A <
function-
arg-
property name="type" value="list"/>
2788N/A <!-- ON LOCAL HOST: get data ready to copy to remote host --> 5507N/A # Original source location of the data files
5507N/A # Location of data files are staged locally before transit to SUT
5507N/A # Location of data files are copied to on the remote SUT
5507N/A <
call function="'stageStaticDataFiles'">
5540N/A { 'customFileExtensions' : fileExtensions,
5540N/A 'testGroupDirName' : groupDataDir }
5507N/A <!-- Stage (*/.java) files --> 5507N/A <
call function="'stageJavaFiles'">
5507N/A { 'customJavaProjects' : javaProjects }
5507N/A <
call function="'stageSNMPFiles'"/>
5507N/A <!-- Delete the any existing testdata archive --> 5507N/A <
call function="'deleteFile'">
5507N/A { 'location' : STAXServiceMachine,
5507N/A <!-- Zip up local testdata files for transit to SUT --> 5507N/A <
call function="'zipUpFile'">
5507N/A { 'location' : STAXServiceMachine,
2788N/A <
function name="createInstance">
2788N/A This function creates an instance on a given host.
2788N/A It copies both data and OpenDS zip files onto the host,
2788N/A unzips them, and configures OpenDS.
3071N/A <
function-
arg-
def name="dsHost" 3071N/A default="DIRECTORY_INSTANCE_HOST">
3071N/A Hostname where the instance is to be created
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="hostname"/>
3071N/A <
function-
arg-
def name="dsDir" 3071N/A default="DIRECTORY_INSTANCE_DIR">
3071N/A Directory where OpenDS will be installed
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="filepath"/>
3071N/A <
function-
arg-
def name="dsPort" 3071N/A default="DIRECTORY_INSTANCE_PORT">
3071N/A Directory Server port number
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="Port number"/>
3853N/A <
function-
arg-
def name="dsAdminPort" 3853N/A default="DIRECTORY_INSTANCE_ADMIN_PORT">
3853N/A Directory Server admin port number
3853N/A </
function-
arg-
description>
3853N/A <
function-
arg-
property name="type" value="Port number"/>
3071N/A <
function-
arg-
def name="dsSslPort" 3071N/A Directory Server SSL port number
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="Port number"/>
3071N/A <
function-
arg-
def name="dsJmxPort" 3071N/A Directory Server JMX port number
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="Port number"/>
3071N/A <
function-
arg-
def name="dsBindDN" 3071N/A default="DIRECTORY_INSTANCE_DN">
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="DN"/>
3071N/A <
function-
arg-
def name="dsBindPwd" 3071N/A default="DIRECTORY_INSTANCE_PSWD">
3071N/A Directory Server SSL port number
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="string"/>
3071N/A <
function-
arg-
def name="dsBaseDN" 3071N/A default="DIRECTORY_INSTANCE_SFX">
3071N/A Directory Server base suffix dn
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="DN"/>
5974N/A 'Create an instance on remote host %s' % dsHost
2788N/A <!-- ON REMOTE HOST: copy files, unzip, configure instance --> 2788N/A <!--- Delete folder if it exists on remote host--> 5974N/A 'Delete existing instance folder %s on remote host %s' % (dsDir,dsHost)
2788N/A <
call function="'deleteFolder'">
5974N/A 'foldername' : '%s' % (dsDir)
2788N/A <!--- Create folder on remote host --> 5974N/A 'Create new instance folder %s on remote host %s' % (dsDir,dsHost)
2788N/A <
call function="'createFolder'">
2788N/A 'foldername' : '%s' % dsDir
5976N/A <!--- Create folder on remote host --> 5976N/A 'Create new instance temp folder %
s/
temp on remote host %s' % (dsDir,dsHost)
5976N/A <
call function="'createFolder'">
2788N/A <!--- Copy staging data to remote host --> 2788N/A <
call function="'copyFile'">
2788N/A <!--- Unzip contents of staging data on remote host --> 5974N/A 'Extract contents of test data %s on %s on remote host' \
2788N/A <
call function="'unZipFile'">
5116N/A <!-- Check if DS Copy zip exists --> 5116N/A <
call function="'GetEntry'">
5116N/A 'entry' : '%s/%s' % (dsDir,ZIPNAME),
5116N/A <!--- Copy DS Copy zip file --> 5116N/A 'Copy DS zip archive %s/%s to %s' % (ZIPPATH,ZIPNAME,dsHost)
5116N/A <
call function="'copyFile'">
5116N/A { 'srcfile' : '%s/%s' % (ZIPPATH,ZIPNAME),
5116N/A 'destfile' : '%s/%s' % (dsDir,ZIPNAME),
5116N/A 'DS zip archive %s/%s already exists, nothing to do' % (dsDir,ZIPNAME)
6308N/A <
if expr="UPGRADE_OPENDJNAME == ''">
6304N/A <!--- Install DS Extract zip file --> 6304N/A 'Extract DS zip archive to %s on %s' % (dsDir,dsHost)
6304N/A <
call function="'unZipFile'">
6304N/A 'zipfile' : '%s/%s' % (dsDir,ZIPNAME),
6305N/A <!-- Check if old DS Copy zip exists --> 6305N/A <
call function="'GetEntry'">
6305N/A 'entry' : '%s/%s' % (dsDir,UPGRADE_ZIPNAME),
6305N/A <!--- Install old DS Extract zip file --> 6305N/A <
call function="'unZipFile'">
6305N/A { 'zipfile' : '%s/%s' % (UPGRADE_ZIPPATH,UPGRADE_ZIPNAME),
6305N/A <!-- Rename folder for the old version, for instance OpenDJ-2.4.5 => opendj --> 6305N/A <!-- Re-create a new archive for the old DS --> 6305N/A <
call function="'zipUpFile'">
6304N/A <!--- Copy old DS Copy zip file --> 6304N/A <
call function="'copyFile'">
6304N/A 'destfile' : '%s/%s' % (dsDir,UPGRADE_ZIPNAME),
6305N/A <
call function="'deleteFolder'">
6305N/A <
call function="'deleteFile'">
6304N/A 'Old DS zip archive %s/%s already exists, nothing to do' % (dsDir,UPGRADE_ZIPNAME)
6304N/A <!--- Install DS Extract zip file --> 6304N/A 'Extract old DS zip archive to %s on %s' % (dsDir,dsHost)
6304N/A <
call function="'unZipFile'">
6304N/A 'zipfile' : '%s/%s' % (dsDir,UPGRADE_ZIPNAME),
2788N/A <!-- fixMe: Windows Services are not enabled --> 3621N/A <
if expr="is_windows_platform(dsHost)">
5061N/A <!--- In IPS mode, at this point we need to overwrite dsDir --> 5061N/A <
if expr="IPS_PKG == True">
5061N/A dsDir = DIRECTORY_INSTANCE_BIN
2788N/A 'Set up DS on %s : %s/%s' % (dsHost,dsDir,OPENDSNAME)
2788N/A <
call function="'SetUpDsWithScript'">
2788N/A 'dsPath' : '%s/%s' % (dsDir, OPENDSNAME),
3853N/A 'dsAdminPort' : dsAdminPort,
2788N/A 'dsEnableWindowsService' : enableWindowsService,
2788N/A <
call function="'checkRC'">
2788N/A <
if expr="returncode == 0">
2788N/A 'Failed to create instance.'
6308N/A <
if expr="UPGRADE_OPENDJNAME != ''">
6304N/A <!-- Copy content of new version into old version --> 6304N/A <!-- Install DS Extract zip file --> 6304N/A 'Extract DS zip archive to %s on %s' % (dsDir,dsHost)
6304N/A <
call function="'unZipFile'">
6304N/A 'zipfile' : '%s/%s' % (dsDir,ZIPNAME),
6304N/A <
call function="'UpgradeDsWithScript'">
6304N/A 'dsPath' : '%s/%s' % (dsDir, OPENDSNAME),
2788N/A <
function name="DEPRECATEDconfigureReplication">
2788N/A This function configures replication in a given server.
2788N/A <
function-
arg-
def name="syncserverMap" type="required">
3071N/A Map containing a Server class instance representing the server to
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="map"/>
2788N/A syncserver = syncserverMap['instance']
2788N/A write_replication_conf_ldif_file(filePath, syncserver)
3071N/A 'Configure replication on server on host %s at directory %s' \
2788N/A <!-- Copy the replication_conf ldif to remote host --> 2788N/A <
call function="'copyFile'">
2788N/A 'destfile' : '%s/%s' % (dataDir,filename),
2788N/A remoteFilePath = '%s/%s' % (dataDir, filename)
2788N/A <
call function="'StartDsWithScript'">
2788N/A <
call function="'checkRC'">
2788N/A 'Add replication configuration entries in %s' % remoteFilePath
2788N/A <
call function="'addEntry'">
2788N/A 'entryToBeAdded' : remoteFilePath
2788N/A <
call function="'checkRC'">
2788N/A <
call function="'StopDsWithScript'">
2788N/A <
call function="'checkRC'">
2788N/A <
function name="configureReplication">
2788N/A This function configures replication in a given server.
2788N/A <
function-
arg-
def name="syncserver" type="required">
2788N/A Server class instance representing the server to configure.
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="Server"/>
2788N/A <!--- Configure replication using dsconfig --> 3071N/A 'Configure replication on server on host %s at directory %s' \
2788N/A <
call function="'StartDsWithScript'">
2788N/A 'List synchronization providers'
2788N/A <
call function="'listSyncProviders'">
2788N/A <
if expr="replicationServer">
3071N/A 'Create replication server listening on port: %s' \
2788N/A <
call function="'createReplicationServer'">
2788N/A <
iterate var="suffix" in="replicatedSuffixList" indexvar="i">
2788N/A <
call function="'createMultimasterDomain'">
2788N/A 'domainName' : 'SUFFIX-%s' % i,
2788N/A <
call function="'StopDsWithScript'">
2788N/A <!-- Enable replication between servers using dsreplication --> 2788N/A <
function name="enableReplication">
2788N/A This function enables replication between servers using dsreplication.
2788N/A <
function-
arg-
def name="location" 2788N/A default="STAF_REMOTE_HOSTNAME">
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="hostname" />
2788N/A <
function-
arg-
def name="dsPath" 4153N/A default="'%s/%s' % (DIRECTORY_INSTANCE_BIN,OPENDSNAME)">
2788N/A Pathname to installation root
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="filepath" />
2788N/A <
function-
arg-
def name="dsInstanceHost" 2788N/A default="STAF_REMOTE_HOSTNAME">
2788N/A Directory server hostname or IP address
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="hostname" />
3853N/A <
function-
arg-
def name="dsInstanceAdminPort" type="required">
3853N/A Directory server admin port number
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="Port number" />
2788N/A <
function-
arg-
def name="dsInstanceDn" type="required">
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="DN" />
2788N/A <
function-
arg-
def name="dsInstancePswd" type="required">
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="string" />
2879N/A <
function-
arg-
def name="dsReplicationPort" 2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="Port number" />
2879N/A <
function-
arg-
def name="dsSecureReplication" 2879N/A Encrypt communications over dsReplicationPort (secure replication)
2879N/A </
function-
arg-
description>
2879N/A <
function-
arg-
property name="type" value="boolean" />
4631N/A <
function-
arg-
def name="dsOnlyLdapServer" 4631N/A </
function-
arg-
description>
4631N/A <
function-
arg-
property name="type" value="boolean" />
4631N/A <
function-
arg-
def name="dsOnlyReplServer" 4631N/A </
function-
arg-
description>
4631N/A <
function-
arg-
property name="type" value="boolean" />
2788N/A <
function-
arg-
def name="refInstanceHost" 2788N/A default="STAF_REMOTE_HOSTNAME">
2788N/A Reference Directory server hostname or IP address
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="hostname" />
3853N/A <
function-
arg-
def name="refInstanceAdminPort" type="required">
3853N/A Reference Directory server admin port number
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="Port number" />
2788N/A <
function-
arg-
def name="refInstanceDn" type="required">
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="DN" />
2788N/A <
function-
arg-
def name="refInstancePswd" type="required">
2788N/A Reference server Bind password
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="string" />
2879N/A <
function-
arg-
def name="refReplicationPort" 2788N/A Reference server Replication port number
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="Port number" />
2879N/A <
function-
arg-
def name="refSecureReplication" 2879N/A Encrypt communications over refReplicationPort (secure replication)
2879N/A </
function-
arg-
description>
2879N/A <
function-
arg-
property name="type" value="boolean" />
4631N/A <
function-
arg-
def name="refOnlyLdapServer" 4631N/A </
function-
arg-
description>
4631N/A <
function-
arg-
property name="type" value="boolean" />
4631N/A <
function-
arg-
def name="refOnlyReplServer" 4631N/A </
function-
arg-
description>
4631N/A <
function-
arg-
property name="type" value="boolean" />
2788N/A <
function-
arg-
def name="replicationDnList" type="required">
2788N/A DN of the replicated suffix
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="DN list" />
2788N/A <
function-
arg-
def name="adminUID" 2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="UID" />
2788N/A <
function-
arg-
def name="adminPswd" 2788N/A Global Administrator password
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="string" />
2879N/A <
function-
arg-
def name="noSchemaReplication" 2879N/A Do not enable schema replication
2879N/A </
function-
arg-
description>
2879N/A <
function-
arg-
property name="type" value="boolean" />
2879N/A <
function-
arg-
def name="useSecondServerAsSchemaSource" 2879N/A Take the refInstanceHost as the source for the schema initialisation
2879N/A </
function-
arg-
description>
2879N/A <
function-
arg-
property name="type" value="boolean" />
2788N/A <
function-
arg-
def name="expectedRC" type="optional" default="0">
3194N/A Expected return code value. Default value is 0.
3194N/A Wildcard 'noCheck' to not check the RC
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="string" />
2788N/A dsBinPath='%s/%s' % (dsPath,fileFolder)
2788N/A STAFCmd='%s/%s%s' % (dsBinPath,DSREPLICATION,fileExt)
2788N/A for dn in replicationDnList:
2879N/A if useSecondServerAsSchemaSource:
2788N/A STAFCmdParams=' '.join(STAFCmdParamsList)
2788N/A <
call function="'runCommand'">
2788N/A { 'name' : 'Enable Replication',
3194N/A 'arguments' : STAFCmdParams,
3071N/A <!-- Initialize replicated suffix with the contents of a source server using 2788N/A <
function name="initializeReplication">
2788N/A This function initializes replicated suffixes with the contents
2788N/A of a source server using dsreplication.
2788N/A <
function-
arg-
def name="location" 2788N/A default="STAF_REMOTE_HOSTNAME">
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="hostname" />
2788N/A <
function-
arg-
def name="dsPath" 4153N/A default="'%s/%s' % (DIRECTORY_INSTANCE_BIN,OPENDSNAME)">
2788N/A Pathname to installation root
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="filepath" />
2788N/A <
function-
arg-
def name="dsInstanceHost" 2788N/A Directory server hostname or IP address
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="hostname" />
3853N/A <
function-
arg-
def name="dsInstanceAdminPort" 3853N/A Directory server admin port number
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="Port number" />
2788N/A <
function-
arg-
def name="sourceInstanceHost" 2788N/A default="STAF_REMOTE_HOSTNAME">
2788N/A Source Directory server hostname or IP address
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="hostname" />
3853N/A <
function-
arg-
def name="sourceInstanceAdminPort" type="required">
3853N/A Source Directory server admin port number
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="Port number" />
2788N/A <
function-
arg-
def name="replicationDnList" type="required">
2788N/A DN of the replicated suffix
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="DN list" />
2788N/A <
function-
arg-
def name="adminUID" 2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="UID" />
2788N/A <
function-
arg-
def name="adminPswd" 2788N/A Global Administrator password
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="string" />
2788N/A <
function-
arg-
def name="expectedRC" type="optional" default="0">
3194N/A Expected return code value. Default value is 0.
3194N/A Wildcard 'noCheck' to not check the RC
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="string" />
2788N/A dsBinPath='%s/%s' % (dsPath,fileFolder)
2788N/A STAFCmd='%s/%s%s' % (dsBinPath,DSREPLICATION,fileExt)
3853N/A if sourceInstanceAdminPort:
2788N/A for dn in replicationDnList:
2788N/A STAFCmdParams=' '.join(STAFCmdParamsList)
2788N/A <
call function="'runCommand'">
5061N/A { 'name' : 'Initialize Replication',
5061N/A 'arguments' : STAFCmdParams,
2879N/A <!-- Disable replication for given baseDN on server using dsreplication --> 2879N/A <
function name="disableReplication">
3071N/A This function disables replication for a given baseDN on a server using
2879N/A <
function-
arg-
def name="location" 2879N/A default="STAF_REMOTE_HOSTNAME">
2879N/A </
function-
arg-
description>
2879N/A <
function-
arg-
property name="type" value="hostname" />
2879N/A <
function-
arg-
def name="dsPath" 4153N/A default="'%s/%s' % (DIRECTORY_INSTANCE_BIN,OPENDSNAME)">
2879N/A Pathname to installation root
2879N/A </
function-
arg-
description>
2879N/A <
function-
arg-
property name="type" value="filepath" />
2879N/A <
function-
arg-
def name="dsInstanceHost" 2879N/A default="STAF_REMOTE_HOSTNAME">
2879N/A Directory server hostname or IP address
2879N/A </
function-
arg-
description>
2879N/A <
function-
arg-
property name="type" value="hostname" />
3853N/A <
function-
arg-
def name="dsInstanceAdminPort" type="required">
2879N/A Directory server port number
2879N/A </
function-
arg-
description>
2879N/A <
function-
arg-
property name="type" value="Port number" />
4648N/A <
function-
arg-
def name="replicationDnList" 2879N/A DN of the replicated suffix
2879N/A </
function-
arg-
description>
2879N/A <
function-
arg-
property name="type" value="DN list" />
4648N/A <
function-
arg-
def name="disableReplServer" 4648N/A Disable replication server (remove configuration, changelot and port)
4648N/A </
function-
arg-
description>
4648N/A <
function-
arg-
property name="type" value="boolean" />
4648N/A <
function-
arg-
def name="disableAll" 4648N/A Disable replication completely (domain, repl-server, changelog and
4648N/A </
function-
arg-
description>
4648N/A <
function-
arg-
property name="type" value="boolean" />
2879N/A <
function-
arg-
def name="adminUID" 2879N/A </
function-
arg-
description>
2879N/A <
function-
arg-
property name="type" value="UID" />
2879N/A <
function-
arg-
def name="adminPswd" 2879N/A Global Administrator password
2879N/A </
function-
arg-
description>
2879N/A <
function-
arg-
property name="type" value="string" />
2879N/A <
function-
arg-
def name="expectedRC" type="optional" default="0">
3194N/A Expected return code value. Default value is 0.
3194N/A Wildcard 'noCheck' to not check the RC
2879N/A </
function-
arg-
description>
2879N/A <
function-
arg-
property name="type" value="string" />
2879N/A dsBinPath='%s/%s' % (dsPath,fileFolder)
2879N/A STAFCmd='%s/%s%s' % (dsBinPath,DSREPLICATION,fileExt)
2879N/A for dn in replicationDnList:
2879N/A STAFCmdParams=' '.join(STAFCmdParamsList)
2879N/A <
call function="'runCommand'">
2879N/A { 'name' : 'Disable Replication',
3194N/A 'arguments' : STAFCmdParams,
2788N/A <
function name="readTopology">
2788N/A This function reads the topology from a given file.
3071N/A It parses the topology description file and sets _topologyServerList, a
3071N/A list of the servers that form the topology.
2788N/A <
function-
arg-
def name="file" type="required">
2788N/A File containing the topology description.
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="filePath"/>
2788N/A 'Parse file %s for topology parameters' % file
3853N/A server = Server(hostname, dir, port, adminport, sslport, jmxport,
2788N/A changelogServer = ChangelogServer(changelogport, serverId)
2788N/A synchroSuffix = SynchronizedSuffix(suffix, serverId)
3853N/A server = Server(hostname, dir, port, adminport, sslport, jmxport,
2788N/A changelogServer = ChangelogServer(changelogport, serverId)
2788N/A synchroSuffix = SynchronizedSuffix(suffix, serverId)
2788N/A <
function name="removeInstance">
2788N/A This function removes an instance on a given host.
3071N/A <
function-
arg-
def name="dsHost" 3071N/A default="DIRECTORY_INSTANCE_HOST">
2788N/A Hostname where the instance is to be created
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="hostname"/>
3071N/A <
function-
arg-
def name="dsDir" 3071N/A default="DIRECTORY_INSTANCE_DIR">
2788N/A Directory where OpenDS will be installed
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="filepath"/>
2788N/A 'Removing instance %s/%s on host %s' % (dsDir,OPENDSNAME,dsHost)
2788N/A <!-- ON REMOTE HOST: remove files and folders --> 2788N/A <!--- Delete staging data file on remote host--> 2788N/A <
call function="'deleteFile'">
2788N/A <
function name="removeTopology">
3071N/A <
function-
arg-
def name="multipleInstanceTopology" 3071N/A a multiple-instance topology (
i.e. parameters read from topology desc
2788N/A </
function-
arg-
description>
2788N/A <
function-
arg-
property name="type" value="boolean"/>
2788N/A <
if expr="multipleInstanceTopology == False">
3071N/A <!-- SINGLE instance deployment: parameters read from config.py (done by 2788N/A <
call function="'removeInstance'" />
3071N/A <!-- MULTIPLE instance deployment: parameters read from 4631N/A <
iterate var="server" in="_splitServerList">
2788N/A <
call function="'removeInstance'">
3071N/A <!-- Prepare instance(s) for external re-initialisation of replicated suffix 3071N/A <
function name="preInitializeReplication">
3071N/A This function prepares one or all instances in a topology for the external
3071N/A re-initialisation of replicated suffixes using dsreplication.
3071N/A <
function-
arg-
def name="location" 3071N/A default="STAF_REMOTE_HOSTNAME">
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="hostname" />
3071N/A <
function-
arg-
def name="dsPath" 4153N/A default="'%s/%s' % (DIRECTORY_INSTANCE_BIN,OPENDSNAME)">
3071N/A Pathname to installation root
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="filepath" />
3071N/A <
function-
arg-
def name="dsInstanceHost" 3071N/A Directory server hostname or IP address
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="hostname" />
3853N/A <
function-
arg-
def name="dsInstanceAdminPort" 3853N/A Directory server admin port number
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="Port number" />
3071N/A <
function-
arg-
def name="localOnly" 3071N/A Only the contents of the specified server will be initialised.
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="boolean" />
3071N/A <
function-
arg-
def name="replicationDnList" type="required">
3071N/A DN of the replicated suffix
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="DN list" />
3071N/A <
function-
arg-
def name="adminUID" 3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="UID" />
3071N/A <
function-
arg-
def name="adminPswd" 3071N/A Global Administrator password
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="string" />
3071N/A <
function-
arg-
def name="expectedRC" type="optional" default="0">
3071N/A Expected return code value. Default value is 0
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="string" />
3071N/A 'Preparing instance %s:%s for external initialization' \
3853N/A % (dsInstanceHost,dsInstanceAdminPort)
3071N/A dsBinPath='%s/%s' % (dsPath,fileFolder)
3071N/A STAFCmd='%s/%s%s' % (dsBinPath,DSREPLICATION,fileExt)
3071N/A for dn in replicationDnList:
3071N/A STAFCmdParams=' '.join(STAFCmdParamsList)
3071N/A <
call function="'runCommand'">
5061N/A { 'name' : 'Pre-Initialize Replication',
6184N/A 'arguments' : STAFCmdParams
3071N/A <
call function="'checktestRC'">
3071N/A <!-- End process of instance(s) external re-initialisation of replicated 3071N/A suffix using dsreplication --> 3071N/A <
function name="postInitializeReplication">
3071N/A This function ends the process of the external re-initialisation of
3071N/A replicated suffixes in one or all instances in a topology using
3071N/A <
function-
arg-
def name="location" 3071N/A default="STAF_REMOTE_HOSTNAME">
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="hostname" />
3071N/A <
function-
arg-
def name="dsPath" 4153N/A default="'%s/%s' % (DIRECTORY_INSTANCE_BIN,OPENDSNAME)">
3071N/A Pathname to installation root
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="filepath" />
3071N/A <
function-
arg-
def name="dsInstanceHost" 3071N/A Directory server hostname or IP address
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="hostname" />
3853N/A <
function-
arg-
def name="dsInstanceAdminPort" 3853N/A Directory server admin port number
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="Port number" />
3071N/A <
function-
arg-
def name="replicationDnList" type="required">
3071N/A DN of the replicated suffix
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="DN list" />
3071N/A <
function-
arg-
def name="adminUID" 3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="UID" />
3071N/A <
function-
arg-
def name="adminPswd" 3071N/A Global Administrator password
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="string" />
3071N/A <
function-
arg-
def name="expectedRC" type="optional" default="0">
3071N/A Expected return code value. Default value is 0
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="string" />
3071N/A 'Post-processing external initialization of instance %s:%s' \
3853N/A % (dsInstanceHost,dsInstanceAdminPort)
3071N/A dsBinPath='%s/%s' % (dsPath,fileFolder)
3071N/A STAFCmd='%s/%s%s' % (dsBinPath,DSREPLICATION,fileExt)
3071N/A for dn in replicationDnList:
3071N/A STAFCmdParams=' '.join(STAFCmdParamsList)
3071N/A <
call function="'runCommand'">
5061N/A { 'name' : 'Post-Initialize Replication',
6184N/A 'arguments' : STAFCmdParams
3071N/A <
call function="'checktestRC'">
3071N/A <!-- Reset replicated suffix with the backup of a source server using 3071N/A <
function name="resetReplicationData">
3071N/A This function resets the data in a replicated suffix with the backup
3071N/A of a source server and re-initialises the topology using dsreplication.
3071N/A <
function-
arg-
def name="location" 3071N/A default="STAF_REMOTE_HOSTNAME">
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="hostname" />
3071N/A <
function-
arg-
def name="dsPath" 4153N/A default="'%s/%s' % (DIRECTORY_INSTANCE_BIN,OPENDSNAME)">
3071N/A Pathname to installation root
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="filepath" />
3071N/A <
function-
arg-
def name="sourceInstanceHost" 3071N/A Directory server hostname or IP address
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="hostname" />
3071N/A <
function-
arg-
def name="sourceInstancePort" 3071N/A Directory server port number
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="Port number" />
3853N/A <
function-
arg-
def name="sourceInstanceAdminPort" 3853N/A Directory server admin port number
3853N/A </
function-
arg-
description>
3853N/A <
function-
arg-
property name="type" value="Port number" />
3071N/A <
function-
arg-
def name="sourceInstanceDn" type="required">
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="DN" />
3071N/A <
function-
arg-
def name="sourceInstancePswd" type="required">
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="string" />
3071N/A <
function-
arg-
def name="backupDir" type="required">
3071N/A The name of the backup directory
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="pathname"/>
3071N/A <
function-
arg-
def name="suffixDn" type="required">
3071N/A DN of the replicated suffix
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="DN" />
3071N/A <
function-
arg-
def name="adminUID" 3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="UID" />
3071N/A <
function-
arg-
def name="adminPswd" 3071N/A Global Administrator password
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="string" />
3071N/A <
function-
arg-
def name="expectedRC" 3071N/A Expected return code value. Default value is 0
3071N/A </
function-
arg-
description>
3071N/A <
function-
arg-
property name="type" value="string" />
3071N/A 'Resetting %s data in replication topology using backup %s on instance \
3853N/A %s:%s' % (suffixDn,backupDir,sourceInstanceHost,sourceInstanceAdminPort)
3071N/A <!-- Pre-initialise the servers in the topology --> 3071N/A <
call function="'preInitializeReplication'">
3853N/A 'dsInstanceHost' : sourceInstanceHost,
3853N/A 'dsInstanceAdminPort' : sourceInstanceAdminPort,
3853N/A 'replicationDnList' : [suffixDn],
3071N/A <!-- Restore the data in the server --> 3071N/A <
call function="'restoreTask'">
3071N/A 'dsInstanceHost' : sourceInstanceHost,
3071N/A 'dsInstancePort' : sourceInstancePort,
3071N/A 'dsInstanceDn' : sourceInstanceDn,
3071N/A 'dsInstancePswd' : sourceInstancePswd,
3071N/A 'taskID' : 'restore task - %s' % resetCounter,
3071N/A <!-- Post-initialise the servers in the topology --> 3071N/A <
call function="'postInitializeReplication'">
3853N/A 'dsInstanceHost' : sourceInstanceHost,
3853N/A 'dsInstanceAdminPort' : sourceInstanceAdminPort,
3853N/A 'replicationDnList' : [suffixDn],
3071N/A <!-- Initialise the servers in the topology --> 3071N/A <
call function="'initializeReplication'">
3853N/A 'sourceInstanceHost' : sourceInstanceHost,
3853N/A 'sourceInstanceAdminPort' : sourceInstanceAdminPort,
3853N/A 'replicationDnList' : [suffixDn],
3071N/A <
call function="'checktestRC'">
4495N/A <
function name="common_setup" scope="local">
4495N/A This function helps to perform a common setup and data load of directory server.
4495N/A <
function-
arg-
def name="directoryServer" type="optional" default="server">
4495N/A The directory server object instance
4495N/A </
function-
arg-
description>
4495N/A <
function-
arg-
property name="type" value="boolean"/>
4495N/A <
function-
arg-
def name="quickStart" type="optional" default="True">
4495N/A Perform a quick start of the server with preloaded data
4495N/A </
function-
arg-
description>
4495N/A <
function-
arg-
property name="type" value="boolean"/>
4495N/A <
function-
arg-
def name="loadData" type="optional" default="True">
4495N/A </
function-
arg-
description>
4495N/A <
function-
arg-
property name="type" value="boolean"/>
4495N/A <
function-
arg-
def name="startServer" type="optional" default="True">
4495N/A </
function-
arg-
description>
4495N/A <
function-
arg-
property name="type" value="boolean"/>
4495N/A <
function-
arg-
def name="stopServer" type="optional" default="True">
4495N/A </
function-
arg-
description>
4495N/A <
function-
arg-
property name="type" value="boolean"/>
4495N/A <
function-
arg-
def name="ldifFile" type="optional" default="''">
4495N/A Path and name of the ldif file to be used to add entries
4495N/A </
function-
arg-
description>
4495N/A <
function-
arg-
property name="type" value="structure"/>
4495N/A <
function-
arg-
def name="allowPreEncodePassword" type="optional" default="False">
4495N/A Allow pre-encoded passwords to be added
4495N/A </
function-
arg-
description>
4495N/A <
function-
arg-
property name="boolean" value="True|False"/>
5688N/A <
function-
arg-
def name="generateLDIF" type="optional" default="False">
5688N/A Generate with makeldif the ldif file to be imported
5688N/A </
function-
arg-
description>
5688N/A <
function-
arg-
property name="boolean" value="True|False"/>
5688N/A <
function-
arg-
def name="ldifTemplate" type="optional" default="''">
5688N/A Path and name of the ldif template to be used to generate entries
5688N/A </
function-
arg-
description>
5688N/A <
function-
arg-
property name="type" value="structure"/>
5784N/A <
function-
arg-
def name="friendlyName" type="optional" default="'Common'">
5784N/A Friendly name for the common setup launcher
5784N/A </
function-
arg-
description>
5784N/A <
function-
arg-
property name="type" value="structure"/>
4495N/A <
block name="'common-setup'">
5784N/A <
testcase name="getTestCaseName('%s Setup' % friendlyName)">
4495N/A <
call function="'testCase_Preamble'"/>
4495N/A <
call function="'runFunction'">
4495N/A { 'functionName' : 'createTopology' ,
4495N/A 'functionMessage' : 'Create DS topology' ,
4495N/A 'functionArguments' : { 'initialiseInstance' : quickStart }
4495N/A <
if expr="startServer == True">
4495N/A <!-- Start the OpenDS Server --> 4495N/A <
call function="'runFunction'">
4495N/A { 'functionName' : 'StartDsWithScript' ,
4495N/A 'functionMessage' : 'Start the Directory Server.' ,
4495N/A <!--- Check that DS started --> 4495N/A <
call function="'runFunction'">
4495N/A { 'functionName' : 'isAlive' ,
4495N/A 'functionMessage' : 'Start the Directory Server.' ,
4495N/A 'functionArguments' : { 'noOfLoops' : 100 ,
4495N/A 'noOfMilliSeconds' : 3000 }
5688N/A <!-- TODO: generate ldif file --> 5688N/A <
if expr="generateLDIF == True and ldifTemplate and ldifFile">
5688N/A 'Generating ldif file (%s) from template (%s)' % (ldifFile,ldifTemplate)
5688N/A <
if expr="loadData == True and ldifFile and startServer == True">
4495N/A <
if expr="allowPreEncodePassword == True">
4495N/A <
call function="'dsconfigSet'">
4495N/A 'objectName' : 'password-policy',
4495N/A 'propertyName' : 'Default Password Policy',
4495N/A 'attributeName' : 'allow-pre-encoded-passwords',
4495N/A <!-- Load the data needed by the test suite --> 4495N/A <
call function="'runFunction'">
4495N/A { 'functionName' : 'ldapModifyWithScript' ,
4495N/A 'functionMessage' : 'Adding Initial Entries' ,
4495N/A 'functionArguments' : { 'dsAdd' : 'TRUE' ,
5688N/A <
if expr="loadData == True and ldifFile and startServer == False">
5688N/A <
call function="'runFunction'">
5688N/A { 'functionName' : 'ImportLdifWithScript' ,
5688N/A 'functionMessage' : 'Off-line Import LDIF.' ,
5688N/A <
call function="'runFunction'">
5688N/A { 'functionName' : 'StartDsWithScript' ,
5688N/A 'functionMessage' : 'Start the Directory Server.' ,
5688N/A <
call function="'runFunction'">
5688N/A { 'functionName' : 'isAlive' ,
5688N/A 'functionMessage' : 'Check the Directory Server has started.' ,
5688N/A 'noOfMilliSeconds' : 2000 }
4495N/A <
if expr="stopServer == True">
4495N/A <!-- Stop the OpenDS Server --> 4495N/A <
call function="'runFunction'">
5688N/A { 'functionName' : 'StartDsWithScript' ,
5688N/A 'functionMessage' : 'Stop the Directory Server.' ,
4495N/A <
message log="1" level="'fatal'">
4495N/A '%s: Create topology failed. eInfo(%s)' % (eType,eInfo)
4495N/A <
message log="1" level="'fatal'">
4495N/A '%s: Failed to start Directory Server. eInfo(%s)' % (eType,eInfo)
5688N/A <
message log="1" level="'fatal'">
5688N/A '%s: Failed to import ldif file. eInfo(%s)' % (eType,eInfo)
4495N/A <
message log="1" level="'fatal'">
4495N/A '%s: Failed to stop Directory Server. eInfo(%s)' % (eType,eInfo)
4495N/A <
message log="1" level="'fatal'">
4495N/A '%s: LDAPModify failed. eInfo(%s)' % (eType,eInfo)
4495N/A <!-- Test Group postamble --> 4495N/A <
call function="'testCase_Postamble'"/>
4495N/A <
function name="common_cleanup" scope="local">
4495N/A This function helps to perform a common cleanup of directory server and its data.
4495N/A <
function-
arg-
def name="directoryServer" type="optional" default="server">
4495N/A The directory server object instance
4495N/A </
function-
arg-
description>
4495N/A <
function-
arg-
property name="type" value="boolean"/>
4495N/A <
function-
arg-
def name="deleteSuffix" type="optional" default="True">
4495N/A Delete the suffix that holds the directory data
4495N/A </
function-
arg-
description>
4495N/A <
function-
arg-
property name="type" value="boolean"/>
5784N/A <
function-
arg-
def name="friendlyName" type="optional" default="'Common'">
5784N/A Friendly name for the common cleanup launcher
5784N/A </
function-
arg-
description>
5784N/A <
function-
arg-
property name="type" value="structure"/>
4495N/A <
block name="'common-cleanup'">
5784N/A <
testcase name="getTestCaseName('%s Cleanup' % friendlyName)">
4495N/A <
call function="'testCase_Preamble'"/>
4495N/A <
call function="'runFunction'">
4495N/A { 'functionName' : 'ldapSearchWithScript' ,
4495N/A 'functionMessage' : 'Check Server is Alive.' ,
4495N/A 'dsFilter' : 'objectclass=*' ,
4495N/A _returncode=int(STAXResult[0])
4495N/A <
if expr="deleteSuffix == True">
4495N/A <!-- If directoryServer is not running we have to restart it --> 4495N/A <
if expr="_returncode == 91">
4495N/A <
call function="'runFunction'">
4495N/A { 'functionName' : 'StartDsWithScript' ,
4495N/A 'functionMessage' : 'Start the Directory Server.' ,
4495N/A 'functionArguments' : { 'expectedRC' : 'noCheck' }
4495N/A <
call function="'runFunction'">
4495N/A { 'functionName' : 'ldapDeleteWithScript' ,
4495N/A 'functionMessage' : 'Recursive delete of suffix.' ,
4495N/A 'functionArguments' : { 'dsDeleteSubtree' : 'TRUE' ,
4495N/A <
call function="'runFunction'">
4495N/A { 'functionName' : 'StopDsWithScript' ,
4495N/A 'functionMessage' : 'Stop the Directory Server.' ,
4495N/A <
call function="'runFunction'">
4495N/A { 'functionName' : 'removeTopology' ,
4495N/A 'functionMessage' : 'Remove DS topology.' ,
4495N/A <
tcstatus result="'pass'"></
tcstatus>
4495N/A <
message log="1" level="'fatal'">
4495N/A '%s: LDAPDelete failed. eInfo(%s)' % (eType,eInfo)
4495N/A <
catch exception="'STAXException'" typevar="eType" var="eInfo">
4495N/A <
message log="1" level="'fatal'">
4495N/A '%s: Failed to cleanup. eInfo(%s)' % (eType,eInfo)
4495N/A <!-- Test Group postamble --> 4495N/A <
call function="'testCase_Postamble'"/>
4616N/A <!-- Get replication status using dsreplication, and check for missing changes 4616N/A or inconsistencies in the number of entries across the topology --> 4616N/A <
function name="getReplicationStatus">
4616N/A This function gets the replication status of a topology using
4616N/A <
function-
arg-
def name="location" 4616N/A default="STAF_REMOTE_HOSTNAME">
4616N/A </
function-
arg-
description>
4616N/A <
function-
arg-
property name="type" value="hostname" />
4616N/A <
function-
arg-
def name="dsPath" 4616N/A default="'%s/%s' % (DIRECTORY_INSTANCE_BIN,OPENDSNAME)">
4616N/A Pathname to installation root
4616N/A </
function-
arg-
description>
4616N/A <
function-
arg-
property name="type" value="filepath" />
4616N/A <
function-
arg-
def name="dsInstanceHost" 4616N/A Directory server hostname or IP address
4616N/A </
function-
arg-
description>
4616N/A <
function-
arg-
property name="type" value="hostname" />
4616N/A <
function-
arg-
def name="dsInstanceAdminPort" 4616N/A Directory server admin port number
4616N/A </
function-
arg-
description>
4616N/A <
function-
arg-
property name="type" value="Port number" />
4616N/A <
function-
arg-
def name="replicationDnList" type="required">
4616N/A DN of the replicated suffix
4616N/A </
function-
arg-
description>
4616N/A <
function-
arg-
property name="type" value="DN list" />
4616N/A <
function-
arg-
def name="adminUID" 4616N/A </
function-
arg-
description>
4616N/A <
function-
arg-
property name="type" value="UID" />
4616N/A <
function-
arg-
def name="adminPswd" 4616N/A Global Administrator password
4616N/A </
function-
arg-
description>
4616N/A <
function-
arg-
property name="type" value="string" />
4648N/A <
function-
arg-
def name="noOfLoops" 4648N/A </
function-
arg-
description>
4648N/A <
function-
arg-
property name="type" value="integer"/>
4648N/A <
function-
arg-
def name="noOfMilliSeconds" 4648N/A Number of milliseconds to wait between iterations
4648N/A </
function-
arg-
description>
4648N/A <
function-
arg-
property name="type" value="seconds"/>
4616N/A <
function-
arg-
def name="expectedRC" type="optional" default="0">
4616N/A Expected return code value. Default value is 0
4616N/A </
function-
arg-
description>
4616N/A <
function-
arg-
property name="type" value="string" />
4616N/A 'Getting replication status from server %s:%s' \
4616N/A % (dsInstanceHost,dsInstanceAdminPort)
4616N/A dsBinPath='%s/%s' % (dsPath,fileFolder)
4616N/A STAFCmd='%s/%s%s' % (dsBinPath,DSREPLICATION,fileExt)
4616N/A # option for getting status in script-friendly format
4616N/A for dn in replicationDnList:
4616N/A STAFCmdParams=' '.join(STAFCmdParamsList)
4648N/A <
loop from="1" to="noOfLoops" while="missingRC == True">
4648N/A <
call function="'runCommand'">
4648N/A { 'name' : 'Get Replication Status',
4648N/A 'arguments' : STAFCmdParams
4648N/A <
call function="'checktestRC'">
4648N/A { 'returncode' : commandRC,
4648N/A <
if expr="commandRC != expectedRC">
4648N/A <
return> commandResult </
return>
4648N/A replStatusRC = commandResult[0][0]
4648N/A replStatusResult = commandResult[0][1]
4648N/A resultLength = len(replStatusResult) > 0
4648N/A <
if expr="(replStatusRC == 0) and (resultLength != 0)">
4648N/A <
iterate var="missing" in="missingChangesList">
4648N/A <
if expr="(missing != '0') and (missing != '--')">
4648N/A 'getReplicationStatus LOOP %s => missingChanges? \
4648N/A <
if expr="missingRC == True">
4648N/A <!-- If there are still missing changes, wait for some more time and 4648N/A ! give the servers a chance to synchronise --> 4648N/A { 'sleepForMilliSeconds' : noOfMilliSeconds }
4616N/A <
if expr="(replStatusRC == 0) and (resultLength != 0)">
4616N/A 'getReplicationStatus: Replication status retrieved from server \
4616N/A (dsInstanceHost, dsInstanceAdminPort, replStatusResult)
4648N/A <
iterate var="entries" in="entriesList" indexvar="i">
4648N/A refServername = servernameList[i]
4648N/A <
iterate var="server" in="servernameList" indexvar="i">
4616N/A missingChanges = missingChangesList[i]
4648N/A anyMissChg = (missingChanges != '0' and missingChanges != '--')
4648N/A anyOldAge = (age != 'N/A' and age != '--')
4648N/A entriesDiff = (entries != refNbOfEntries)
4648N/A <
if expr="anyMissChg or anyOldAge">
4616N/A <
message log="1" level="'Error'">
4616N/A 'getReplicationStatus: Server %s is missing %s changes. \
4616N/A Entries: %s - Age of the oldest missing change: %s ' % \
4616N/A (server, missingChanges, entries, age)
4616N/A <
tcstatus result="'fail'"/>
4648N/A <
if expr="anyEntries and entriesDiff">
4616N/A <
message log="1" level="'Error'">
4616N/A 'getReplicationStatus: Different number of entries.\n\
4616N/A Reference server %s : %s entries\n' % \
4648N/A (server, entries, refServername, refNbOfEntries)
4616N/A <
tcstatus result="'fail'"/>
5507N/A <
function name="stageStaticDataFiles">
5504N/A This function stages locally the static data files
5504N/A <
function-
arg-
def name="customFileExtensions" 5504N/A Non default file extensions for specific tests
5504N/A </
function-
arg-
description>
5504N/A <
function-
arg-
property name="type" value="string"/>
5540N/A <
function-
arg-
def name="testGroupDirName" 5540N/A Name of the test group directory that holds the
5540N/A </
function-
arg-
description>
5540N/A <
function-
arg-
property name="type" value="string"/>
5540N/A <!-- If remote host is local loopback then no need to stage static data files --> 5540N/A from socket import gethostbyname
5540N/A <
if expr="host_is_localhost(STAF_REMOTE_HOSTNAME)">
5540N/A 'Not staging static data files as remote host %s (%s) is local.' % (STAF_REMOTE_HOSTNAME,gethostbyname(STAF_REMOTE_HOSTNAME))
5540N/A <
message>'Will creating stub folder in testdata.'</
message>
5540N/A <
call function="'createStubFolders'"/>
5540N/A 'Remote host %s (%s) is not local.' % (STAF_REMOTE_HOSTNAME,gethostbyname(STAF_REMOTE_HOSTNAME))
5507N/A <!-- Check to see if local tests static data directory is already created--> 5507N/A <
call function="'GetEntry'">
5507N/A { 'location' : STAXServiceMachine,
5507N/A 'entry' : localTestsGroupDir,
5507N/A <!-- If the static test data is already created then don't redo it --> 5507N/A <
message>'Not staging static data files as they already exist.'</
message>
5504N/A <!-- Locally copy static data files to temporary staging area --> 5507N/A 'Staging static data files on local machine.'
5504N/A <!-- All LDIF (.ldif) files for quickinstall are needed for each suite --> 5504N/A 'Copy quickstart ldif data files locally from %s to %s.' % \
5504N/A (quickStartGroupDir,quickStartLocalTestsGroupDir)
5504N/A <
call function="'CopyFolderByExtension'">
5504N/A { 'location' : STAXServiceMachine,
5504N/A 'srcfolder' : quickStartGroupDir,
5504N/A 'destfolder' : quickStartLocalTestsGroupDir,
5504N/A <!-- Default static data files --> 5504N/A defaultFileExtensions=["ldif","pwd","gz","ref","security"]
5507N/A <
iterate var="fExt" in="defaultFileExtensions + customFileExtensions">
5504N/A 'Copy %s data files locally from %s to %s.' % \
5507N/A (fExt,sourceTestsGroupDir,localTestsGroupDir)
5504N/A <
call function="'CopyFolderByExtension'">
5504N/A { 'location' : STAXServiceMachine,
5504N/A 'srcfolder' : sourceTestsGroupDir,
5504N/A 'destfolder' : localTestsGroupDir,
5507N/A <
function name="stageJavaFiles">
5507N/A This function stages locally and builds the java class files
5507N/A <
function-
arg-
def name="customJavaProjects" 5507N/A Name of the custom java based project (should be folder name)
5507N/A </
function-
arg-
description>
5507N/A <
function-
arg-
property name="type" value="string"/>
5507N/A defaultJavaProjects=["ldapjndi","ldapjdk"]
5507N/A <!-- Archive (*/.java) files --> 5507N/A <
iterate var="javaProject" in="defaultJavaProjects + customJavaProjects">
5507N/A <!-- Check to see if local java data directory is already created--> 5507N/A <
call function="'GetEntry'">
5507N/A { 'location' : STAXServiceMachine,
5507N/A 'Staging %s java files on local machine.' % javaProject
5507N/A 'Copy %s java files locally from %s to %s.' % \
5507N/A (javaProject,javaSharedDir,javaLocalDir)
5507N/A <
call function="'CopyFolderByExtension'">
5507N/A 'location' : STAXServiceMachine,
5507N/A 'srcfolder' : javaSharedDir,
5507N/A 'destfolder' : javaLocalDir,
5507N/A 'Copy any jar files locally from %s to %s.' % \
5507N/A (javaSharedDir,javaLocalDir)
5507N/A <
call function="'CopyFolderByExtension'">
5507N/A 'location' : STAXServiceMachine,
5507N/A 'srcfolder' : javaSharedDir,
5507N/A 'destfolder' : javaLocalDir,
5507N/A <!--- Check if these java files are already compiled --> 5507N/A <
call function="'listFolderByExtension'" >
5507N/A 'location' : STAXServiceMachine,
5507N/A 'foldername' : javaLocalDir,
5507N/A <
if expr="len(STAXResult) == 0">
5507N/A <!-- Build Java CLASSPATH if needed--> 5507N/A <!-- Build CLASSPATH for ldapjdk--> 5507N/A <
if expr="javaProject == 'ldapjdk'">
5507N/A if is_windows_platform(STAXServiceMachine):
5507N/A % (ldapjdk_jarfile,separator,jstaf_jarfile)
5507N/A <!-- Compile these java files on controler host --> 5507N/A 'Compile Java files under %s on %s' \
5507N/A % (javaLocalDir, STAXServiceMachine)
5507N/A <
call function="'compileJava'" >
5507N/A 'location' : STAXServiceMachine,
5507N/A 'foldername' : '%s' % javaLocalDir,
5507N/A 'classpath' : java_classpath
5507N/A 'Not Staging %s java files as they already exist.' % javaProject
5507N/A <
function name="stageSNMPFiles">
5507N/A This function stages locally and builds the java class files
5507N/A <
function-
arg-
def name="customSNMPProjects" 5507N/A Name of the custom SNMP based project (should be folder name)
5507N/A </
function-
arg-
description>
5507N/A <
function-
arg-
property name="type" value="string"/>
5507N/A <!-- Check to see if local java data directory is already created--> 5507N/A <
call function="'GetEntry'">
5507N/A { 'location' : STAXServiceMachine,
5507N/A <
message>'Not Staging SNMP files as they already exist.'</
message>
5507N/A 'Staging SNMP files on local machine.'
5507N/A 'Copy java files locally from %s to %s.' % \
5507N/A (javaSharedDir,javaLocalDir)
5507N/A <
call function="'CopyFolderByExtension'">
5507N/A 'location' : STAXServiceMachine,
5507N/A 'srcfolder' : javaSharedDir,
5507N/A 'destfolder' : javaLocalDir,
5507N/A <!-- Check if 'SNMP_OPENDMK_JARFILE' exists --> 5507N/A <
call function="'GetEntry'">
5507N/A 'location' : STAXServiceMachine,
5507N/A 'entry' : SNMP_OPENDMK_JARFILE,
5507N/A 'OpenDMK jar %s not found.' % SNMP_OPENDMK_JARFILE
5507N/A <!-- 'SNMP_OPENDMK_JARFILE' exists so we can continue with SNMP --> 5507N/A <!--- Check if snmp java files are already compiled --> 5507N/A <
call function="'listFolderByExtension'" >
5507N/A 'location' : STAXServiceMachine,
5507N/A 'foldername' : javaLocalDir,
5507N/A <
if expr="len(STAXResult) == 0">
5507N/A <!--- Install DS Copy zip file --> 5507N/A 'Copy DS zip archive locally from %s to %s.' % \
5507N/A <
call function="'copyFile'">
5507N/A 'srcfile' : '%s/%s' % (ZIPPATH, ZIPNAME),
5507N/A 'remotehost' : STAXServiceMachine
5507N/A <!--- Install DS Extract zip file --> 5507N/A <
call function="'unZipFile'">
5507N/A 'location' : STAXServiceMachine,
5507N/A if is_windows_platform(STAXServiceMachine):
5507N/A <
if expr="IPS_PKG == True">
5507N/A <
call function="'copyFile'">
5507N/A 'location' : STAF_REMOTE_HOSTNAME,
5507N/A 'srcfile' : '%s/%s' % (DIRECTORY_INSTANCE_BIN,SNMP_OPENDS_JARFILE),
5507N/A 'remotehost' : STAXServiceMachine
5507N/A <!--- Compile snmp java files on controler host --> 5507N/A 'Compile Java files under %s on %s' \
5507N/A % (javaLocalDir, STAXServiceMachine)
5507N/A if is_windows_platform(STAXServiceMachine):
5507N/A <
call function="'compileJava'" >
5507N/A 'location' : STAXServiceMachine,
5507N/A 'foldername' : javaLocalDir,
5507N/A 'classpath' : '%s%s%s%s%s' \
5507N/A % (opends_jarfile,separator,SNMP_OPENDMK_JARFILE,separator,jstaf_jarfile)
5507N/A <!-- Archive SNMP_OPENDMK_JARFILE file --> 5507N/A 'Copy OpenDMK jar file %s locally to %s.' \
5507N/A % (SNMP_OPENDMK_JARFILE,javaLocalDir)
5507N/A <
call function="'copyFile'">
5507N/A 'remotehost' : STAXServiceMachine,
5507N/A 'srcfile' : SNMP_OPENDMK_JARFILE,
5507N/A 'remotehost' : STAXServiceMachine
5507N/A <!-- Delete the DS zip archive --> 5507N/A <
call function="'deleteFile'">
5507N/A 'location' : STAXServiceMachine,
5507N/A <!-- Delete the DS install dir --> 5507N/A <
call function="'deleteFolder'">
5507N/A 'location' : STAXServiceMachine,
5540N/A <
function name="createStubFolders">
5540N/A This function creates some stub folders in testdata
5540N/A <
call function="'createFolder'">
5540N/A { 'location' : STAF_LOCAL_HOSTNAME,