### Question:
CatalogTracker { public HServerAddress getRootLocation() throws InterruptedException { return this.rootRegionTracker.getRootRegionLocation(); } CatalogTracker(final HConnection connection);  CatalogTracker(final ZooKeeperWatcher zk, final HConnection connection,
      final Abortable abortable);  CatalogTracker(final ZooKeeperWatcher zk, final HConnection connection,
      final Abortable abortable, final int defaultTimeout); void start(); void stop(); HServerAddress getRootLocation(); HServerAddress getMetaLocation(); void waitForRoot(); HRegionInterface waitForRootServerConnection(long timeout); HRegionInterface waitForRootServerConnectionDefault(); void waitForMeta(); HServerAddress waitForMeta(long timeout); HRegionInterface waitForMetaServerConnection(long timeout); HRegionInterface waitForMetaServerConnectionDefault(); boolean verifyRootRegionLocation(final long timeout); boolean verifyMetaRegionLocation(final long timeout); HConnection getConnection(); static final byte [] ROOT_REGION; static final byte [] META_REGION; }### Answer:
@Test public void testNoTimeoutWaitForRoot() throws IOException, InterruptedException, KeeperException { final CatalogTracker ct = constructAndStartCatalogTracker(); HServerAddress hsa = ct.getRootLocation(); Assert.assertNull(hsa); Thread t = new WaitOnMetaThread(ct); startWaitAliveThenWaitItLives(t, 1000); hsa = setRootLocation(); t.join(); Assert.assertTrue(ct.getRootLocation().equals(hsa)); }