From 226bad930f2f91e2e487001f1f4e3b0e9531de1d Mon Sep 17 00:00:00 2001 From: Thierry bordaz (tbordaz) Date: Dec 13 2013 09:50:10 +0000 Subject: Ticket 47628: port testcases to new DirSrv interface Bug Description: After ticket https://fedorahosted.org/389/ticket/47625, the DirSrv interface changed. The test cases needs to be ported to this new interface Fix Description: https://fedorahosted.org/389/ticket/47628 Reviewed by: Rich Megginson (thanks Rich) Platforms tested: F17 Flag Day: no Doc impact: no --- diff --git a/dirsrvtests/tickets/constants.py b/dirsrvtests/tickets/constants.py index 44b9b3a..f4fe8fc 100644 --- a/dirsrvtests/tickets/constants.py +++ b/dirsrvtests/tickets/constants.py @@ -5,11 +5,13 @@ Created on Oct 31, 2013 ''' import os from lib389 import DN_DM +from lib389._constants import * +from lib389.properties import * -LOCALHOST = "localhost.localdomain" SUFFIX = 'dc=example,dc=com' PASSWORD = 'password' + # Used for standalone topology HOST_STANDALONE = LOCALHOST PORT_STANDALONE = 33389 @@ -45,22 +47,23 @@ PORT_CONSUMER_2 = 55389 SERVERID_CONSUMER_2 = 'consumer_2' # Each defined instance above must be added in that list -ALL_INSTANCES = [ {'host': HOST_STANDALONE, 'port': PORT_STANDALONE, 'serverid': SERVERID_STANDALONE}, - {'host': HOST_MASTER, 'port': PORT_MASTER, 'serverid': SERVERID_MASTER}, - {'host': HOST_CONSUMER, 'port': PORT_CONSUMER, 'serverid': SERVERID_CONSUMER}, - {'host': HOST_MASTER_1, 'port': PORT_MASTER_1, 'serverid': SERVERID_MASTER_1}, - {'host': HOST_MASTER_2, 'port': PORT_MASTER_2, 'serverid': SERVERID_MASTER_2}, - {'host': HOST_CONSUMER_1, 'port': PORT_CONSUMER_1, 'serverid': SERVERID_CONSUMER_1}, - {'host': HOST_CONSUMER_2, 'port': PORT_CONSUMER_2, 'serverid': SERVERID_CONSUMER_2}, +ALL_INSTANCES = [ {SER_HOST: HOST_STANDALONE, SER_PORT: PORT_STANDALONE, SER_SERVERID_PROP: SERVERID_STANDALONE}, + {SER_HOST: HOST_MASTER, SER_PORT: PORT_MASTER, SER_SERVERID_PROP: SERVERID_MASTER}, + {SER_HOST: HOST_CONSUMER, SER_PORT: PORT_CONSUMER, SER_SERVERID_PROP: SERVERID_CONSUMER}, + {SER_HOST: HOST_MASTER_1, SER_PORT: PORT_MASTER_1, SER_SERVERID_PROP: SERVERID_MASTER_1}, + {SER_HOST: HOST_MASTER_2, SER_PORT: PORT_MASTER_2, SER_SERVERID_PROP: SERVERID_MASTER_2}, + {SER_HOST: HOST_CONSUMER_1, SER_PORT: PORT_CONSUMER_1, SER_SERVERID_PROP: SERVERID_CONSUMER_1}, + {SER_HOST: HOST_CONSUMER_2, SER_PORT: PORT_CONSUMER_2, SER_SERVERID_PROP: SERVERID_CONSUMER_2}, ] # This is a template args_instance = { - 'prefix': os.environ.get('PREFIX', None), - 'backupdir': os.environ.get('BACKUPDIR', "/tmp"), - 'newrootdn': DN_DM, - 'newrootpw': PASSWORD, - 'newhost': LOCALHOST, - 'newport': 389, - 'newinstance': "template", - 'newsuffix': SUFFIX, - 'no_admin': True} + SER_DEPLOYED_DIR: os.environ.get('PREFIX', None), + SER_BACKUP_INST_DIR: os.environ.get('BACKUPDIR', DEFAULT_BACKUPDIR), + SER_ROOT_DN: DN_DM, + SER_ROOT_PW: PASSWORD, + SER_HOST: LOCALHOST, + SER_PORT: DEFAULT_PORT, + SER_SERVERID_PROP: "template", + SER_CREATION_SUFFIX: DEFAULT_SUFFIX} + + diff --git a/dirsrvtests/tickets/finalizer.py b/dirsrvtests/tickets/finalizer.py index 23356dd..72e0c0f 100644 --- a/dirsrvtests/tickets/finalizer.py +++ b/dirsrvtests/tickets/finalizer.py @@ -15,46 +15,27 @@ import pytest from lib389 import DirSrv, Entry, tools from lib389.tools import DirSrvTools from lib389._constants import DN_DM +from lib389.properties import * from constants import * log = logging.getLogger(__name__) global installation_prefix - - -def _remove_instance(args): - - # check the instance parameters - args_instance['newhost'] = args.get('host', None) - if not args_instance['newhost']: - raise ValueError("host not defined") - - args_instance['newport'] = args.get('port', None) - if not args_instance['newport']: - raise ValueError("port not defined") - - args_instance['newinstance'] = args.get('serverid', None) - if not args_instance['newinstance']: - raise ValueError("serverid not defined") - - args_instance['prefix'] = args.get('prefix', None) - - # Get the status of the instance and remove it if it exists - instance = DirSrvTools.existsInstance(args_instance) - if instance: - log.debug("_remove_instance %s %s:%d" % (instance.serverId, instance.host, instance.port)) - DirSrvTools.removeInstance(instance) - +installation_prefix=os.getenv('PREFIX') def test_finalizer(): global installation_prefix # for each defined instance, remove it - for instance in ALL_INSTANCES: + for args_instance in ALL_INSTANCES: if installation_prefix: # overwrite the environment setting - instance['prefix'] = installation_prefix - _remove_instance(instance) + args_instance[SER_DEPLOYED_DIR] = installation_prefix + + instance = DirSrv(verbose=True) + instance.allocate(args_instance) + if instance.exists(): + instance.delete() def run_isolated(): ''' diff --git a/dirsrvtests/tickets/ticket47490_test.py b/dirsrvtests/tickets/ticket47490_test.py index 4fa8ffd..48254b4 100644 --- a/dirsrvtests/tickets/ticket47490_test.py +++ b/dirsrvtests/tickets/ticket47490_test.py @@ -16,6 +16,7 @@ import re from lib389 import DirSrv, Entry, tools from lib389.tools import DirSrvTools from lib389._constants import * +from lib389.properties import * from constants import * logging.getLogger(__name__).setLevel(logging.DEBUG) @@ -30,27 +31,14 @@ MUST_NEW = "(postalAddress $ preferredLocale $ telexNumber)" MAY_OLD = "(postalCode $ street)" MAY_NEW = "(postalCode $ street $ postOfficeBox)" -def _ds_create_instance(args): - # create the standalone instance - return tools.DirSrvTools.createInstance(args, verbose=False) - -def _ds_rebind_instance(dirsrv): - args_instance['prefix'] = dirsrv.prefix - args_instance['backupdir'] = dirsrv.backupdir - args_instance['newrootdn'] = dirsrv.binddn - args_instance['newrootpw'] = dirsrv.bindpw - args_instance['newhost'] = dirsrv.host - args_instance['newport'] = dirsrv.port - args_instance['newinstance'] = dirsrv.serverId - args_instance['newsuffix'] = SUFFIX - args_instance['no_admin'] = True - - return tools.DirSrvTools.createInstance(args_instance) class TopologyMasterConsumer(object): def __init__(self, master, consumer): - self.master = _ds_rebind_instance(master) - self.consumer = _ds_rebind_instance(consumer) + master.open() + self.master = master + + consumer.open() + self.consumer = consumer def pattern_errorlog(file, log_pattern): try: @@ -155,51 +143,63 @@ def topology(request): global installation_prefix if installation_prefix: - args_instance['prefix'] = installation_prefix + args_instance[SER_DEPLOYED_DIR] = installation_prefix + + master = DirSrv(verbose=False) + consumer = DirSrv(verbose=False) # Args for the master instance - args_instance['newhost'] = HOST_MASTER - args_instance['newport'] = PORT_MASTER - args_instance['newinstance'] = SERVERID_MASTER + args_instance[SER_HOST] = HOST_MASTER + args_instance[SER_PORT] = PORT_MASTER + args_instance[SER_SERVERID_PROP] = SERVERID_MASTER args_master = args_instance.copy() + master.allocate(args_master) # Args for the consumer instance - args_instance['newhost'] = HOST_CONSUMER - args_instance['newport'] = PORT_CONSUMER - args_instance['newinstance'] = SERVERID_CONSUMER + args_instance[SER_HOST] = HOST_CONSUMER + args_instance[SER_PORT] = PORT_CONSUMER + args_instance[SER_SERVERID_PROP] = SERVERID_CONSUMER args_consumer = args_instance.copy() + consumer.allocate(args_consumer) # Get the status of the backups - backup_master = DirSrvTools.existsBackup(args_master) - backup_consumer = DirSrvTools.existsBackup(args_consumer) + backup_master = master.checkBackupFS() + backup_consumer = consumer.checkBackupFS() # Get the status of the instance and restart it if it exists - instance_master = DirSrvTools.existsInstance(args_master) + instance_master = master.exists() if instance_master: - DirSrvTools.stop(instance_master, timeout=10) - DirSrvTools.start(instance_master, timeout=10) + master.stop(timeout=10) + master.start(timeout=10) - instance_consumer = DirSrvTools.existsInstance(args_consumer) + instance_consumer = consumer.exists() if instance_consumer: - DirSrvTools.stop(instance_consumer, timeout=10) - DirSrvTools.start(instance_consumer, timeout=10) + consumer.stop(timeout=10) + consumer.start(timeout=10) if backup_master and backup_consumer: # The backups exist, assuming they are correct # we just re-init the instances with them - master = _ds_create_instance(args_master) - consumer = _ds_create_instance(args_consumer) + if not instance_master: + master.create() + # Used to retrieve configuration information (dbdir, confdir...) + master.open() + + if not instance_consumer: + consumer.create() + # Used to retrieve configuration information (dbdir, confdir...) + consumer.open() # restore master from backup - DirSrvTools.stop(master, timeout=10) - DirSrvTools.instanceRestoreFS(master, backup_master) - DirSrvTools.start(master, timeout=10) + master.stop(timeout=10) + master.restoreFS(backup_master) + master.start(timeout=10) # restore consumer from backup - DirSrvTools.stop(consumer, timeout=10) - DirSrvTools.instanceRestoreFS(consumer, backup_consumer) - DirSrvTools.start(consumer, timeout=10) + consumer.stop(timeout=10) + consumer.restoreFS(backup_consumer) + consumer.start(timeout=10) else: # We should be here only in two conditions # - This is the first time a test involve master-consumer @@ -210,19 +210,21 @@ def topology(request): # Remove all the backups. So even if we have a specific backup file # (e.g backup_master) we clear all backups that an instance my have created if backup_master: - DirSrvTools.clearInstanceBackupFS(dirsrv=instance_master) + master.clearBackupFS() if backup_consumer: - DirSrvTools.clearInstanceBackupFS(dirsrv=instance_consumer) + consumer.clearBackupFS() # Remove all the instances if instance_master: - DirSrvTools.removeInstance(instance_master) + master.delete() if instance_consumer: - DirSrvTools.removeInstance(instance_consumer) - - # Create the instance - master = _ds_create_instance(args_master) - consumer = _ds_create_instance(args_consumer) + consumer.delete() + + # Create the instances + master.create() + master.open() + consumer.create() + consumer.open() # # Now prepare the Master-Consumer topology @@ -258,13 +260,13 @@ def topology(request): loop += 1 # Time to create the backups - DirSrvTools.stop(master, timeout=10) - master.backupfile = DirSrvTools.instanceBackupFS(master) - DirSrvTools.start(master, timeout=10) + master.stop(timeout=10) + master.backupfile = master.backupFS() + master.start(timeout=10) - DirSrvTools.stop(consumer, timeout=10) - consumer.backupfile = DirSrvTools.instanceBackupFS(consumer) - DirSrvTools.start(consumer, timeout=10) + consumer.stop(timeout=10) + consumer.backupfile = consumer.backupFS() + consumer.start(timeout=10) # # Here we have two instances master and consumer @@ -641,6 +643,9 @@ def test_ticket47490_nine(topology): res = pattern_errorlog(topology.master.errorlog_file, regex) assert res == None +def test_ticket47490_final(topology): + topology.master.stop(timeout=10) + topology.consumer.stop(timeout=10) def run_isolated(): ''' @@ -664,6 +669,8 @@ def run_isolated(): test_ticket47490_seven(topo) test_ticket47490_eight(topo) test_ticket47490_nine(topo) + + test_ticket47490_final(topo) if __name__ == '__main__': diff --git a/dirsrvtests/tickets/ticket47560_test.py b/dirsrvtests/tickets/ticket47560_test.py index 1561f21..c11233c 100644 --- a/dirsrvtests/tickets/ticket47560_test.py +++ b/dirsrvtests/tickets/ticket47560_test.py @@ -10,32 +10,17 @@ import pytest from lib389 import DirSrv, Entry, tools from lib389.tools import DirSrvTools from lib389._constants import * +from lib389.properties import * from constants import * log = logging.getLogger(__name__) installation_prefix = None -def _ds_create_instance(args): - # create the standalone instance - return tools.DirSrvTools.createInstance(args, verbose=False) - -def _ds_rebind_instance(dirsrv): - args_instance['prefix'] = dirsrv.prefix - args_instance['backupdir'] = dirsrv.backupdir - args_instance['newrootdn'] = dirsrv.binddn - args_instance['newrootpw'] = dirsrv.bindpw - args_instance['newhost'] = dirsrv.host - args_instance['newport'] = dirsrv.port - args_instance['newinstance'] = dirsrv.serverId - args_instance['newsuffix'] = SUFFIX - args_instance['no_admin'] = True - - return tools.DirSrvTools.createInstance(args_instance) - class TopologyStandalone(object): def __init__(self, standalone): - self.standalone = _ds_rebind_instance(standalone) + standalone.open() + self.standalone = standalone @pytest.fixture(scope="module") @@ -49,7 +34,7 @@ def topology(request): If standalone instance exists: restart it If backup of standalone exists: - create or rebind to standalone + create/rebind to standalone restore standalone instance from backup else: @@ -62,33 +47,39 @@ def topology(request): global installation_prefix if installation_prefix: - args_instance['prefix'] = installation_prefix + args_instance[SER_DEPLOYED_DIR] = installation_prefix + + standalone = DirSrv(verbose=False) # Args for the standalone instance - args_instance['newhost'] = HOST_STANDALONE - args_instance['newport'] = PORT_STANDALONE - args_instance['newinstance'] = SERVERID_STANDALONE + args_instance[SER_HOST] = HOST_STANDALONE + args_instance[SER_PORT] = PORT_STANDALONE + args_instance[SER_SERVERID_PROP] = SERVERID_STANDALONE args_standalone = args_instance.copy() - + standalone.allocate(args_standalone) + # Get the status of the backups - backup_standalone = DirSrvTools.existsBackup(args_standalone) + backup_standalone = standalone.checkBackupFS() # Get the status of the instance and restart it if it exists - instance_standalone = DirSrvTools.existsInstance(args_standalone) + instance_standalone = standalone.exists() if instance_standalone: # assuming the instance is already stopped, just wait 5 sec max - DirSrvTools.stop(instance_standalone, timeout=5) - DirSrvTools.start(instance_standalone, timeout=10) + standalone.stop(timeout=5) + standalone.start(timeout=10) if backup_standalone: # The backup exist, assuming it is correct # we just re-init the instance with it - standalone = _ds_create_instance(args_standalone) + if not instance_standalone: + standalone.create() + # Used to retrieve configuration information (dbdir, confdir...) + standalone.open() # restore standalone instance from backup - DirSrvTools.stop(standalone, timeout=10) - DirSrvTools.instanceRestoreFS(standalone, backup_standalone) - DirSrvTools.start(standalone, timeout=10) + standalone.stop(timeout=10) + standalone.restoreFS(backup_standalone) + standalone.start(timeout=10) else: # We should be here only in two conditions @@ -99,19 +90,22 @@ def topology(request): # Remove the backup. So even if we have a specific backup file # (e.g backup_standalone) we clear backup that an instance may have created if backup_standalone: - DirSrvTools.clearInstanceBackupFS(dirsrv=instance_standalone) + standalone.clearBackupFS() # Remove the instance if instance_standalone: - DirSrvTools.removeInstance(instance_standalone) + standalone.delete() # Create the instance - standalone = _ds_create_instance(args_standalone) + standalone.create() + + # Used to retrieve configuration information (dbdir, confdir...) + standalone.open() # Time to create the backups - DirSrvTools.stop(standalone, timeout=10) - standalone.backupfile = DirSrvTools.instanceBackupFS(standalone) - DirSrvTools.start(standalone, timeout=10) + standalone.stop(timeout=10) + standalone.backupfile = standalone.backupFS() + standalone.start(timeout=10) # # Here we have standalone instance up and running @@ -155,13 +149,13 @@ def test_ticket47560(topology): MEMBEROF_PLUGIN_DN = 'cn=MemberOf Plugin,cn=plugins,cn=config' replace = [(ldap.MOD_REPLACE, 'nsslapd-pluginEnabled', value)] topology.standalone.modify_s(MEMBEROF_PLUGIN_DN, replace) - DirSrvTools.stop(topology.standalone, verbose=False, timeout=120) + topology.standalone.stop(timeout=120) time.sleep(1) - DirSrvTools.start(topology.standalone, verbose=False, timeout=120) + topology.standalone.start(timeout=120) time.sleep(3) # need to reopen a connection toward the instance - topology.standalone = _ds_rebind_instance(topology.standalone) + topology.standalone.open() def _test_ticket47560_setup(): """ @@ -285,7 +279,7 @@ def test_ticket47560(topology): assert result_successful == True def test_ticket47560_final(topology): - DirSrvTools.stop(topology.standalone, timeout=10) + topology.standalone.stop(timeout=10)