### Question:
HttpZkFallbackRoutingDataReader implements RoutingDataReader { @Override public Map<String, List<String>> getRawRoutingData(String endpoint) { Map<RoutingDataReaderType, String> endpointMap = parseEndpoint(endpoint); try { return new HttpRoutingDataReader() .getRawRoutingData(endpointMap.get(RoutingDataReaderType.HTTP)); } catch (MultiZkException e) { LOG.warn( "HttpZkFallbackRoutingDataReader::getRawRoutingData: failed to read routing data via " + "HTTP. Falling back to ZK!", e); return new ZkRoutingDataReader().getRawRoutingData(endpointMap.get(RoutingDataReaderType.ZK)); } }  @Override Map<String, List<String>> getRawRoutingData(String endpoint);  }### Answer:
@Test public void testGetRawRoutingData() { HttpZkFallbackRoutingDataReader reader = new HttpZkFallbackRoutingDataReader(); String endpointString = MSDS_ENDPOINT + "," + ZK_ADDR; Map<String, List<String>> rawRoutingData = reader.getRawRoutingData(endpointString); TestConstants.FAKE_ROUTING_DATA.forEach((realm, keys) -> Assert .assertEquals(new HashSet(rawRoutingData.get(realm)), new HashSet(keys))); _msdsServer.stopServer(); try { reader.getRawRoutingData(endpointString); Assert.fail("Must encounter a MultiZkException since the path in ZK does not exist!"); } catch (MultiZkException e) { Assert.assertTrue(e.getMessage() .contains("Routing data directory ZNode /METADATA_STORE_ROUTING_DATA does not exist")); } }