This function creates the topology required by the Test Group/Suite. Topology Description file Specifies whether the instance should be initialised with some default data. Specifies a relative folder that holds the shared data for the tests { 'groupDataDir' : sharedDataFolder } 'SINGLE instance deployment: read parameters from config.py' 'MULTIPLE instance deployment: read parameters from %s' \ % topologyDescFile { 'file' : topologyDescFile } 'Number of server instances required by the deployment: %s' \ % len(_topologyServerList) { 'dsHost' : server.getHostname(), 'dsDir' : server.getDir(), 'dsPort' : server.getPort(), 'dsSslPort' : server.getSslPort(), 'dsJmxPort' : server.getJmxPort(), 'dsBindDN' : server.getRootDn(), 'dsBindPwd' : server.getRootPwd(), 'dsBaseDN' : server.getBaseDn() } This function prepares locally the necessary files to create an instance: data zip file and OpenDS zip file. Specifies a relative folder that holds the shared data for the test group { 'location' : STAXServiceMachine, 'entry' : localTestsGroupDir, 'attribute' : 'TYPE' } 'Copy ldif data files locally to %s.' % localTestsGroupDir { 'location' : STAXServiceMachine, 'srcfolder' : testsGroupDir, 'destfolder' : localTestsGroupDir, 'extension' : 'ldif' } 'Copy ldif data files locally to %s.' % quickStartLocalTestsGroupDir { 'location' : STAXServiceMachine, 'srcfolder' : quickStartGroupDir, 'destfolder' : quickStartLocalTestsGroupDir, 'extension' : 'ldif' } 'Copy pwd data files locally to %s.' % localTestsGroupDir { 'location' : STAXServiceMachine, 'srcfolder' : testsGroupDir, 'destfolder' : localTestsGroupDir, 'extension' : 'pwd' } 'Copy gz data files locally to %s.' % localTestsGroupDir { 'location' : STAXServiceMachine, 'srcfolder' : testsGroupDir, 'destfolder' : localTestsGroupDir, 'extension' : 'gz' } 'Copy java class files locally to %s.' % javaLocalDir { 'location' : STAXServiceMachine, 'srcfolder' : javaSharedDir, 'destfolder' : javaLocalDir, 'extension' : 'class' } 'Delete %s/testdata.zip' % logsTempDir { 'location' : STAXServiceMachine, 'filename' : '%s/testdata.zip' % logsTempDir } 'Zip up local data directory to %s/testdata.zip' % logsTempDir { 'location' : STAXServiceMachine, 'zipfile' : '%s/testdata.zip' % logsTempDir , 'folder' : '%s' % localTestsGroupDir , 'relativeto' : logsTestDataDir } 'Zip up local quickstart directory to %s/testdata.zip' % logsTempDir { 'location' : STAXServiceMachine, 'zipfile' : '%s/testdata.zip' % logsTempDir , 'folder' : '%s' % quickStartLocalTestsGroupDir , 'relativeto' : logsTestDataDir } 'Zip up local java class files to %s/testdata.zip' % logsTempDir { 'location' : STAXServiceMachine, 'zipfile' : '%s/testdata.zip' % logsTempDir , 'folder' : '%s' % javaLocalDir , 'relativeto' : logsTestDataDir } 'Test data is already created.' This function creates an instance on a given host. It copies both data and OpenDS zip files onto the host, unzips them, and configures OpenDS. Hostname where the instance is to be created Directory where OpenDS will be installed Directory Server port number Directory Server SSL port number Directory Server JMX port number Directory Manager DN Directory Server SSL port number Directory Server base suffix dn 'Create instance in host %s at directory %s' % (dsHost,dsDir) 'Delete folder %s/%s on host %s' % (dsDir,OPENDSNAME,dsHost) { 'location' : dsHost, 'foldername' : '%s/%s' % (dsDir,OPENDSNAME) } 'Create folder %s on host %s' % (dsDir,dsHost) { 'location' : dsHost, 'foldername' : '%s' % dsDir } 'Copy %s/testdata.zip to %s on %s' % (logsTestDataDir,dsDir,dsHost) { 'srcfile' : '%s/testdata.zip' % logsTempDir, 'destfile' : '%s/testdata.zip' % dsDir, 'remotehost' : dsHost } 'Extract contents of test data %s on %s' % (dsDir,dsHost) { 'location' : dsHost, 'zipfile' : '%s/testdata.zip' % dsDir, 'unzipdir' : dsDir } 'Copy DS zip archive %s/%s to %s' % (logsTempDir,ZIPNAME,dsHost) { 'srcfile' : '%s/%s' % (ZIPPATH,ZIPNAME), 'destfile' : '%s/%s' % (dsDir,ZIPNAME), 'remotehost' : dsHost } 'Extract DS zip archive to %s on %s' % (dsDir,dsHost) { 'location' : dsHost, 'zipfile' : '%s/%s' % (dsDir,ZIPNAME), 'unzipdir' : dsDir } mylog 'Set up DS on %s : %s/%s' % (dsHost,dsDir,OPENDSNAME) { 'location' : dsHost, 'dsPath' : '%s/%s' % (dsDir, OPENDSNAME), 'dsPort' : dsPort, 'dsJmxPort' : dsJmxPort, 'dsBindDN' : dsBindDN, 'dsBindPwd' : dsBindPwd, 'dsBaseDN' : dsBaseDN, 'dsEnableWindowsService' : enableWindowsService, 'dsDoNotStart' : 'true' } { 'returncode' : RC , 'result' : STAXResult } 'Instance created.' 'Failed to create instance.' This function configures replication in a given server. Map containing a Server class instance representing the server to configure. 'Configure replication on server on host %s at directory %s' \ % (syncserver.getHostname(),syncserver.getDir()) 'Copy %s file from %s to %s' % (filename,logsTestDataDir,dataDir) { 'srcfile' : filePath, 'destfile' : '%s/%s' % (dataDir,filename), 'remotehost' : syncserver.getHostname() } { 'location' : syncserver.getHostname(), 'dsPath' : syncserverPath } { 'returncode' : RC , 'result' : STAXResult } 'Add replication configuration entries in %s' % remoteFilePath { 'location' : syncserver.getHostname(), 'dsPath' : syncserverPath, 'dsInstanceHost' : syncserver.getHostname(), 'dsInstancePort' : syncserver.getPort(), 'dsInstanceDn' : syncserver.getRootDn(), 'dsInstancePswd' : syncserver.getRootPwd(), 'entryToBeAdded' : remoteFilePath } { 'returncode' : RC, 'result' : STAXResult } { 'location' : syncserver.getHostname(), 'dsHost' : syncserver.getHostname(), 'dsPath' : syncserverPath, 'dsPort' : syncserver.getPort(), 'dsBindDN' : syncserver.getRootDn(), 'dsBindPwd' : syncserver.getRootPwd() } { 'returncode' : RC , 'result' : STAXResult } This function configures replication in a given server. Server class instance representing the server to configure. 'Configure replication on server on host %s at directory %s' \ % (syncserver.getHostname(),syncserver.getDir()) { 'location' : syncserver.getHostname(), 'dsPath' : syncserverPath } { 'location' : syncserver.getHostname(), 'dsPath' : syncserverPath, 'dsInstanceHost' : syncserver.getHostname(), 'dsInstancePort' : syncserver.getPort(), 'dsInstanceDn' : syncserver.getRootDn(), 'dsInstancePswd' : syncserver.getRootPwd(), 'entryToBeAdded' : '%s/%s/replication/workaround-2201.ldif' \ % (syncserver.getDir(), relativeDataDir) } 'List synchronization providers' { 'location' : syncserver.getHostname(), 'dsPath' : syncserverPath, 'dsInstanceHost' : syncserver.getHostname(), 'dsInstancePort' : syncserver.getPort(), 'dsInstanceDn' : syncserver.getRootDn(), 'dsInstancePswd' : syncserver.getRootPwd() } 'Create replication server listening on port: %s' \ % replicationServer.getPort() { 'location' : syncserver.getHostname(), 'dsPath' : syncserverPath, 'dsInstanceHost' : syncserver.getHostname(), 'dsInstancePort' : syncserver.getPort(), 'dsInstanceDn' : syncserver.getRootDn(), 'dsInstancePswd' : syncserver.getRootPwd(), 'replicationPort' : replicationServer.getPort(), 'replicationServerId' : replicationServer.getId(), 'replicationServerList' : replicationServer.getChangelogServerList() } 'Create domain name for suffix: %s' % suffix.getSuffixDn() { 'location' : syncserver.getHostname(), 'dsPath' : syncserverPath, 'dsInstanceHost' : syncserver.getHostname(), 'dsInstancePort' : syncserver.getPort(), 'dsInstanceDn' : syncserver.getRootDn(), 'dsInstancePswd' : syncserver.getRootPwd(), 'domainName' : 'SUFFIX-%s' % i, 'replicationDn' : suffix.getSuffixDn(), 'serverId' : suffix.getId(), 'replicationServerList' : suffix.getChangelogServerList() } { 'location' : syncserver.getHostname(), 'dsHost' : syncserver.getHostname(), 'dsPath' : syncserverPath, 'dsPort' : syncserver.getPort(), 'dsBindDN' : syncserver.getRootDn(), 'dsBindPwd' : syncserver.getRootPwd() } This function enables replication between servers using dsreplication. Location of target host Pathname to installation root Directory server hostname or IP address Directory server port number Bind DN Bind password Replication port number Encrypt communications over dsReplicationPort (secure replication) Reference Directory server hostname or IP address Reference Directory server port number Reference server Bind DN Reference server Bind password Reference server Replication port number Encrypt communications over refReplicationPort (secure replication) DN of the replicated suffix Global Administrator UID Global Administrator password Do not enable schema replication Take the refInstanceHost as the source for the schema initialisation Expected return code value. Default value is 0 { 'name' : 'Enable Replication', 'location' : location, 'command' : STAFCmd, 'arguments' : STAFCmdParams } { 'returncode' : STAXCode, 'result' : STAXReason, 'expected' : expectedRC } STAXReason This function initializes replicated suffixes with the contents of a source server using dsreplication. Location of target host Pathname to installation root Directory server hostname or IP address Directory server port number Source Directory server hostname or IP address Source Directory server port number DN of the replicated suffix Global Administrator UID Global Administrator password Expected return code value. Default value is 0 { 'name' : 'Initialize Replication', 'location' : location, 'command' : STAFCmd, 'arguments' : STAFCmdParams } { 'returncode' : STAXCode, 'result' : STAXReason, 'expected' : expectedRC } STAXReason This function disables replication for a given baseDN on a server using dsreplication. Location of target host Pathname to installation root Directory server hostname or IP address Directory server port number DN of the replicated suffix Global Administrator UID Global Administrator password Expected return code value. Default value is 0 { 'name' : 'Disable Replication', 'location' : location, 'command' : STAFCmd, 'arguments' : STAFCmdParams } { 'returncode' : STAXCode, 'result' : STAXReason, 'expected' : expectedRC } STAXReason This function reads the topology from a given file. It parses the topology description file and sets _topologyServerList, a list of the servers that form the topology. File containing the topology description. 'Parse file %s for topology parameters' % file This function removes an instance on a given host. Hostname where the instance is to be created Directory where OpenDS will be installed 'Removing instance %s/%s on host %s' % (dsDir,OPENDSNAME,dsHost) 'Delete staging data file %s/testdata.zip' % dsDir { 'location' : dsHost, 'filename' : '%s/testdata.zip' % dsDir } 'Delete staging data folder %s/shared' % dsDir { 'location' : dsHost, 'foldername' : '%s/shared' % dsDir } 'Delete OPENDS zip file %s/%s' % (dsDir,ZIPNAME) { 'location' : dsHost, 'filename' : '%s/%s' % (dsDir,ZIPNAME) } { 'returncode' : RC , 'result' : STAXResult } 'Instance removed.' 'Failed to remove instance.' This function removes the topology created for the Test Group/Suite. Tells whether it is a single (i.e. parameters read from config.py) or a multiple-instance topology (i.e. parameters read from topology desc file). { 'dsHost' : server.getHostname(), 'dsDir' : server.getDir() } This function prepares one or all instances in a topology for the external re-initialisation of replicated suffixes using dsreplication. Location of target host Pathname to installation root Directory server hostname or IP address Directory server port number Only the contents of the specified server will be initialised. DN of the replicated suffix Global Administrator UID Global Administrator password Expected return code value. Default value is 0 'Preparing instance %s:%s for external initialization' \ % (dsInstanceHost,dsInstancePort) { 'name' : 'Pre-Initialize Replication', 'location' : location, 'command' : STAFCmd, 'arguments' : STAFCmdParams } { 'returncode' : STAXCode, 'result' : STAXReason, 'expected' : expectedRC } STAXReason This function ends the process of the external re-initialisation of replicated suffixes in one or all instances in a topology using dsreplication. Location of target host Pathname to installation root Directory server hostname or IP address Directory server port number DN of the replicated suffix Global Administrator UID Global Administrator password Expected return code value. Default value is 0 'Post-processing external initialization of instance %s:%s' \ % (dsInstanceHost,dsInstancePort) { 'name' : 'Post-Initialize Replication', 'location' : location, 'command' : STAFCmd, 'arguments' : STAFCmdParams } { 'returncode' : STAXCode, 'result' : STAXReason, 'expected' : expectedRC } STAXReason This function resets the data in a replicated suffix with the backup of a source server and re-initialises the topology using dsreplication. Location of target host Pathname to installation root Directory server hostname or IP address Directory server port number Bind DN Bind password The name of the backup directory DN of the replicated suffix Global Administrator UID Global Administrator password Expected return code value. Default value is 0 'Resetting %s data in replication topology using backup %s on instance \ %s:%s' % (suffixDn,backupDir,sourceInstanceHost,sourceInstancePort) { 'location' : location, 'dsPath' : dsPath, 'dsInstanceHost' : sourceInstanceHost, 'dsInstancePort' : sourceInstancePort, 'localOnly' : True, 'replicationDnList' : [suffixDn], 'adminUID' : adminUID, 'adminPswd' : adminPswd } { 'location' : location, 'dsPath' : dsPath, 'dsInstanceHost' : sourceInstanceHost, 'dsInstancePort' : sourceInstancePort, 'dsInstanceDn' : sourceInstanceDn, 'dsInstancePswd' : sourceInstancePswd, 'taskID' : 'restore task - %s' % resetCounter, 'backupDir' : backupDir } { 'location' : location, 'dsPath' : dsPath, 'dsInstanceHost' : sourceInstanceHost, 'dsInstancePort' : sourceInstancePort, 'replicationDnList' : [suffixDn], 'adminUID' : adminUID, 'adminPswd' : adminPswd } { 'location' : location, 'dsPath' : dsPath, 'sourceInstanceHost' : sourceInstanceHost, 'sourceInstancePort' : sourceInstancePort, 'replicationDnList' : [suffixDn], 'adminUID' : adminUID, 'adminPswd' : adminPswd } { 'returncode' : STAXCode, 'result' : STAXReason, 'expected' : expectedRC } STAXReason