| | |
| | | AddSequenceLength*5+100, null); |
| | | replServer = new ReplicationServer(conf); |
| | | |
| | | ReplicationBroker broker = |
| | | openReplicationSession(baseDN, brokerId, 1000, replServerPort, 1000, |
| | | false, CLEAN_DB_GENERATION_ID); |
| | | ReplicationBroker broker = openReplicationSession( |
| | | baseDN, brokerId, 1000, replServerPort, 1000, CLEAN_DB_GENERATION_ID); |
| | | |
| | | Thread.sleep(2000); |
| | | // send a sequence of add operation |
| | |
| | | domain = MultimasterReplication.createNewDomain(domainConf); |
| | | domain.start(); |
| | | |
| | | ReplicationBroker broker = |
| | | openReplicationSession(baseDN, brokerId, 1000, replServerPort, 1000, |
| | | false, CLEAN_DB_GENERATION_ID); |
| | | ReplicationBroker broker = openReplicationSession( |
| | | baseDN, brokerId, 1000, replServerPort, 1000, CLEAN_DB_GENERATION_ID); |
| | | |
| | | // add an entry to play with. |
| | | entry.removeAttribute(uidType); |
| | |
| | | 0, 5*AddSequenceLength+100, null); |
| | | replServer = new ReplicationServer(conf); |
| | | |
| | | ReplicationBroker broker = |
| | | openReplicationSession(baseDN, brokerId, 100, replServerPort, 1000, |
| | | false, CLEAN_DB_GENERATION_ID); |
| | | ReplicationBroker broker = openReplicationSession( |
| | | baseDN, brokerId, 100, replServerPort, 1000, CLEAN_DB_GENERATION_ID); |
| | | |
| | | // send a sequence of add/del/add operations |
| | | CSNGenerator gen = new CSNGenerator(brokerId, 0L); |
| | |
| | | 0, 5*AddSequenceLength+100, null); |
| | | replServer = new ReplicationServer(conf); |
| | | |
| | | ReplicationBroker broker = |
| | | openReplicationSession(baseDN, brokerId, 100, replServerPort, 1000, |
| | | false, CLEAN_DB_GENERATION_ID); |
| | | ReplicationBroker broker = openReplicationSession( |
| | | baseDN, brokerId, 100, replServerPort, 1000, CLEAN_DB_GENERATION_ID); |
| | | |
| | | |
| | | DN addDN = TEST_ROOT_DN; |
| | |
| | | private ReplicationServer replServer1; |
| | | private ReplicationServer replServer2; |
| | | private ReplicationServer replServer3; |
| | | private boolean emptyOldChanges = true; |
| | | private Entry taskInitRemoteS2; |
| | | private String[] updatedEntries; |
| | | private static int[] replServerPort; |
| | |
| | | debugInfo(testCase + " ** TEST ** DS2 connection to RS1 with bad genID"); |
| | | |
| | | broker2 = openReplicationSession(baseDN, server2ID, 100, |
| | | replServer1.getReplicationPort(), 1000, !emptyOldChanges, dsGenId+1); |
| | | replServer1.getReplicationPort(), 1000, dsGenId+1); |
| | | |
| | | //=========================================================== |
| | | debugInfo(testCase + " ** TEST ** DS3 connection to RS1 with good genID"); |
| | | broker3 = openReplicationSession(baseDN, server3ID, 100, |
| | | replServer1.getReplicationPort(), 1000, !emptyOldChanges, dsGenId); |
| | | replServer1.getReplicationPort(), 1000, dsGenId); |
| | | |
| | | //=========================================================== |
| | | debugInfo(testCase + " ** TEST ** DS2 (bad genID) changes must be ignored."); |
| | |
| | | " spread a new gen ID on the topology, verify DS1 and RS1"); |
| | | debugInfo("Create again broker2"); |
| | | broker2 = openReplicationSession(baseDN, |
| | | server2ID, 100, replServer1.getReplicationPort(), 1000, emptyOldChanges, dsGenId); |
| | | server2ID, 100, replServer1.getReplicationPort(), 1000, dsGenId); |
| | | assertTrue(broker2.isConnected(), "Broker2 failed to connect to replication server"); |
| | | |
| | | debugInfo("Create again broker3"); |
| | | broker3 = openReplicationSession(baseDN, |
| | | server3ID, 100, replServer1.getReplicationPort(), 1000, emptyOldChanges, dsGenId); |
| | | server3ID, 100, replServer1.getReplicationPort(), 1000, dsGenId); |
| | | assertTrue(broker3.isConnected(), "Broker3 failed to connect to replication server"); |
| | | |
| | | |
| | |
| | | // Simulates the broker restart at the end of the import |
| | | broker2.stop(); |
| | | broker2 = openReplicationSession(baseDN, |
| | | server2ID, 100, replServer1.getReplicationPort(), 1000, emptyOldChanges, dsGenId); |
| | | server2ID, 100, replServer1.getReplicationPort(), 1000, dsGenId); |
| | | |
| | | // Simulates the broker restart at the end of the import |
| | | broker3.stop(); |
| | | broker3 = openReplicationSession(baseDN, |
| | | server3ID, 100, replServer1.getReplicationPort(), 1000, emptyOldChanges, dsGenId); |
| | | server3ID, 100, replServer1.getReplicationPort(), 1000, dsGenId); |
| | | |
| | | debugInfo("Adding reset task to DS1"); |
| | | executeTask(createSetGenerationIdTask(null, ""), 20000); |
| | |
| | | |
| | | debugInfo("Connecting broker2 to replServer3 with a good genId"); |
| | | broker2 = openReplicationSession(baseDN, server2ID, 100, |
| | | replServer3.getReplicationPort(), 1000, !emptyOldChanges, genId); |
| | | replServer3.getReplicationPort(), 1000, genId); |
| | | Thread.sleep(1000); |
| | | |
| | | debugInfo("Expecting that broker2 is not in bad gen id since it has a correct genId"); |
| | |
| | | debugInfo("Connecting broker3 to replServer1 with a bad genId"); |
| | | long badGenId = 1; |
| | | broker3 = openReplicationSession(baseDN, server3ID, 100, |
| | | replServer1.getReplicationPort(), 1000, !emptyOldChanges, badGenId); |
| | | replServer1.getReplicationPort(), 1000, badGenId); |
| | | Thread.sleep(1000); |
| | | |
| | | debugInfo("Expecting that broker3 is in bad gen id since it has a bad genId"); |
| | |
| | | { |
| | | long generationId = 1000+i; |
| | | broker = openReplicationSession(baseDN, server2ID, 100, |
| | | replServer1.getReplicationPort(), 1000, !emptyOldChanges, generationId); |
| | | replServer1.getReplicationPort(), 1000, generationId); |
| | | debugInfo(testCase + " Expect genId to be set in memory on the replication " + |
| | | " server side even if not wrote on disk/db since no change occurred."); |
| | | rsGenId = replServer1.getGenerationId(baseDN); |
| | |
| | | private ReplicationServer replServer1; |
| | | private ReplicationServer replServer2; |
| | | private ReplicationServer replServer3; |
| | | private boolean emptyOldChanges = true; |
| | | private LDAPReplicationDomain replDomain; |
| | | private int initWindow = 100; |
| | | |
| | |
| | | connectServer1ToReplServer(replServer1ID); |
| | | |
| | | if (server2 == null) |
| | | server2 = openReplicationSession(DN.decode(EXAMPLE_DN), |
| | | server2ID, 100, getReplServerPort(replServer1ID), 1000, emptyOldChanges); |
| | | server2 = openReplicationSession(baseDN, |
| | | server2ID, 100, getReplServerPort(replServer1ID), 1000); |
| | | |
| | | // In S1 launch the total update |
| | | addTask(taskInitFromS2, ResultCode.SUCCESS, null); |
| | |
| | | addTestEntriesToDB(); |
| | | |
| | | if (server2 == null) |
| | | server2 = openReplicationSession(DN.decode(EXAMPLE_DN), |
| | | server2ID, 100, getReplServerPort(replServer1ID), 1000, emptyOldChanges); |
| | | server2 = openReplicationSession(baseDN, |
| | | server2ID, 100, getReplServerPort(replServer1ID), 1000); |
| | | |
| | | InitializeRequestMsg initMsg = new InitializeRequestMsg(baseDN, server2ID, server1ID, 100); |
| | | server2.publish(initMsg); |
| | |
| | | |
| | | // S1 is the server we are running in, S2 is simulated by a broker |
| | | if (server2 == null) |
| | | server2 = openReplicationSession(DN.decode(EXAMPLE_DN), |
| | | server2ID, 100, getReplServerPort(replServer1ID), 1000, emptyOldChanges); |
| | | server2 = openReplicationSession(baseDN, |
| | | server2ID, 100, getReplServerPort(replServer1ID), 1000); |
| | | |
| | | // Launch in S1 the task that will initialize S2 |
| | | addTask(taskInitTargetS2, ResultCode.SUCCESS, null); |
| | |
| | | |
| | | // S1 is the server we are running in, S2 and S3 are simulated by brokers |
| | | if (server2 == null) |
| | | server2 = openReplicationSession(DN.decode(EXAMPLE_DN), |
| | | server2ID, 100, getReplServerPort(replServer1ID), 1000, emptyOldChanges); |
| | | server2 = openReplicationSession(baseDN, |
| | | server2ID, 100, getReplServerPort(replServer1ID), 1000); |
| | | |
| | | if (server3 == null) |
| | | server3 = openReplicationSession(DN.decode(EXAMPLE_DN), |
| | | server3ID, 100, getReplServerPort(replServer1ID), 1000, emptyOldChanges); |
| | | server3 = openReplicationSession(baseDN, |
| | | server3ID, 100, getReplServerPort(replServer1ID), 1000); |
| | | |
| | | // Launch in S1 the task that will initialize S2 |
| | | addTask(taskInitTargetAll, ResultCode.SUCCESS, null); |
| | |
| | | |
| | | // S1 is the server we are running in, S2 is simulated by a broker |
| | | if (server2==null) |
| | | server2 = openReplicationSession(DN.decode(EXAMPLE_DN), |
| | | server2ID, 100, getReplServerPort(replServer1ID), 1000, emptyOldChanges); |
| | | server2 = openReplicationSession(baseDN, |
| | | server2ID, 100, getReplServerPort(replServer1ID), 1000); |
| | | |
| | | // Creates config to synchronize suffix |
| | | connectServer1ToReplServer(replServer1ID); |
| | |
| | | connectServer1ToReplServer(replServer1ID); |
| | | |
| | | // Connects lDAP2 to replServer2 |
| | | broker2 = openReplicationSession(DN.decode(EXAMPLE_DN), |
| | | server2ID, 100, getReplServerPort(replServer2ID), 1000, emptyOldChanges); |
| | | broker2 = openReplicationSession(baseDN, |
| | | server2ID, 100, getReplServerPort(replServer2ID), 1000); |
| | | |
| | | // Connects lDAP3 to replServer2 |
| | | broker3 = openReplicationSession(DN.decode(EXAMPLE_DN), |
| | | server3ID, 100, getReplServerPort(replServer2ID), 1000, emptyOldChanges); |
| | | broker3 = openReplicationSession(baseDN, |
| | | server3ID, 100, getReplServerPort(replServer2ID), 1000); |
| | | |
| | | // Check that the list of connected LDAP servers is correct in each replication servers |
| | | Assertions.assertThat(getConnectedDSServerIds(replServer1)).containsExactly(server1ID); |
| | |
| | | Thread.sleep(1000); |
| | | Assertions.assertThat(getConnectedDSServerIds(replServer2)).containsExactly(server2ID); |
| | | |
| | | broker3 = openReplicationSession(DN.decode(EXAMPLE_DN), |
| | | server3ID, 100, getReplServerPort(replServer2ID), 1000, emptyOldChanges); |
| | | broker3 = openReplicationSession(baseDN, |
| | | server3ID, 100, getReplServerPort(replServer2ID), 1000); |
| | | broker2.stop(); |
| | | Thread.sleep(1000); |
| | | Assertions.assertThat(getConnectedDSServerIds(replServer2)).containsExactly(server3ID); |
| | |
| | | if (server2 == null) |
| | | { |
| | | log(testCase + " Will connect server 2 to " + replServer2ID); |
| | | server2 = openReplicationSession(DN.decode(EXAMPLE_DN), |
| | | server2ID, 100, getReplServerPort(replServer2ID), 1000, emptyOldChanges); |
| | | server2 = openReplicationSession(baseDN, |
| | | server2ID, 100, getReplServerPort(replServer2ID), 1000); |
| | | } |
| | | |
| | | // Launch in S1 the task that will initialize S2 |
| | |
| | | if (server2 == null) |
| | | { |
| | | log(testCase + " Will connect server 2 to " + replServer2ID); |
| | | server2 = openReplicationSession(DN.decode(EXAMPLE_DN), |
| | | server2 = openReplicationSession(baseDN, |
| | | server2ID, 100, getReplServerPort(replServer2ID), |
| | | 1000, emptyOldChanges, replServer1.getGenerationId(baseDN)); |
| | | 1000, replServer1.getGenerationId(baseDN)); |
| | | } |
| | | |
| | | // Connect a broker acting as server 3 to Repl Server 3 |
| | |
| | | if (server3 == null) |
| | | { |
| | | log(testCase + " Will connect server 3 to " + replServer3ID); |
| | | server3 = openReplicationSession(DN.decode(EXAMPLE_DN), |
| | | server3 = openReplicationSession(baseDN, |
| | | server3ID, 100, getReplServerPort(replServer3ID), |
| | | 1000, emptyOldChanges, replServer1.getGenerationId(baseDN)); |
| | | 1000, replServer1.getGenerationId(baseDN)); |
| | | } |
| | | |
| | | // S3 sends init request |
| | |
| | | // Connect a broker acting as server 2 to replServer2 |
| | | if (server2 == null) |
| | | { |
| | | server2 = openReplicationSession(DN.decode(EXAMPLE_DN), |
| | | server2ID, 100, getReplServerPort(replServer1ID), |
| | | 1000, emptyOldChanges); |
| | | server2 = openReplicationSession(baseDN, |
| | | server2ID, 100, getReplServerPort(replServer1ID), 1000); |
| | | } |
| | | |
| | | // Creates config to synchronize suffix |
| | |
| | | configEntriesToCleanup.add(repDomainEntry.getDN()); |
| | | |
| | | ReplicationBroker broker = openReplicationSession(baseDN, 12, |
| | | WINDOW_SIZE, replServerPort, 1000, true); |
| | | WINDOW_SIZE, replServerPort, 1000); |
| | | |
| | | try { |
| | | |
| | |
| | | * does not exist, take the 'empty backend' generationID. |
| | | */ |
| | | protected ReplicationBroker openReplicationSession(final DN baseDN, |
| | | int serverId, int windowSize, int port, int timeout, |
| | | boolean emptyOldChanges) throws Exception |
| | | int serverId, int windowSize, int port, int timeout) throws Exception |
| | | { |
| | | return openReplicationSession(baseDN, serverId, windowSize, |
| | | port, timeout, emptyOldChanges, getGenerationId(baseDN)); |
| | | port, timeout, getGenerationId(baseDN)); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | protected ReplicationBroker openReplicationSession(final DN baseDN, |
| | | int serverId, int windowSize, int port, int timeout, |
| | | boolean emptyOldChanges, long generationId) throws Exception |
| | | long generationId) throws Exception |
| | | { |
| | | DomainFakeCfg config = newFakeCfg(baseDN, serverId, port); |
| | | config.setWindowSize(windowSize); |
| | | return openReplicationSession(config, port, timeout, emptyOldChanges, generationId); |
| | | return openReplicationSession(config, port, timeout, generationId); |
| | | } |
| | | |
| | | protected ReplicationBroker openReplicationSession(ReplicationDomainCfg config, |
| | | int port, int timeout, boolean emptyOldChanges, long generationId) throws Exception |
| | | int port, int timeout, long generationId) throws Exception |
| | | { |
| | | ServerState state = new ServerState(); |
| | | |
| | | if (emptyOldChanges) |
| | | new PersistentServerState(config.getBaseDN(), config.getServerId(), new ServerState()); |
| | | |
| | | final ReplicationBroker broker = new ReplicationBroker( |
| | | new DummyReplicationDomain(generationId), state, config, generationId, getReplSessionSecurity()); |
| | | new DummyReplicationDomain(generationId), new ServerState(), |
| | | config, generationId, getReplSessionSecurity()); |
| | | connect(broker, port, timeout); |
| | | return broker; |
| | | } |
| | |
| | | final DN baseDN = DN.decode("cn=schema"); |
| | | |
| | | ReplicationBroker broker = |
| | | openReplicationSession(baseDN, 2, 100, replServerPort, 5000, true); |
| | | openReplicationSession(baseDN, 2, 100, replServerPort, 5000); |
| | | |
| | | try |
| | | { |
| | |
| | | final DN baseDN = DN.decode("cn=schema"); |
| | | |
| | | ReplicationBroker broker = |
| | | openReplicationSession(baseDN, 2, 100, replServerPort, 5000, true); |
| | | openReplicationSession(baseDN, 2, 100, replServerPort, 5000); |
| | | |
| | | try |
| | | { |
| | |
| | | final DN baseDN = DN.decode("cn=schema"); |
| | | |
| | | ReplicationBroker broker = |
| | | openReplicationSession(baseDN, 3, 100, replServerPort, 5000, true); |
| | | openReplicationSession(baseDN, 3, 100, replServerPort, 5000); |
| | | |
| | | try |
| | | { |
| | |
| | | final int TOTAL_MESSAGES = 1000; |
| | | |
| | | ReplicationBroker broker = |
| | | openReplicationSession(baseDN, 18, 100, replServerPort, 5000, true); |
| | | openReplicationSession(baseDN, 18, 100, replServerPort, 5000); |
| | | Monitor monitor = new Monitor(); |
| | | DirectoryServer.registerMonitorProvider(monitor); |
| | | |
| | |
| | | */ |
| | | final int serverId = 2; |
| | | ReplicationBroker broker = |
| | | openReplicationSession(baseDN, serverId, 100, replServerPort, 1000, true); |
| | | openReplicationSession(baseDN, serverId, 100, replServerPort, 1000); |
| | | |
| | | try |
| | | { |
| | |
| | | */ |
| | | int serverId = 2; |
| | | ReplicationBroker broker = |
| | | openReplicationSession(baseDN, serverId, 100, replServerPort, 1000, true); |
| | | openReplicationSession(baseDN, serverId, 100, replServerPort, 1000); |
| | | |
| | | try |
| | | { |
| | |
| | | * This must use a different serverId to that of the directory server. |
| | | */ |
| | | ReplicationBroker broker = |
| | | openReplicationSession(baseDN, 2, 100, replServerPort, 1000, true); |
| | | openReplicationSession(baseDN, 2, 100, replServerPort, 1000); |
| | | |
| | | try |
| | | { |
| | |
| | | */ |
| | | final int serverId = 2; |
| | | ReplicationBroker broker = |
| | | openReplicationSession(baseDN, serverId, 100, replServerPort, 1000, true); |
| | | openReplicationSession(baseDN, serverId, 100, replServerPort, 1000); |
| | | try |
| | | { |
| | | CSNGenerator gen = new CSNGenerator(serverId, 0); |
| | |
| | | |
| | | final int serverId = 27; |
| | | ReplicationBroker broker = |
| | | openReplicationSession(baseDN, serverId, 100, replServerPort, 2000, true); |
| | | openReplicationSession(baseDN, serverId, 100, replServerPort, 2000); |
| | | try { |
| | | CSNGenerator gen = new CSNGenerator(serverId, 0); |
| | | |
| | |
| | | |
| | | int serverId = 11; |
| | | ReplicationBroker broker = |
| | | openReplicationSession(baseDN, serverId, 100, replServerPort, 1000, true); |
| | | openReplicationSession(baseDN, serverId, 100, replServerPort, 1000); |
| | | try |
| | | { |
| | | CSNGenerator gen = new CSNGenerator(serverId, 0); |
| | |
| | | */ |
| | | final int serverId = 88; |
| | | ReplicationBroker broker = |
| | | openReplicationSession(baseDN, serverId, 100, replServerPort, 1000, true); |
| | | openReplicationSession(baseDN, serverId, 100, replServerPort, 1000); |
| | | consumeAllMessages(broker); // clean leftover messages from lostHeartbeatFailover() |
| | | try |
| | | { |
| | |
| | | * This must use a different serverId to that of the directory server. |
| | | */ |
| | | ReplicationBroker broker = |
| | | openReplicationSession(baseDN, 2, 100, replServerPort, 1000, true); |
| | | openReplicationSession(baseDN, 2, 100, replServerPort, 1000); |
| | | |
| | | |
| | | // Clear the backend and create top entrye |
| | |
| | | try |
| | | { |
| | | // Create 3 ECL broker |
| | | final DN changelogDN = DN.decode("cn=changelog"); |
| | | brokers[0] = openReplicationSession( |
| | | DN.decode("cn=changelog"), 1111, |
| | | 100, replicationServerPort, brokerSessionTimeout, false); |
| | | changelogDN, 1111, 100, replicationServerPort, brokerSessionTimeout); |
| | | assertTrue(brokers[0].isConnected()); |
| | | brokers[1] = openReplicationSession( |
| | | DN.decode("cn=changelog"), 2222, |
| | | 100, replicationServerPort,brokerSessionTimeout, false); |
| | | changelogDN, 2222, 100, replicationServerPort, brokerSessionTimeout); |
| | | assertTrue(brokers[1].isConnected()); |
| | | brokers[2] = openReplicationSession( |
| | | DN.decode("cn=changelog"), 3333, |
| | | 100, replicationServerPort,brokerSessionTimeout, false); |
| | | changelogDN, 3333, 100, replicationServerPort, brokerSessionTimeout); |
| | | assertTrue(brokers[2].isConnected()); |
| | | |
| | | assertOnlyDoneMsgReceived(tn, brokers[0]); |
| | |
| | | { |
| | | // create 2 regular brokers on the 2 suffixes |
| | | server01 = openReplicationSession(TEST_ROOT_DN, SERVER_ID_1, |
| | | 100, replicationServerPort, brokerSessionTimeout, true); |
| | | 100, replicationServerPort, brokerSessionTimeout); |
| | | |
| | | server02 = openReplicationSession(TEST_ROOT_DN2, SERVER_ID_2, |
| | | 100, replicationServerPort, brokerSessionTimeout, true, EMPTY_DN_GENID); |
| | | 100, replicationServerPort, brokerSessionTimeout, EMPTY_DN_GENID); |
| | | |
| | | // create and publish 1 change on each suffix |
| | | long time = TimeThread.getTime(); |
| | |
| | | |
| | | // open ECL broker |
| | | serverECL = openReplicationSession( |
| | | DN.decode("cn=changelog"), 10, |
| | | 100, replicationServerPort, brokerSessionTimeout, false); |
| | | DN.decode("cn=changelog"), 10, 100, replicationServerPort, brokerSessionTimeout); |
| | | assertTrue(serverECL.isConnected()); |
| | | |
| | | // receive change 1 from suffix 1 |
| | |
| | | try |
| | | { |
| | | server01 = openReplicationSession(TEST_ROOT_DN, SERVER_ID_1, |
| | | 100, replicationServerPort, brokerSessionTimeout, true); |
| | | 100, replicationServerPort, brokerSessionTimeout); |
| | | |
| | | // create and publish 1 change on each suffix |
| | | long time = TimeThread.getTime(); |
| | |
| | | backend2 = initializeTestBackend(true, TEST_BACKEND_ID2); |
| | | |
| | | s1test = openReplicationSession(TEST_ROOT_DN, SERVER_ID_1, |
| | | 100, replicationServerPort, brokerSessionTimeout, true); |
| | | 100, replicationServerPort, brokerSessionTimeout); |
| | | |
| | | s2test2 = openReplicationSession(TEST_ROOT_DN2, SERVER_ID_2, |
| | | 100, replicationServerPort, brokerSessionTimeout, true, EMPTY_DN_GENID); |
| | | 100, replicationServerPort, brokerSessionTimeout, EMPTY_DN_GENID); |
| | | Thread.sleep(500); |
| | | |
| | | // Produce updates |
| | |
| | | // Test startState ("first cookie") of the ECL |
| | | // -- |
| | | s1test2 = openReplicationSession(TEST_ROOT_DN2, 1203, |
| | | 100, replicationServerPort, brokerSessionTimeout, true, EMPTY_DN_GENID); |
| | | |
| | | 100, replicationServerPort, brokerSessionTimeout, EMPTY_DN_GENID); |
| | | s2test = openReplicationSession(TEST_ROOT_DN, 1204, |
| | | 100, replicationServerPort, brokerSessionTimeout, true); |
| | | 100, replicationServerPort, brokerSessionTimeout); |
| | | Thread.sleep(500); |
| | | |
| | | time = TimeThread.getTime(); |
| | |
| | | |
| | | // Creates broker on o=test |
| | | server01 = openReplicationSession(TEST_ROOT_DN, SERVER_ID_1, |
| | | 100, replicationServerPort, brokerSessionTimeout, true); |
| | | 100, replicationServerPort, brokerSessionTimeout); |
| | | |
| | | final CSN[] csns = generateCSNs(3, SERVER_ID_1); |
| | | publishDeleteMsgInOTest(server01, csns[0], tn, 1); |
| | |
| | | ReplicationBroker server02 = null; |
| | | try |
| | | { |
| | | // Creates broker on o=test |
| | | // Creates brokers on o=test and o=test2 |
| | | server01 = openReplicationSession(TEST_ROOT_DN, SERVER_ID_1, |
| | | 100, replicationServerPort, brokerSessionTimeout, true); |
| | | |
| | | // Creates broker on o=test2 |
| | | 100, replicationServerPort, brokerSessionTimeout); |
| | | server02 = openReplicationSession(TEST_ROOT_DN2, SERVER_ID_2, |
| | | 100, replicationServerPort, brokerSessionTimeout, true); |
| | | 100, replicationServerPort, brokerSessionTimeout); |
| | | |
| | | String user1entryUUID = "11111111-1111-1111-1111-111111111111"; |
| | | String baseUUID = "22222222-2222-2222-2222-222222222222"; |
| | |
| | | { |
| | | // Create broker on suffix |
| | | ReplicationBroker server01 = openReplicationSession(TEST_ROOT_DN, SERVER_ID_1, |
| | | 100, replicationServerPort, brokerSessionTimeout, true); |
| | | 100, replicationServerPort, brokerSessionTimeout); |
| | | |
| | | CSN[] csns = generateCSNs(2, SERVER_ID_1); |
| | | |
| | |
| | | DomainFakeCfg config1 = newFakeCfg(TEST_ROOT_DN, SERVER_ID_1, replicationServerPort); |
| | | config1.setChangetimeHeartbeatInterval(100); // ms |
| | | server01 = openReplicationSession(config1, replicationServerPort, |
| | | brokerSessionTimeout, true, getGenerationId(TEST_ROOT_DN)); |
| | | brokerSessionTimeout, getGenerationId(TEST_ROOT_DN)); |
| | | |
| | | // Create broker on o=test2 |
| | | DomainFakeCfg config2 = newFakeCfg(TEST_ROOT_DN2, SERVER_ID_2, replicationServerPort); |
| | | config2.setChangetimeHeartbeatInterval(100); //ms |
| | | server02 = openReplicationSession(config2, replicationServerPort, |
| | | brokerSessionTimeout, true, EMPTY_DN_GENID); |
| | | brokerSessionTimeout, EMPTY_DN_GENID); |
| | | |
| | | int ts = 1; |
| | | // Produce update 1 |
| | |
| | | |
| | | // -- |
| | | s1test = openReplicationSession(TEST_ROOT_DN, SERVER_ID_1, |
| | | 100, replicationServerPort, brokerSessionTimeout, true); |
| | | |
| | | 100, replicationServerPort, brokerSessionTimeout); |
| | | s2test2 = openReplicationSession(TEST_ROOT_DN2, SERVER_ID_2, |
| | | 100, replicationServerPort, brokerSessionTimeout, true, EMPTY_DN_GENID); |
| | | 100, replicationServerPort, brokerSessionTimeout, EMPTY_DN_GENID); |
| | | Thread.sleep(500); |
| | | |
| | | // Produce updates |
| | |
| | | |
| | | // -- |
| | | s1test2 = openReplicationSession(TEST_ROOT_DN2, 1203, |
| | | 100, replicationServerPort, brokerSessionTimeout, true, EMPTY_DN_GENID); |
| | | |
| | | 100, replicationServerPort, brokerSessionTimeout, EMPTY_DN_GENID); |
| | | s2test = openReplicationSession(TEST_ROOT_DN, 1204, |
| | | 100, replicationServerPort, brokerSessionTimeout, true); |
| | | 100, replicationServerPort, brokerSessionTimeout); |
| | | Thread.sleep(500); |
| | | |
| | | // Test startState ("first cookie") of the ECL |
| | |
| | | { |
| | | // Creates broker on o=test |
| | | ReplicationBroker server01 = openReplicationSession(TEST_ROOT_DN, SERVER_ID_1, |
| | | 100, replicationServerPort, brokerSessionTimeout, true); |
| | | 100, replicationServerPort, brokerSessionTimeout); |
| | | |
| | | String user1entryUUID = "11111111-1112-1113-1114-111111111115"; |
| | | String baseUUID = "22222222-2222-2222-2222-222222222222"; |
| | |
| | | |
| | | // Creates broker on o=test |
| | | ReplicationBroker server01 = openReplicationSession(TEST_ROOT_DN, SERVER_ID_1, |
| | | 100, replicationServerPort, brokerSessionTimeout, true); |
| | | 100, replicationServerPort, brokerSessionTimeout); |
| | | |
| | | String user1entryUUID = "11111111-1112-1113-1114-111111111115"; |
| | | |
| | |
| | | |
| | | // Creates broker on o=test |
| | | ReplicationBroker server01 = openReplicationSession(TEST_ROOT_DN, SERVER_ID_1, 100, |
| | | replicationServerPort, brokerSessionTimeout, true); |
| | | replicationServerPort, brokerSessionTimeout); |
| | | |
| | | String filter = "(changenumber=" + firstChangeNumber + ")"; |
| | | InternalSearchOperation searchOp = searchOnChangelog(filter, 1, tn, SUCCESS); |
| | |
| | | |
| | | // Creates broker on o=test |
| | | ReplicationBroker server01 = openReplicationSession(TEST_ROOT_DN, SERVER_ID_1, 100, |
| | | replicationServerPort, brokerSessionTimeout, true); |
| | | replicationServerPort, brokerSessionTimeout); |
| | | |
| | | String user1entryUUID = "11111111-1112-1113-1114-111111111115"; |
| | | |
| | |
| | | debugInfo("Connecting DS to replServer1"); |
| | | connectServer1ToChangelog(changelog1ID); |
| | | |
| | | boolean emptyOldChanges = true; |
| | | try |
| | | { |
| | | debugInfo("Connecting broker2 to replServer1"); |
| | | broker2 = openReplicationSession(baseDN, |
| | | server2ID, 100, getChangelogPort(changelog1ID), |
| | | 1000, !emptyOldChanges); |
| | | server2ID, 100, getChangelogPort(changelog1ID), 1000); |
| | | Thread.sleep(1000); |
| | | } catch (SocketException se) |
| | | { |
| | |
| | | { |
| | | debugInfo("Connecting broker3 to replServer2"); |
| | | broker3 = openReplicationSession(baseDN, |
| | | server3ID, 100, getChangelogPort(changelog2ID), |
| | | 1000, !emptyOldChanges); |
| | | server3ID, 100, getChangelogPort(changelog2ID), 1000); |
| | | Thread.sleep(1000); |
| | | } catch (SocketException se) |
| | | { |
| | |
| | | { |
| | | debugInfo("Connecting broker4 to replServer2"); |
| | | broker4 = openReplicationSession(baseDN, |
| | | server4ID, 100, getChangelogPort(changelog2ID), |
| | | 1000, !emptyOldChanges); |
| | | server4ID, 100, getChangelogPort(changelog2ID), 1000); |
| | | Thread.sleep(1000); |
| | | } catch (SocketException se) |
| | | { |
| | |
| | | |
| | | for (int i = 0; i < 200; i++) |
| | | { |
| | | String ent1[] = { |
| | | createEntry(UUID.randomUUID()) |
| | | }; |
| | | addTestEntriesToDB(ent1); |
| | | addTestEntriesToDB(createEntry(UUID.randomUUID())); |
| | | } |
| | | |
| | | /* |
| | |
| | | replicationServer.applyConfigurationChange(newconf); |
| | | |
| | | ReplicationBroker broker = openReplicationSession( |
| | | DN.decode(TEST_ROOT_DN_STRING), 1, 10, ports[1], |
| | | 1000, false); |
| | | DN.decode(TEST_ROOT_DN_STRING), 1, 10, ports[1], 1000); |
| | | |
| | | // check that the sendWindow is not null to make sure that the |
| | | // broker did connect successfully. |
| | |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | protected ReplicationBroker openReplicationSession(final DN baseDN, |
| | | int serverId, int windowSize, int port, int timeout) throws Exception |
| | | { |
| | | ReplicationBroker broker = super.openReplicationSession(baseDN, serverId, windowSize, port, timeout); |
| | | assertTrue(broker.isConnected()); |
| | | return broker; |
| | | } |
| | | |
| | | /** |
| | | * Basic test of the replicationServer code : |
| | | * Connect 2 clients to the replicationServer and exchange messages |
| | |
| | | /* |
| | | * Open a sender session and a receiver session to the replicationServer |
| | | */ |
| | | server1 = openReplicationSession(TEST_ROOT_DN, |
| | | 1, 100, replicationServerPort, 1000, false); |
| | | server2 = openReplicationSession(TEST_ROOT_DN, |
| | | 2, 100, replicationServerPort, 1000, false); |
| | | |
| | | assertTrue(server1.isConnected()); |
| | | assertTrue(server2.isConnected()); |
| | | server1 = openReplicationSession(TEST_ROOT_DN, 1, 100, replicationServerPort, 1000); |
| | | server2 = openReplicationSession(TEST_ROOT_DN, 2, 100, replicationServerPort, 1000); |
| | | |
| | | /* |
| | | * Create CSNs for the messages sent from server 1 with current time |
| | |
| | | unknownCSNServer1 = new CSN(time + 1, 1, 1); |
| | | |
| | | sendAndReceiveDeleteMsg(server1, server2, EXAMPLE_DN, firstCSNServer1, "uid"); |
| | | |
| | | // Send and receive a second Delete Msg |
| | | sendAndReceiveDeleteMsg(server1, server2, TEST_ROOT_DN, secondCSNServer1, "uid"); |
| | | |
| | | // Send and receive a Delete Msg from server 2 to server 1 |
| | | sendAndReceiveDeleteMsg(server2, server1, EXAMPLE_DN, firstCSNServer2, "other-uid"); |
| | | |
| | | // Send and receive a second Delete Msg |
| | | sendAndReceiveDeleteMsg(server2, server1, TEST_ROOT_DN, secondCSNServer2, "uid"); |
| | | |
| | | debugInfo("Ending changelogBasic"); |
| | |
| | | ReplicationBroker broker = null; |
| | | |
| | | try { |
| | | broker = openReplicationSession(TEST_ROOT_DN, |
| | | 3, 100, replicationServerPort, 1000, false); |
| | | assertTrue(broker.isConnected()); |
| | | broker = openReplicationSession(TEST_ROOT_DN, 3, 100, replicationServerPort, 1000); |
| | | |
| | | ReplicationMsg receivedMsg = broker.receive(); |
| | | broker.updateWindowAfterReplay(); |
| | |
| | | /* |
| | | * Open a sender session |
| | | */ |
| | | server = openReplicationSession(TEST_ROOT_DN, |
| | | 5, 100, replicationServerPort, 100000, false); |
| | | assertTrue(server.isConnected()); |
| | | |
| | | server = openReplicationSession(TEST_ROOT_DN, 5, 100, replicationServerPort, 100000); |
| | | reader = new BrokerReader(server, TOTAL_MSG); |
| | | |
| | | /* |
| | |
| | | for (int i =0; i< CLIENT_THREADS; i++) |
| | | { |
| | | clientBroker[i] = openReplicationSession(TEST_ROOT_DN, |
| | | (100+i), 100, replicationServerPort, 1000, true); |
| | | assertTrue(clientBroker[i].isConnected()); |
| | | (100+i), 100, replicationServerPort, 1000); |
| | | client[i] = new BrokerReader(clientBroker[i], TOTAL_MSG); |
| | | } |
| | | |
| | |
| | | int serverId = 10 + i; |
| | | CSNGenerator gen = new CSNGenerator(serverId , 0); |
| | | broker[i] = openReplicationSession(TEST_ROOT_DN, |
| | | serverId, 100, replicationServerPort, 3000, true); |
| | | assertTrue(broker[i].isConnected()); |
| | | serverId, 100, replicationServerPort, 3000); |
| | | |
| | | producer[i] = new BrokerWriter(broker[i], gen, TOTAL_MSG/THREADS); |
| | | reader[i] = new BrokerReader(broker[i], (TOTAL_MSG/THREADS)*(THREADS-1)); |
| | |
| | | |
| | | { |
| | | ReplicationBroker broker2 = null; |
| | | boolean emptyOldChanges = true; |
| | | |
| | | // - Create 2 connected replicationServer |
| | | ReplicationServer[] changelogs = new ReplicationServer[2]; |
| | |
| | | try |
| | | { |
| | | // create and connect client1 to changelog1 and client2 to changelog2 |
| | | broker1 = openReplicationSession(TEST_ROOT_DN, |
| | | brokerIds[0], 100, changelogPorts[0], 1000, !emptyOldChanges); |
| | | assertTrue(broker1.isConnected()); |
| | | broker2 = openReplicationSession(TEST_ROOT_DN, brokerIds[1], 100, |
| | | changelogPorts[0], 1000, !emptyOldChanges); |
| | | assertTrue(broker2.isConnected()); |
| | | broker1 = openReplicationSession(TEST_ROOT_DN, brokerIds[0], 100, changelogPorts[0], 1000); |
| | | broker2 = openReplicationSession(TEST_ROOT_DN, brokerIds[1], 100, changelogPorts[0], 1000); |
| | | |
| | | // - Test messages between clients by publishing now |
| | | |
| | |
| | | |
| | | { |
| | | ReplicationBroker broker2 = null; |
| | | boolean emptyOldChanges = true; |
| | | |
| | | // - Create 2 connected replicationServer |
| | | ReplicationServer[] changelogs = new ReplicationServer[2]; |
| | |
| | | try |
| | | { |
| | | // only create and connect client1 to changelog1 client2 will be created later |
| | | broker1 = openReplicationSession(TEST_ROOT_DN, |
| | | brokerIds[0], 100, changelogPorts[0], 1000, !emptyOldChanges); |
| | | assertTrue(broker1.isConnected()); |
| | | broker1 = openReplicationSession(TEST_ROOT_DN, brokerIds[0], 100, changelogPorts[0], 1000); |
| | | |
| | | // - Test messages between clients by publishing now |
| | | |
| | |
| | | |
| | | // Connect broker 2 to changelog2 |
| | | broker2 = openReplicationSession(TEST_ROOT_DN, |
| | | brokerIds[1], 100, changelogPorts[1], 2000, !emptyOldChanges); |
| | | assertTrue(broker2.isConnected()); |
| | | brokerIds[1], 100, changelogPorts[1], 2000); |
| | | |
| | | // - Check msg receives by broker, through changeLog2 |
| | | List<ReplicationMsg> msgs = receiveReplicationMsgs(broker2, 4); |
| | |
| | | |
| | | try |
| | | { |
| | | server1 = openReplicationSession(TEST_ROOT_DN, |
| | | 1, 100, replicationServerPort, 1000, true); |
| | | server2 = openReplicationSession(DN.decode("dc=domain2,dc=com"), |
| | | 2, 100, replicationServerPort, 1000, true); |
| | | |
| | | assertTrue(server1.isConnected()); |
| | | assertTrue(server2.isConnected()); |
| | | final DN baseDN2 = DN.decode("dc=domain2,dc=com"); |
| | | server1 = openReplicationSession(TEST_ROOT_DN, 1, 100, replicationServerPort, 1000); |
| | | server2 = openReplicationSession(baseDN2, 2, 100, replicationServerPort, 1000); |
| | | |
| | | debugInfo("Publish changes"); |
| | | publishAll(server1, createChanges(TEST_ROOT_DN_STRING, 1)); |
| | |
| | | LDIFWriter ldifWriter = new LDIFWriter(exportConfig); |
| | | |
| | | debugInfo("Create broker"); |
| | | |
| | | server1 = openReplicationSession(TEST_ROOT_DN, |
| | | 1, 100, replicationServerPort, 1000, true); |
| | | |
| | | assertTrue(server1.isConnected()); |
| | | server1 = openReplicationSession(TEST_ROOT_DN, 1, 100, replicationServerPort, 1000); |
| | | |
| | | debugInfo("Publish changes"); |
| | | List<UpdateMsg> msgs = createChanges(TEST_ROOT_DN_STRING, 1); |
| | |
| | | debugInfo("Starting replicationServerConnected"); |
| | | ReplicationBroker broker1 = null; |
| | | ReplicationBroker broker2 = null; |
| | | boolean emptyOldChanges = true; |
| | | |
| | | // - Create 2 connected replicationServer |
| | | ReplicationServer[] changelogs = new ReplicationServer[2]; |
| | |
| | | { |
| | | // Create and connect client1 to changelog1 |
| | | // and client2 to changelog2 |
| | | broker1 = openReplicationSession(TEST_ROOT_DN, |
| | | brokerIds[0], 100, changelogPorts[0], 1000, emptyOldChanges); |
| | | broker2 = openReplicationSession(TEST_ROOT_DN, |
| | | brokerIds[1], 100, changelogPorts[1], 1000, emptyOldChanges); |
| | | |
| | | assertTrue(broker1.isConnected()); |
| | | assertTrue(broker2.isConnected()); |
| | | broker1 = openReplicationSession(TEST_ROOT_DN, brokerIds[0], 100, changelogPorts[0], 1000); |
| | | broker2 = openReplicationSession(TEST_ROOT_DN, brokerIds[1], 100, changelogPorts[1], 1000); |
| | | |
| | | // - Test messages between clients by publishing now |
| | | CSNGenerator csnGen = new CSNGenerator(brokerIds[0], TimeThread.getTime()); |