/* * Copyright 2011 ClamShell-Cli. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.clamshellcli.jmx; import org.clamshellcli.jmx.PsCommand; import org.clamshellcli.jmx.Management; import org.clamshellcli.api.Configurator; import org.clamshellcli.api.Context; import org.clamshellcli.core.ShellContext; import com.google.gson.Gson; import com.sun.tools.attach.VirtualMachine; import java.util.HashMap; import java.util.Map; import javax.management.ObjectInstance; import javax.management.remote.JMXConnectorServer; import javax.management.remote.JMXServiceURL; import org.clamshellcli.test.MockContext; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import sun.jvmstat.monitor.HostIdentifier; import sun.jvmstat.monitor.MonitoredHost; import sun.jvmstat.monitor.MonitoredVm; /** * * @author vladimir */ public class ManagementTest { Context ctx; PsCommand cmd; Gson gson; static String ARGS_HOST = "localhost"; static String ARGS_PORT = "1099"; public ManagementTest() { ctx = MockContext.createInstance(); cmd = new PsCommand(); gson = new Gson(); } @BeforeClass public static void setUpClass() throws Exception { } @AfterClass public static void tearDownClass() throws Exception { } @Before public void setUp() { } @Test public void testGetDefaultHostIdentifier() throws Exception{ assert Management.getHostIdentifier(ARGS_HOST) != null; assert Management.getHostIdentifier(ARGS_HOST).getHost().equals(ARGS_HOST); } @Test public void testGetMonitoredVm() throws Exception{ HostIdentifier hostId = Management.getHostIdentifier(ARGS_HOST); assert hostId != null; MonitoredHost mHost = MonitoredHost.getMonitoredHost(hostId); Integer id = (Integer) mHost.activeVms().iterator().next(); MonitoredVm vm = Management.getMonitoredVm(mHost, id); assert vm != null; assert vm.getVmIdentifier().getHostIdentifier().getHost().equals(ARGS_HOST); } @Test public void testGetJmxUrlFromWithDefault() throws Exception { String urlString = "service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi"; JMXServiceURL url = Management.getJmxUrlFrom(ARGS_HOST); assert url != null; assert url.toString().equals(urlString); } @Test public void testGetJmxUrlFrom() throws Exception { String urlString = "service:jmx:rmi:///jndi/rmi://localhost:1999/jmxrmi"; JMXServiceURL url = Management.getJmxUrlFrom("localhost:1999"); assert url != null; assert url.toString().equals(urlString); } @Test public void testGetHostFromArgs() { String host = Management.getHostFromArgs(null); assert host.equals("localhost"); Map<String,Object> args = new HashMap<String,Object>(); args.put(Management.KEY_ARGS_HOST, "test.host:2020"); host = Management.getHostFromArgs(args); assert host.equals("test.host:2020"); } @Test public void testMapVmInfo() throws Exception{ Map<Integer, Management.VmInfo> map = Management.mapVmInfo("localhost"); assert map != null; assert map.size() > 0; } @Test public void testGetMonitoredVmFromId() throws Exception{ Map<Integer, Management.VmInfo> map = Management.mapVmInfo("localhost"); Integer vmId = map.keySet().iterator().next(); MonitoredVm vm = Management.getMonitoredVmFromId(vmId); assert vm != null; assert vm.getVmIdentifier().getLocalVmId() == vmId.intValue(); } @Test public void testGetLocalVmAddress() throws Exception{ Map<Integer, Management.VmInfo> map = Management.mapVmInfo("localhost"); Integer vmId = map.keySet().iterator().next(); VirtualMachine vm = VirtualMachine.attach(vmId.toString()); String addr = Management.getLocalVmAddress(vm); vm.detach(); assert addr != null; assert addr.contains("service:jmx:rmi://127.0.0.1/stub/"); } @Test public void testGetObjectInstance() throws Exception{ JmxAgent agent = new JmxAgent(1999); agent.start(); JMXConnectorServer server = agent.getConnectorServer(); ObjectInstance instance = Management.getObjectInstance(server.getMBeanServer(), "java.lang:type=Runtime"); assert instance != null; agent.stop(); } }