CommandLine commandLine = null; try { commandLine = parseArgs(opts, args); } catch (IllegalArgumentException iae) { commandLine = null; err("Invalid args"); printUsage(opts); ExitUtil.terminate(-1); JMXGet jm = new JMXGet(); jm.setPort(commandLine.getOptionValue("port")); jm.setService(commandLine.getOptionValue("service")); jm.setServer(commandLine.getOptionValue("server")); jm.setLocalVMUrl(commandLine.getOptionValue("localVM")); printUsage(opts); ExitUtil.terminate(0); jm.init(); jm.printAllValues(); } else { for (String key : args) { err("key = " + key);
/** * test JMX connection to DataNode.. * @throws Exception */ public void testDataNode() throws Exception { int numDatanodes = 2; cluster = new MiniDFSCluster.Builder(config).numDataNodes(numDatanodes).build(); cluster.waitActive(); writeFile(cluster.getFileSystem(), new Path("/test"), 2); JMXGet jmx = new JMXGet(); jmx.setService("DataNode"); jmx.init(); assertEquals(Integer.parseInt(jmx.getValue("bytes_written")), 0); cluster.shutdown(); } }
private JMXGet initJMX() throws Exception { JMXGet jmx = new JMXGet(); jmx.setService(JMX_SERVICE_NAME); jmx.init(); return jmx; }
/** * test JMX connection to NameNode.. * @throws Exception */ public void testNameNode() throws Exception { int numDatanodes = 2; cluster = new MiniDFSCluster.Builder(config).numDataNodes(numDatanodes).build(); cluster.waitActive(); writeFile(cluster.getFileSystem(), new Path("/test1"), 2); JMXGet jmx = new JMXGet(); jmx.init(); //get some data from different sources int blocks_corrupted = NameNode.getNameNodeMetrics(). numBlocksCorrupted.get(); assertEquals(Integer.parseInt( jmx.getValue("NumLiveDataNodes")), 2); assertEquals(Integer.parseInt( jmx.getValue("BlocksCorrupted")), blocks_corrupted); assertEquals(Integer.parseInt( jmx.getValue("NumOpenConnections")), 0); cluster.shutdown(); }
/** * print all attributes' values */ public void printAllValues() throws Exception { err("List of all the available keys:"); Object val = null; for (ObjectName oname : hadoopObjectNames) { err(">>>>>>>>jmx name: " + oname.getCanonicalKeyPropertyListString()); MBeanInfo mbinfo = mbsc.getMBeanInfo(oname); MBeanAttributeInfo[] mbinfos = mbinfo.getAttributes(); for (MBeanAttributeInfo mb : mbinfos) { val = mbsc.getAttribute(oname, mb.getName()); System.out.format(format, mb.getName(), (val==null)?"":val.toString()); } } }
@Override public Boolean get() { try { final int currentValue = Integer.parseInt(jmx.getValue(metricName)); LOG.info("Waiting for " + metricName + " to reach value " + expectedValue + ", current value = " + currentValue); return currentValue == expectedValue; } catch (Exception e) { throw new UnhandledException("Test failed due to unexpected exception", e); } } }, 1000, 60000);
commandLine = parser.parse(opts, args, true); } catch (ParseException e) { printUsage(opts); throw new IllegalArgumentException("invalid args: " + e.getMessage());
private static boolean checkPrintAllValues(JMXGet jmx) throws Exception { int size = 0; byte[] bytes = null; String pattern = "List of all the available keys:"; PipedOutputStream pipeOut = new PipedOutputStream(); PipedInputStream pipeIn = new PipedInputStream(pipeOut); System.setErr(new PrintStream(pipeOut)); jmx.printAllValues(); if ((size = pipeIn.available()) != 0) { bytes = new byte[size]; pipeIn.read(bytes, 0, bytes.length); } pipeOut.close(); pipeIn.close(); return bytes != null ? new String(bytes).contains(pattern) : false; }
/** * test JMX connection to DataNode.. * @throws Exception */ @Test public void testDataNode() throws Exception { int numDatanodes = 2; cluster = new MiniDFSCluster.Builder(config).numDataNodes(numDatanodes).build(); cluster.waitActive(); writeFile(cluster.getFileSystem(), new Path("/test"), 2); JMXGet jmx = new JMXGet(); String serviceName = "DataNode"; jmx.setService(serviceName); jmx.init(); DFSTestUtil.waitForMetric(jmx, "BytesWritten", fileSize); assertEquals(fileSize, Integer.parseInt(jmx.getValue("BytesWritten"))); cluster.shutdown(); MBeanServerConnection mbsc = ManagementFactory.getPlatformMBeanServer(); ObjectName query = new ObjectName("Hadoop:service=" + serviceName + ",*"); Set<ObjectName> names = mbsc.queryNames(query, null); assertTrue("No beans should be registered for " + serviceName, names.isEmpty()); } }
public void printAllMatchedAttributes(String attrRegExp) throws Exception { err("List of the keys matching " + attrRegExp + " :"); Object val = null; Pattern p = Pattern.compile(attrRegExp); for (ObjectName oname : hadoopObjectNames) { err(">>>>>>>>jmx name: " + oname.getCanonicalKeyPropertyListString()); MBeanInfo mbinfo = mbsc.getMBeanInfo(oname); MBeanAttributeInfo[] mbinfos = mbinfo.getAttributes(); for (MBeanAttributeInfo mb : mbinfos) { if (p.matcher(mb.getName()).lookingAt()) { val = mbsc.getAttribute(oname, mb.getName()); System.out.format(format, mb.getName(), (val == null) ? "" : val.toString()); } } } }
protected final void verifyRamDiskJMXMetric(String metricName, long expectedValue) throws Exception { waitForMetric(metricName, (int)expectedValue); assertEquals(expectedValue, Integer.parseInt(jmx.getValue(metricName))); }
commandLine = parser.parse(opts, args, true); } catch(ParseException e) { printUsage(opts); throw new IllegalArgumentException("invalid args: " + e.getMessage());
CommandLine commandLine = null; try { commandLine = parseArgs(opts, args); } catch (IllegalArgumentException iae) { commandLine = null; err("Invalid args"); printUsage(opts); System.exit(-1); JMXGet jm = new JMXGet(); jm.setPort(commandLine.getOptionValue("port")); jm.setService(commandLine.getOptionValue("service")); jm.setServer(commandLine.getOptionValue("server")); jm.setLocalVMPid(commandLine.getOptionValue("localVM")); printUsage(opts); System.exit(0); jm.init(); jm.printAllValues(); } else { for (String key: args) { err("key = " + key);
/** * test JMX connection to NameNode.. * @throws Exception */ @Test public void testNameNode() throws Exception { int numDatanodes = 2; cluster = new MiniDFSCluster.Builder(config).numDataNodes(numDatanodes).build(); cluster.waitActive(); writeFile(cluster.getFileSystem(), new Path("/test1"), 2); JMXGet jmx = new JMXGet(); String serviceName = "NameNode"; jmx.setService(serviceName); jmx.init(); // default lists namenode mbeans only assertTrue("error printAllValues", checkPrintAllValues(jmx)); //get some data from different source DFSTestUtil.waitForMetric(jmx, "NumLiveDataNodes", numDatanodes); assertEquals(numDatanodes, Integer.parseInt( jmx.getValue("NumLiveDataNodes"))); assertGauge("CorruptBlocks", Long.parseLong(jmx.getValue("CorruptBlocks")), getMetrics("FSNamesystem")); cluster.shutdown(); MBeanServerConnection mbsc = ManagementFactory.getPlatformMBeanServer(); ObjectName query = new ObjectName("Hadoop:service=" + serviceName + ",*"); Set<ObjectName> names = mbsc.queryNames(query, null); assertTrue("No beans should be registered for " + serviceName, names.isEmpty()); }
/** * get single value by key */ public String getValue(String key) throws Exception { Object val = null; for (ObjectName oname : hadoopObjectNames) { try { val = mbsc.getAttribute(oname, key); } catch (AttributeNotFoundException anfe) { /* just go to the next */ continue; } catch (ReflectionException re) { if (re.getCause() instanceof NoSuchMethodException) { continue; } } err("Info: key = " + key + "; val = " + (val == null ? "null" : val.getClass()) + ":" + val); break; } return (val == null) ? "" : val.toString(); }
commandLine = parser.parse(opts, args, true); } catch (ParseException e) { printUsage(opts); throw new IllegalArgumentException("invalid args: " + e.getMessage());
CommandLine commandLine = null; try { commandLine = parseArgs(opts, args); } catch (IllegalArgumentException iae) { commandLine = null; err("Invalid args"); printUsage(opts); ExitUtil.terminate(-1); JMXGet jm = new JMXGet(); jm.setPort(commandLine.getOptionValue("port")); jm.setService(commandLine.getOptionValue("service")); jm.setServer(commandLine.getOptionValue("server")); jm.setLocalVMUrl(commandLine.getOptionValue("localVM")); printUsage(opts); ExitUtil.terminate(0); jm.init(); jm.printAllValues(); } else { for (String key : args) { err("key = " + key);
err("init: server=" + server + ";port=" + port + ";service=" + service + ";localVMUrl=" + localVMUrl); err("url string for local pid = " + localVMUrl + " = " + url_string); JMXServiceURL url = new JMXServiceURL(url_string); err("Create RMI connector and connect to the RMI connector server" + url); err("\nGet an MBeanServerConnection"); mbsc = jmxc.getMBeanServerConnection(); err("\nDomains:"); err("\tDomain = " + domain); err("\nMBeanServer default domain = " + mbsc.getDefaultDomain()); err("\nMBean count = " + mbsc.getMBeanCount()); err("\nQuery MBeanServer MBeans:"); Set<ObjectName> names = new TreeSet<ObjectName>(mbsc .queryNames(query, null)); err("Hadoop service: " + name);
commandLine = parser.parse(opts, args, true); } catch (ParseException e) { printUsage(opts); throw new IllegalArgumentException("invalid args: " + e.getMessage());
CommandLine commandLine = null; try { commandLine = parseArgs(opts, args); } catch (IllegalArgumentException iae) { commandLine = null; err("Invalid args"); printUsage(opts); ExitUtil.terminate(-1); JMXGet jm = new JMXGet(); jm.setPort(commandLine.getOptionValue("port")); jm.setService(commandLine.getOptionValue("service")); jm.setServer(commandLine.getOptionValue("server")); jm.setLocalVMUrl(commandLine.getOptionValue("localVM")); printUsage(opts); ExitUtil.terminate(0); jm.init(); jm.printAllValues(); } else { for (String key : args) { err("key = " + key);