public virtual void TestNameNode() { 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 NUnit.Framework.Assert.IsTrue("error printAllValues", CheckPrintAllValues(jmx)); //get some data from different source NUnit.Framework.Assert.AreEqual(numDatanodes, System.Convert.ToInt32(jmx.GetValue ("NumLiveDataNodes"))); MetricsAsserts.AssertGauge("CorruptBlocks", long.Parse(jmx.GetValue("CorruptBlocks" )), MetricsAsserts.GetMetrics("FSNamesystem")); NUnit.Framework.Assert.AreEqual(numDatanodes, System.Convert.ToInt32(jmx.GetValue ("NumOpenConnections"))); cluster.Shutdown(); MBeanServerConnection mbsc = ManagementFactory.GetPlatformMBeanServer(); ObjectName query = new ObjectName("Hadoop:service=" + serviceName + ",*"); ICollection <ObjectName> names = mbsc.QueryNames(query, null); NUnit.Framework.Assert.IsTrue("No beans should be registered for " + serviceName, names.IsEmpty()); }
public virtual void TestDataNode() { 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(); NUnit.Framework.Assert.AreEqual(fileSize, System.Convert.ToInt32(jmx.GetValue("BytesWritten" ))); cluster.Shutdown(); MBeanServerConnection mbsc = ManagementFactory.GetPlatformMBeanServer(); ObjectName query = new ObjectName("Hadoop:service=" + serviceName + ",*"); ICollection <ObjectName> names = mbsc.QueryNames(query, null); NUnit.Framework.Assert.IsTrue("No beans should be registered for " + serviceName, names.IsEmpty()); }
/// <exception cref="System.Exception">initializes MBeanServer</exception> public virtual void Init() { Err("init: server=" + server + ";port=" + port + ";service=" + service + ";localVMUrl=" + localVMUrl); string url_string = null; // build connection url if (localVMUrl != null) { // use // jstat -snap <vmpid> | grep sun.management.JMXConnectorServer.address // to get url url_string = localVMUrl; Err("url string for local pid = " + localVMUrl + " = " + url_string); } else { if (!port.IsEmpty() && !server.IsEmpty()) { // using server and port url_string = "service:jmx:rmi:///jndi/rmi://" + server + ":" + port + "/jmxrmi"; } } // else url stays null // Create an RMI connector client and // connect it to the RMI connector server if (url_string == null) { // assume local vm (for example for Testing) mbsc = ManagementFactory.GetPlatformMBeanServer(); } else { JMXServiceURL url = new JMXServiceURL(url_string); Err("Create RMI connector and connect to the RMI connector server" + url); JMXConnector jmxc = JMXConnectorFactory.Connect(url, null); // Get an MBeanServerConnection // Err("\nGet an MBeanServerConnection"); mbsc = jmxc.GetMBeanServerConnection(); } // Get domains from MBeanServer // Err("\nDomains:"); string[] domains = mbsc.GetDomains(); Arrays.Sort(domains); foreach (string domain in domains) { Err("\tDomain = " + domain); } // Get MBeanServer's default domain // Err("\nMBeanServer default domain = " + mbsc.GetDefaultDomain()); // Get MBean count // Err("\nMBean count = " + mbsc.GetMBeanCount()); // Query MBean names for specific domain "hadoop" and service ObjectName query = new ObjectName("Hadoop:service=" + service + ",*"); hadoopObjectNames = new AList <ObjectName>(5); Err("\nQuery MBeanServer MBeans:"); ICollection <ObjectName> names = new TreeSet <ObjectName>(mbsc.QueryNames(query, null )); foreach (ObjectName name in names) { hadoopObjectNames.AddItem(name); Err("Hadoop service: " + name); } }