@Test public void testUpdate() throws Exception { ZooKeeper zk = getClient(0); ZooKeeper zk2 = getClient(0); MailboxTracker tracker = new MailboxTracker(zk, handler); MailboxPublisher publisher = new MailboxPublisher(VoltZK.mailboxes + "/1"); VoltZK.createPersistentZKNodes(zk); publisher.registerMailbox(MailboxType.ExecutionSite, new MailboxNodeContent(1L, 0)); publisher.publish(zk2); publisher = new MailboxPublisher(VoltZK.mailboxes + "/2"); publisher.registerMailbox(MailboxType.ExecutionSite, new MailboxNodeContent(2L, 1)); publisher.publish(zk); tracker.start(); // The ephemaral node just created will disappear and we should get an update zk2.close(); while (handler.m_handleCount.get() < 2) { Thread.sleep(1); } Map<MailboxType, List<MailboxNodeContent>> value = handler.m_mailboxes; assertTrue(value.containsKey(MailboxType.ExecutionSite)); List<MailboxNodeContent> list = value.get(MailboxType.ExecutionSite); assertEquals(1, list.size()); assertEquals(2, list.get(0).HSId.longValue()); assertEquals(1, list.get(0).partitionId.intValue()); tracker.shutdown(); }
@Test public void testMailboxTracker() throws Exception { ZooKeeper zk = getClient(0); MailboxTracker tracker = new MailboxTracker(zk, handler); MailboxPublisher publisher = new MailboxPublisher(VoltZK.mailboxes + "/1"); VoltZK.createPersistentZKNodes(zk); publisher.registerMailbox(MailboxType.ExecutionSite, new MailboxNodeContent(1L, 0)); publisher.registerMailbox(MailboxType.ExecutionSite, new MailboxNodeContent(2L, 1)); publisher.publish(zk); // start the mailbox tracker and watch all the changes tracker.start(); while (handler.m_handleCount.get() == 0) { Thread.sleep(1); } Map<MailboxType, List<MailboxNodeContent>> value = handler.m_mailboxes; assertTrue(value.containsKey(MailboxType.ExecutionSite)); List<MailboxNodeContent> list = value.get(MailboxType.ExecutionSite); assertEquals(2, list.size()); MailboxNodeContent node1 = list.get(0); assertEquals(1, node1.HSId.longValue()); assertEquals(0, node1.partitionId.intValue()); MailboxNodeContent node2 = list.get(1); assertEquals(2, node2.HSId.longValue()); assertEquals(1, node2.partitionId.intValue()); tracker.shutdown(); }