/* * JBoss, Home of Professional Open Source. * Copyright 2008, Red Hat Middleware LLC, and individual contributors * as indicated by the @author tags. See the copyright.txt file in the * distribution for a full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package test.compliance.core.serviceurl; import java.net.InetAddress; import java.net.MalformedURLException; import java.net.UnknownHostException; import javax.management.remote.JMXServiceURL; import junit.framework.TestCase; /** * @author <a href="mailto:tom@jboss.org">Tom Elrod</a> */ public class JMXServiceURLTest extends TestCase { private final String protocol = "rmi"; private final String defaultProtocol = "jmxmp"; private final String ipv6Host = "1080:0:0:0:8:800:200C:417A"; private final String longSlashPath = "/jndi/rmi://localhost:1099/jmxconnector"; private final String longSemicolonPath = ";jndi/rmi://localhost:1099/jmxconnector"; private final String host = "localhost"; private final int port = 5400; public JMXServiceURLTest(String name) { super(name); } public void testValidURLWithIPv6Host() { JMXServiceURL serviceURL = null; try { serviceURL = new JMXServiceURL("service:jmx:" + protocol + "://[" + ipv6Host + "]" + longSlashPath); } catch(Throwable ex) { assertTrue("Got exception " + ex, false); } assertEquals(protocol, serviceURL.getProtocol()); assertEquals(ipv6Host, serviceURL.getHost()); assertEquals(longSlashPath, serviceURL.getURLPath()); assertEquals(0, serviceURL.getPort()); try { serviceURL = new JMXServiceURL("service:jmx:" + protocol + "://[" + ipv6Host + "]:" + port + longSlashPath); } catch(Throwable ex) { assertTrue("Got exception " + ex, false); } assertEquals(protocol, serviceURL.getProtocol()); assertEquals(ipv6Host, serviceURL.getHost()); assertEquals(longSlashPath, serviceURL.getURLPath()); assertEquals(port, serviceURL.getPort()); } public void testToString() { String url = "service:jmx:" + protocol + "://[" + ipv6Host + "]:" + port + longSlashPath; JMXServiceURL serviceURL = null; try { serviceURL = new JMXServiceURL(url); } catch(Throwable ex) { assertTrue("Got exception " + ex, false); } assertEquals(url, serviceURL.toString()); } public void testEquals() { String url = "service:jmx:" + protocol + "://[" + ipv6Host + "]:" + port + longSlashPath; JMXServiceURL serviceURL = null; JMXServiceURL serviceURL2 = null; try { serviceURL = new JMXServiceURL(url); serviceURL2 = new JMXServiceURL(url); } catch(Throwable ex) { assertTrue("Got exception " + ex, false); } assertEquals(serviceURL, serviceURL2); } public void testNoHostOrPort() { JMXServiceURL serviceURL = null; try { serviceURL = new JMXServiceURL("service:jmx:" + protocol + "://" + longSlashPath); } catch(Throwable ex) { assertTrue("Got exception " + ex, false); } assertEquals(protocol, serviceURL.getProtocol()); try { assertEquals(InetAddress.getLocalHost().getHostName(), serviceURL.getHost()); } catch(UnknownHostException e) { e.printStackTrace(); } assertEquals(longSlashPath, serviceURL.getURLPath()); assertEquals(0, serviceURL.getPort()); } public void testValidURLWithSlashPathSeperator() { JMXServiceURL serviceURL = null; try { serviceURL = new JMXServiceURL("service:jmx:" + protocol + "://" + host + longSlashPath); } catch(Throwable ex) { assertTrue("Got exception " + ex, false); } assertEquals(protocol, serviceURL.getProtocol()); assertEquals(host, serviceURL.getHost()); assertEquals(longSlashPath, serviceURL.getURLPath()); assertEquals(0, serviceURL.getPort()); try { serviceURL = new JMXServiceURL("service:jmx:" + protocol + "://" + host + ":" + port + longSlashPath); } catch(Throwable ex) { assertTrue("Got exception " + ex, false); } assertEquals(protocol, serviceURL.getProtocol()); assertEquals(host, serviceURL.getHost()); assertEquals(longSlashPath, serviceURL.getURLPath()); assertEquals(port, serviceURL.getPort()); } public void testValidURLWithSemicolonPathSeperator() { JMXServiceURL serviceURL = null; try { serviceURL = new JMXServiceURL("service:jmx:" + protocol + "://" + host + longSemicolonPath); } catch(Throwable ex) { assertTrue("Got exception " + ex, false); } assertEquals(protocol, serviceURL.getProtocol()); assertEquals(host, serviceURL.getHost()); assertEquals(longSemicolonPath, serviceURL.getURLPath()); assertEquals(0, serviceURL.getPort()); try { serviceURL = new JMXServiceURL("service:jmx:" + protocol + "://" + host + ":" + port + longSemicolonPath); } catch(Throwable ex) { assertTrue("Got exception " + ex, false); } assertEquals(protocol, serviceURL.getProtocol()); assertEquals(host, serviceURL.getHost()); assertEquals(longSemicolonPath, serviceURL.getURLPath()); assertEquals(port, serviceURL.getPort()); } public void testNoProtocolWithSuffix() { JMXServiceURL serviceURL = null; try { serviceURL = new JMXServiceURL("service:jmx:://" + host + ":" + port); } catch(Throwable ex) { assertTrue("Got exception " + ex, false); } assertEquals(defaultProtocol, serviceURL.getProtocol()); assertEquals(host, serviceURL.getHost()); assertEquals(port, serviceURL.getPort()); } public void testParamConstructWithIPv6Host() { JMXServiceURL serviceURL = null; try { serviceURL = new JMXServiceURL(protocol, "[" + ipv6Host + "]", port); } catch(Throwable ex) { assertTrue("Got exception " + ex, false); } assertEquals(protocol, serviceURL.getProtocol()); assertEquals(ipv6Host, serviceURL.getHost()); assertEquals(port, serviceURL.getPort()); } public void testNullURL() { try { JMXServiceURL serviceURL = new JMXServiceURL(null); } catch(MalformedURLException e) { assertTrue("Got MalformedULRException and expected NullPointerException.", false); } catch(NullPointerException npex) { assertTrue(true); return; } catch(Throwable ex) { assertTrue("Expected NullPointerException, but got " + ex, false); } assertTrue("Did not throw NullPointerException as expected.", false); } public void testNoPrefix() { try { JMXServiceURL serviceURL = new JMXServiceURL("rmi://myhost:0"); } catch(MalformedURLException e) { assertTrue(true); return; } catch(Throwable ex) { assertTrue("Expected MalformedURLException, but got " + ex, false); } assertTrue("Did not throw MalformedURLException as expected.", false); } public void testPortWithoutHost() { try { JMXServiceURL serviceURL = new JMXServiceURL("service:jmx:://:1234"); } catch(MalformedURLException e) { assertTrue(true); return; } catch(Throwable ex) { assertTrue("Expected MalformedURLException, but got " + ex, false); } assertTrue("Did not throw MalformedURLException as expected.", false); } public void testNoProtocolWithoutSuffix() { try { JMXServiceURL serviceURL = new JMXServiceURL("service:jmx:myhost:0"); } catch(MalformedURLException e) { assertTrue(true); return; } catch(Throwable ex) { assertTrue("Expected MalformedURLException, but got " + ex, false); } assertTrue("Did not throw MalformedURLException as expected.", false); } public void testInvalidProtocolCharacter() { try { JMXServiceURL serviceURL = new JMXServiceURL("service:jmx:rm$i://myhost:0"); } catch(MalformedURLException e) { assertTrue(true); return; } catch(Throwable ex) { assertTrue("Expected MalformedURLException, but got " + ex, false); } assertTrue("Did not throw MalformedURLException as expected.", false); } }