|
|
@@ -14,6 +14,10 @@ from lib389.topologies import topology_m2
|
|
|
|
|
|
from lib389._constants import DN_CONFIG, DEFAULT_SUFFIX
|
|
|
|
|
|
+from lib389.idm.user import UserAccounts, TEST_USER_PROPERTIES
|
|
|
+
|
|
|
+from lib389.config import LDBMConfig
|
|
|
+
|
|
|
USER_DN = 'uid=test_user,%s' % DEFAULT_SUFFIX
|
|
|
|
|
|
logging.getLogger(__name__).setLevel(logging.INFO)
|
|
|
@@ -32,37 +36,7 @@ def big_file():
|
|
|
return TEMP_BIG_FILE
|
|
|
|
|
|
|
|
|
[email protected]
|
|
|
-def test_user(topology_m2):
|
|
|
- """Add and remove test user"""
|
|
|
-
|
|
|
- try:
|
|
|
- topology_m2.ms["master1"].add_s(Entry((USER_DN, {
|
|
|
- 'uid': 'test_user',
|
|
|
- 'givenName': 'test_user',
|
|
|
- 'objectclass': ['top', 'person',
|
|
|
- 'organizationalPerson',
|
|
|
- 'inetorgperson'],
|
|
|
- 'cn': 'test_user',
|
|
|
- 'sn': 'test_user'})))
|
|
|
- time.sleep(1)
|
|
|
- except ldap.LDAPError as e:
|
|
|
- log.fatal('Failed to add user (%s): error (%s)' % (USER_DN,
|
|
|
- e.message['desc']))
|
|
|
- raise
|
|
|
-
|
|
|
- def fin():
|
|
|
- try:
|
|
|
- topology_m2.ms["master1"].delete_s(USER_DN)
|
|
|
- time.sleep(1)
|
|
|
- except ldap.LDAPError as e:
|
|
|
- log.fatal('Failed to delete user (%s): error (%s)' % (
|
|
|
- USER_DN,
|
|
|
- e.message['desc']))
|
|
|
- raise
|
|
|
-
|
|
|
-
|
|
|
-def test_maxbersize_repl(topology_m2, test_user, big_file):
|
|
|
+def test_maxbersize_repl(topology_m2, big_file):
|
|
|
"""maxbersize is ignored in the replicated operations.
|
|
|
|
|
|
:id: ad57de60-7d56-4323-bbca-5556e5cdb126
|
|
|
@@ -80,64 +54,38 @@ def test_maxbersize_repl(topology_m2, test_user, big_file):
|
|
|
4. The big value is successfully replicated to master2
|
|
|
"""
|
|
|
|
|
|
+ users_m1 = UserAccounts(topology_m2.ms["master1"], DEFAULT_SUFFIX)
|
|
|
+ users_m2 = UserAccounts(topology_m2.ms["master2"], DEFAULT_SUFFIX)
|
|
|
+
|
|
|
+ user_m1 = users_m1.create(properties=TEST_USER_PROPERTIES)
|
|
|
+ time.sleep(2)
|
|
|
+ user_m2 = users_m2.get(dn=user_m1.dn)
|
|
|
+
|
|
|
log.info("Set nsslapd-maxbersize: 20K to master2")
|
|
|
- try:
|
|
|
- topology_m2.ms["master2"].modify_s("cn=config", [(ldap.MOD_REPLACE,
|
|
|
- 'nsslapd-maxbersize', '20480')])
|
|
|
- except ldap.LDAPError as e:
|
|
|
- log.error('Failed to set nsslapd-maxbersize == 20480: error ' +
|
|
|
- e.message['desc'])
|
|
|
- raise
|
|
|
+ topology_m2.ms["master2"].config.set('nsslapd-maxbersize', '20480')
|
|
|
|
|
|
- topology_m2.ms["master2"].restart(20)
|
|
|
+ topology_m2.ms["master2"].restart()
|
|
|
|
|
|
log.info('Try to add attribute with a big value to master2 - expect to FAIL')
|
|
|
with pytest.raises(ldap.SERVER_DOWN):
|
|
|
- topology_m2.ms["master2"].modify_s(USER_DN, [(ldap.MOD_REPLACE,
|
|
|
- 'jpegphoto', big_file)])
|
|
|
+ user_m2.add('jpegphoto', big_file)
|
|
|
|
|
|
- topology_m2.ms["master2"].restart(20)
|
|
|
- topology_m2.ms["master1"].restart(20)
|
|
|
+ topology_m2.ms["master2"].restart()
|
|
|
+ topology_m2.ms["master1"].restart()
|
|
|
|
|
|
log.info('Try to add attribute with a big value to master1 - expect to PASS')
|
|
|
- try:
|
|
|
- topology_m2.ms["master1"].modify_s(USER_DN, [(ldap.MOD_REPLACE,
|
|
|
- 'jpegphoto', big_file)])
|
|
|
- except ldap.SERVER_DOWN as e:
|
|
|
- log.fatal('Failed to add a big attribute, error: ' + e.message['desc'])
|
|
|
- raise
|
|
|
+ user_m1.add('jpegphoto', big_file)
|
|
|
|
|
|
- time.sleep(1)
|
|
|
+ time.sleep(2)
|
|
|
|
|
|
log.info('Check if a big value was successfully added to master1')
|
|
|
- try:
|
|
|
- entries = topology_m2.ms["master1"].search_s(USER_DN, ldap.SCOPE_BASE,
|
|
|
- '(cn=*)',
|
|
|
- ['jpegphoto'])
|
|
|
- assert entries[0].data['jpegphoto']
|
|
|
- except ldap.LDAPError as e:
|
|
|
- log.fatal('Search failed, error: ' + e.message['desc'])
|
|
|
- raise
|
|
|
+
|
|
|
+ photo_m1 = user_m1.get_attr_vals('jpegphoto')
|
|
|
|
|
|
log.info('Check if a big value was successfully replicated to master2')
|
|
|
- try:
|
|
|
- entries = topology_m2.ms["master2"].search_s(USER_DN, ldap.SCOPE_BASE,
|
|
|
- '(cn=*)',
|
|
|
- ['jpegphoto'])
|
|
|
- assert entries[0].data['jpegphoto']
|
|
|
- except ldap.LDAPError as e:
|
|
|
- log.fatal('Search failed, error: ' + e.message['desc'])
|
|
|
- raise
|
|
|
-
|
|
|
- log.info("Set nsslapd-maxbersize: 2097152 (default) to master2")
|
|
|
- try:
|
|
|
- topology_m2.ms["master2"].modify_s("cn=config", [(ldap.MOD_REPLACE,
|
|
|
- 'nsslapd-maxbersize', '2097152')])
|
|
|
- except ldap.LDAPError as e:
|
|
|
- log.error('Failed to set nsslapd-maxbersize == 2097152 error ' +
|
|
|
- e.message['desc'])
|
|
|
- raise
|
|
|
+ photo_m2 = user_m2.get_attr_vals('jpegphoto')
|
|
|
|
|
|
+ assert photo_m2 == photo_m1
|
|
|
|
|
|
def test_config_listen_backport_size(topology_m2):
|
|
|
"""Check that nsslapd-listen-backlog-size acted as expected
|
|
|
@@ -158,46 +106,16 @@ def test_config_listen_backport_size(topology_m2):
|
|
|
5. nsslapd-listen-backlog-size should be successfully set
|
|
|
"""
|
|
|
|
|
|
- try:
|
|
|
- entry = topology_m2.ms["master1"].search_s(DN_CONFIG, ldap.SCOPE_BASE, 'objectclass=top',
|
|
|
- ['nsslapd-listen-backlog-size'])
|
|
|
- default_val = entry[0].data['nsslapd-listen-backlog-size'][0]
|
|
|
- assert default_val, 'Failed to get nsslapd-listen-backlog-size from config'
|
|
|
- except ldap.LDAPError as e:
|
|
|
- log.fatal('Failed to search config, error: ' + e.message('desc'))
|
|
|
- raise
|
|
|
-
|
|
|
- try:
|
|
|
- topology_m2.ms["master1"].modify_s(DN_CONFIG, [(ldap.MOD_REPLACE,
|
|
|
- 'nsslapd-listen-backlog-size',
|
|
|
- '256')])
|
|
|
- except ldap.LDAPError as e:
|
|
|
- log.fatal('Failed to modify config, error: ' + e.message('desc'))
|
|
|
- raise
|
|
|
-
|
|
|
- try:
|
|
|
- topology_m2.ms["master1"].modify_s(DN_CONFIG, [(ldap.MOD_REPLACE,
|
|
|
- 'nsslapd-listen-backlog-size',
|
|
|
- '-1')])
|
|
|
- except ldap.LDAPError as e:
|
|
|
- log.fatal('Failed to modify config(negative value), error: ' +
|
|
|
- e.message('desc'))
|
|
|
- raise
|
|
|
+ default_val = topology_m2.ms["master1"].config.get_attr_val_bytes('nsslapd-listen-backlog-size')
|
|
|
+
|
|
|
+ topology_m2.ms["master1"].config.replace('nsslapd-listen-backlog-size', '256')
|
|
|
+
|
|
|
+ topology_m2.ms["master1"].config.replace('nsslapd-listen-backlog-size', '-1')
|
|
|
|
|
|
with pytest.raises(ldap.LDAPError):
|
|
|
- topology_m2.ms["master1"].modify_s(DN_CONFIG, [(ldap.MOD_REPLACE,
|
|
|
- 'nsslapd-listen-backlog-size',
|
|
|
- 'ZZ')])
|
|
|
- log.fatal('Invalid value was successfully added')
|
|
|
+ topology_m2.ms["master1"].config.replace('nsslapd-listen-backlog-size', 'ZZ')
|
|
|
|
|
|
- # Cleanup - undo what we've done
|
|
|
- try:
|
|
|
- topology_m2.ms["master1"].modify_s(DN_CONFIG, [(ldap.MOD_REPLACE,
|
|
|
- 'nsslapd-listen-backlog-size',
|
|
|
- default_val)])
|
|
|
- except ldap.LDAPError as e:
|
|
|
- log.fatal('Failed to reset config, error: ' + e.message('desc'))
|
|
|
- raise
|
|
|
+ topology_m2.ms["master1"].config.replace('nsslapd-listen-backlog-size', default_val)
|
|
|
|
|
|
|
|
|
def test_config_deadlock_policy(topology_m2):
|
|
|
@@ -220,47 +138,25 @@ def test_config_deadlock_policy(topology_m2):
|
|
|
5. nsslapd-db-deadlock-policy should be successfully set
|
|
|
"""
|
|
|
|
|
|
- LDBM_DN = 'cn=config,cn=ldbm database,cn=plugins,cn=config'
|
|
|
- default_val = '9'
|
|
|
+ default_val = b'9'
|
|
|
+
|
|
|
+ ldbmconfig = LDBMConfig(topology_m2.ms["master1"])
|
|
|
+
|
|
|
+ deadlock_policy = ldbmconfig.get_attr_val_bytes('nsslapd-db-deadlock-policy')
|
|
|
+ assert deadlock_policy == default_val
|
|
|
|
|
|
- try:
|
|
|
- entry = topology_m2.ms["master1"].search_s(LDBM_DN, ldap.SCOPE_BASE, 'objectclass=top',
|
|
|
- ['nsslapd-db-deadlock-policy'])
|
|
|
- val = entry[0].data['nsslapd-db-deadlock-policy'][0]
|
|
|
- assert val, 'Failed to get nsslapd-db-deadlock-policy from config'
|
|
|
- assert val == default_val, 'The wrong default value was present'
|
|
|
- except ldap.LDAPError as e:
|
|
|
- log.fatal('Failed to search config, error: ' + e.message('desc'))
|
|
|
- raise
|
|
|
|
|
|
# Try a range of valid values
|
|
|
for val in ('0', '5', '9'):
|
|
|
- try:
|
|
|
- topology_m2.ms["master1"].modify_s(LDBM_DN, [(ldap.MOD_REPLACE,
|
|
|
- 'nsslapd-db-deadlock-policy',
|
|
|
- val)])
|
|
|
- except ldap.LDAPError as e:
|
|
|
- log.fatal('Failed to modify config: nsslapd-db-deadlock-policy to (%s), error: %s' %
|
|
|
- (val, e.message('desc')))
|
|
|
- raise
|
|
|
+ ldbmconfig.replace('nsslapd-db-deadlock-policy', val)
|
|
|
|
|
|
# Try a range of invalid values
|
|
|
for val in ('-1', '10'):
|
|
|
with pytest.raises(ldap.LDAPError):
|
|
|
- topology_m2.ms["master1"].modify_s(LDBM_DN, [(ldap.MOD_REPLACE,
|
|
|
- 'nsslapd-db-deadlock-policy',
|
|
|
- val)])
|
|
|
- log.fatal('Able to add invalid value to nsslapd-db-deadlock-policy(%s)' % (val))
|
|
|
+ ldbmconfig.replace('nsslapd-db-deadlock-policy', val)
|
|
|
|
|
|
# Cleanup - undo what we've done
|
|
|
- try:
|
|
|
- topology_m2.ms["master1"].modify_s(LDBM_DN, [(ldap.MOD_REPLACE,
|
|
|
- 'nsslapd-db-deadlock-policy',
|
|
|
- default_val)])
|
|
|
- except ldap.LDAPError as e:
|
|
|
- log.fatal('Failed to reset nsslapd-db-deadlock-policy to the default value(%s), error: %s' %
|
|
|
- (default_val, e.message('desc')))
|
|
|
- raise
|
|
|
+ ldbmconfig.replace('nsslapd-db-deadlock-policy', deadlock_policy)
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|