See <http://vm-058-081.abc.idm.lab.eng.brq.redhat.com:8080/job/389-DS-NIGHTLY/127/> ------------------------------------------ [...truncated 4034 lines...] on MASTER2 (even if on MASTER2 47653 is NOT fixed). Then update on MASTER2 and check the update on MASTER1 It checks that, bound as bind_entry, - we can not ADD an entry without the proper SELFDN aci. - with the proper ACI we can not ADD with '\''member'\'' attribute - with the proper ACI and '\''member'\'' it succeeds to ADD '\'''\'''\'' topology.master1.log.info("\n\n######################### ADD ######################\n") # bind as bind_entry topology.master1.log.info("Bind as %s" % BIND_DN) topology.master1.simple_bind_s(BIND_DN, BIND_PW) # Prepare the entry with multivalued members entry_with_members = Entry(ENTRY_DN) entry_with_members.setValues('\''objectclass'\'', '\''top'\'', '\''person'\'', '\''OCticket47653'\'') entry_with_members.setValues('\''sn'\'', ENTRY_NAME) entry_with_members.setValues('\''cn'\'', ENTRY_NAME) entry_with_members.setValues('\''postalAddress'\'', '\''here'\'') entry_with_members.setValues('\''postalCode'\'', '\''1234'\'') members = [] for cpt in range(MAX_OTHERS): name = "%s%d" % (OTHER_NAME, cpt) members.append("cn=%s,%s" % (name, SUFFIX)) members.append(BIND_DN) entry_with_members.setValues('\''member'\'', members) # Prepare the entry with only one member value entry_with_member = Entry(ENTRY_DN) entry_with_member.setValues('\''objectclass'\'', '\''top'\'', '\''person'\'', '\''OCticket47653'\'') entry_with_member.setValues('\''sn'\'', ENTRY_NAME) entry_with_member.setValues('\''cn'\'', ENTRY_NAME) entry_with_member.setValues('\''postalAddress'\'', '\''here'\'') entry_with_member.setValues('\''postalCode'\'', '\''1234'\'') member = [] member.append(BIND_DN) entry_with_member.setValues('\''member'\'', member) # entry to add WITH member being BIND_DN but WITHOUT the ACI -> ldap.INSUFFICIENT_ACCESS try: topology.master1.log.info("Try to add Add %s (aci is missing): %r" % (ENTRY_DN, entry_with_member)) topology.master1.add_s(entry_with_member) except Exception as e: topology.master1.log.info("Exception (expected): %s" % type(e).__name__) assert isinstance(e, ldap.INSUFFICIENT_ACCESS) # Ok Now add the proper ACI topology.master1.log.info("Bind as %s and add the ADD SELFDN aci" % DN_DM) topology.master1.simple_bind_s(DN_DM, PASSWORD) ACI_TARGET = "(target = \"ldap:///cn=*,%s\")" % SUFFIX ACI_TARGETFILTER = "(targetfilter =\"(objectClass=%s)\")" % OC_NAME ACI_ALLOW = "(version 3.0; acl \"SelfDN add\"; allow (add)" ACI_SUBJECT = " userattr = \"member#selfDN\";)" ACI_BODY = ACI_TARGET + ACI_TARGETFILTER + ACI_ALLOW + ACI_SUBJECT mod = [(ldap.MOD_ADD, '\''aci'\'', ACI_BODY)] topology.master1.modify_s(SUFFIX, mod) time.sleep(1) # bind as bind_entry topology.master1.log.info("Bind as %s" % BIND_DN) topology.master1.simple_bind_s(BIND_DN, BIND_PW) # entry to add WITHOUT member and WITH the ACI -> ldap.INSUFFICIENT_ACCESS try: topology.master1.log.info("Try to add Add %s (member is missing)" % ENTRY_DN) topology.master1.add_s(Entry((ENTRY_DN, { '\''objectclass'\'': ENTRY_OC.split(), '\''sn'\'': ENTRY_NAME, '\''cn'\'': ENTRY_NAME, '\''postalAddress'\'': '\''here'\'', '\''postalCode'\'': '\''1234'\''}))) except Exception as e: topology.master1.log.info("Exception (expected): %s" % type(e).__name__) assert isinstance(e, ldap.INSUFFICIENT_ACCESS) # entry to add WITH memberS and WITH the ACI -> ldap.INSUFFICIENT_ACCESS # member should contain only one value try: topology.master1.log.info("Try to add Add %s (with several member values)" % ENTRY_DN) topology.master1.add_s(entry_with_members) except Exception as e: topology.master1.log.info("Exception (expected): %s" % type(e).__name__) assert isinstance(e, ldap.INSUFFICIENT_ACCESS) topology.master1.log.info("Try to add Add %s should be successful" % ENTRY_DN) try: topology.master1.add_s(entry_with_member) except ldap.LDAPError as e: topology.master1.log.info("Failed to add entry, error: " + e.message['\''desc'\'']) > assert False E assert False tickets/ticket47653MMR_test.py:305: AssertionError ----------------------------- Captured stderr call ----------------------------- INFO:lib389: ######################### ADD ###################### INFO:lib389:Bind as cn=bind_entry, dc=example,dc=com INFO:lib389:Try to add Add cn=test_entry, dc=example,dc=com (aci is missing): dn: cn=test_entry, dc=example,dc=com cn: test_entry member: cn=bind_entry, dc=example,dc=com objectclass: top objectclass: person objectclass: OCticket47653 postalAddress: here postalCode: 1234 sn: test_entry INFO:lib389:Exception (expected): INSUFFICIENT_ACCESS INFO:lib389:Bind as cn=Directory Manager and add the ADD SELFDN aci INFO:lib389:Bind as cn=bind_entry, dc=example,dc=com INFO:lib389:Try to add Add cn=test_entry, dc=example,dc=com (member is missing) INFO:lib389:Exception (expected): INSUFFICIENT_ACCESS INFO:lib389:Try to add Add cn=test_entry, dc=example,dc=com (with several member values) INFO:lib389:Exception (expected): INSUFFICIENT_ACCESS INFO:lib389:Try to add Add cn=test_entry, dc=example,dc=com should be successful INFO:lib389:Failed to add entry, error: Insufficient access ___________________________ test_ticket47653_modify ____________________________ topology = <tickets.ticket47653MMR_test.TopologyMaster1Master2 object at 0x7f2901017f10> def test_ticket47653_modify(topology): '\'''\'''\'' This test MOD an entry on MASTER1 where 47653 is fixed. Then it checks that update is replicated on MASTER2 (even if on MASTER2 47653 is NOT fixed). Then update on MASTER2 (bound as BIND_DN). This update may fail whether or not 47653 is fixed on MASTER2 It checks that, bound as bind_entry, - we can not modify an entry without the proper SELFDN aci. - adding the ACI, we can modify the entry '\'''\'''\'' # bind as bind_entry topology.master1.log.info("Bind as %s" % BIND_DN) topology.master1.simple_bind_s(BIND_DN, BIND_PW) topology.master1.log.info("\n\n######################### MODIFY ######################\n") # entry to modify WITH member being BIND_DN but WITHOUT the ACI -> ldap.INSUFFICIENT_ACCESS try: topology.master1.log.info("Try to modify %s (aci is missing)" % ENTRY_DN) mod = [(ldap.MOD_REPLACE, '\''postalCode'\'', '\''9876'\'')] topology.master1.modify_s(ENTRY_DN, mod) except Exception as e: topology.master1.log.info("Exception (expected): %s" % type(e).__name__) assert isinstance(e, ldap.INSUFFICIENT_ACCESS) # Ok Now add the proper ACI topology.master1.log.info("Bind as %s and add the WRITE SELFDN aci" % DN_DM) topology.master1.simple_bind_s(DN_DM, PASSWORD) ACI_TARGET = "(target = \"ldap:///cn=*,%s\")" % SUFFIX ACI_TARGETATTR = "(targetattr = *)" ACI_TARGETFILTER = "(targetfilter =\"(objectClass=%s)\")" % OC_NAME ACI_ALLOW = "(version 3.0; acl \"SelfDN write\"; allow (write)" ACI_SUBJECT = " userattr = \"member#selfDN\";)" ACI_BODY = ACI_TARGET + ACI_TARGETATTR + ACI_TARGETFILTER + ACI_ALLOW + ACI_SUBJECT mod = [(ldap.MOD_ADD, '\''aci'\'', ACI_BODY)] topology.master1.modify_s(SUFFIX, mod) time.sleep(1) # bind as bind_entry topology.master1.log.info("M1: Bind as %s" % BIND_DN) topology.master1.simple_bind_s(BIND_DN, BIND_PW) # modify the entry and checks the value topology.master1.log.info("M1: Try to modify %s. It should succeeds" % ENTRY_DN) mod = [(ldap.MOD_REPLACE, '\''postalCode'\'', '\''1928'\'')] > topology.master1.modify_s(ENTRY_DN, mod) tickets/ticket47653MMR_test.py:387: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../../../lib389/lib389/__init__.py:159: in inner return f(*args, **kwargs) /usr/lib64/python2.7/site-packages/ldap/ldapobject.py:402: in modify_s return self.result(msgid,all=1,timeout=self.timeout) ../../../lib389/lib389/__init__.py:127: in inner objtype, data = f(*args, **kwargs) /usr/lib64/python2.7/site-packages/ldap/ldapobject.py:503: in result resp_type, resp_data, resp_msgid = self.result2(msgid,all,timeout) ../../../lib389/lib389/__init__.py:159: in inner return f(*args, **kwargs) /usr/lib64/python2.7/site-packages/ldap/ldapobject.py:507: in result2 resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all,timeout) ../../../lib389/lib389/__init__.py:159: in inner return f(*args, **kwargs) /usr/lib64/python2.7/site-packages/ldap/ldapobject.py:514: in result3 resp_ctrl_classes=resp_ctrl_classes ../../../lib389/lib389/__init__.py:159: in inner return f(*args, **kwargs) /usr/lib64/python2.7/site-packages/ldap/ldapobject.py:521: in result4 ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop) ../../../lib389/lib389/__init__.py:159: in inner return f(*args, **kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <lib389.DirSrv instance at 0x7f290115dd88> func = <built-in method result4 of LDAP object at 0x7f2901c1b4e0> args = (37, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None e = INSUFFICIENT_ACCESS({'\''desc'\'': '\''Insufficient access'\''},) def _ldap_call(self,func,*args,**kwargs): """ Wrapper method mainly for serializing calls into OpenLDAP libs and trace logs """ self._ldap_object_lock.acquire() if __debug__: if self._trace_level>=1: self._trace_file.write('\''*** %s %s - %s\n%s\n'\'' % ( repr(self), self._uri, '\''.'\''.join((self.__class__.__name__,func.__name__)), pprint.pformat((args,kwargs)) )) if self._trace_level>=9: traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file) diagnostic_message_success = None try: try: > result = func(*args,**kwargs) E INSUFFICIENT_ACCESS: {'\''desc'\'': '\''Insufficient access'\''} /usr/lib64/python2.7/site-packages/ldap/ldapobject.py:106: INSUFFICIENT_ACCESS ----------------------------- Captured stderr call ----------------------------- INFO:lib389:Bind as cn=bind_entry, dc=example,dc=com INFO:lib389: ######################### MODIFY ###################### INFO:lib389:Try to modify cn=test_entry, dc=example,dc=com (aci is missing) INFO:lib389:Exception (expected): INSUFFICIENT_ACCESS INFO:lib389:Bind as cn=Directory Manager and add the WRITE SELFDN aci INFO:lib389:M1: Bind as cn=bind_entry, dc=example,dc=com INFO:lib389:M1: Try to modify cn=test_entry, dc=example,dc=com. It should succeeds =================== 2 failed, 522 passed in 9828.58 seconds ====================' + '[' 1 -ne 0 ']' + echo CI Tests 'FAILED!' CI Tests FAILED! + echo ============================= test session starts ============================== platform linux2 -- Python 2.7.12, pytest-2.9.2, py-1.4.31, pluggy-0.3.1 -- /usr/bin/python2 cachedir: .cache rootdir: <http://vm-058-081.abc.idm.lab.eng.brq.redhat.com:8080/job/389-DS-NIGHTLY/ws/source/ds/dirsrvtests/tests,> inifile: plugins: sourceorder-0.5, multihost-1.0 collecting ... collected 524 items tickets/ticket1347760_test.py::test_ticket1347760 PASSED tickets/ticket365_test.py::test_ticket365 PASSED tickets/ticket397_test.py::test_397 PASSED tickets/ticket47313_test.py::test_ticket47313_run PASSED tickets/ticket47384_test.py::test_ticket47384 PASSED tickets/ticket47431_test.py::test_ticket47431_0 PASSED tickets/ticket47431_test.py::test_ticket47431_1 PASSED tickets/ticket47431_test.py::test_ticket47431_2 PASSED tickets/ticket47431_test.py::test_ticket47431_3 PASSED tickets/ticket47462_test.py::test_ticket47462 PASSED tickets/ticket47490_test.py::test_ticket47490_init PASSED tickets/ticket47490_test.py::test_ticket47490_one PASSED tickets/ticket47490_test.py::test_ticket47490_two PASSED tickets/ticket47490_test.py::test_ticket47490_three PASSED tickets/ticket47490_test.py::test_ticket47490_four PASSED tickets/ticket47490_test.py::test_ticket47490_five PASSED tickets/ticket47490_test.py::test_ticket47490_six PASSED tickets/ticket47490_test.py::test_ticket47490_seven PASSED tickets/ticket47490_test.py::test_ticket47490_eight PASSED tickets/ticket47490_test.py::test_ticket47490_nine PASSED tickets/ticket47536_test.py::test_ticket47536 PASSED tickets/ticket47553_test.py::test_ticket47553 PASSED tickets/ticket47560_test.py::test_ticket47560 PASSED tickets/ticket47573_test.py::test_ticket47573_init PASSED tickets/ticket47573_test.py::test_ticket47573_one PASSED tickets/ticket47573_test.py::test_ticket47573_two PASSED tickets/ticket47573_test.py::test_ticket47573_three PASSED tickets/ticket47619_test.py::test_ticket47619_init PASSED tickets/ticket47619_test.py::test_ticket47619_create_index PASSED tickets/ticket47619_test. py::test_ticket47619_reindex PASSED tickets/ticket47619_test.py::test_ticket47619_check_indexed_search PASSED tickets/ticket47640_test.py::test_ticket47640 PASSED tickets/ticket47653MMR_test.py::test_ticket47653_init PASSED tickets/ticket47653MMR_test.py::test_ticket47653_add FAILED tickets/ticket47653MMR_test.py::test_ticket47653_modify FAILED tickets/ticket47653_test.py::test_ticket47653_init PASSED tickets/ticket47653_test.py::test_ticket47653_add PASSED tickets/ticket47653_test.py::test_ticket47653_search PASSED tickets/ticket47653_test.py::test_ticket47653_modify PASSED tickets/ticket47653_test.py::test_ticket47653_delete PASSED tickets/ticket47669_test.py::test_ticket47669_init PASSED tickets/ticket47669_test.py::test_ticket47669_changelog_maxage PASSED tickets/ticket47669_test.py::test_ticket47669_changelog_triminterval PASSED tickets/ticket47669_test.py::test_ticket47669_changelog_compactdbinterval PASSED tickets/ticket47669_test.py::test_ticket47669_retrochangelog_maxage PASSED tickets/ticket47676_test.py::test_ticket47676_init PASSED tickets/ticket47676_test.py::test_ticket47676_skip_oc_at PASSED tickets/ticket47676_test.py::test_ticket47676_reject_action PASSED tickets/ticket47714_test.py::test_ticket47714_init PASSED tickets/ticket47714_test.py::test_ticket47714_run_0 PASSED tickets/ticket47714_test.py::test_ticket47714_run_1 PASSED tickets/ticket47721_test.py::test_ticket47721_init PASSED tickets/ticket47721_test.py::test_ticket47721_0 PASSED tickets/ticket47721_test.py::test_ticket47721_1 PASSED tickets/ticket47721_test.py::test_ticket47721_2 PASSED tickets/ticket47721_test.py::test_ticket47721_3 PASSED tickets/ticket47721_test.py::test_ticket47721_4 PASSED tickets/ticket47781_test.py::test_ticket47781 PASSED tickets/ticket47787_test.py::test_ticket47787_init PASSED tickets/ticket47787_test.py::test_ticket47787_2 PASSED tickets/ticket47808_test.py::test_ticket47808_run PASSED tickets/ticket47815_test.py::test_ticket47815 PASSED tickets/ticket47819_test.py::test_ticket47819 PASSED tickets/ticket47823 _test.py::test_ticket47823_init PASSED tickets/ticket47823_test.py::test_ticket47823_one_container_add PASSED tickets/ticket47823_test.py::test_ticket47823_one_container_mod PASSED tickets/ticket47823_test.py::test_ticket47823_one_container_modrdn PASSED tickets/ticket47823_test.py::test_ticket47823_multi_containers_add PASSED tickets/ticket47823_test.py::test_ticket47823_multi_containers_mod PASSED tickets/ticket47823_test.py::test_ticket47823_multi_containers_modrdn PASSED tickets/ticket47823_test.py::test_ticket47823_across_multi_containers_add PASSED tickets/ticket47823_test.py::test_ticket47823_across_multi_containers_mod PASSED tickets/ticket47823_test.py::test_ticket47823_across_multi_containers_modrdn PASSED tickets/ticket47823_test.py::test_ticket47823_invalid_config_1 PASSED tickets/ticket47823_test.py::test_ticket47823_invalid_config_2 PASSED tickets/ticket47823_test.py::test_ticket47823_invalid_config_3 PASSED tickets/ticket47823_test.py::test_ticket47823_invalid_config_4 PASSED tickets/ticket47823_test.py::test_ticket47823_invalid_config_5 PASSED tickets/ticket47823_test.py::test_ticket47823_invalid_config_6 PASSED tickets/ticket47823_test.py::test_ticket47823_invalid_config_7 PASSED tickets/ticket47828_test.py::test_ticket47828_init PASSED tickets/ticket47828_test.py::test_ticket47828_run_0 PASSED tickets/ticket47828_test.py::test_ticket47828_run_1 PASSED tickets/ticket47828_test.py::test_ticket47828_run_2 PASSED tickets/ticket47828_test.py::test_ticket47828_run_3 PASSED tickets/ticket47828_test.py::test_ticket47828_run_4 PASSED tickets/ticket47828_test.py::test_ticket47828_run_5 PASSED tickets/ticket47828_test.py::test_ticket47828_run_6 PASSED tickets/ticket47828_test.py::test_ticket47828_run_7 PASSED tickets/ticket47828_test.py::test_ticket47828_run_8 PASSED tickets/ticket47828_test.py::test_ticket47828_run_9 PASSED tickets/ticket47828_test.py::test_ticket47828_run_10 PASSED tickets/ticket47828_test.py::test_ticket47828_run_11 PASSED tickets/ticket47828_test.py::test_ticket47828_run_12 PASSED tick ets/ticket47828_test.py::test_ticket47828_run_13 PASSED tickets/ticket47828_test.py::test_ticket47828_run_14 PASSED tickets/ticket47828_test.py::test_ticket47828_run_15 PASSED tickets/ticket47828_test.py::test_ticket47828_run_16 PASSED tickets/ticket47828_test.py::test_ticket47828_run_17 PASSED tickets/ticket47828_test.py::test_ticket47828_run_18 PASSED tickets/ticket47828_test.py::test_ticket47828_run_19 PASSED tickets/ticket47828_test.py::test_ticket47828_run_20 PASSED tickets/ticket47828_test.py::test_ticket47828_run_21 PASSED tickets/ticket47828_test.py::test_ticket47828_run_22 PASSED tickets/ticket47828_test.py::test_ticket47828_run_23 PASSED tickets/ticket47828_test.py::test_ticket47828_run_24 PASSED tickets/ticket47828_test.py::test_ticket47828_run_25 PASSED tickets/ticket47828_test.py::test_ticket47828_run_26 PASSED tickets/ticket47828_test.py::test_ticket47828_run_27 PASSED tickets/ticket47828_test.py::test_ticket47828_run_28 PASSED tickets/ticket47828_test.py::test_ticket47828_run_29 PASSED tickets/ticket47828_test.py::test_ticket47828_run_30 PASSED tickets/ticket47828_test.py::test_ticket47828_run_31 PASSED tickets/ticket47829_test.py::test_ticket47829_init PASSED tickets/ticket47829_test.py::test_ticket47829_mod_active_user_1 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_active_user_2 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_active_user_3 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_stage_user_1 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_stage_user_2 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_stage_user_3 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_out_user_1 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_out_user_2 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_out_user_3 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_active_user_modrdn_active_user_1 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_active_user_modrdn_stage_user_1 PASSED tickets/ticket47829_test.py::test_ticket47829_mo d_active_user_modrdn_out_user_1 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_modrdn_1 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_stage_user_modrdn_active_user_1 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_stage_user_modrdn_stage_user_1 PASSED tickets/ticket47829_test.py::test_ticket47829_indirect_active_group_1 PASSED tickets/ticket47829_test.py::test_ticket47829_indirect_active_group_2 PASSED tickets/ticket47829_test.py::test_ticket47829_indirect_active_group_3 PASSED tickets/ticket47829_test.py::test_ticket47829_indirect_active_group_4 PASSED tickets/ticket47833_test.py::test_ticket47829_init PASSED tickets/ticket47833_test.py::test_ticket47829_mod_stage_user_modrdn_stage_user_1 PASSED tickets/ticket47869MMR_test.py::test_ticket47869_init PASSED tickets/ticket47869MMR_test.py::test_ticket47869_check PASSED tickets/ticket47871_test.py::test_ticket47871_init PASSED tickets/ticket47871_test.py::test_ticket47871_1 PASSED tickets/ticket47871_test.py::test_ticket47871_2 PASSED tickets/ticket47900_test.py::test_ticket47900 PASSED tickets/ticket47910_test.py::test_ticket47910_logconv_start_end_positive PASSED tickets/ticket47910_test.py::test_ticket47910_logconv_start_end_negative PASSED tickets/ticket47910_test.py::test_ticket47910_logconv_start_end_invalid PASSED tickets/ticket47910_test.py::test_ticket47910_logconv_noaccesslogs PASSED tickets/ticket47920_test.py::test_ticket47920_init PASSED tickets/ticket47920_test.py::test_ticket47920_mod_readentry_ctrl PASSED tickets/ticket47921_test.py::test_ticket47921 PASSED tickets/ticket47927_test.py::test_ticket47927_init PASSED tickets/ticket47927_test.py::test_ticket47927_one PASSED tickets/ticket47927_test.py::test_ticket47927_two PASSED tickets/ticket47927_test.py::test_ticket47927_three PASSED tickets/ticket47927_test.py::test_ticket47927_four PASSED tickets/ticket47927_test.py::test_ticket47927_five PASSED tickets/ticket47927_test.py::test_ticket47927_six PASSED tickets/ticket47931_test.py::test_ticket47931 PASSED tickets/ticket4 7937_test.py::test_ticket47937 PASSED tickets/ticket47950_test.py::test_ticket47950 PASSED tickets/ticket47953_test.py::test_ticket47953 PASSED tickets/ticket47963_test.py::test_ticket47963 PASSED tickets/ticket47966_test.py::test_ticket47966 PASSED tickets/ticket47970_test.py::test_ticket47970 PASSED tickets/ticket47973_test.py::test_ticket47973 PASSED tickets/ticket47976_test.py::test_ticket47976_init PASSED tickets/ticket47976_test.py::test_ticket47976_1 PASSED tickets/ticket47976_test.py::test_ticket47976_2 PASSED tickets/ticket47976_test.py::test_ticket47976_3 PASSED tickets/ticket47980_test.py::test_ticket47980 PASSED tickets/ticket47981_test.py::test_ticket47981 PASSED tickets/ticket47988_test.py::test_ticket47988_init PASSED tickets/ticket47988_test.py::test_ticket47988_1 PASSED tickets/ticket47988_test.py::test_ticket47988_2 PASSED tickets/ticket47988_test.py::test_ticket47988_3 PASSED tickets/ticket47988_test.py::test_ticket47988_4 PASSED tickets/ticket47988_test.py::test_ticket47988_5 PASSED tickets/ticket47988_test.py::test_ticket47988_6 PASSED tickets/ticket48005_test.py::test_ticket48005_setup PASSED tickets/ticket48005_test.py::test_ticket48005_memberof PASSED tickets/ticket48005_test.py::test_ticket48005_automember PASSED tickets/ticket48005_test.py::test_ticket48005_syntaxvalidate PASSED tickets/ticket48005_test.py::test_ticket48005_usn PASSED tickets/ticket48005_test.py::test_ticket48005_schemareload PASSED tickets/ticket48013_test.py::test_ticket48013 PASSED tickets/ticket48026_test.py::test_ticket48026 PASSED tickets/ticket48109_test.py::test_ticket48109 PASSED tickets/ticket48170_test.py::test_ticket48170 PASSED tickets/ticket48194_test.py::test_init PASSED tickets/ticket48194_test.py::test_run_0 PASSED tickets/ticket48194_test.py::test_run_1 PASSED tickets/ticket48194_test.py::test_run_2 PASSED tickets/ticket48194_test.py::test_run_3 PASSED tickets/ticket48194_test.py::test_run_4 PASSED tickets/ticket48194_test.py::test_run_5 PASSED tickets/ticket48194_test.py::test_run_6 PASSED tickets/tick et48194_test.py::test_run_7 PASSED tickets/ticket48194_test.py::test_run_8 PASSED tickets/ticket48194_test.py::test_run_9 PASSED tickets/ticket48194_test.py::test_run_10 PASSED tickets/ticket48194_test.py::test_run_11 PASSED tickets/ticket48212_test.py::test_ticket48212 PASSED tickets/ticket48214_test.py::test_ticket48214_run PASSED tickets/ticket48226_test.py::test_ticket48226_set_purgedelay PASSED tickets/ticket48226_test.py::test_ticket48226_1 PASSED tickets/ticket48228_test.py::test_ticket48228_test_global_policy PASSED tickets/ticket48228_test.py::test_ticket48228_test_subtree_policy PASSED tickets/ticket48233_test.py::test_ticket48233 PASSED tickets/ticket48234_test.py::test_ticket48234 PASSED tickets/ticket48252_test.py::test_ticket48252_setup PASSED tickets/ticket48252_test.py::test_ticket48252_run_0 PASSED tickets/ticket48252_test.py::test_ticket48252_run_1 PASSED tickets/ticket48265_test.py::test_ticket48265_test PASSED tickets/ticket48266_test.py::test_ticket48266_fractional PASSED tickets/ticket48266_test.py::test_ticket48266_check_repl_desc PASSED tickets/ticket48266_test.py::test_ticket48266_count_csn_evaluation PASSED tickets/ticket48270_test.py::test_ticket48270_init PASSED tickets/ticket48270_test.py::test_ticket48270_homeDirectory_indexed_cis PASSED tickets/ticket48270_test.py::test_ticket48270_homeDirectory_mixed_value PASSED tickets/ticket48270_test.py::test_ticket48270_extensible_search PASSED tickets/ticket48272_test.py::test_ticket48272 PASSED tickets/ticket48294_test.py::test_48294_init PASSED tickets/ticket48294_test.py::test_48294_run_0 PASSED tickets/ticket48294_test.py::test_48294_run_1 PASSED tickets/ticket48294_test.py::test_48294_run_2 PASSED tickets/ticket48295_test.py::test_48295_init PASSED tickets/ticket48295_test.py::test_48295_run PASSED tickets/ticket48312_test.py::test_ticket48312 PASSED tickets/ticket48325_test.py::test_ticket48325 PASSED tickets/ticket48342_test.py::test_ticket4026 PASSED tickets/ticket48354_test.py::test_ticket48354 PASSED tickets/ticket48362_test.py::tes t_ticket48362 PASSED tickets/ticket48366_test.py::test_ticket48366_init PASSED tickets/ticket48366_test.py::test_ticket48366_search_user PASSED tickets/ticket48366_test.py::test_ticket48366_search_dm PASSED tickets/ticket48370_test.py::test_ticket48370 PASSED tickets/ticket48383_test.py::test_ticket48383 PASSED tickets/ticket48497_test.py::test_ticket48497_init PASSED tickets/ticket48497_test.py::test_ticket48497_homeDirectory_mixed_value PASSED tickets/ticket48497_test.py::test_ticket48497_extensible_search PASSED tickets/ticket48497_test.py::test_ticket48497_homeDirectory_index_cfg PASSED tickets/ticket48497_test.py::test_ticket48497_homeDirectory_index_run PASSED tickets/ticket48637_test.py::test_ticket48637 PASSED tickets/ticket48665_test.py::test_ticket48665 PASSED tickets/ticket48745_test.py::test_ticket48745_init PASSED tickets/ticket48745_test.py::test_ticket48745_homeDirectory_indexed_cis PASSED tickets/ticket48745_test.py::test_ticket48745_homeDirectory_mixed_value PASSED tickets/ticket48745_test.py::test_ticket48745_extensible_search_after_index PASSED tickets/ticket48746_test.py::test_ticket48746_init PASSED tickets/ticket48746_test.py::test_ticket48746_homeDirectory_indexed_cis PASSED tickets/ticket48746_test.py::test_ticket48746_homeDirectory_mixed_value PASSED tickets/ticket48746_test.py::test_ticket48746_extensible_search_after_index PASSED tickets/ticket48746_test.py::test_ticket48746_homeDirectory_indexed_ces PASSED tickets/ticket48755_test.py::test_ticket48755 PASSED tickets/ticket48759_test.py::test_ticket48759 PASSED tickets/ticket48784_test.py::test_ticket48784 PASSED tickets/ticket48798_test.py::test_ticket48798 PASSED tickets/ticket48799_test.py::test_ticket48799 PASSED tickets/ticket48808_test.py::test_ticket48808 PASSED tickets/ticket48844_test.py::test_ticket48844_init PASSED tickets/ticket48844_test.py::test_ticket48844_bitwise_on PASSED tickets/ticket48844_test.py::test_ticket48844_bitwise_off PASSED tickets/ticket48891_test.py::test_ticket48891_setup PASSED tickets/ticket48893_test.p y::test_ticket48893 PASSED tickets/ticket48896_test.py::test_ticket48896 PASSED tickets/ticket48906_test.py::test_ticket48906_setup PASSED tickets/ticket48906_test.py::test_ticket48906_dblock_default PASSED tickets/ticket48906_test.py::test_ticket48906_dblock_ldap_update PASSED tickets/ticket48906_test.py::test_ticket48906_dblock_edit_update PASSED tickets/ticket48906_test.py::test_ticket48906_dblock_robust PASSED tickets/ticket48916_test.py::test_ticket48916 PASSED tickets/ticket48956_test.py::test_ticket48956 PASSED tickets/ticket48961_test.py::test_ticket48961_storagescheme PASSED tickets/ticket48961_test.py::test_ticket48961_deleteall PASSED tickets/ticket548_test.py::test_ticket548_test_with_no_policy PASSED tickets/ticket548_test.py::test_ticket548_test_global_policy PASSED tickets/ticket548_test.py::test_ticket548_test_subtree_policy PASSED suites/acct_usability_plugin/acct_usability_test.py::test_acct_usability_init PASSED suites/acct_usability_plugin/acct_usability_test.py::test_acct_usability_ PASSED suites/acctpolicy_plugin/acctpolicy_test.py::test_acctpolicy_init PASSED suites/acctpolicy_plugin/acctpolicy_test.py::test_acctpolicy_ PASSED 'suites/acl/acl_test.py::test_aci_attr_subtype_targetattr[lang-ja]' PASSED 'suites/acl/acl_test.py::test_aci_attr_subtype_targetattr[binary]' PASSED 'suites/acl/acl_test.py::test_aci_attr_subtype_targetattr[phonetic]' PASSED suites/acl/acl_test.py::test_mode_default_add_deny PASSED suites/acl/acl_test.py::test_mode_default_delete_deny PASSED 'suites/acl/acl_test.py::test_moddn_staging_prod[0-cn=staged' 'user,dc=example,dc=com-cn=accounts,dc=example,dc=com-False]' PASSED 'suites/acl/acl_test.py::test_moddn_staging_prod[1-cn=staged' 'user,dc=example,dc=com-cn=accounts,dc=example,dc=com-False]' PASSED 'suites/acl/acl_test.py::test_moddn_staging_prod[2-cn=staged' 'user,dc=example,dc=com-cn=bad*,dc=example,dc=com-True]' PASSED 'suites/acl/acl_test.py::test_moddn_staging_prod[3-cn=st*,dc=example,dc=com-cn=accounts,dc=example,dc=com-False]' PASSED 'suites/acl/acl_test.py::te st_moddn_staging_prod[4-cn=bad*,dc=example,dc=com-cn=accounts,dc=example,dc=com-True]' PASSED 'suites/acl/acl_test.py::test_moddn_staging_prod[5-cn=st*,dc=example,dc=com-cn=ac*,dc=example,dc=com-False]' PASSED 'suites/acl/acl_test.py::test_moddn_staging_prod[6-None-cn=ac*,dc=example,dc=com-False]' PASSED 'suites/acl/acl_test.py::test_moddn_staging_prod[7-cn=st*,dc=example,dc=com-None-False]' PASSED 'suites/acl/acl_test.py::test_moddn_staging_prod[8-None-None-False]' PASSED suites/acl/acl_test.py::test_moddn_staging_prod_9 PASSED suites/acl/acl_test.py::test_moddn_prod_staging PASSED suites/acl/acl_test.py::test_check_repl_M2_to_M1 PASSED suites/acl/acl_test.py::test_moddn_staging_prod_except PASSED suites/acl/acl_test.py::test_mode_default_ger_no_moddn PASSED suites/acl/acl_test.py::test_mode_default_ger_with_moddn PASSED suites/acl/acl_test.py::test_mode_switch_default_to_legacy PASSED suites/acl/acl_test.py::test_mode_legacy_ger_no_moddn1 PASSED suites/acl/acl_test.py::test_mode_legacy_ger_no_moddn2 PASSED suites/acl/acl_test.py::test_mode_legacy_ger_with_moddn PASSED suites/acl/acl_test.py::test_rdn_write_get_ger PASSED suites/acl/acl_test.py::test_rdn_write_modrdn_anonymous PASSED suites/attr_encryption/attr_encrypt_test.py::test_attr_encrypt_init PASSED suites/attr_encryption/attr_encrypt_test.py::test_attr_encrypt_ PASSED suites/attr_uniqueness_plugin/attr_uniqueness_test.py::test_attr_uniqueness_init PASSED suites/attr_uniqueness_plugin/attr_uniqueness_test.py::test_attr_uniqueness PASSED suites/automember_plugin/automember_test.py::test_automember_init PASSED suites/automember_plugin/automember_test.py::test_automember_ PASSED suites/basic/basic_test.py::test_basic_ops PASSED suites/basic/basic_test.py::test_basic_import_export PASSED suites/basic/basic_test.py::test_basic_backup PASSED suites/basic/basic_test.py::test_basic_acl PASSED suites/basic/basic_test.py::test_basic_searches PASSED suites/basic/basic_test.py::test_basic_referrals PASSED suites/basic/basic_test.py::test_basic_systemctl PASSED suite s/basic/basic_test.py::test_basic_ldapagent PASSED suites/basic/basic_test.py::test_basic_dse PASSED 'suites/basic/basic_test.py::test_def_rootdse_attr[namingContexts]' PASSED 'suites/basic/basic_test.py::test_def_rootdse_attr[supportedLDAPVersion]' PASSED 'suites/basic/basic_test.py::test_def_rootdse_attr[supportedControl]' PASSED 'suites/basic/basic_test.py::test_def_rootdse_attr[supportedExtension]' PASSED 'suites/basic/basic_test.py::test_def_rootdse_attr[supportedSASLMechanisms]' PASSED 'suites/basic/basic_test.py::test_def_rootdse_attr[vendorName]' PASSED 'suites/basic/basic_test.py::test_def_rootdse_attr[vendorVersion]' PASSED 'suites/basic/basic_test.py::test_mod_def_rootdse_attr[namingContexts]' PASSED 'suites/basic/basic_test.py::test_mod_def_rootdse_attr[supportedLDAPVersion]' PASSED 'suites/basic/basic_test.py::test_mod_def_rootdse_attr[supportedControl]' PASSED 'suites/basic/basic_test.py::test_mod_def_rootdse_attr[supportedExtension]' PASSED 'suites/basic/basic_test.py::test_mod_def_rootdse_attr[supportedSASLMechanisms]' PASSED 'suites/basic/basic_test.py::test_mod_def_rootdse_attr[vendorName]' PASSED 'suites/basic/basic_test.py::test_mod_def_rootdse_attr[vendorVersion]' PASSED suites/betxns/betxn_test.py::test_betxn_init PASSED suites/betxns/betxn_test.py::test_betxt_7bit PASSED suites/betxns/betxn_test.py::test_betxn_attr_uniqueness PASSED suites/betxns/betxn_test.py::test_betxn_memberof PASSED suites/chaining_plugin/chaining_test.py::test_chaining_init PASSED suites/chaining_plugin/chaining_test.py::test_chaining_ PASSED suites/clu/clu_test.py::test_clu_init PASSED suites/clu/clu_test.py::test_clu_pwdhash PASSED suites/clu/db2ldif_test.py::test_db2ldif_init PASSED suites/collation_plugin/collatation_test.py::test_collatation_init PASSED suites/collation_plugin/collatation_test.py::test_collatation_ PASSED suites/config/config_test.py::test_maxbersize_repl PASSED suites/config/config_test.py::test_config_listen_backport_size PASSED suites/config/config_test.py::test_config_deadlock_policy PASSED s uites/cos_plugin/cos_test.py::test_cos_init PASSED suites/cos_plugin/cos_test.py::test_cos_ PASSED suites/deref_plugin/deref_test.py::test_deref_init PASSED suites/deref_plugin/deref_test.py::test_deref_ PASSED suites/disk_monitoring/disk_monitor_test.py::test_disk_monitor_init PASSED suites/disk_monitoring/disk_monitor_test.py::test_disk_monitor_ PASSED suites/distrib_plugin/distrib_test.py::test_distrib_init PASSED suites/distrib_plugin/distrib_test.py::test_distrib_ PASSED suites/dna_plugin/dna_test.py::test_dna_init PASSED suites/dna_plugin/dna_test.py::test_dna_ PASSED suites/ds_logs/ds_logs_test.py::test_ds_logs_init PASSED suites/ds_logs/ds_logs_test.py::test_ds_logs_ PASSED suites/dynamic-plugins/test_dynamic_plugins.py::test_dynamic_plugins PASSED suites/filter/filter_test.py::test_filter_init PASSED suites/filter/filter_test.py::test_filter_escaped PASSED suites/filter/filter_test.py::test_filter_search_original_attrs PASSED suites/filter/rfc3673_all_oper_attrs_test.py::test_supported_features PASSED 'suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[-False-oper_attr_list0]' PASSED 'suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[-False-oper_attr_list0-*]' PASSED 'suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[-False-oper_attr_list0-objectClass]' PASSED 'suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[-True-oper_attr_list1]' PASSED 'suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[-True-oper_attr_list1-*]' PASSED 'suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[-True-oper_attr_list1-objectClass]' PASSED 'suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[ou=people,dc=example,dc=com-False-oper_attr_list2]' PASSED 'suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[ou=people,dc=example,dc=com-False-oper_attr_list2-*]' PASSED 'suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[ou=people,dc=example,dc=com-False-oper_attr_list2-objectClass]' PASSED 'suites/filter/rfc3673_all_op er_attrs_test.py::test_search_basic[ou=people,dc=example,dc=com-True-oper_attr_list3]' PASSED 'suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[ou=people,dc=example,dc=com-True-oper_attr_list3-*]' PASSED 'suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[ou=people,dc=example,dc=com-True-oper_attr_list3-objectClass]' PASSED 'suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[uid=all_attrs_test,ou=people,dc=example,dc=com-False-oper_attr_list4]' PASSED 'suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[uid=all_attrs_test,ou=people,dc=example,dc=com-False-oper_attr_list4-*]' PASSED 'suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[uid=all_attrs_test,ou=people,dc=example,dc=com-False-oper_attr_list4-objectClass]' PASSED 'suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[uid=all_attrs_test,ou=people,dc=example,dc=com-True-oper_attr_list5]' PASSED 'suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[uid=all_attrs_test,ou=people,dc=example,dc=com-True-oper_attr_list5-*]' PASSED 'suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[uid=all_attrs_test,ou=people,dc=example,dc=com-True-oper_attr_list5-objectClass]' PASSED 'suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[cn=config-False-oper_attr_list6]' PASSED 'suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[cn=config-False-oper_attr_list6-*]' PASSED 'suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[cn=config-False-oper_attr_list6-objectClass]' PASSED suites/get_effective_rights/ger_test.py::test_ger_init PASSED suites/get_effective_rights/ger_test.py::test_ger_ PASSED suites/gssapi_repl/gssapi_repl_test.py::test_gssapi_repl PASSED suites/ldapi/ldapi_test.py::test_ldapi_init PASSED suites/ldapi/ldapi_test.py::test_ldapi_ PASSED suites/linkedattrs_plugin/linked_attrs_test.py::test_linked_attrs_init PASSED suites/linkedattrs_plugin/linked_attrs_test.py::test_linked_attrs_ PASSED suites/mapping_tree/mapping_tree_test.py::tes t_mapping_tree_init PASSED suites/mapping_tree/mapping_tree_test.py::test_mapping_tree_ PASSED suites/memberof_plugin/memberof_test.py::test_memberof_auto_add_oc PASSED suites/memory_leaks/range_search_test.py::test_range_search_init PASSED suites/memory_leaks/range_search_test.py::test_range_search PASSED suites/monitor/monitor_test.py::test_monitor_init PASSED suites/monitor/monitor_test.py::test_monitor_ PASSED 'suites/paged_results/paged_results_test.py::test_search_success[6-5]' PASSED 'suites/paged_results/paged_results_test.py::test_search_success[5-5]' PASSED 'suites/paged_results/paged_results_test.py::test_search_success[5-25]' PASSED 'suites/paged_results/paged_results_test.py::test_search_limits_fail[50-200-cn=config,cn=ldbm' 'database,cn=plugins,cn=config-nsslapd-idlistscanlimit-100-UNWILLING_TO_PERFORM]' PASSED 'suites/paged_results/paged_results_test.py::test_search_limits_fail[5-15-cn=config-nsslapd-timelimit-20-UNAVAILABLE_CRITICAL_EXTENSION]' PASSED 'suites/paged_results/paged_results_test.py::test_search_limits_fail[21-50-cn=config-nsslapd-sizelimit-20-SIZELIMIT_EXCEEDED]' PASSED 'suites/paged_results/paged_results_test.py::test_search_limits_fail[21-50-cn=config-nsslapd-pagedsizelimit-5-SIZELIMIT_EXCEEDED]' PASSED 'suites/paged_results/paged_results_test.py::test_search_limits_fail[5-50-cn=config,cn=ldbm' 'database,cn=plugins,cn=config-nsslapd-lookthroughlimit-20-ADMINLIMIT_EXCEEDED]' PASSED suites/paged_results/paged_results_test.py::test_search_sort_success PASSED suites/paged_results/paged_results_test.py::test_search_abandon PASSED suites/paged_results/paged_results_test.py::test_search_with_timelimit PASSED 'suites/paged_results/paged_results_test.py::test_search_dns_ip_aci[dns' = '"localhost.localdomain"]' PASSED 'suites/paged_results/paged_results_test.py::test_search_dns_ip_aci[ip' = '"::1"' or ip = '"127.0.0.1"]' PASSED suites/paged_results/paged_results_test.py::test_search_multiple_paging PASSED 'suites/paged_results/paged_results_test.py::test_search_invalid_cookie[1000]' PASSED 's uites/paged_results/paged_results_test.py::test_search_invalid_cookie[-1]' PASSED suites/paged_results/paged_results_test.py::test_search_abandon_with_zero_size PASSED suites/paged_results/paged_results_test.py::test_search_pagedsizelimit_success PASSED 'suites/paged_results/paged_results_test.py::test_search_nspagedsizelimit[5-15-PASS]' PASSED 'suites/paged_results/paged_results_test.py::test_search_nspagedsizelimit[15-5-SIZELIMIT_EXCEEDED]' PASSED 'suites/paged_results/paged_results_test.py::test_search_paged_limits[conf_attr_values0-ADMINLIMIT_EXCEEDED]' PASSED 'suites/paged_results/paged_results_test.py::test_search_paged_limits[conf_attr_values1-PASS]' PASSED 'suites/paged_results/paged_results_test.py::test_search_paged_user_limits[conf_attr_values0-ADMINLIMIT_EXCEEDED]' PASSED 'suites/paged_results/paged_results_test.py::test_search_paged_user_limits[conf_attr_values1-PASS]' PASSED suites/paged_results/paged_results_test.py::test_ger_basic PASSED suites/paged_results/paged_results_test.py::test_multi_suffix_search PASSED 'suites/paged_results/paged_results_test.py::test_maxsimplepaged_per_conn_success[None]' PASSED 'suites/paged_results/paged_results_test.py::test_maxsimplepaged_per_conn_success[-1]' PASSED 'suites/paged_results/paged_results_test.py::test_maxsimplepaged_per_conn_success[1000]' PASSED 'suites/paged_results/paged_results_test.py::test_maxsimplepaged_per_conn_failure[0]' PASSED 'suites/paged_results/paged_results_test.py::test_maxsimplepaged_per_conn_failure[1]' PASSED suites/pam_passthru_plugin/pam_test.py::test_pam_init PASSED suites/pam_passthru_plugin/pam_test.py::test_pam_ PASSED suites/passthru_plugin/passthru_test.py::test_passthru_init PASSED suites/passthru_plugin/passthru_test.py::test_passthru_ PASSED suites/password/password_test.py::test_password_init PASSED suites/password/password_test.py::test_password_delete_specific_password PASSED suites/password/pwdAdmin_test.py::test_pwdAdmin_init PASSED suites/password/pwdAdmin_test.py::test_pwdAdmin PASSED suites/password/pwdAdmin_test .py::test_pwdAdmin_config_validation PASSED 'suites/password/pwdPolicy_attribute_test.py::test_change_pwd[on-off-UNWILLING_TO_PERFORM]' PASSED 'suites/password/pwdPolicy_attribute_test.py::test_change_pwd[off-off-UNWILLING_TO_PERFORM]' PASSED 'suites/password/pwdPolicy_attribute_test.py::test_change_pwd[off-on-None]' PASSED 'suites/password/pwdPolicy_attribute_test.py::test_change_pwd[on-on-None]' PASSED suites/password/pwdPolicy_attribute_test.py::test_pwd_min_age PASSED 'suites/password/pwdPolicy_inherit_global_test.py::test_entry_has_no_restrictions[off-off]' PASSED 'suites/password/pwdPolicy_inherit_global_test.py::test_entry_has_no_restrictions[on-off]' PASSED 'suites/password/pwdPolicy_inherit_global_test.py::test_entry_has_no_restrictions[off-on]' PASSED 'suites/password/pwdPolicy_inherit_global_test.py::test_entry_has_restrictions[cn=config]' PASSED 'suites/password/pwdPolicy_inherit_global_test.py::test_entry_has_restrictions[cn="cn=nsPwPolicyEntry,ou=People,dc=example,dc=com",cn=nsPwPolicyContainer,ou=People,dc=example,dc=com]' PASSED suites/password/pwdPolicy_syntax_test.py::test_pwdPolicy_syntax PASSED 'suites/password/pwdPolicy_warning_test.py::test_different_values[' ']' PASSED 'suites/password/pwdPolicy_warning_test.py::test_different_values[junk123]' PASSED 'suites/password/pwdPolicy_warning_test.py::test_different_values[on]' PASSED 'suites/password/pwdPolicy_warning_test.py::test_different_values[off]' PASSED suites/password/pwdPolicy_warning_test.py::test_expiry_time PASSED 'suites/password/pwdPolicy_warning_test.py::test_password_warning[passwordSendExpiringTime-off]' PASSED 'suites/password/pwdPolicy_warning_test.py::test_password_warning[passwordWarning-3600]' PASSED suites/password/pwdPolicy_warning_test.py::test_with_different_password_states PASSED suites/password/pwdPolicy_warning_test.py::test_default_behavior PASSED suites/password/pwdPolicy_warning_test.py::test_with_local_policy PASSED suites/password/pwd_algo_test.py::test_pwd_algo_test PASSED suites/password/pwp_history_test.py::te st_pwp_history_test PASSED suites/posix_winsync_plugin/posix_winsync_test.py::test_posix_winsync_init PASSED suites/posix_winsync_plugin/posix_winsync_test.py::test_posix_winsync_ PASSED suites/psearch/psearch_test.py::test_psearch_init PASSED suites/psearch/psearch_test.py::test_psearch_ PASSED suites/referint_plugin/referint_test.py::test_referint_init PASSED suites/referint_plugin/referint_test.py::test_referint_ PASSED suites/replication/cleanallruv_test.py::test_cleanallruv_init PASSED suites/replication/cleanallruv_test.py::test_cleanallruv_clean PASSED suites/replication/cleanallruv_test.py::test_cleanallruv_clean_restart PASSED suites/replication/cleanallruv_test.py::test_cleanallruv_clean_force PASSED suites/replication/cleanallruv_test.py::test_cleanallruv_abort PASSED suites/replication/cleanallruv_test.py::test_cleanallruv_abort_restart PASSED suites/replication/cleanallruv_test.py::test_cleanallruv_abort_certify PASSED suites/replication/cleanallruv_test.py::test_cleanallruv_stress_clean PASSED suites/replication/wait_for_async_feature_test.py::test_not_int_value PASSED suites/replication/wait_for_async_feature_test.py::test_multi_value PASSED 'suites/replication/wait_for_async_feature_test.py::test_value_check[waitfor_async_attr0]' PASSED 'suites/replication/wait_for_async_feature_test.py::test_value_check[waitfor_async_attr1]' PASSED 'suites/replication/wait_for_async_feature_test.py::test_value_check[waitfor_async_attr2]' PASSED 'suites/replication/wait_for_async_feature_test.py::test_value_check[waitfor_async_attr3]' PASSED 'suites/replication/wait_for_async_feature_test.py::test_behavior_with_value[waitfor_async_attr0]' PASSED 'suites/replication/wait_for_async_feature_test.py::test_behavior_with_value[waitfor_async_attr1]' PASSED 'suites/replication/wait_for_async_feature_test.py::test_behavior_with_value[waitfor_async_attr2]' PASSED 'suites/replication/wait_for_async_feature_test.py::test_behavior_with_value[waitfor_async_attr3]' PASSED suites/replsync_plugin/repl_sync_test.py::test_repl_sync_ init PASSED suites/replsync_plugin/repl_sync_test.py::test_repl_sync_ PASSED suites/resource_limits/res_limits_test.py::test_res_limits_init PASSED suites/resource_limits/res_limits_test.py::test_res_limits_ PASSED suites/retrocl_plugin/retrocl_test.py::test_retrocl_init PASSED suites/retrocl_plugin/retrocl_test.py::test_retrocl_ PASSED suites/reverpwd_plugin/reverpwd_test.py::test_reverpwd_init PASSED suites/reverpwd_plugin/reverpwd_test.py::test_reverpwd_ PASSED suites/roles_plugin/roles_test.py::test_roles_init PASSED suites/roles_plugin/roles_test.py::test_roles_ PASSED suites/rootdn_plugin/rootdn_plugin_test.py::test_rootdn_init PASSED suites/rootdn_plugin/rootdn_plugin_test.py::test_rootdn_access_specific_time PASSED suites/rootdn_plugin/rootdn_plugin_test.py::test_rootdn_access_day_of_week PASSED suites/rootdn_plugin/rootdn_plugin_test.py::test_rootdn_access_denied_ip PASSED suites/rootdn_plugin/rootdn_plugin_test.py::test_rootdn_access_denied_host PASSED suites/rootdn_plugin/rootdn_plugin_test.py::test_rootdn_access_allowed_ip PASSED suites/rootdn_plugin/rootdn_plugin_test.py::test_rootdn_access_allowed_host PASSED suites/rootdn_plugin/rootdn_plugin_test.py::test_rootdn_config_validate PASSED suites/sasl/sasl_test.py::test_sasl_init PASSED suites/sasl/sasl_test.py::test_sasl_ PASSED suites/schema/test_schema.py::test_schema_comparewithfiles PASSED suites/schema_reload_plugin/schema_reload_test.py::test_schema_reload_init PASSED suites/schema_reload_plugin/schema_reload_test.py::test_schema_reload_ PASSED suites/snmp/snmp_test.py::test_snmp_init PASSED suites/snmp/snmp_test.py::test_snmp_ PASSED suites/ssl/ssl_test.py::test_ssl_init PASSED suites/ssl/ssl_test.py::test_ssl_ PASSED suites/syntax_plugin/syntax_test.py::test_syntax_init PASSED suites/syntax_plugin/syntax_test.py::test_syntax_ PASSED suites/usn_plugin/usn_test.py::test_usn_init PASSED suites/usn_plugin/usn_test.py::test_usn_ PASSED suites/views_plugin/views_test.py::test_views_init PASSED suites/views_plugin/views_test.py::test_views_ PASSED su ites/vlv/vlv_test.py::test_vlv_init PASSED suites/vlv/vlv_test.py::test_vlv_ PASSED suites/whoami_plugin/whoami_test.py::test_whoami_init PASSED suites/whoami_plugin/whoami_test.py::test_whoami_ PASSED =================================== FAILURES =================================== _____________________________ test_ticket47653_add _____________________________ topology = '<tickets.ticket47653MMR_test.TopologyMaster1Master2' object at '0x7f2901017f10>' def 'test_ticket47653_add(topology):' ''\'''\'''\''' This test ADD an entry on MASTER1 where 47653 is fixed. Then it checks that entry is replicated on MASTER2 '(even' if on MASTER2 47653 is NOT 'fixed).' Then update on MASTER2 and check the update on MASTER1 It checks that, bound as bind_entry, - we can not ADD an entry without the proper SELFDN aci. - with the proper ACI we can not ADD with ''\''member'\''' attribute - with the proper ACI and ''\''member'\''' it succeeds to ADD ''\'''\'''\''' 'topology.master1.log.info("\n\n#########################' ADD '######################\n")' '#' bind as bind_entry 'topology.master1.log.info("Bind' as '%s"' % 'BIND_DN)' 'topology.master1.simple_bind_s(BIND_DN,' 'BIND_PW)' '#' Prepare the entry with multivalued members entry_with_members = 'Entry(ENTRY_DN)' 'entry_with_members.setValues('\''objectclass'\'',' ''\''top'\'',' ''\''person'\'',' ''\''OCticket47653'\'')' 'entry_with_members.setValues('\''sn'\'',' 'ENTRY_NAME)' 'entry_with_members.setValues('\''cn'\'',' 'ENTRY_NAME)' 'entry_with_members.setValues('\''postalAddress'\'',' ''\''here'\'')' 'entry_with_members.setValues('\''postalCode'\'',' ''\''1234'\'')' members = '[]' for cpt in 'range(MAX_OTHERS):' name = '"%s%d"' % '(OTHER_NAME,' 'cpt)' 'members.append("cn=%s,%s"' % '(name,' 'SUFFIX))' 'members.append(BIND_DN)' 'entry_with_members.setValues('\''member'\'',' 'members)' '#' Prepare the entry with only one member value entry_with_member = 'Entry(ENTRY_DN)' 'entry_with_member.setValues('\''objectclass'\'',' ''\''top'\'',' ''\''person'\'',' ''\''OCticket47653'\'')' 'en try_with_member.setValues('\''sn'\'',' 'ENTRY_NAME)' 'entry_with_member.setValues('\''cn'\'',' 'ENTRY_NAME)' 'entry_with_member.setValues('\''postalAddress'\'',' ''\''here'\'')' 'entry_with_member.setValues('\''postalCode'\'',' ''\''1234'\'')' member = '[]' 'member.append(BIND_DN)' 'entry_with_member.setValues('\''member'\'',' 'member)' '#' entry to add WITH member being BIND_DN but WITHOUT the ACI '->' ldap.INSUFFICIENT_ACCESS try: 'topology.master1.log.info("Try' to add Add %s '(aci' is 'missing):' '%r"' % '(ENTRY_DN,' 'entry_with_member))' 'topology.master1.add_s(entry_with_member)' except Exception as e: 'topology.master1.log.info("Exception' '(expected):' '%s"' % 'type(e).__name__)' assert 'isinstance(e,' 'ldap.INSUFFICIENT_ACCESS)' '#' Ok Now add the proper ACI 'topology.master1.log.info("Bind' as %s and add the ADD SELFDN 'aci"' % 'DN_DM)' 'topology.master1.simple_bind_s(DN_DM,' 'PASSWORD)' ACI_TARGET = '"(target' = '\"ldap:///cn=*,%s\")"' % SUFFIX ACI_TARGETFILTER = '"(targetfilter' '=\"(objectClass=%s)\")"' % OC_NAME ACI_ALLOW = '"(version' '3.0;' acl '\"SelfDN' 'add\";' allow '(add)"' ACI_SUBJECT = '"' userattr = '\"member#selfDN\";)"' ACI_BODY = ACI_TARGET + ACI_TARGETFILTER + ACI_ALLOW + ACI_SUBJECT mod = '[(ldap.MOD_ADD,' ''\''aci'\'',' 'ACI_BODY)]' 'topology.master1.modify_s(SUFFIX,' 'mod)' 'time.sleep(1)' '#' bind as bind_entry 'topology.master1.log.info("Bind' as '%s"' % 'BIND_DN)' 'topology.master1.simple_bind_s(BIND_DN,' 'BIND_PW)' '#' entry to add WITHOUT member and WITH the ACI '->' ldap.INSUFFICIENT_ACCESS try: 'topology.master1.log.info("Try' to add Add %s '(member' is 'missing)"' % 'ENTRY_DN)' 'topology.master1.add_s(Entry((ENTRY_DN,' '{' ''\''objectclass'\'':' 'ENTRY_OC.split(),' ''\''sn'\'':' ENTRY_NAME, ''\''cn'\'':' ENTRY_NAME, ''\''postalAddress'\'':' ''\''here'\'',' ''\''postalCode'\'':' ''\''1234'\''})))' except Exception as e: 'topology.master1.log.info("Exception' '(expected):' '%s"' % 'type(e).__name__)' assert 'isinstance(e,' 'ldap.INSUFFICIENT_ACCESS)' '#' entry to add WITH memb erS and WITH the ACI '->' ldap.INSUFFICIENT_ACCESS '#' member should contain only one value try: 'topology.master1.log.info("Try' to add Add %s '(with' several member 'values)"' % 'ENTRY_DN)' 'topology.master1.add_s(entry_with_members)' except Exception as e: 'topology.master1.log.info("Exception' '(expected):' '%s"' % 'type(e).__name__)' assert 'isinstance(e,' 'ldap.INSUFFICIENT_ACCESS)' 'topology.master1.log.info("Try' to add Add %s should be 'successful"' % 'ENTRY_DN)' try: 'topology.master1.add_s(entry_with_member)' except ldap.LDAPError as e: 'topology.master1.log.info("Failed' to add entry, error: '"' + 'e.message['\''desc'\''])' '>' assert False E assert False tickets/ticket47653MMR_test.py:305: AssertionError ----------------------------- Captured stderr call ----------------------------- INFO:lib389: '#########################' ADD '######################' INFO:lib389:Bind as cn=bind_entry, dc=example,dc=com INFO:lib389:Try to add Add cn=test_entry, dc=example,dc=com '(aci' is 'missing):' dn: cn=test_entry, dc=example,dc=com cn: test_entry member: cn=bind_entry, dc=example,dc=com objectclass: top objectclass: person objectclass: OCticket47653 postalAddress: here postalCode: 1234 sn: test_entry INFO:lib389:Exception '(expected):' INSUFFICIENT_ACCESS INFO:lib389:Bind as cn=Directory Manager and add the ADD SELFDN aci INFO:lib389:Bind as cn=bind_entry, dc=example,dc=com INFO:lib389:Try to add Add cn=test_entry, dc=example,dc=com '(member' is 'missing)' INFO:lib389:Exception '(expected):' INSUFFICIENT_ACCESS INFO:lib389:Try to add Add cn=test_entry, dc=example,dc=com '(with' several member 'values)' INFO:lib389:Exception '(expected):' INSUFFICIENT_ACCESS INFO:lib389:Try to add Add cn=test_entry, dc=example,dc=com should be successful INFO:lib389:Failed to add entry, error: Insufficient access ___________________________ test_ticket47653_modify ____________________________ topology = '<tickets.ticket47653MMR_test.TopologyMaster1Master2' object at '0x7f2901017f10>' def 'test_ticket47653_modify(topology):' ''\' ''\'''\''' This test MOD an entry on MASTER1 where 47653 is fixed. Then it checks that update is replicated on MASTER2 '(even' if on MASTER2 47653 is NOT 'fixed).' Then update on MASTER2 '(bound' as 'BIND_DN).' This update may fail whether or not 47653 is fixed on MASTER2 It checks that, bound as bind_entry, - we can not modify an entry without the proper SELFDN aci. - adding the ACI, we can modify the entry ''\'''\'''\''' '#' bind as bind_entry 'topology.master1.log.info("Bind' as '%s"' % 'BIND_DN)' 'topology.master1.simple_bind_s(BIND_DN,' 'BIND_PW)' 'topology.master1.log.info("\n\n#########################' MODIFY '######################\n")' '#' entry to modify WITH member being BIND_DN but WITHOUT the ACI '->' ldap.INSUFFICIENT_ACCESS try: 'topology.master1.log.info("Try' to modify %s '(aci' is 'missing)"' % 'ENTRY_DN)' mod = '[(ldap.MOD_REPLACE,' ''\''postalCode'\'',' ''\''9876'\'')]' 'topology.master1.modify_s(ENTRY_DN,' 'mod)' except Exception as e: 'topology.master1.log.info("Exception' '(expected):' '%s"' % 'type(e).__name__)' assert 'isinstance(e,' 'ldap.INSUFFICIENT_ACCESS)' '#' Ok Now add the proper ACI 'topology.master1.log.info("Bind' as %s and add the WRITE SELFDN 'aci"' % 'DN_DM)' 'topology.master1.simple_bind_s(DN_DM,' 'PASSWORD)' ACI_TARGET = '"(target' = '\"ldap:///cn=*,%s\")"' % SUFFIX ACI_TARGETATTR = '"(targetattr' = '*)"' ACI_TARGETFILTER = '"(targetfilter' '=\"(objectClass=%s)\")"' % OC_NAME ACI_ALLOW = '"(version' '3.0;' acl '\"SelfDN' 'write\";' allow '(write)"' ACI_SUBJECT = '"' userattr = '\"member#selfDN\";)"' ACI_BODY = ACI_TARGET + ACI_TARGETATTR + ACI_TARGETFILTER + ACI_ALLOW + ACI_SUBJECT mod = '[(ldap.MOD_ADD,' ''\''aci'\'',' 'ACI_BODY)]' 'topology.master1.modify_s(SUFFIX,' 'mod)' 'time.sleep(1)' '#' bind as bind_entry 'topology.master1.log.info("M1:' Bind as '%s"' % 'BIND_DN)' 'topology.master1.simple_bind_s(BIND_DN,' 'BIND_PW)' '#' modify the entry and checks the value 'topology.master1.log.info("M1:' Try to modify %s. It should 'succeeds"' % 'ENTRY_DN)' mod = '[(ldap.MOD_REPL ACE,' ''\''postalCode'\'',' ''\''1928'\'')]' '>' 'topology.master1.modify_s(ENTRY_DN,' 'mod)' tickets/ticket47653MMR_test.py:387: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../../../lib389/lib389/__init__.py:159: in inner return 'f(*args,' '**kwargs)' /usr/lib64/python2.7/site-packages/ldap/ldapobject.py:402: in modify_s return 'self.result(msgid,all=1,timeout=self.timeout)' ../../../lib389/lib389/__init__.py:127: in inner objtype, data = 'f(*args,' '**kwargs)' /usr/lib64/python2.7/site-packages/ldap/ldapobject.py:503: in result resp_type, resp_data, resp_msgid = 'self.result2(msgid,all,timeout)' ../../../lib389/lib389/__init__.py:159: in inner return 'f(*args,' '**kwargs)' /usr/lib64/python2.7/site-packages/ldap/ldapobject.py:507: in result2 resp_type, resp_data, resp_msgid, resp_ctrls = 'self.result3(msgid,all,timeout)' ../../../lib389/lib389/__init__.py:159: in inner return 'f(*args,' '**kwargs)' /usr/lib64/python2.7/site-packages/ldap/ldapobject.py:514: in result3 resp_ctrl_classes=resp_ctrl_classes ../../../lib389/lib389/__init__.py:159: in inner return 'f(*args,' '**kwargs)' /usr/lib64/python2.7/site-packages/ldap/ldapobject.py:521: in result4 ldap_result = 'self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)' ../../../lib389/lib389/__init__.py:159: in inner return 'f(*args,' '**kwargs)' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = '<lib389.DirSrv' instance at '0x7f290115dd88>' func = '<built-in' method result4 of LDAP object at '0x7f2901c1b4e0>' args = '(37,' 1, -1, 0, 0, '0),' kwargs = '{},' diagnostic_message_success = None e = 'INSUFFICIENT_ACCESS({'\''desc'\'':' ''\''Insufficient' 'access'\''},)' def '_ldap_call(self,func,*args,**kwargs):' '"""' Wrapper method mainly for serializing calls into OpenLDAP libs and trace logs '"""' 'self._ldap_object_lock.acquire()' if __debug__: if 'self._trace_level>=1:' 'self._trace_file.write('\''***' %s %s - '%s\n%s\n'\''' % '(' 'repr(self),' self._uri, ''\''.'\''.join((self.__class__.__name__,func.__name__)),' 'pprint.pformat((args,kwargs))' '))' if 'self._trace_level>=9:' 'traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)' diagnostic_message_success = None try: try: '>' result = 'func(*args,**kwargs)' E INSUFFICIENT_ACCESS: '{'\''desc'\'':' ''\''Insufficient' 'access'\''}' /usr/lib64/python2.7/site-packages/ldap/ldapobject.py:106: INSUFFICIENT_ACCESS ----------------------------- Captured stderr call ----------------------------- INFO:lib389:Bind as cn=bind_entry, dc=example,dc=com INFO:lib389: '#########################' MODIFY '######################' INFO:lib389:Try to modify cn=test_entry, dc=example,dc=com '(aci' is 'missing)' INFO:lib389:Exception '(expected):' INSUFFICIENT_ACCESS INFO:lib389:Bind as cn=Directory Manager and add the WRITE SELFDN aci INFO:lib389:M1: Bind as cn=bind_entry, dc=example,dc=com INFO:lib389:M1: Try to modify cn=test_entry, dc=example,dc=com. It should succeeds =================== 2 failed, 522 passed in 9828.58 seconds ==================== ============================= test session starts ============================== platform linux2 -- Python 2.7.12, pytest-2.9.2, py-1.4.31, pluggy-0.3.1 -- /usr/bin/python2 cachedir: .cache rootdir: <http://vm-058-081.abc.idm.lab.eng.brq.redhat.com:8080/job/389-DS-NIGHTLY/ws/source/ds/dirsrvtests/tests,> inifile: plugins: sourceorder-0.5, multihost-1.0 collecting ... collected 524 items tickets/ticket1347760_test.py::test_ticket1347760 PASSED tickets/ticket365_test.py::test_ticket365 PASSED tickets/ticket397_test.py::test_397 PASSED tickets/ticket47313_test.py::test_ticket47313_run PASSED tickets/ticket47384_test.py::test_ticket47384 PASSED tickets/ticket47431_test.py::test_ticket47431_0 PASSED tickets/ticket47431_test.py::test_ticket47431_1 PASSED tickets/ticket47431_test.py::test_ticket47431_2 PASSED tickets/ticket47431_test.py::test_ticket47431_3 PASSED tickets/ticket47462_test.py::test_ticket47462 PASSED tickets/ticket47490_test.py::test_ticket47490_init PASSED tickets/ticket47490_test.py::test_ticket47490_one PASSED tickets/ticket47490_test.py::test_ticket47490_two PASSED tickets/ticket47490_test.py::test_ticket47490_three PASSED tickets/ticket47490_test.py::test_ticket47490_four PASSED tickets/ticket47490_test.py::test_ticket47490_five PASSED tickets/ticket47490_test.py::test_ticket47490_six PASSED tickets/ticket47490_test.py::test_ticket47490_seven PASSED tickets/ticket47490_test.py::test_ticket47490_eight PASSED tickets/ticket47490_test.py::test_ticket47490_nine PASSED tickets/ticket47536_test.py::test_ticket47536 PASSED tickets/ticket47553_test.py::test_ticket47553 PASSED tickets/ticket47560_test.py::test_ticket47560 PASSED tickets/ticket47573_test.py::test_ticket47573_init PASSED tickets/ticket47573_test.py::test_ticket47573_one PASSED tickets/ticket47573_test.py::test_ticket47573_two PASSED tickets/ticket47573_test.py::test_ticket47573_three PASSED tickets/ticket47619_test.py::test_ticket47619_init PASSED tickets/ticket47619_test.py::test_ticket47619_create_index PASSED tickets/ticket47619_test.py::tes t_ticket47619_reindex PASSED tickets/ticket47619_test.py::test_ticket47619_check_indexed_search PASSED tickets/ticket47640_test.py::test_ticket47640 PASSED tickets/ticket47653MMR_test.py::test_ticket47653_init PASSED tickets/ticket47653MMR_test.py::test_ticket47653_add FAILED tickets/ticket47653MMR_test.py::test_ticket47653_modify FAILED tickets/ticket47653_test.py::test_ticket47653_init PASSED tickets/ticket47653_test.py::test_ticket47653_add PASSED tickets/ticket47653_test.py::test_ticket47653_search PASSED tickets/ticket47653_test.py::test_ticket47653_modify PASSED tickets/ticket47653_test.py::test_ticket47653_delete PASSED tickets/ticket47669_test.py::test_ticket47669_init PASSED tickets/ticket47669_test.py::test_ticket47669_changelog_maxage PASSED tickets/ticket47669_test.py::test_ticket47669_changelog_triminterval PASSED tickets/ticket47669_test.py::test_ticket47669_changelog_compactdbinterval PASSED tickets/ticket47669_test.py::test_ticket47669_retrochangelog_maxage PASSED tickets/ticket47676_test.py::test_ticket47676_init PASSED tickets/ticket47676_test.py::test_ticket47676_skip_oc_at PASSED tickets/ticket47676_test.py::test_ticket47676_reject_action PASSED tickets/ticket47714_test.py::test_ticket47714_init PASSED tickets/ticket47714_test.py::test_ticket47714_run_0 PASSED tickets/ticket47714_test.py::test_ticket47714_run_1 PASSED tickets/ticket47721_test.py::test_ticket47721_init PASSED tickets/ticket47721_test.py::test_ticket47721_0 PASSED tickets/ticket47721_test.py::test_ticket47721_1 PASSED tickets/ticket47721_test.py::test_ticket47721_2 PASSED tickets/ticket47721_test.py::test_ticket47721_3 PASSED tickets/ticket47721_test.py::test_ticket47721_4 PASSED tickets/ticket47781_test.py::test_ticket47781 PASSED tickets/ticket47787_test.py::test_ticket47787_init PASSED tickets/ticket47787_test.py::test_ticket47787_2 PASSED tickets/ticket47808_test.py::test_ticket47808_run PASSED tickets/ticket47815_test.py::test_ticket47815 PASSED tickets/ticket47819_test.py::test_ticket47819 PASSED tickets/ticket47823_test.p y::test_ticket47823_init PASSED tickets/ticket47823_test.py::test_ticket47823_one_container_add PASSED tickets/ticket47823_test.py::test_ticket47823_one_container_mod PASSED tickets/ticket47823_test.py::test_ticket47823_one_container_modrdn PASSED tickets/ticket47823_test.py::test_ticket47823_multi_containers_add PASSED tickets/ticket47823_test.py::test_ticket47823_multi_containers_mod PASSED tickets/ticket47823_test.py::test_ticket47823_multi_containers_modrdn PASSED tickets/ticket47823_test.py::test_ticket47823_across_multi_containers_add PASSED tickets/ticket47823_test.py::test_ticket47823_across_multi_containers_mod PASSED tickets/ticket47823_test.py::test_ticket47823_across_multi_containers_modrdn PASSED tickets/ticket47823_test.py::test_ticket47823_invalid_config_1 PASSED tickets/ticket47823_test.py::test_ticket47823_invalid_config_2 PASSED tickets/ticket47823_test.py::test_ticket47823_invalid_config_3 PASSED tickets/ticket47823_test.py::test_ticket47823_invalid_config_4 PASSED tickets/ticket47823_test.py::test_ticket47823_invalid_config_5 PASSED tickets/ticket47823_test.py::test_ticket47823_invalid_config_6 PASSED tickets/ticket47823_test.py::test_ticket47823_invalid_config_7 PASSED tickets/ticket47828_test.py::test_ticket47828_init PASSED tickets/ticket47828_test.py::test_ticket47828_run_0 PASSED tickets/ticket47828_test.py::test_ticket47828_run_1 PASSED tickets/ticket47828_test.py::test_ticket47828_run_2 PASSED tickets/ticket47828_test.py::test_ticket47828_run_3 PASSED tickets/ticket47828_test.py::test_ticket47828_run_4 PASSED tickets/ticket47828_test.py::test_ticket47828_run_5 PASSED tickets/ticket47828_test.py::test_ticket47828_run_6 PASSED tickets/ticket47828_test.py::test_ticket47828_run_7 PASSED tickets/ticket47828_test.py::test_ticket47828_run_8 PASSED tickets/ticket47828_test.py::test_ticket47828_run_9 PASSED tickets/ticket47828_test.py::test_ticket47828_run_10 PASSED tickets/ticket47828_test.py::test_ticket47828_run_11 PASSED tickets/ticket47828_test.py::test_ticket47828_run_12 PASSED tickets/tic ket47828_test.py::test_ticket47828_run_13 PASSED tickets/ticket47828_test.py::test_ticket47828_run_14 PASSED tickets/ticket47828_test.py::test_ticket47828_run_15 PASSED tickets/ticket47828_test.py::test_ticket47828_run_16 PASSED tickets/ticket47828_test.py::test_ticket47828_run_17 PASSED tickets/ticket47828_test.py::test_ticket47828_run_18 PASSED tickets/ticket47828_test.py::test_ticket47828_run_19 PASSED tickets/ticket47828_test.py::test_ticket47828_run_20 PASSED tickets/ticket47828_test.py::test_ticket47828_run_21 PASSED tickets/ticket47828_test.py::test_ticket47828_run_22 PASSED tickets/ticket47828_test.py::test_ticket47828_run_23 PASSED tickets/ticket47828_test.py::test_ticket47828_run_24 PASSED tickets/ticket47828_test.py::test_ticket47828_run_25 PASSED tickets/ticket47828_test.py::test_ticket47828_run_26 PASSED tickets/ticket47828_test.py::test_ticket47828_run_27 PASSED tickets/ticket47828_test.py::test_ticket47828_run_28 PASSED tickets/ticket47828_test.py::test_ticket47828_run_29 PASSED tickets/ticket47828_test.py::test_ticket47828_run_30 PASSED tickets/ticket47828_test.py::test_ticket47828_run_31 PASSED tickets/ticket47829_test.py::test_ticket47829_init PASSED tickets/ticket47829_test.py::test_ticket47829_mod_active_user_1 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_active_user_2 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_active_user_3 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_stage_user_1 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_stage_user_2 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_stage_user_3 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_out_user_1 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_out_user_2 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_out_user_3 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_active_user_modrdn_active_user_1 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_active_user_modrdn_stage_user_1 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_activ e_user_modrdn_out_user_1 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_modrdn_1 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_stage_user_modrdn_active_user_1 PASSED tickets/ticket47829_test.py::test_ticket47829_mod_stage_user_modrdn_stage_user_1 PASSED tickets/ticket47829_test.py::test_ticket47829_indirect_active_group_1 PASSED tickets/ticket47829_test.py::test_ticket47829_indirect_active_group_2 PASSED tickets/ticket47829_test.py::test_ticket47829_indirect_active_group_3 PASSED tickets/ticket47829_test.py::test_ticket47829_indirect_active_group_4 PASSED tickets/ticket47833_test.py::test_ticket47829_init PASSED tickets/ticket47833_test.py::test_ticket47829_mod_stage_user_modrdn_stage_user_1 PASSED tickets/ticket47869MMR_test.py::test_ticket47869_init PASSED tickets/ticket47869MMR_test.py::test_ticket47869_check PASSED tickets/ticket47871_test.py::test_ticket47871_init PASSED tickets/ticket47871_test.py::test_ticket47871_1 PASSED tickets/ticket47871_test.py::test_ticket47871_2 PASSED tickets/ticket47900_test.py::test_ticket47900 PASSED tickets/ticket47910_test.py::test_ticket47910_logconv_start_end_positive PASSED tickets/ticket47910_test.py::test_ticket47910_logconv_start_end_negative PASSED tickets/ticket47910_test.py::test_ticket47910_logconv_start_end_invalid PASSED tickets/ticket47910_test.py::test_ticket47910_logconv_noaccesslogs PASSED tickets/ticket47920_test.py::test_ticket47920_init PASSED tickets/ticket47920_test.py::test_ticket47920_mod_readentry_ctrl PASSED tickets/ticket47921_test.py::test_ticket47921 PASSED tickets/ticket47927_test.py::test_ticket47927_init PASSED tickets/ticket47927_test.py::test_ticket47927_one PASSED tickets/ticket47927_test.py::test_ticket47927_two PASSED tickets/ticket47927_test.py::test_ticket47927_three PASSED tickets/ticket47927_test.py::test_ticket47927_four PASSED tickets/ticket47927_test.py::test_ticket47927_five PASSED tickets/ticket47927_test.py::test_ticket47927_six PASSED tickets/ticket47931_test.py::test_ticket47931 PASSED tickets/ticket47937_te st.py::test_ticket47937 PASSED tickets/ticket47950_test.py::test_ticket47950 PASSED tickets/ticket47953_test.py::test_ticket47953 PASSED tickets/ticket47963_test.py::test_ticket47963 PASSED tickets/ticket47966_test.py::test_ticket47966 PASSED tickets/ticket47970_test.py::test_ticket47970 PASSED tickets/ticket47973_test.py::test_ticket47973 PASSED tickets/ticket47976_test.py::test_ticket47976_init PASSED tickets/ticket47976_test.py::test_ticket47976_1 PASSED tickets/ticket47976_test.py::test_ticket47976_2 PASSED tickets/ticket47976_test.py::test_ticket47976_3 PASSED tickets/ticket47980_test.py::test_ticket47980 PASSED tickets/ticket47981_test.py::test_ticket47981 PASSED tickets/ticket47988_test.py::test_ticket47988_init PASSED tickets/ticket47988_test.py::test_ticket47988_1 PASSED tickets/ticket47988_test.py::test_ticket47988_2 PASSED tickets/ticket47988_test.py::test_ticket47988_3 PASSED tickets/ticket47988_test.py::test_ticket47988_4 PASSED tickets/ticket47988_test.py::test_ticket47988_5 PASSED tickets/ticket47988_test.py::test_ticket47988_6 PASSED tickets/ticket48005_test.py::test_ticket48005_setup PASSED tickets/ticket48005_test.py::test_ticket48005_memberof PASSED tickets/ticket48005_test.py::test_ticket48005_automember PASSED tickets/ticket48005_test.py::test_ticket48005_syntaxvalidate PASSED tickets/ticket48005_test.py::test_ticket48005_usn PASSED tickets/ticket48005_test.py::test_ticket48005_schemareload PASSED tickets/ticket48013_test.py::test_ticket48013 PASSED tickets/ticket48026_test.py::test_ticket48026 PASSED tickets/ticket48109_test.py::test_ticket48109 PASSED tickets/ticket48170_test.py::test_ticket48170 PASSED tickets/ticket48194_test.py::test_init PASSED tickets/ticket48194_test.py::test_run_0 PASSED tickets/ticket48194_test.py::test_run_1 PASSED tickets/ticket48194_test.py::test_run_2 PASSED tickets/ticket48194_test.py::test_run_3 PASSED tickets/ticket48194_test.py::test_run_4 PASSED tickets/ticket48194_test.py::test_run_5 PASSED tickets/ticket48194_test.py::test_run_6 PASSED tickets/ticket48194 _test.py::test_run_7 PASSED tickets/ticket48194_test.py::test_run_8 PASSED tickets/ticket48194_test.py::test_run_9 PASSED tickets/ticket48194_test.py::test_run_10 PASSED tickets/ticket48194_test.py::test_run_11 PASSED tickets/ticket48212_test.py::test_ticket48212 PASSED tickets/ticket48214_test.py::test_ticket48214_run PASSED tickets/ticket48226_test.py::test_ticket48226_set_purgedelay PASSED tickets/ticket48226_test.py::test_ticket48226_1 PASSED tickets/ticket48228_test.py::test_ticket48228_test_global_policy PASSED tickets/ticket48228_test.py::test_ticket48228_test_subtree_policy PASSED tickets/ticket48233_test.py::test_ticket48233 PASSED tickets/ticket48234_test.py::test_ticket48234 PASSED tickets/ticket48252_test.py::test_ticket48252_setup PASSED tickets/ticket48252_test.py::test_ticket48252_run_0 PASSED tickets/ticket48252_test.py::test_ticket48252_run_1 PASSED tickets/ticket48265_test.py::test_ticket48265_test PASSED tickets/ticket48266_test.py::test_ticket48266_fractional PASSED tickets/ticket48266_test.py::test_ticket48266_check_repl_desc PASSED tickets/ticket48266_test.py::test_ticket48266_count_csn_evaluation PASSED tickets/ticket48270_test.py::test_ticket48270_init PASSED tickets/ticket48270_test.py::test_ticket48270_homeDirectory_indexed_cis PASSED tickets/ticket48270_test.py::test_ticket48270_homeDirectory_mixed_value PASSED tickets/ticket48270_test.py::test_ticket48270_extensible_search PASSED tickets/ticket48272_test.py::test_ticket48272 PASSED tickets/ticket48294_test.py::test_48294_init PASSED tickets/ticket48294_test.py::test_48294_run_0 PASSED tickets/ticket48294_test.py::test_48294_run_1 PASSED tickets/ticket48294_test.py::test_48294_run_2 PASSED tickets/ticket48295_test.py::test_48295_init PASSED tickets/ticket48295_test.py::test_48295_run PASSED tickets/ticket48312_test.py::test_ticket48312 PASSED tickets/ticket48325_test.py::test_ticket48325 PASSED tickets/ticket48342_test.py::test_ticket4026 PASSED tickets/ticket48354_test.py::test_ticket48354 PASSED tickets/ticket48362_test.py::test_ticke t48362 PASSED tickets/ticket48366_test.py::test_ticket48366_init PASSED tickets/ticket48366_test.py::test_ticket48366_search_user PASSED tickets/ticket48366_test.py::test_ticket48366_search_dm PASSED tickets/ticket48370_test.py::test_ticket48370 PASSED tickets/ticket48383_test.py::test_ticket48383 PASSED tickets/ticket48497_test.py::test_ticket48497_init PASSED tickets/ticket48497_test.py::test_ticket48497_homeDirectory_mixed_value PASSED tickets/ticket48497_test.py::test_ticket48497_extensible_search PASSED tickets/ticket48497_test.py::test_ticket48497_homeDirectory_index_cfg PASSED tickets/ticket48497_test.py::test_ticket48497_homeDirectory_index_run PASSED tickets/ticket48637_test.py::test_ticket48637 PASSED tickets/ticket48665_test.py::test_ticket48665 PASSED tickets/ticket48745_test.py::test_ticket48745_init PASSED tickets/ticket48745_test.py::test_ticket48745_homeDirectory_indexed_cis PASSED tickets/ticket48745_test.py::test_ticket48745_homeDirectory_mixed_value PASSED tickets/ticket48745_test.py::test_ticket48745_extensible_search_after_index PASSED tickets/ticket48746_test.py::test_ticket48746_init PASSED tickets/ticket48746_test.py::test_ticket48746_homeDirectory_indexed_cis PASSED tickets/ticket48746_test.py::test_ticket48746_homeDirectory_mixed_value PASSED tickets/ticket48746_test.py::test_ticket48746_extensible_search_after_index PASSED tickets/ticket48746_test.py::test_ticket48746_homeDirectory_indexed_ces PASSED tickets/ticket48755_test.py::test_ticket48755 PASSED tickets/ticket48759_test.py::test_ticket48759 PASSED tickets/ticket48784_test.py::test_ticket48784 PASSED tickets/ticket48798_test.py::test_ticket48798 PASSED tickets/ticket48799_test.py::test_ticket48799 PASSED tickets/ticket48808_test.py::test_ticket48808 PASSED tickets/ticket48844_test.py::test_ticket48844_init PASSED tickets/ticket48844_test.py::test_ticket48844_bitwise_on PASSED tickets/ticket48844_test.py::test_ticket48844_bitwise_off PASSED tickets/ticket48891_test.py::test_ticket48891_setup PASSED tickets/ticket48893_test.py::test _ticket48893 PASSED tickets/ticket48896_test.py::test_ticket48896 PASSED tickets/ticket48906_test.py::test_ticket48906_setup PASSED tickets/ticket48906_test.py::test_ticket48906_dblock_default PASSED tickets/ticket48906_test.py::test_ticket48906_dblock_ldap_update PASSED tickets/ticket48906_test.py::test_ticket48906_dblock_edit_update PASSED tickets/ticket48906_test.py::test_ticket48906_dblock_robust PASSED tickets/ticket48916_test.py::test_ticket48916 PASSED tickets/ticket48956_test.py::test_ticket48956 PASSED tickets/ticket48961_test.py::test_ticket48961_storagescheme PASSED tickets/ticket48961_test.py::test_ticket48961_deleteall PASSED tickets/ticket548_test.py::test_ticket548_test_with_no_policy PASSED tickets/ticket548_test.py::test_ticket548_test_global_policy PASSED tickets/ticket548_test.py::test_ticket548_test_subtree_policy PASSED suites/acct_usability_plugin/acct_usability_test.py::test_acct_usability_init PASSED suites/acct_usability_plugin/acct_usability_test.py::test_acct_usability_ PASSED suites/acctpolicy_plugin/acctpolicy_test.py::test_acctpolicy_init PASSED suites/acctpolicy_plugin/acctpolicy_test.py::test_acctpolicy_ PASSED suites/acl/acl_test.py::test_aci_attr_subtype_targetattr[lang-ja] PASSED suites/acl/acl_test.py::test_aci_attr_subtype_targetattr[binary] PASSED suites/acl/acl_test.py::test_aci_attr_subtype_targetattr[phonetic] PASSED suites/acl/acl_test.py::test_mode_default_add_deny PASSED suites/acl/acl_test.py::test_mode_default_delete_deny PASSED suites/acl/acl_test.py::test_moddn_staging_prod[0-cn=staged user,dc=example,dc=com-cn=accounts,dc=example,dc=com-False] PASSED suites/acl/acl_test.py::test_moddn_staging_prod[1-cn=staged user,dc=example,dc=com-cn=accounts,dc=example,dc=com-False] PASSED suites/acl/acl_test.py::test_moddn_staging_prod[2-cn=staged user,dc=example,dc=com-cn=bad*,dc=example,dc=com-True] PASSED suites/acl/acl_test.py::test_moddn_staging_prod[3-cn=st*,dc=example,dc=com-cn=accounts,dc=example,dc=com-False] PASSED suites/acl/acl_test.py::test_moddn_staging_prod[4-cn=b ad*,dc=example,dc=com-cn=accounts,dc=example,dc=com-True] PASSED suites/acl/acl_test.py::test_moddn_staging_prod[5-cn=st*,dc=example,dc=com-cn=ac*,dc=example,dc=com-False] PASSED suites/acl/acl_test.py::test_moddn_staging_prod[6-None-cn=ac*,dc=example,dc=com-False] PASSED suites/acl/acl_test.py::test_moddn_staging_prod[7-cn=st*,dc=example,dc=com-None-False] PASSED suites/acl/acl_test.py::test_moddn_staging_prod[8-None-None-False] PASSED suites/acl/acl_test.py::test_moddn_staging_prod_9 PASSED suites/acl/acl_test.py::test_moddn_prod_staging PASSED suites/acl/acl_test.py::test_check_repl_M2_to_M1 PASSED suites/acl/acl_test.py::test_moddn_staging_prod_except PASSED suites/acl/acl_test.py::test_mode_default_ger_no_moddn PASSED suites/acl/acl_test.py::test_mode_default_ger_with_moddn PASSED suites/acl/acl_test.py::test_mode_switch_default_to_legacy PASSED suites/acl/acl_test.py::test_mode_legacy_ger_no_moddn1 PASSED suites/acl/acl_test.py::test_mode_legacy_ger_no_moddn2 PASSED suites/acl/acl_test.py::test_mode_legacy_ger_with_moddn PASSED suites/acl/acl_test.py::test_rdn_write_get_ger PASSED suites/acl/acl_test.py::test_rdn_write_modrdn_anonymous PASSED suites/attr_encryption/attr_encrypt_test.py::test_attr_encrypt_init PASSED suites/attr_encryption/attr_encrypt_test.py::test_attr_encrypt_ PASSED suites/attr_uniqueness_plugin/attr_uniqueness_test.py::test_attr_uniqueness_init PASSED suites/attr_uniqueness_plugin/attr_uniqueness_test.py::test_attr_uniqueness PASSED suites/automember_plugin/automember_test.py::test_automember_init PASSED suites/automember_plugin/automember_test.py::test_automember_ PASSED suites/basic/basic_test.py::test_basic_ops PASSED suites/basic/basic_test.py::test_basic_import_export PASSED suites/basic/basic_test.py::test_basic_backup PASSED suites/basic/basic_test.py::test_basic_acl PASSED suites/basic/basic_test.py::test_basic_searches PASSED suites/basic/basic_test.py::test_basic_referrals PASSED suites/basic/basic_test.py::test_basic_systemctl PASSED suites/basic/basic_test.py::test_basic_lda pagent PASSED suites/basic/basic_test.py::test_basic_dse PASSED suites/basic/basic_test.py::test_def_rootdse_attr[namingContexts] PASSED suites/basic/basic_test.py::test_def_rootdse_attr[supportedLDAPVersion] PASSED suites/basic/basic_test.py::test_def_rootdse_attr[supportedControl] PASSED suites/basic/basic_test.py::test_def_rootdse_attr[supportedExtension] PASSED suites/basic/basic_test.py::test_def_rootdse_attr[supportedSASLMechanisms] PASSED suites/basic/basic_test.py::test_def_rootdse_attr[vendorName] PASSED suites/basic/basic_test.py::test_def_rootdse_attr[vendorVersion] PASSED suites/basic/basic_test.py::test_mod_def_rootdse_attr[namingContexts] PASSED suites/basic/basic_test.py::test_mod_def_rootdse_attr[supportedLDAPVersion] PASSED suites/basic/basic_test.py::test_mod_def_rootdse_attr[supportedControl] PASSED suites/basic/basic_test.py::test_mod_def_rootdse_attr[supportedExtension] PASSED suites/basic/basic_test.py::test_mod_def_rootdse_attr[supportedSASLMechanisms] PASSED suites/basic/basic_test.py::test_mod_def_rootdse_attr[vendorName] PASSED suites/basic/basic_test.py::test_mod_def_rootdse_attr[vendorVersion] PASSED suites/betxns/betxn_test.py::test_betxn_init PASSED suites/betxns/betxn_test.py::test_betxt_7bit PASSED suites/betxns/betxn_test.py::test_betxn_attr_uniqueness PASSED suites/betxns/betxn_test.py::test_betxn_memberof PASSED suites/chaining_plugin/chaining_test.py::test_chaining_init PASSED suites/chaining_plugin/chaining_test.py::test_chaining_ PASSED suites/clu/clu_test.py::test_clu_init PASSED suites/clu/clu_test.py::test_clu_pwdhash PASSED suites/clu/db2ldif_test.py::test_db2ldif_init PASSED suites/collation_plugin/collatation_test.py::test_collatation_init PASSED suites/collation_plugin/collatation_test.py::test_collatation_ PASSED suites/config/config_test.py::test_maxbersize_repl PASSED suites/config/config_test.py::test_config_listen_backport_size PASSED suites/config/config_test.py::test_config_deadlock_policy PASSED suites/cos_plugin/cos_test.py::test_cos_init PASSED suites/cos_plu gin/cos_test.py::test_cos_ PASSED suites/deref_plugin/deref_test.py::test_deref_init PASSED suites/deref_plugin/deref_test.py::test_deref_ PASSED suites/disk_monitoring/disk_monitor_test.py::test_disk_monitor_init PASSED suites/disk_monitoring/disk_monitor_test.py::test_disk_monitor_ PASSED suites/distrib_plugin/distrib_test.py::test_distrib_init PASSED suites/distrib_plugin/distrib_test.py::test_distrib_ PASSED suites/dna_plugin/dna_test.py::test_dna_init PASSED suites/dna_plugin/dna_test.py::test_dna_ PASSED suites/ds_logs/ds_logs_test.py::test_ds_logs_init PASSED suites/ds_logs/ds_logs_test.py::test_ds_logs_ PASSED suites/dynamic-plugins/test_dynamic_plugins.py::test_dynamic_plugins PASSED suites/filter/filter_test.py::test_filter_init PASSED suites/filter/filter_test.py::test_filter_escaped PASSED suites/filter/filter_test.py::test_filter_search_original_attrs PASSED suites/filter/rfc3673_all_oper_attrs_test.py::test_supported_features PASSED suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[-False-oper_attr_list0] PASSED suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[-False-oper_attr_list0-*] PASSED suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[-False-oper_attr_list0-objectClass] PASSED suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[-True-oper_attr_list1] PASSED suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[-True-oper_attr_list1-*] PASSED suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[-True-oper_attr_list1-objectClass] PASSED suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[ou=people,dc=example,dc=com-False-oper_attr_list2] PASSED suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[ou=people,dc=example,dc=com-False-oper_attr_list2-*] PASSED suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[ou=people,dc=example,dc=com-False-oper_attr_list2-objectClass] PASSED suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[ou=people,dc=example,dc=com-True-oper_attr_list3 ] PASSED suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[ou=people,dc=example,dc=com-True-oper_attr_list3-*] PASSED suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[ou=people,dc=example,dc=com-True-oper_attr_list3-objectClass] PASSED suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[uid=all_attrs_test,ou=people,dc=example,dc=com-False-oper_attr_list4] PASSED suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[uid=all_attrs_test,ou=people,dc=example,dc=com-False-oper_attr_list4-*] PASSED suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[uid=all_attrs_test,ou=people,dc=example,dc=com-False-oper_attr_list4-objectClass] PASSED suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[uid=all_attrs_test,ou=people,dc=example,dc=com-True-oper_attr_list5] PASSED suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[uid=all_attrs_test,ou=people,dc=example,dc=com-True-oper_attr_list5-*] PASSED suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[uid=all_attrs_test,ou=people,dc=example,dc=com-True-oper_attr_list5-objectClass] PASSED suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[cn=config-False-oper_attr_list6] PASSED suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[cn=config-False-oper_attr_list6-*] PASSED suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[cn=config-False-oper_attr_list6-objectClass] PASSED suites/get_effective_rights/ger_test.py::test_ger_init PASSED suites/get_effective_rights/ger_test.py::test_ger_ PASSED suites/gssapi_repl/gssapi_repl_test.py::test_gssapi_repl PASSED suites/ldapi/ldapi_test.py::test_ldapi_init PASSED suites/ldapi/ldapi_test.py::test_ldapi_ PASSED suites/linkedattrs_plugin/linked_attrs_test.py::test_linked_attrs_init PASSED suites/linkedattrs_plugin/linked_attrs_test.py::test_linked_attrs_ PASSED suites/mapping_tree/mapping_tree_test.py::test_mapping_tree_init PASSED suites/mapping_tree/mapping_tree_test.py::test_mapping_tree_ PASSED suites/membe rof_plugin/memberof_test.py::test_memberof_auto_add_oc PASSED suites/memory_leaks/range_search_test.py::test_range_search_init PASSED suites/memory_leaks/range_search_test.py::test_range_search PASSED suites/monitor/monitor_test.py::test_monitor_init PASSED suites/monitor/monitor_test.py::test_monitor_ PASSED suites/paged_results/paged_results_test.py::test_search_success[6-5] PASSED suites/paged_results/paged_results_test.py::test_search_success[5-5] PASSED suites/paged_results/paged_results_test.py::test_search_success[5-25] PASSED suites/paged_results/paged_results_test.py::test_search_limits_fail[50-200-cn=config,cn=ldbm database,cn=plugins,cn=config-nsslapd-idlistscanlimit-100-UNWILLING_TO_PERFORM] PASSED suites/paged_results/paged_results_test.py::test_search_limits_fail[5-15-cn=config-nsslapd-timelimit-20-UNAVAILABLE_CRITICAL_EXTENSION] PASSED suites/paged_results/paged_results_test.py::test_search_limits_fail[21-50-cn=config-nsslapd-sizelimit-20-SIZELIMIT_EXCEEDED] PASSED suites/paged_results/paged_results_test.py::test_search_limits_fail[21-50-cn=config-nsslapd-pagedsizelimit-5-SIZELIMIT_EXCEEDED] PASSED suites/paged_results/paged_results_test.py::test_search_limits_fail[5-50-cn=config,cn=ldbm database,cn=plugins,cn=config-nsslapd-lookthroughlimit-20-ADMINLIMIT_EXCEEDED] PASSED suites/paged_results/paged_results_test.py::test_search_sort_success PASSED suites/paged_results/paged_results_test.py::test_search_abandon PASSED suites/paged_results/paged_results_test.py::test_search_with_timelimit PASSED suites/paged_results/paged_results_test.py::test_search_dns_ip_aci[dns = "localhost.localdomain"] PASSED suites/paged_results/paged_results_test.py::test_search_dns_ip_aci[ip = "::1" or ip = "127.0.0.1"] PASSED suites/paged_results/paged_results_test.py::test_search_multiple_paging PASSED suites/paged_results/paged_results_test.py::test_search_invalid_cookie[1000] PASSED suites/paged_results/paged_results_test.py::test_search_invalid_cookie[-1] PASSED suites/paged_results/paged_results_test.py::test_search_aba ndon_with_zero_size PASSED suites/paged_results/paged_results_test.py::test_search_pagedsizelimit_success PASSED suites/paged_results/paged_results_test.py::test_search_nspagedsizelimit[5-15-PASS] PASSED suites/paged_results/paged_results_test.py::test_search_nspagedsizelimit[15-5-SIZELIMIT_EXCEEDED] PASSED suites/paged_results/paged_results_test.py::test_search_paged_limits[conf_attr_values0-ADMINLIMIT_EXCEEDED] PASSED suites/paged_results/paged_results_test.py::test_search_paged_limits[conf_attr_values1-PASS] PASSED suites/paged_results/paged_results_test.py::test_search_paged_user_limits[conf_attr_values0-ADMINLIMIT_EXCEEDED] PASSED suites/paged_results/paged_results_test.py::test_search_paged_user_limits[conf_attr_values1-PASS] PASSED suites/paged_results/paged_results_test.py::test_ger_basic PASSED suites/paged_results/paged_results_test.py::test_multi_suffix_search PASSED suites/paged_results/paged_results_test.py::test_maxsimplepaged_per_conn_success[None] PASSED suites/paged_results/paged_results_test.py::test_maxsimplepaged_per_conn_success[-1] PASSED suites/paged_results/paged_results_test.py::test_maxsimplepaged_per_conn_success[1000] PASSED suites/paged_results/paged_results_test.py::test_maxsimplepaged_per_conn_failure[0] PASSED suites/paged_results/paged_results_test.py::test_maxsimplepaged_per_conn_failure[1] PASSED suites/pam_passthru_plugin/pam_test.py::test_pam_init PASSED suites/pam_passthru_plugin/pam_test.py::test_pam_ PASSED suites/passthru_plugin/passthru_test.py::test_passthru_init PASSED suites/passthru_plugin/passthru_test.py::test_passthru_ PASSED suites/password/password_test.py::test_password_init PASSED suites/password/password_test.py::test_password_delete_specific_password PASSED suites/password/pwdAdmin_test.py::test_pwdAdmin_init PASSED suites/password/pwdAdmin_test.py::test_pwdAdmin PASSED suites/password/pwdAdmin_test.py::test_pwdAdmin_config_validation PASSED suites/password/pwdPolicy_attribute_test.py::test_change_pwd[on-off-UNWILLING_TO_PERFORM] PASSED suites/password/pwdPol icy_attribute_test.py::test_change_pwd[off-off-UNWILLING_TO_PERFORM] PASSED suites/password/pwdPolicy_attribute_test.py::test_change_pwd[off-on-None] PASSED suites/password/pwdPolicy_attribute_test.py::test_change_pwd[on-on-None] PASSED suites/password/pwdPolicy_attribute_test.py::test_pwd_min_age PASSED suites/password/pwdPolicy_inherit_global_test.py::test_entry_has_no_restrictions[off-off] PASSED suites/password/pwdPolicy_inherit_global_test.py::test_entry_has_no_restrictions[on-off] PASSED suites/password/pwdPolicy_inherit_global_test.py::test_entry_has_no_restrictions[off-on] PASSED suites/password/pwdPolicy_inherit_global_test.py::test_entry_has_restrictions[cn=config] PASSED suites/password/pwdPolicy_inherit_global_test.py::test_entry_has_restrictions[cn="cn=nsPwPolicyEntry,ou=People,dc=example,dc=com",cn=nsPwPolicyContainer,ou=People,dc=example,dc=com] PASSED suites/password/pwdPolicy_syntax_test.py::test_pwdPolicy_syntax PASSED suites/password/pwdPolicy_warning_test.py::test_different_values[ ] PASSED suites/password/pwdPolicy_warning_test.py::test_different_values[junk123] PASSED suites/password/pwdPolicy_warning_test.py::test_different_values[on] PASSED suites/password/pwdPolicy_warning_test.py::test_different_values[off] PASSED suites/password/pwdPolicy_warning_test.py::test_expiry_time PASSED suites/password/pwdPolicy_warning_test.py::test_password_warning[passwordSendExpiringTime-off] PASSED suites/password/pwdPolicy_warning_test.py::test_password_warning[passwordWarning-3600] PASSED suites/password/pwdPolicy_warning_test.py::test_with_different_password_states PASSED suites/password/pwdPolicy_warning_test.py::test_default_behavior PASSED suites/password/pwdPolicy_warning_test.py::test_with_local_policy PASSED suites/password/pwd_algo_test.py::test_pwd_algo_test PASSED suites/password/pwp_history_test.py::test_pwp_history_test PASSED suites/posix_winsync_plugin/posix_winsync_test.py::test_posix_winsync_init PASSED suites/posix_winsync_plugin/posix_winsync_test.py::test_posix_winsync_ PASSED suites/p search/psearch_test.py::test_psearch_init PASSED suites/psearch/psearch_test.py::test_psearch_ PASSED suites/referint_plugin/referint_test.py::test_referint_init PASSED suites/referint_plugin/referint_test.py::test_referint_ PASSED suites/replication/cleanallruv_test.py::test_cleanallruv_init PASSED suites/replication/cleanallruv_test.py::test_cleanallruv_clean PASSED suites/replication/cleanallruv_test.py::test_cleanallruv_clean_restart PASSED suites/replication/cleanallruv_test.py::test_cleanallruv_clean_force PASSED suites/replication/cleanallruv_test.py::test_cleanallruv_abort PASSED suites/replication/cleanallruv_test.py::test_cleanallruv_abort_restart PASSED suites/replication/cleanallruv_test.py::test_cleanallruv_abort_certify PASSED suites/replication/cleanallruv_test.py::test_cleanallruv_stress_clean PASSED suites/replication/wait_for_async_feature_test.py::test_not_int_value PASSED suites/replication/wait_for_async_feature_test.py::test_multi_value PASSED suites/replication/wait_for_async_feature_test.py::test_value_check[waitfor_async_attr0] PASSED suites/replication/wait_for_async_feature_test.py::test_value_check[waitfor_async_attr1] PASSED suites/replication/wait_for_async_feature_test.py::test_value_check[waitfor_async_attr2] PASSED suites/replication/wait_for_async_feature_test.py::test_value_check[waitfor_async_attr3] PASSED suites/replication/wait_for_async_feature_test.py::test_behavior_with_value[waitfor_async_attr0] PASSED suites/replication/wait_for_async_feature_test.py::test_behavior_with_value[waitfor_async_attr1] PASSED suites/replication/wait_for_async_feature_test.py::test_behavior_with_value[waitfor_async_attr2] PASSED suites/replication/wait_for_async_feature_test.py::test_behavior_with_value[waitfor_async_attr3] PASSED suites/replsync_plugin/repl_sync_test.py::test_repl_sync_init PASSED suites/replsync_plugin/repl_sync_test.py::test_repl_sync_ PASSED suites/resource_limits/res_limits_test.py::test_res_limits_init PASSED suites/resource_limits/res_limits_test.py::test_res_limits_ PAS SED suites/retrocl_plugin/retrocl_test.py::test_retrocl_init PASSED suites/retrocl_plugin/retrocl_test.py::test_retrocl_ PASSED suites/reverpwd_plugin/reverpwd_test.py::test_reverpwd_init PASSED suites/reverpwd_plugin/reverpwd_test.py::test_reverpwd_ PASSED suites/roles_plugin/roles_test.py::test_roles_init PASSED suites/roles_plugin/roles_test.py::test_roles_ PASSED suites/rootdn_plugin/rootdn_plugin_test.py::test_rootdn_init PASSED suites/rootdn_plugin/rootdn_plugin_test.py::test_rootdn_access_specific_time PASSED suites/rootdn_plugin/rootdn_plugin_test.py::test_rootdn_access_day_of_week PASSED suites/rootdn_plugin/rootdn_plugin_test.py::test_rootdn_access_denied_ip PASSED suites/rootdn_plugin/rootdn_plugin_test.py::test_rootdn_access_denied_host PASSED suites/rootdn_plugin/rootdn_plugin_test.py::test_rootdn_access_allowed_ip PASSED suites/rootdn_plugin/rootdn_plugin_test.py::test_rootdn_access_allowed_host PASSED suites/rootdn_plugin/rootdn_plugin_test.py::test_rootdn_config_validate PASSED suites/sasl/sasl_test.py::test_sasl_init PASSED suites/sasl/sasl_test.py::test_sasl_ PASSED suites/schema/test_schema.py::test_schema_comparewithfiles PASSED suites/schema_reload_plugin/schema_reload_test.py::test_schema_reload_init PASSED suites/schema_reload_plugin/schema_reload_test.py::test_schema_reload_ PASSED suites/snmp/snmp_test.py::test_snmp_init PASSED suites/snmp/snmp_test.py::test_snmp_ PASSED suites/ssl/ssl_test.py::test_ssl_init PASSED suites/ssl/ssl_test.py::test_ssl_ PASSED suites/syntax_plugin/syntax_test.py::test_syntax_init PASSED suites/syntax_plugin/syntax_test.py::test_syntax_ PASSED suites/usn_plugin/usn_test.py::test_usn_init PASSED suites/usn_plugin/usn_test.py::test_usn_ PASSED suites/views_plugin/views_test.py::test_views_init PASSED suites/views_plugin/views_test.py::test_views_ PASSED suites/vlv/vlv_test.py::test_vlv_init PASSED suites/vlv/vlv_test.py::test_vlv_ PASSED suites/whoami_plugin/whoami_test.py::test_whoami_init PASSED suites/whoami_plugin/whoami_test.py::test_whoami_ PASSED ========= ========================== FAILURES =================================== _____________________________ test_ticket47653_add _____________________________ topology = <tickets.ticket47653MMR_test.TopologyMaster1Master2 object at 0x7f2901017f10> def test_ticket47653_add(topology): ''' This test ADD an entry on MASTER1 where 47653 is fixed. Then it checks that entry is replicated on MASTER2 (even if on MASTER2 47653 is NOT fixed). Then update on MASTER2 and check the update on MASTER1 It checks that, bound as bind_entry, - we can not ADD an entry without the proper SELFDN aci. - with the proper ACI we can not ADD with 'member' attribute - with the proper ACI and 'member' it succeeds to ADD ''' topology.master1.log.info("\n\n######################### ADD ######################\n") # bind as bind_entry topology.master1.log.info("Bind as %s" % BIND_DN) topology.master1.simple_bind_s(BIND_DN, BIND_PW) # Prepare the entry with multivalued members entry_with_members = Entry(ENTRY_DN) entry_with_members.setValues('objectclass', 'top', 'person', 'OCticket47653') entry_with_members.setValues('sn', ENTRY_NAME) entry_with_members.setValues('cn', ENTRY_NAME) entry_with_members.setValues('postalAddress', 'here') entry_with_members.setValues('postalCode', '1234') members = [] for cpt in range(MAX_OTHERS): name = "%s%d" % (OTHER_NAME, cpt) members.append("cn=%s,%s" % (name, SUFFIX)) members.append(BIND_DN) entry_with_members.setValues('member', members) # Prepare the entry with only one member value entry_with_member = Entry(ENTRY_DN) entry_with_member.setValues('objectclass', 'top', 'person', 'OCticket47653') entry_with_member.setValues('sn', ENTRY_NAME) entry_with_member.setValues('cn', ENTRY_NAME) entry_with_member.setValues('postalAddress', 'here') entry_with_member.setValues('postalCode', '1234') member = [] member.append(BIND_DN) entry_with_member.setValues('member', member) # entry to add WITH member being BIND_DN but WITHOUT the ACI -> ldap.INSUFFICIENT_ACCESS try: topology.master1.log.info("Try to add Add %s (aci is missing ): %r" % (ENTRY_DN, entry_with_member)) topology.master1.add_s(entry_with_member) except Exception as e: topology.master1.log.info("Exception (expected): %s" % type(e).__name__) assert isinstance(e, ldap.INSUFFICIENT_ACCESS) # Ok Now add the proper ACI topology.master1.log.info("Bind as %s and add the ADD SELFDN aci" % DN_DM) topology.master1.simple_bind_s(DN_DM, PASSWORD) ACI_TARGET = "(target = \"ldap:///cn=*,%s\")" % SUFFIX ACI_TARGETFILTER = "(targetfilter =\"(objectClass=%s)\")" % OC_NAME ACI_ALLOW = "(version 3.0; acl \"SelfDN add\"; allow (add)" ACI_SUBJECT = " userattr = \"member#selfDN\";)" ACI_BODY = ACI_TARGET + ACI_TARGETFILTER + ACI_ALLOW + ACI_SUBJECT mod = [(ldap.MOD_ADD, 'aci', ACI_BODY)] topology.master1.modify_s(SUFFIX, mod) time.sleep(1) # bind as bind_entry topology.master1.log.info("Bind as %s" % BIND_DN) topology.master1.simple_bind_s(BIND_DN, BIND_PW) # entry to add WITHOUT member and WITH the ACI -> ldap.INSUFFICIENT_ACCESS try: topology.master1.log.info("Try to add Add %s (member is missing)" % ENTRY_DN) topology.master1.add_s(Entry((ENTRY_DN, { 'objectclass': ENTRY_OC.split(), 'sn': ENTRY_NAME, 'cn': ENTRY_NAME, 'postalAddress': 'here', 'postalCode': '1234'}))) except Exception as e: topology.master1.log.info("Exception (expected): %s" % type(e).__name__) assert isinstance(e, ldap.INSUFFICIENT_ACCESS) # entry to add WITH memberS and WITH the ACI -> ldap.INSUFFICIENT_ACCESS # member should contain only one value try: topology.master1.log.info("Try to add Add %s (with several member values)" % ENTRY_DN) topology.master1.add_s(entry_with_members) except Exception as e: topology.master1.log.info("Exception (expected): %s" % type(e).__name__) assert isinstance(e, ldap.INSUFFICIENT_ACCESS) topology.master1.log.info("Try to add Add %s should be successful" % ENTRY_DN) try: topology.master1.add_s(entry_with_member) except ldap.LDAPError as e: topology.master1.log.info("Failed to add entry, error: " + e.message['desc']) > assert False E assert False tickets/ticket47653MMR_test.py:305: AssertionEr ror ----------------------------- Captured stderr call ----------------------------- INFO:lib389: ######################### ADD ###################### INFO:lib389:Bind as cn=bind_entry, dc=example,dc=com INFO:lib389:Try to add Add cn=test_entry, dc=example,dc=com (aci is missing): dn: cn=test_entry, dc=example,dc=com cn: test_entry member: cn=bind_entry, dc=example,dc=com objectclass: top objectclass: person objectclass: OCticket47653 postalAddress: here postalCode: 1234 sn: test_entry INFO:lib389:Exception (expected): INSUFFICIENT_ACCESS INFO:lib389:Bind as cn=Directory Manager and add the ADD SELFDN aci INFO:lib389:Bind as cn=bind_entry, dc=example,dc=com INFO:lib389:Try to add Add cn=test_entry, dc=example,dc=com (member is missing) INFO:lib389:Exception (expected): INSUFFICIENT_ACCESS INFO:lib389:Try to add Add cn=test_entry, dc=example,dc=com (with several member values) INFO:lib389:Exception (expected): INSUFFICIENT_ACCESS INFO:lib389:Try to add Add cn=test_entry, dc=example,dc=com should be successful INFO:lib389:Failed to add entry, error: Insufficient access ___________________________ test_ticket47653_modify ____________________________ topology = <tickets.ticket47653MMR_test.TopologyMaster1Master2 object at 0x7f2901017f10> def test_ticket47653_modify(topology): ''' This test MOD an entry on MASTER1 where 47653 is fixed. Then it checks that update is replicated on MASTER2 (even if on MASTER2 47653 is NOT fixed). Then update on MASTER2 (bound as BIND_DN). This update may fail whether or not 47653 is fixed on MASTER2 It checks that, bound as bind_entry, - we can not modify an entry without the proper SELFDN aci. - adding the ACI, we can modify the entry ''' # bind as bind_entry topology.master1.log.info("Bind as %s" % BIND_DN) topology.master1.simple_bind_s(BIND_DN, BIND_PW) topology.master1.log.info("\n\n######################### MODIFY ######################\n") # entry to modify WITH member being BIND_DN but WITHOUT the ACI -> ldap.INSUFFICIENT_ACCESS try: topology.master1.log.info("Try to modify %s (a ci is missing)" % ENTRY_DN) mod = [(ldap.MOD_REPLACE, 'postalCode', '9876')] topology.master1.modify_s(ENTRY_DN, mod) except Exception as e: topology.master1.log.info("Exception (expected): %s" % type(e).__name__) assert isinstance(e, ldap.INSUFFICIENT_ACCESS) # Ok Now add the proper ACI topology.master1.log.info("Bind as %s and add the WRITE SELFDN aci" % DN_DM) topology.master1.simple_bind_s(DN_DM, PASSWORD) ACI_TARGET = "(target = \"ldap:///cn=*,%s\")" % SUFFIX ACI_TARGETATTR = "(targetattr = *)" ACI_TARGETFILTER = "(targetfilter =\"(objectClass=%s)\")" % OC_NAME ACI_ALLOW = "(version 3.0; acl \"SelfDN write\"; allow (write)" ACI_SUBJECT = " userattr = \"member#selfDN\";)" ACI_BODY = ACI_TARGET + ACI_TARGETATTR + ACI_TARGETFILTER + ACI_ALLOW + ACI_SUBJECT mod = [(ldap.MOD_ADD, 'aci', ACI_BODY)] topology.master1.modify_s(SUFFIX, mod) time.sleep(1) # bind as bind_entry topology.master1.log.info("M1: Bind as %s" % BIND_DN) topology.master1.simple_bind_s(BIND_DN, BIND_PW) # modify the entry and checks the value topology.master1.log.info("M1: Try to modify %s. It should succeeds" % ENTRY_DN) mod = [(ldap.MOD_REPLACE, 'postalCode', '1928')] > topology.master1.modify_s(ENTRY_DN, mod) tickets/ticket47653MMR_test.py:387: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../../../lib389/lib389/__init__.py:159: in inner return f(*args, **kwargs) /usr/lib64/python2.7/site-packages/ldap/ldapobject.py:402: in modify_s return self.result(msgid,all=1,timeout=self.timeout) ../../../lib389/lib389/__init__.py:127: in inner objtype, data = f(*args, **kwargs) /usr/lib64/python2.7/site-packages/ldap/ldapobject.py:503: in result resp_type, resp_data, resp_msgid = self.result2(msgid,all,timeout) ../../../lib389/lib389/__init__.py:159: in inner return f(*args, **kwargs) /usr/lib64/python2.7/site-packages/ldap/ldapobject.py:507: in result2 resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all,timeout) ../../../lib389/lib389/__init__.py:159: in inner return f(*args, **kwargs) /usr/lib64/pyth on2.7/site-packages/ldap/ldapobject.py:514: in result3 resp_ctrl_classes=resp_ctrl_classes ../../../lib389/lib389/__init__.py:159: in inner return f(*args, **kwargs) /usr/lib64/python2.7/site-packages/ldap/ldapobject.py:521: in result4 ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop) ../../../lib389/lib389/__init__.py:159: in inner return f(*args, **kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <lib389.DirSrv instance at 0x7f290115dd88> func = <built-in method result4 of LDAP object at 0x7f2901c1b4e0> args = (37, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None e = INSUFFICIENT_ACCESS({'desc': 'Insufficient access'},) def _ldap_call(self,func,*args,**kwargs): """ Wrapper method mainly for serializing calls into OpenLDAP libs and trace logs """ self._ldap_object_lock.acquire() if __debug__: if self._trace_level>=1: self._trace_file.write('*** %s %s - %s\n%s\n' % ( repr(self), self._uri, '.'.join((self.__class__.__name__,func.__name__)), pprint.pformat((args,kwargs)) )) if self._trace_level>=9: traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file) diagnostic_message_success = None try: try: > result = func(*args,**kwargs) E INSUFFICIENT_ACCESS: {'desc': 'Insufficient access'} /usr/lib64/python2.7/site-packages/ldap/ldapobject.py:106: INSUFFICIENT_ACCESS ----------------------------- Captured stderr call ----------------------------- INFO:lib389:Bind as cn=bind_entry, dc=example,dc=com INFO:lib389: ######################### MODIFY ###################### INFO:lib389:Try to modify cn=test_entry, dc=example,dc=com (aci is missing) INFO:lib389:Exception (expected): INSUFFICIENT_ACCESS INFO:lib389:Bind as cn=Directory Manager and add the WRITE SELFDN aci INFO:lib389:M1: Bind as cn=bind_entry, dc=example,dc=com INFO:lib389:M1: Try to modify cn=test_entry, dc=example,dc=com. It should succeeds =================== 2 failed, 522 passed in 9828.58 seconds ==================== + MSG=FAILED + RC=1 + sudo /usr/sbin/sendmail mreynolds@xxxxxxxxxx + exit 1 Build step 'Execute shell' marked build as failure _______________________________________________ 389-devel mailing list -- 389-devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to 389-devel-leave@xxxxxxxxxxxxxxxxxxxxxxx