| | |
| | | LDAPReplicationDomain domain = |
| | | MultimasterReplication.createNewDomain(conf, queue); |
| | | |
| | | /* |
| | | * Create a Change number generator to generate new ChangeNumbers |
| | | * when we need to send operations messages to the replicationServer. |
| | | */ |
| | | ChangeNumberGenerator gen = new ChangeNumberGenerator((short) 201, 0); |
| | | try |
| | | { |
| | | /* |
| | | * Create a Change number generator to generate new ChangeNumbers |
| | | * when we need to send operations messages to the replicationServer. |
| | | */ |
| | | ChangeNumberGenerator gen = new ChangeNumberGenerator((short) 201, 0); |
| | | |
| | | String parentUUID = getEntryUUID(DN.decode(TEST_ROOT_DN_STRING)); |
| | | String parentUUID = getEntryUUID(DN.decode(TEST_ROOT_DN_STRING)); |
| | | |
| | | Entry entry = TestCaseUtils.entryFromLdifString( |
| | | "dn: cn=simultaneousModrdnConflict, "+ TEST_ROOT_DN_STRING + "\n" |
| | | + "objectClass: top\n" + "objectClass: person\n" |
| | | + "objectClass: organizationalPerson\n" |
| | | + "objectClass: inetOrgPerson\n" + "uid: user.1\n" |
| | | + "homePhone: 951-245-7634\n" |
| | | + "description: This is the description for Aaccf Amar.\n" + "st: NC\n" |
| | | + "mobile: 027-085-0537\n" |
| | | + "postalAddress: Aaccf Amar$17984 Thirteenth Street" |
| | | + "$Rockford, NC 85762\n" + "mail: user.1@example.com\n" |
| | | + "cn: Aaccf Amar\n" + "l: Rockford\n" + "pager: 508-763-4246\n" |
| | | + "street: 17984 Thirteenth Street\n" |
| | | + "telephoneNumber: 216-564-6748\n" + "employeeNumber: 1\n" |
| | | + "sn: Amar\n" + "givenName: Aaccf\n" + "postalCode: 85762\n" |
| | | + "userPassword: password\n" + "initials: AA\n"); |
| | | Entry entry = TestCaseUtils.entryFromLdifString( |
| | | "dn: cn=simultaneousModrdnConflict, "+ TEST_ROOT_DN_STRING + "\n" |
| | | + "objectClass: top\n" + "objectClass: person\n" |
| | | + "objectClass: organizationalPerson\n" |
| | | + "objectClass: inetOrgPerson\n" + "uid: user.1\n" |
| | | + "description: This is the description for Aaccf Amar.\n" + "st: NC\n" |
| | | + "postalAddress: Aaccf Amar$17984 Thirteenth Street" |
| | | + "$Rockford, NC 85762\n" + "mail: user.1@example.com\n" |
| | | + "cn: Aaccf Amar\n" + "l: Rockford\n" |
| | | + "street: 17984 Thirteenth Street\n" |
| | | + "employeeNumber: 1\n" |
| | | + "sn: Amar\n" + "givenName: Aaccf\n" + "postalCode: 85762\n" |
| | | + "userPassword: password\n" + "initials: AA\n"); |
| | | |
| | | TestCaseUtils.addEntry(entry); |
| | | String entryUUID = getEntryUUID(entry.getDN()); |
| | | TestCaseUtils.addEntry(entry); |
| | | String entryUUID = getEntryUUID(entry.getDN()); |
| | | |
| | | // generate two consecutive ChangeNumber that will be used in backward order |
| | | ChangeNumber cn1 = gen.newChangeNumber(); |
| | | ChangeNumber cn2 = gen.newChangeNumber(); |
| | | // generate two consecutive ChangeNumber that will be used in backward order |
| | | ChangeNumber cn1 = gen.newChangeNumber(); |
| | | ChangeNumber cn2 = gen.newChangeNumber(); |
| | | |
| | | ModifyDNMsg modDnMsg = new ModifyDNMsg( |
| | | entry.getDN().toNormalizedString(), cn2, |
| | | entryUUID, parentUUID, false, |
| | | TEST_ROOT_DN_STRING, |
| | | "uid=simultaneous2"); |
| | | ModifyDNMsg modDnMsg = new ModifyDNMsg( |
| | | entry.getDN().toNormalizedString(), cn2, |
| | | entryUUID, parentUUID, false, |
| | | TEST_ROOT_DN_STRING, |
| | | "uid=simultaneous2"); |
| | | |
| | | domain.processUpdate(modDnMsg); |
| | | domain.replay(queue.take().getUpdateMessage()); |
| | | domain.processUpdate(modDnMsg); |
| | | domain.replay(queue.take().getUpdateMessage()); |
| | | |
| | | // This MODIFY DN uses an older DN and should therefore be cancelled |
| | | // at replay time. |
| | | modDnMsg = new ModifyDNMsg( |
| | | entry.getDN().toNormalizedString(), cn1, |
| | | entryUUID, parentUUID, false, |
| | | TEST_ROOT_DN_STRING, |
| | | "uid=simulatneouswrong"); |
| | | // This MODIFY DN uses an older DN and should therefore be cancelled |
| | | // at replay time. |
| | | modDnMsg = new ModifyDNMsg( |
| | | entry.getDN().toNormalizedString(), cn1, |
| | | entryUUID, parentUUID, false, |
| | | TEST_ROOT_DN_STRING, |
| | | "uid=simulatneouswrong"); |
| | | |
| | | domain.processUpdate(modDnMsg); |
| | | domain.replay(queue.take().getUpdateMessage()); |
| | | domain.processUpdate(modDnMsg); |
| | | domain.replay(queue.take().getUpdateMessage()); |
| | | |
| | | assertFalse(DirectoryServer.entryExists(entry.getDN()), |
| | | "The modDN conflict was not resolved as expected."); |
| | | |
| | | MultimasterReplication.deleteDomain(baseDn); |
| | | assertFalse(DirectoryServer.entryExists(entry.getDN()), |
| | | "The modDN conflict was not resolved as expected."); |
| | | } |
| | | finally |
| | | { |
| | | MultimasterReplication.deleteDomain(baseDn); |
| | | } |
| | | } |
| | | } |