/** * Test for {@link DFSUtil#getNNServiceRpcAddresses(Configuration)} {@link * DFSUtil#getNameServiceIdFromAddress(Configuration, InetSocketAddress, String...) * (Configuration)} */ @Test public void testMultipleNamenodes() throws IOException { HdfsConfiguration conf = new HdfsConfiguration(); conf.set(DFS_NAMESERVICES, "nn1,nn2"); // Test - configured list of namenodes are returned final String NN1_ADDRESS = "localhost:9000"; final String NN2_ADDRESS = "localhost:9001"; final String NN3_ADDRESS = "localhost:9002"; conf.set(DFSUtil.addKeySuffixes(DFS_NAMENODE_RPC_ADDRESS_KEY, "nn1"), NN1_ADDRESS); conf.set(DFSUtil.addKeySuffixes(DFS_NAMENODE_RPC_ADDRESS_KEY, "nn2"), NN2_ADDRESS); Map<String, Map<String, InetSocketAddress>> nnMap = DFSUtil.getNNServiceRpcAddresses(conf); assertEquals(2, nnMap.size()); Map<String, InetSocketAddress> nn1Map = nnMap.get("nn1"); assertEquals(1, nn1Map.size()); InetSocketAddress addr = nn1Map.get(null); assertEquals("localhost", addr.getHostName()); assertEquals(9000, addr.getPort()); Map<String, InetSocketAddress> nn2Map = nnMap.get("nn2"); assertEquals(1, nn2Map.size()); addr = nn2Map.get(null); assertEquals("localhost", addr.getHostName()); assertEquals(9001, addr.getPort()); // Test - can look up nameservice ID from service address checkNameServiceId(conf, NN1_ADDRESS, "nn1"); checkNameServiceId(conf, NN2_ADDRESS, "nn2"); checkNameServiceId(conf, NN3_ADDRESS, null); // HA is not enabled in a purely federated config assertFalse(HAUtil.isHAEnabled(conf, "nn1")); assertFalse(HAUtil.isHAEnabled(conf, "nn2")); }
/** Tests to ensure default namenode is used as fallback */ @Test public void testDefaultNamenode() throws IOException { HdfsConfiguration conf = new HdfsConfiguration(); final String hdfs_default = "hdfs://localhost:9999/"; conf.set(FS_DEFAULT_NAME_KEY, hdfs_default); // If DFS_FEDERATION_NAMESERVICES is not set, verify that // default namenode address is returned. Map<String, Map<String, InetSocketAddress>> addrMap = DFSUtil.getNNServiceRpcAddresses(conf); assertEquals(1, addrMap.size()); Map<String, InetSocketAddress> defaultNsMap = addrMap.get(null); assertEquals(1, defaultNsMap.size()); assertEquals(9999, defaultNsMap.get(null).getPort()); }
/** * Tests for empty configuration, an exception is thrown from {@link * DFSUtil#getNNServiceRpcAddresses(Configuration)} {@link * DFSUtil#getBackupNodeAddresses(Configuration)} {@link * DFSUtil#getSecondaryNameNodeAddresses(Configuration)} */ @Test public void testEmptyConf() { HdfsConfiguration conf = new HdfsConfiguration(false); try { Map<String, Map<String, InetSocketAddress>> map = DFSUtil.getNNServiceRpcAddresses(conf); fail("Expected IOException is not thrown, result was: " + DFSUtil.addressMapToString(map)); } catch (IOException expected) { /** Expected */ } try { Map<String, Map<String, InetSocketAddress>> map = DFSUtil.getBackupNodeAddresses(conf); fail("Expected IOException is not thrown, result was: " + DFSUtil.addressMapToString(map)); } catch (IOException expected) { /** Expected */ } try { Map<String, Map<String, InetSocketAddress>> map = DFSUtil.getSecondaryNameNodeAddresses(conf); fail("Expected IOException is not thrown, result was: " + DFSUtil.addressMapToString(map)); } catch (IOException expected) { /** Expected */ } }