Skip to content

Instantly share code, notes, and snippets.

@gustavoanatoly
Last active December 15, 2015 15:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gustavoanatoly/5282781 to your computer and use it in GitHub Desktop.
Save gustavoanatoly/5282781 to your computer and use it in GitHub Desktop.
To guaranty ZK is mocked, I put this test in another class but throws: 2013-04-02 13:31:56,265 DEBUG [main] zookeeper.ZKUtil(119): master:62071 opening connection to ZooKeeper with ensemble (localhost:21818) 2013-04-02 13:31:56,305 INFO [main] zookeeper.RecoverableZooKeeper(119): The identifier of this process is master:62071 2013-04-02 13:32:01…
@Test
public void testAssignmentManagerDoesntUseDrainingServer() throws KeeperException, IOException, InterruptedException {
Server server = Mockito.mock(Server.class);
ServerManager serverManager = Mockito.mock(ServerManager.class);
CatalogTracker catalogTracker = Mockito.mock(CatalogTracker.class);
LoadBalancer balancer = Mockito.mock(LoadBalancer.class);
ExecutorService service = Mockito.mock(ExecutorService.class);
TableLockManager tableLockManager = Mockito.mock(TableLockManager.class);
RecoverableZooKeeper recoverableZooKeeper = Mockito.mock(RecoverableZooKeeper.class);
ZooKeeperWatcher zkw = Mockito.mock(ZooKeeperWatcher.class);
ZooKeeper zk = Mockito.mock(ZooKeeper.class);
// HMaster hmaster = Mockito.mock(HMaster.class);
List<String> children = new ArrayList<String>();
HRegionInfo hriA =
new HRegionInfo(Bytes.toBytes("table_a"), HConstants.EMPTY_START_ROW, HConstants.EMPTY_END_ROW);
HRegionInfo hriB =
new HRegionInfo(Bytes.toBytes("table_b"), HConstants.EMPTY_START_ROW, HConstants.EMPTY_END_ROW);
// Necessary to start Assignment Manager instance.
// Mockito.when(hmaster.getZooKeeper()).thenReturn(zkw);
// Mockito.when(hmaster.getZooKeeperWatcher()).thenReturn(zkw);
// Mockito.when(hmaster.getConfiguration()).thenReturn(TEST_UTIL.getConfiguration());
Mockito.when(server.getConfiguration()).thenReturn(TEST_UTIL.getConfiguration());
Mockito.when(zkw.getRecoverableZooKeeper()).thenReturn(recoverableZooKeeper);
Mockito.when(zkw.getRecoverableZooKeeper().getChildren(null, null)).thenReturn(children);
Mockito.when(zkw.getRecoverableZooKeeper().create(Mockito.anyString(), Mockito.any(byte[].class), Mockito.anyListOf(ACL.class),
Mockito.any(CreateMode.class))).thenReturn("");
Mockito.when(zk.create(Mockito.anyString(), Mockito.any(byte[].class), Mockito.anyListOf(ACL.class),
Mockito.any(CreateMode.class))).thenReturn("");
// Servers used by am
List<ServerName> destServers = new ArrayList<ServerName>();
Map<ServerName, ServerLoad> onlineServers = new HashMap<ServerName, ServerLoad>();
ServerName SRV_A = new ServerName("mockedserver.com", 3344, 1233);
ServerName SRV_B = new ServerName("mockedserver.com", 4433, 3312);
destServers.add(SRV_A);
destServers.add(SRV_B);
onlineServers.put(SRV_A, ServerLoad.EMPTY_SERVERLOAD);
onlineServers.put(SRV_B, ServerLoad.EMPTY_SERVERLOAD);
Mockito.when(serverManager.isServerOnline(SRV_A)).thenReturn(true);
Mockito.when(serverManager.isServerOnline(SRV_B)).thenReturn(true);
Mockito.when(serverManager.createDestinationServersList()).thenReturn(destServers);
Mockito.when(serverManager.createDestinationServersList(null)).thenReturn(destServers);
Mockito.when(serverManager.getOnlineServersList()).thenReturn(destServers);
Mockito.when(serverManager.getOnlineServers()).thenReturn(onlineServers);
HMaster hmaster = new HMaster(TEST_UTIL.getConfiguration());
AssignmentManager am = new AssignmentManager(hmaster,
serverManager, catalogTracker, balancer, service, null, tableLockManager);
assertNotNull(am);
// Put SRV_B on drained list and try assign region
boolean isAddedToDrainedServerList = true;
destServers.remove(SRV_B);
onlineServers.remove(SRV_B);
Mockito.when(serverManager.addServerToDrainList(SRV_B)).thenReturn(isAddedToDrainedServerList);
Mockito.when(serverManager.createDestinationServersList()).thenReturn(destServers);
Mockito.when(serverManager.createDestinationServersList(null)).thenReturn(destServers);
Mockito.when(serverManager.getOnlineServersList()).thenReturn(destServers);
Mockito.when(serverManager.getOnlineServers()).thenReturn(onlineServers);
Mockito.when(serverManager.sendRegionOpen(SRV_A, hriA, -1)).thenReturn(RegionOpeningState.OPENED);
hmaster.assignRegion(hriA);
// RegionPlan plan = new RegionPlan(hriA, null, SRV_A);
// am.addPlan(hriA.getEncodedName(), plan);
// am.assign(hriA, false);
// System.out.println("===> RIT: " + hriA + " " + am.getRegionStates().isRegionInTransition(hriA));
RegionPlan hriBPlan = new RegionPlan(hriB, null, SRV_B);
am.addPlan(hriB.getEncodedName(), hriBPlan);
am.assign(hriB, false);
assertTrue(am.getRegionStates().isRegionAssigned(hriA));
assertFalse(am.getRegionStates().isRegionAssigned(hriB));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment