@Test public void readWithPattern() { JmxReadRequest req = JmxRequestFactory.createGetRequest("read/java.lang:type=*", procParams); assert req.getType() == RequestType.READ : "Type is read"; assert req.getObjectName().getCanonicalName().equals("java.lang:type=*") : "Name properly parsed"; assert req.getObjectName().isPattern() : "Name is pattern"; assert req.getAttributeNames() == null : "No attributes names"; assert req.getAttributeName() == null : "No attributes names"; assert req.getPath() == null : "Path is null"; req = JmxRequestFactory.createGetRequest("read/java.lang:type=*/HeapMemoryUsage", procParams); assert req.getAttributeName().equals("HeapMemoryUsage") : "No attributes names"; }
@Test public void simpleGetWithEscapedAttribute() { JmxReadRequest req = JmxRequestFactory.createGetRequest( "read/java.lang:type=Memory/!/Heap!/Memory!/Usage!/", procParams); assertEquals(req.getAttributeName(), "/Heap/Memory/Usage/", "Attribute properly parsed"); }
@Test public void simpleGetWithEscapedPath() { JmxReadRequest req = JmxRequestFactory.createGetRequest( "read/java.lang:type=Memory/HeapMemoryUsage/used!/bla!/blub/bloe", procParams); assertEquals(req.getPathParts().size(), 2, "Size of path"); assertEquals(req.getPath(), "used!/bla!/blub/bloe", "Path properly parsed"); }
@Test public void simpleGetWithQueryPath() { Map<String, String> params = new HashMap<String, String>(); params.put("p", "list/java.lang/type=Memory"); JmxListRequest req = JmxRequestFactory.createGetRequest( null, new Configuration().getProcessingParameters(params)); assert req.getHttpMethod() == HttpMethod.GET : "GET by default"; assert req.getPath().equals("java.lang/type=Memory") : "Path extracted"; }
@Test public void simpleGet() { JmxReadRequest req = JmxRequestFactory.createGetRequest( "read/java.lang:type=Memory/HeapMemoryUsage", procParams); assert req.getType() == RequestType.READ : "Type is read"; assert req.getObjectName().getCanonicalName().equals("java.lang:type=Memory") : "Name properly parsed"; assertEquals(req.getAttributeName(), "HeapMemoryUsage", "Attribute parsed properly"); assert req.getPathParts() == null : "PathParts are null"; assert req.getPath() == null : "Path is null"; }
@Test public void simpleGetWithPath() { JmxWriteRequest req = JmxRequestFactory.createGetRequest( "write/java.lang:type=Runtime/SystemProperties/7788/[com.sun.management.jmxremote.port]/value", procParams); assert req.getType() == RequestType.WRITE : "Type is write"; assert req.getObjectName().getCanonicalName().equals("java.lang:type=Runtime") : "Name properly parsed"; List<String> parts = req.getPathParts(); assert parts.get(0).equals("[com.sun.management.jmxremote.port]") : "Path part 0:" + parts.get(0); assert parts.get(1).equals("value") : "Path part 1: " + parts.get(1); assert req.getPath().equals("[com.sun.management.jmxremote.port]/value"); }
@Test(expectedExceptions = {ClassCastException.class}) public void castException() { JmxReadRequest req = JmxRequestFactory.createGetRequest("exec/java.lang:type=Memory/gc", procParams); }
@Test(expectedExceptions = NullPointerException.class) public void nullProcParams() { JmxRequestFactory.createGetRequest("", null); }
@Test public void emptyRequest() { JmxVersionRequest req = JmxRequestFactory.createGetRequest("", procParams); req = JmxRequestFactory.createGetRequest(null, procParams); }
@Test(expectedExceptions = {UnsupportedOperationException.class}) public void unsupportedType() { JmxRequestFactory.createGetRequest("regnotif", procParams); }
@Test( expectedExceptionsMessageRegExp = ".*Invalid object name.*", expectedExceptions = {IllegalArgumentException.class}) public void invalidObjectName() { JmxRequestFactory.createGetRequest("read/bla::blub", procParams); }
@Test( expectedExceptionsMessageRegExp = ".*pathinfo.*", expectedExceptions = {IllegalArgumentException.class}) public void illegalPath() { JmxRequestFactory.createGetRequest("read", procParams); }