/*
* JBoss, Home of Professional Open Source.
* Copyright 2011, Red Hat, Inc., 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 org.jboss.as.test.integration.ee.jmx.property;
import java.io.File;
import java.io.IOException;
import java.io.StringReader;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.net.InetAddress;
import java.net.URI;
import java.net.URL;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
import java.util.Properties;
import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.jboss.arquillian.container.test.api.Deployer;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.container.test.api.RunAsClient;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.arquillian.test.api.ArquillianResource;
import org.jboss.as.arquillian.api.ContainerResource;
import org.jboss.as.arquillian.container.ManagementClient;
import org.jboss.as.test.integration.common.DefaultConfiguration;
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.Asset;
import org.jboss.shrinkwrap.api.asset.StringAsset;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xnio.IoUtils;
/**
* @author baranowb
*
*/
@RunWith(Arquillian.class)
@RunAsClient
public class JMXPropertyEditorsTestCase {
private static final String SAR_DEPLOMENT_NAME = "property-editors-beans";
private static final String SAR_DEPLOMENT_FILE = SAR_DEPLOMENT_NAME + ".sar";
@ArquillianResource
private Deployer deployer;
@ContainerResource
private ManagementClient managementClient;
private MBeanServerConnection connection;
private JMXConnector connector;
private static final String USER_SYS_PROP;
static {
String osName = System.getProperty("os.name");
if ( osName.contains( "Windows" ) ) {
if (System.getenv().containsKey("USERNAME")) {
USER_SYS_PROP = "USERNAME";
} else {
USER_SYS_PROP = "USER";
}
} else if ( osName.contains( "SunOS" ) ) {
USER_SYS_PROP = "LOGNAME";
} else {
USER_SYS_PROP = "USER";
}
}
@Before
public void initialize() throws Exception {
connection = getMBeanServerConnection();
Assert.assertNotNull(connection);
}
@After
public void closeConnection() throws Exception {
connection = null;
IoUtils.safeClose(connector);
}
private MBeanServerConnection getMBeanServerConnection() throws IOException {
final String address = managementClient.getMgmtAddress()+":"+managementClient.getMgmtPort();
connector = JMXConnectorFactory.connect(new JMXServiceURL("service:jmx:http-remoting-jmx://"+address), DefaultConfiguration.credentials());
return connector.getMBeanServerConnection();
}
private static Asset createServiceAsset(String attributeName, String attributeValue) {
return new StringAsset(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<server xmlns=\"urn:jboss:service:7.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
+ "xsi:schemaLocation=\"urn:jboss:service:7.0 jboss-service_7_0.xsd\">"
+ "<mbean code=\"org.jboss.as.test.integration.ee.jmx.property.WithProperties\" name=\"test:service=WithProperties"
+ attributeName + "\">" + "<attribute name=\"" + attributeName + "\">" + attributeValue
+ "</attribute>" + "</mbean>" + "</server>");
}
private static JavaArchive createArchive(String prefix) {
// jar
final JavaArchive jmxSAR = ShrinkWrap.create(JavaArchive.class, prefix + "-" + SAR_DEPLOMENT_FILE);
jmxSAR.addClass(WithPropertiesMBean.class);
jmxSAR.addClass(WithProperties.class);
return jmxSAR;
}
@Deployment(name = "AtomicBoolean", managed = false)
public static Archive<?> deploymentAtomicBoolean() {
// jar
final JavaArchive jmxSAR = createArchive("AtomicBoolean");
Asset asset = createServiceAsset("AtomicBoolean", "true");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testAtomicBoolean() throws Exception {
try {
deployer.deploy("AtomicBoolean");
performTest("AtomicBoolean", new AtomicBoolean(true), new Comparator() {
@Override
public int compare(Object o1, Object o2) {
AtomicBoolean a1 = (AtomicBoolean) o1;
AtomicBoolean a2 = (AtomicBoolean) o2;
return a1.get() == a2.get() ? 0 : 1;
}
});
} finally {
try {
deployer.undeploy("AtomicBoolean");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "AtomicInteger", managed = false)
public static Archive<?> deploymentAtomicInteger() {
// jar
final JavaArchive jmxSAR = createArchive("AtomicInteger");
Asset asset = createServiceAsset("AtomicInteger", "3");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testAtomicInteger() throws Exception {
try {
deployer.deploy("AtomicInteger");
performTest("AtomicInteger", new AtomicInteger(3), new Comparator() {
@Override
public int compare(Object o1, Object o2) {
AtomicInteger a1 = (AtomicInteger) o1;
AtomicInteger a2 = (AtomicInteger) o2;
return a1.get() == a2.get() ? 0 : 1;
}
});
} finally {
try {
deployer.undeploy("AtomicInteger");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "AtomicLong", managed = false)
public static Archive<?> deploymentAtomicLong() {
// jar
final JavaArchive jmxSAR = createArchive("AtomicLong");
Asset asset = createServiceAsset("AtomicLong", "2");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testAtomicLong() throws Exception {
try {
deployer.deploy("AtomicLong");
performTest("AtomicLong", new AtomicLong(2), new Comparator() {
@Override
public int compare(Object o1, Object o2) {
AtomicLong a1 = (AtomicLong) o1;
AtomicLong a2 = (AtomicLong) o2;
return a1.get() == a2.get() ? 0 : 1;
}
});
} finally {
try {
deployer.undeploy("AtomicLong");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "BigDecimal", managed = false)
public static Archive<?> deploymentBigDecimal() {
// jar
final JavaArchive jmxSAR = createArchive("BigDecimal");
Asset asset = createServiceAsset("BigDecimal", "100000000");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testBigDecimal() throws Exception {
try {
deployer.deploy("BigDecimal");
performTest("BigDecimal", new BigDecimal(100000000));
} finally {
try {
deployer.undeploy("BigDecimal");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "BigInteger", managed = false)
public static Archive<?> deploymentBigIntegerl() {
// jar
final JavaArchive jmxSAR = createArchive("BigInteger");
Asset asset = createServiceAsset("BigInteger", "100000000");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testBigInteger() throws Exception {
try {
deployer.deploy("BigInteger");
performTest("BigInteger", new BigInteger("100000000"));
} finally {
try {
deployer.undeploy("BigInteger");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "Boolean", managed = false)
public static Archive<?> deploymentBoolean() {
// jar
final JavaArchive jmxSAR = createArchive("Boolean");
Asset asset = createServiceAsset("Boolean", "true");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testBoolean() throws Exception {
try {
deployer.deploy("Boolean");
performTest("Boolean", new Boolean(true));
} finally {
try {
deployer.undeploy("Boolean");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "BooleanArray", managed = false)
public static Archive<?> deploymentBooleanArray() {
// jar
final JavaArchive jmxSAR = createArchive("BooleanArray");
Asset asset = createServiceAsset("BooleanArray", "true,false");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testBooleanArray() throws Exception {
try {
deployer.deploy("BooleanArray");
performTest("BooleanArray", new boolean[] { true, false }, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
boolean[] b1 = (boolean[]) o1;
boolean[] b2 = (boolean[]) o2;
return Arrays.equals(b1, b2) ? 0 : 1;
}
});
} finally {
try {
deployer.undeploy("BooleanArray");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "Byte", managed = false)
public static Archive<?> deploymentByte() {
// jar
final JavaArchive jmxSAR = createArchive("Byte");
Asset asset = createServiceAsset("Byte", "1");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testByte() throws Exception {
try {
deployer.deploy("Byte");
performTest("Byte", new Byte((byte) 1));
} finally {
try {
deployer.undeploy("Byte");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "ByteArray", managed = false)
public static Archive<?> deploymentByteArray() {
// jar
final JavaArchive jmxSAR = createArchive("ByteArray");
Asset asset = createServiceAsset("ByteArray", "1,2,3");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testByteArray() throws Exception {
try {
deployer.deploy("ByteArray");
performTest("ByteArray", new byte[] { 1, 2, 3 }, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
byte[] b1 = (byte[]) o1;
byte[] b2 = (byte[]) o2;
return Arrays.equals(b1, b2) ? 0 : 1;
}
});
} finally {
try {
deployer.undeploy("ByteArray");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "Char", managed = false)
public static Archive<?> deploymentChar() {
// jar
final JavaArchive jmxSAR = createArchive("Char");
Asset asset = createServiceAsset("Char", "R");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testChar() throws Exception {
try {
deployer.deploy("Char");
performTest("Char", new Character('R'));
} finally {
try {
deployer.undeploy("Char");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "CharacterArray", managed = false)
public static Archive<?> deploymentCharacterArray() {
// jar
final JavaArchive jmxSAR = createArchive("CharacterArray");
Asset asset = createServiceAsset("CharacterArray", "R,R,X");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testCharacterArray() throws Exception {
try {
deployer.deploy("CharacterArray");
performTest("CharacterArray", new char[] { 'R', 'R', 'X' }, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
char[] a1 = (char[]) o1;
char[] a2 = (char[]) o2;
return Arrays.equals(a1, a2) ? 0 : 1;
}
});
} finally {
try {
deployer.undeploy("CharacterArray");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "Clazz", managed = false)
public static Archive<?> deploymentClazz() {
// jar
final JavaArchive jmxSAR = createArchive("Clazz");
Asset asset = createServiceAsset("Clazz", "java.lang.String");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testClazz() throws Exception {
try {
deployer.deploy("Clazz");
performTest("Clazz", String.class);
} finally {
try {
deployer.undeploy("Clazz");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "ClassArray", managed = false)
public static Archive<?> deploymentClassArray() {
// jar
final JavaArchive jmxSAR = createArchive("ClassArray");
Asset asset = createServiceAsset("ClassArray", "java.lang.String,java.util.List");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testClassArray() throws Exception {
try {
deployer.deploy("ClassArray");
performTest("ClassArray", new Class[] { String.class, List.class }, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
Class[] a1 = (Class[]) o1;
Class[] a2 = (Class[]) o2;
return Arrays.equals(a1, a2) ? 0 : 1;
}
});
} finally {
try {
deployer.undeploy("ClassArray");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "Document", managed = false)
public static Archive<?> deploymentDocument() {
// jar
final JavaArchive jmxSAR = createArchive("Document");
Asset asset = createServiceAsset("Document", "<document><element/><document>");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
@Ignore("JBossServiceXmlDescriptorParser does not support XML as attribs.")
public void testDocument() throws Exception {
try {
deployer.deploy("Document");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
StringReader sr = new StringReader("<document><element/><document>");
InputSource is = new InputSource(sr);
Document d = db.parse(is);
performTest("Document", d);
} finally {
try {
deployer.undeploy("Document");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "Double", managed = false)
public static Archive<?> deploymentDouble() {
// jar
final JavaArchive jmxSAR = createArchive("Double");
Asset asset = createServiceAsset("Double", "4");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testDouble() throws Exception {
try {
deployer.deploy("Double");
performTest("Double", new Double(4));
} finally {
try {
deployer.undeploy("Double");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "Element", managed = false)
public static Archive<?> deploymentElement() {
// jar
final JavaArchive jmxSAR = createArchive("Element");
Asset asset = createServiceAsset("Element", "<element/>");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
@Ignore("JBossServiceXmlDescriptorParser does not support XML as attribs.")
public void testElement() throws Exception {
try {
deployer.deploy("Element");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
StringReader sr = new StringReader("<element/>");
InputSource is = new InputSource(sr);
Document d = db.parse(is);
performTest("Element", d.getDocumentElement());
} finally {
try {
deployer.undeploy("Element");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "File", managed = false)
public static Archive<?> deploymentFile() {
// jar
final JavaArchive jmxSAR = createArchive("File");
Asset asset = createServiceAsset("File", "/I_DONT_EXIST/DUNNO");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testFile() throws Exception {
try {
deployer.deploy("File");
performTest("File", new File("/I_DONT_EXIST/DUNNO").getAbsoluteFile());
} finally {
try {
deployer.undeploy("File");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "Float", managed = false)
public static Archive<?> deploymentFloat() {
// jar
final JavaArchive jmxSAR = createArchive("Float");
Asset asset = createServiceAsset("Float", "1.5");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testFloat() throws Exception {
try {
deployer.deploy("Float");
performTest("Float", new Float("1.5"));
} finally {
try {
deployer.undeploy("Float");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "FloatArray", managed = false)
public static Archive<?> deploymentFloatArray() {
// jar
final JavaArchive jmxSAR = createArchive("FloatArray");
Asset asset = createServiceAsset("FloatArray", "1.5,2.5");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testFloatArray() throws Exception {
try {
deployer.deploy("FloatArray");
performTest("FloatArray", new float[] { 1.5f, 2.5f }, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
float[] a1 = (float[]) o1;
float[] a2 = (float[]) o2;
return Arrays.equals(a1, a2) ? 0 : 1;
}
});
} finally {
try {
deployer.undeploy("FloatArray");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "InetAddress", managed = false)
public static Archive<?> deploymentInetAddress() {
// jar
final JavaArchive jmxSAR = createArchive("InetAddress");
Asset asset = createServiceAsset("InetAddress", "10.10.10.1");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testInetAddress() throws Exception {
try {
deployer.deploy("InetAddress");
performTest("InetAddress", InetAddress.getByAddress(new byte[] { 10, 10, 10, 1 }));
} finally {
try {
deployer.undeploy("InetAddress");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "InetAddressArray", managed = false)
public static Archive<?> deploymentInetAddressArray() {
// jar
final JavaArchive jmxSAR = createArchive("InetAddressArray");
Asset asset = createServiceAsset("InetAddressArray", "10.10.10.1,localhost");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testInetAddressArray() throws Exception {
try {
deployer.deploy("InetAddressArray");
performTest("InetAddressArray", new InetAddress[] { InetAddress.getByAddress(new byte[] { 10, 10, 10, 1 }),
InetAddress.getByName("localhost") }, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
InetAddress[] a1 = (InetAddress[]) o1;
InetAddress[] a2 = (InetAddress[]) o2;
return Arrays.equals(a1, a2) ? 0 : 1;
}
});
} finally {
try {
deployer.undeploy("InetAddressArray");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "Integer", managed = false)
public static Archive<?> deploymentInteger() {
// jar
final JavaArchive jmxSAR = createArchive("Integer");
Asset asset = createServiceAsset("Integer", "1");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testInteger() throws Exception {
try {
deployer.deploy("Integer");
performTest("Integer", new Integer("1"));
} finally {
try {
deployer.undeploy("Integer");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "IntegerArray", managed = false)
public static Archive<?> deploymentIntegerArray() {
// jar
final JavaArchive jmxSAR = createArchive("IntegerArray");
Asset asset = createServiceAsset("IntegerArray", "1,5,4");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testIntegerArray() throws Exception {
try {
deployer.deploy("IntegerArray");
performTest("IntegerArray", new int[] { 1, 5, 4 }, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
int[] a1 = (int[]) o1;
int[] a2 = (int[]) o2;
return Arrays.equals(a1, a2) ? 0 : 1;
}
});
} finally {
try {
deployer.undeploy("IntegerArray");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "Locale", managed = false)
public static Archive<?> deploymentLocale() {
// jar
final JavaArchive jmxSAR = createArchive("Locale");
Asset asset = createServiceAsset("Locale", Locale.ENGLISH.toString());
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testLocale() throws Exception {
try {
deployer.deploy("Locale");
performTest("Locale", Locale.ENGLISH);
} finally {
try {
deployer.undeploy("Locale");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "Long", managed = false)
public static Archive<?> deploymentLong() {
// jar
final JavaArchive jmxSAR = createArchive("Long");
Asset asset = createServiceAsset("Long", "14");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testLong() throws Exception {
try {
deployer.deploy("Long");
performTest("Long", new Long(14));
} finally {
try {
deployer.undeploy("Long");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "LongArray", managed = false)
public static Archive<?> deploymentLongArray() {
// jar
final JavaArchive jmxSAR = createArchive("LongArray");
Asset asset = createServiceAsset("LongArray", "14,15");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testLongArray() throws Exception {
try {
deployer.deploy("LongArray");
performTest("LongArray", new long[] { 14, 15 }, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
long[] a1 = (long[]) o1;
long[] a2 = (long[]) o2;
return Arrays.equals(a1, a2) ? 0 : 1;
}
});
} finally {
try {
deployer.undeploy("LongArray");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "ObjectBoolean", managed = false)
public static Archive<?> deploymentObjectBoolean() {
// jar
final JavaArchive jmxSAR = createArchive("ObjectBoolean");
Asset asset = createServiceAsset("ObjectBoolean", "true");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testObjectBoolean() throws Exception {
try {
deployer.deploy("ObjectBoolean");
performTest("ObjectBoolean", new Boolean(true));
} finally {
try {
deployer.undeploy("ObjectBoolean");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "ObjectByte", managed = false)
public static Archive<?> deploymentObjectByte() {
// jar
final JavaArchive jmxSAR = createArchive("ObjectByte");
Asset asset = createServiceAsset("ObjectByte", "10");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testObjectByte() throws Exception {
try {
deployer.deploy("ObjectByte");
performTest("ObjectByte", new Byte((byte) 10));
} finally {
try {
deployer.undeploy("ObjectByte");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "ObjectChar", managed = false)
public static Archive<?> deploymentObjectCharacter() {
// jar
final JavaArchive jmxSAR = createArchive("ObjectChar");
Asset asset = createServiceAsset("ObjectChar", "Z");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testObjectCharacter() throws Exception {
try {
deployer.deploy("ObjectChar");
performTest("ObjectChar", new Character('Z'));
} finally {
try {
deployer.undeploy("ObjectChar");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "ObjectDouble", managed = false)
public static Archive<?> deploymentObjectDouble() {
// jar
final JavaArchive jmxSAR = createArchive("ObjectDouble");
Asset asset = createServiceAsset("ObjectDouble", "10");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testObjectDouble() throws Exception {
try {
deployer.deploy("ObjectDouble");
performTest("ObjectDouble", new Double(10));
} finally {
try {
deployer.undeploy("ObjectDouble");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "ObjectFloat", managed = false)
public static Archive<?> deploymentObjectFloat() {
// jar
final JavaArchive jmxSAR = createArchive("ObjectFloat");
Asset asset = createServiceAsset("ObjectFloat", "10");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testObjectFloat() throws Exception {
try {
deployer.deploy("ObjectFloat");
performTest("ObjectFloat", new Float(10));
} finally {
try {
deployer.undeploy("ObjectFloat");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "ObjectInteger", managed = false)
public static Archive<?> deploymentObjectInteger() {
// jar
final JavaArchive jmxSAR = createArchive("ObjectInteger");
Asset asset = createServiceAsset("ObjectInteger", "10");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testObjectInteger() throws Exception {
try {
deployer.deploy("ObjectInteger");
performTest("ObjectInteger", new Integer(10));
} finally {
try {
deployer.undeploy("ObjectInteger");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "ObjectLong", managed = false)
public static Archive<?> deploymentObjectLong() {
// jar
final JavaArchive jmxSAR = createArchive("ObjectLong");
Asset asset = createServiceAsset("ObjectLong", "10");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testObjectLong() throws Exception {
try {
deployer.deploy("ObjectLong");
performTest("ObjectLong", new Long(10));
} finally {
try {
deployer.undeploy("ObjectLong");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "ObjectShort", managed = false)
public static Archive<?> deploymentObjectShort() {
// jar
final JavaArchive jmxSAR = createArchive("ObjectShort");
Asset asset = createServiceAsset("ObjectShort", "10");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testObjectShort() throws Exception {
try {
deployer.deploy("ObjectShort");
performTest("ObjectShort", new Short((short) 10));
} finally {
try {
deployer.undeploy("ObjectShort");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "Properties", managed = false)
public static Archive<?> deploymentProperties() {
// jar
final JavaArchive jmxSAR = createArchive("Properties");
Asset asset = createServiceAsset("Properties", "prop1=ugabuga\nprop2=HAHA\nenv=${env."+USER_SYS_PROP+"}");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testProperties() throws Exception {
try {
deployer.deploy("Properties");
Properties props = new Properties();
props.put("prop1", "ugabuga");
props.put("prop2", "HAHA");
props.put("env", System.getenv(USER_SYS_PROP));
// props also dont override equals...
performTest("Properties", props, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
Properties p1 = (Properties) o1;
Properties p2 = (Properties) o2;
if (p1.size() != p2.size()) {
return 1;
}
if(!p1.keySet().containsAll(p2.keySet())){
return 1;
}
Set<Object> keys1 = p1.keySet();
for(Object key:keys1){
Object v1 = p1.get(key);
Object v2 = p2.get(key);
if(!v1.equals(v2)){
return 1;
}
}
return 0;
}
});
} finally {
try {
deployer.undeploy("Properties");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "Short", managed = false)
public static Archive<?> deploymentShort() {
// jar
final JavaArchive jmxSAR = createArchive("Short");
Asset asset = createServiceAsset("Short", "1");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testShort() throws Exception {
try {
deployer.deploy("Short");
performTest("Short", new Short((short) 1));
} finally {
try {
deployer.undeploy("Short");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "ShortArray", managed = false)
public static Archive<?> deploymentShortArray() {
// jar
final JavaArchive jmxSAR = createArchive("ShortArray");
Asset asset = createServiceAsset("ShortArray", "1,20");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testShortArray() throws Exception {
try {
deployer.deploy("ShortArray");
performTest("ShortArray", new short[] { 1, 20 }, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
short[] a1 = (short[]) o1;
short[] a2 = (short[]) o2;
return Arrays.equals(a1, a2) ? 0 : 1;
}
});
} finally {
try {
deployer.undeploy("ShortArray");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "StringArray", managed = false)
public static Archive<?> deploymentStringArray() {
// jar
final JavaArchive jmxSAR = createArchive("StringArray");
Asset asset = createServiceAsset("StringArray", "1,20");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testStringArray() throws Exception {
try {
deployer.deploy("StringArray");
performTest("StringArray", new String[] { "1", "20" }, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
String[] a1 = (String[]) o1;
String[] a2 = (String[]) o2;
return Arrays.equals(a1, a2) ? 0 : 1;
}
});
} finally {
try {
deployer.undeploy("StringArray");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "URI", managed = false)
public static Archive<?> deploymentURI() {
// jar
final JavaArchive jmxSAR = createArchive("URI");
Asset asset = createServiceAsset("URI", "http://nowhere.com");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testURI() throws Exception {
try {
deployer.deploy("URI");
performTest("URI", new URI("http://nowhere.com"));
} finally {
try {
deployer.undeploy("URI");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Deployment(name = "URL", managed = false)
public static Archive<?> deploymentURL() {
// jar
final JavaArchive jmxSAR = createArchive("URL");
Asset asset = createServiceAsset("URL", "http://nowhere.com");
jmxSAR.addAsManifestResource(asset, "jboss-service.xml");
return jmxSAR;
}
@Test
public void testURL() throws Exception {
try {
deployer.deploy("URL");
performTest("URL", new URL("http://nowhere.com"));
} finally {
try {
deployer.undeploy("URL");
} catch (Exception e) {
e.printStackTrace();
}
}
}
private void performTest(String attributeName, Object expectedValue) throws Exception {
this.performTest(attributeName, expectedValue, null);
}
private void performTest(String attributeName, Object expectedValue, Comparator comparator) throws Exception {
ObjectName oname = new ObjectName("test:service=WithProperties" + attributeName);
Object attributeValue = connection.getAttribute(oname, attributeName);
Assert.assertNotNull("Found null attribute value for '" + attributeName + "'", attributeValue);
if (comparator == null) {
Assert.assertEquals("Found wrong attribute value for '" + attributeName + "'", expectedValue, attributeValue);
} else {
boolean equal = comparator.compare(expectedValue, attributeValue) == 0;
Assert.assertTrue("Found wrong attribute value for '" + attributeName + "', value: '"+attributeValue+"' expected: '"+expectedValue+"'", equal);
}
}
}