public static List<String> toXAttrNames(final Map<?, ?> json) throws IOException { if (json == null) { return null; } final String namesInJson = (String) json.get("XAttrNames"); final Object[] xattrs = (Object[]) JSON.parse(namesInJson); final List<String> names = Lists.newArrayListWithCapacity(json.keySet().size()); for (int i = 0; i < xattrs.length; i++) { names.add((String) (xattrs[i])); } return names; }
@Test public void testGetTest2() throws Exception { MuleClient client = muleContext.getClient(); MuleMessage result = client.request("http://127.0.0.1:8081/test2", 1000); assertThat(result, is(notNullValue())); Object parsedJson = JSON.parse(result.getPayloadAsString()); assertTrue(parsedJson instanceof Object[]); Object[] array = (Object[]) parsedJson; assertEquals(1, array.length); assertTrue(array[0] instanceof Map); @SuppressWarnings("unchecked") Map<String, Object> map = (Map<String, Object>) array[0]; assertEquals("hello2", map.get("var1")); assertEquals("goodbye2", map.get("var2")); }
@SuppressWarnings({"unchecked", "deprecation"}) @Test public void testNameNodeMXBeanInfo() throws Exception { Configuration conf = new Configuration(); MiniDFSCluster cluster = null; try { cluster = new MiniDFSCluster.Builder(conf).build(); cluster.waitActive(); FSNamesystem fsn = cluster.getNameNode().namesystem; MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); ObjectName mxbeanName = new ObjectName("Hadoop:service=NameNode,name=NameNodeInfo"); // get attribute "ClusterId" String clusterId = (String) mbs.getAttribute(mxbeanName, "ClusterId"); assertEquals(fsn.getClusterId(), clusterId); // get attribute "BlockPoolId" String blockpoolId = (String) mbs.getAttribute(mxbeanName, "BlockPoolId"); assertEquals(fsn.getBlockPoolId(), blockpoolId); // get attribute "Version" String version = (String) mbs.getAttribute(mxbeanName, "Version"); assertEquals(fsn.getVersion(), version); assertTrue(version.equals(VersionInfo.getVersion() + ", r" + VersionInfo.getRevision())); // get attribute "Used" Long used = (Long) mbs.getAttribute(mxbeanName, "Used"); assertEquals(fsn.getUsed(), used.longValue()); // get attribute "Total" Long total = (Long) mbs.getAttribute(mxbeanName, "Total"); assertEquals(fsn.getTotal(), total.longValue()); // get attribute "safemode" String safemode = (String) mbs.getAttribute(mxbeanName, "Safemode"); assertEquals(fsn.getSafemode(), safemode); // get attribute nondfs Long nondfs = (Long) (mbs.getAttribute(mxbeanName, "NonDfsUsedSpace")); assertEquals(fsn.getNonDfsUsedSpace(), nondfs.longValue()); // get attribute percentremaining Float percentremaining = (Float) (mbs.getAttribute(mxbeanName, "PercentRemaining")); assertEquals(fsn.getPercentRemaining(), percentremaining.floatValue(), DELTA); // get attribute Totalblocks Long totalblocks = (Long) (mbs.getAttribute(mxbeanName, "TotalBlocks")); assertEquals(fsn.getTotalBlocks(), totalblocks.longValue()); // get attribute alivenodeinfo String alivenodeinfo = (String) (mbs.getAttribute(mxbeanName, "LiveNodes")); Map<String, Map<String, Object>> liveNodes = (Map<String, Map<String, Object>>) JSON.parse(alivenodeinfo); assertTrue(liveNodes.size() > 0); for (Map<String, Object> liveNode : liveNodes.values()) { assertTrue(liveNode.containsKey("nonDfsUsedSpace")); assertTrue(((Long) liveNode.get("nonDfsUsedSpace")) > 0); assertTrue(liveNode.containsKey("capacity")); assertTrue(((Long) liveNode.get("capacity")) > 0); assertTrue(liveNode.containsKey("numBlocks")); assertTrue(((Long) liveNode.get("numBlocks")) == 0); } assertEquals(fsn.getLiveNodes(), alivenodeinfo); // get attribute deadnodeinfo String deadnodeinfo = (String) (mbs.getAttribute(mxbeanName, "DeadNodes")); assertEquals(fsn.getDeadNodes(), deadnodeinfo); // get attribute NameDirStatuses String nameDirStatuses = (String) (mbs.getAttribute(mxbeanName, "NameDirStatuses")); assertEquals(fsn.getNameDirStatuses(), nameDirStatuses); Map<String, Map<String, String>> statusMap = (Map<String, Map<String, String>>) JSON.parse(nameDirStatuses); Collection<URI> nameDirUris = cluster.getNameDirs(0); for (URI nameDirUri : nameDirUris) { File nameDir = new File(nameDirUri); System.out.println("Checking for the presence of " + nameDir + " in active name dirs."); assertTrue(statusMap.get("active").containsKey(nameDir.getAbsolutePath())); } assertEquals(2, statusMap.get("active").size()); assertEquals(0, statusMap.get("failed").size()); // This will cause the first dir to fail. File failedNameDir = new File(nameDirUris.toArray(new URI[0])[0]); assertEquals(0, FileUtil.chmod(new File(failedNameDir, "current").getAbsolutePath(), "000")); cluster.getNameNodeRpc().rollEditLog(); nameDirStatuses = (String) (mbs.getAttribute(mxbeanName, "NameDirStatuses")); statusMap = (Map<String, Map<String, String>>) JSON.parse(nameDirStatuses); for (URI nameDirUri : nameDirUris) { File nameDir = new File(nameDirUri); String expectedStatus = nameDir.equals(failedNameDir) ? "failed" : "active"; System.out.println( "Checking for the presence of " + nameDir + " in " + expectedStatus + " name dirs."); assertTrue(statusMap.get(expectedStatus).containsKey(nameDir.getAbsolutePath())); } assertEquals(1, statusMap.get("active").size()); assertEquals(1, statusMap.get("failed").size()); } finally { if (cluster != null) { for (URI dir : cluster.getNameDirs(0)) { FileUtil.chmod(new File(new File(dir), "current").getAbsolutePath(), "755"); } cluster.shutdown(); } } }