@Test public void testVLSNConsistencyJoinGroup() throws UnknownMasterException, DatabaseException, InterruptedException { createGroup(); ReplicatedEnvironment masterRep = repEnvInfo[0].getEnv(); assertEquals(State.MASTER, masterRep.getState()); leaveGroupAllButMaster(); /* Populates just the master. */ populateDB(masterRep, TEST_DB_NAME, 100); UUID uuid = RepInternal.getRepImpl(masterRep).getRepNode().getUUID(); long masterVLSN = RepInternal.getRepImpl(masterRep).getVLSNIndex().getRange().getLast().getSequence() + 2 /* 1 new entry + txn commit record */; JoinCommitThread jt = new JoinCommitThread(new CommitToken(uuid, masterVLSN), repEnvInfo[1]); jt.start(); Thread.sleep(5000); // supply the vlsn it's waiting for. Record count MUST sync up with // the expected masterVLSN populateDB(masterRep, TEST_DB_NAME, 1); jt.join(JOIN_WAIT_TIME); assertTrue(!jt.isAlive()); assertNull("Join thread exception", jt.testException); }
@Test public void testDefaultJoinGroup() throws UnknownMasterException, DatabaseException { createGroup(); ReplicatedEnvironment masterRep = repEnvInfo[0].getEnv(); assertEquals(State.MASTER, masterRep.getState()); leaveGroupAllButMaster(); /* Populates just the master. */ CommitToken ct = populateDB(masterRep, TEST_DB_NAME, 100); /* Replicas should have caught up when they re-open their handles. */ for (RepEnvInfo ri : repEnvInfo) { ReplicatedEnvironment rep = (ri.getEnv() == null) ? ri.openEnv() : ri.getEnv(); VLSN repVLSN = RepInternal.getRepImpl(rep).getVLSNIndex().getRange().getLast(); assertTrue(new VLSN(ct.getVLSN()).compareTo(repVLSN) <= 0); } }