package org.jolokia.history; /* * Copyright 2009-2013 Roland Huss * * 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. */ import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import org.jolokia.request.*; import org.testng.annotations.Test; import static org.jolokia.util.RequestType.*; import static org.testng.Assert.*; /** * @author roland * @since 06.03.12 */ public class HistoryKeyTest { @Test(expectedExceptions = IllegalArgumentException.class,expectedExceptionsMessageRegExp = ".*null.*") public void emptyAttributeName() throws MalformedObjectNameException { new HistoryKey((JmxWriteRequest) new JmxRequestBuilder(WRITE, "test:type=bla").build()); } @Test(expectedExceptions = IllegalArgumentException.class,expectedExceptionsMessageRegExp = ".*null.*") public void emptyOperationName() throws MalformedObjectNameException { new HistoryKey((JmxExecRequest) new JmxRequestBuilder(EXEC, "test:type=bla").build()); } @Test(expectedExceptions = IllegalArgumentException.class,expectedExceptionsMessageRegExp = ".*more than one.*") public void multipleAttributeNames() throws MalformedObjectNameException { new HistoryKey((JmxReadRequest) new JmxRequestBuilder(READ, "test:type=bla").attributes("eins","zwei").build()); } @Test(expectedExceptions = IllegalArgumentException.class,expectedExceptionsMessageRegExp = ".*pattern.*") public void patternMBeanName() throws MalformedObjectNameException { new HistoryKey((JmxReadRequest) new JmxRequestBuilder(READ,"test:type=*").build()); } @Test public void readRequest() throws MalformedObjectNameException { JmxReadRequest req = new JmxRequestBuilder(READ,"test:type=blub") .attribute("bla") .path("blub") .build(); HistoryKey key = new HistoryKey(req); assertTrue(key.toString().contains("attribute")); assertTrue(key.toString().contains("bla")); assertTrue(key.toString().contains("blub")); assertTrue(key.toString().contains("test:type=blub")); HistoryKey key2 = new HistoryKey("test:type=blub","bla","blub","targetUrl"); assertTrue(key2.toString().contains("targetUrl")); assertFalse(key.equals(key2)); HistoryKey key3 = new HistoryKey("test:type=blub","bla","blub",null); assertTrue(key.equals(key3)); assertEquals(key.hashCode(),key3.hashCode()); } @Test public void readRequestForAll() throws MalformedObjectNameException { JmxReadRequest req = new JmxRequestBuilder(READ,"test:type=blub") .build(); HistoryKey key = new HistoryKey(req); assertTrue(key.toString().contains("attribute")); assertTrue(key.toString().contains("(all)")); assertTrue(key.toString().contains("test:type=blub")); } @Test public void writeRequest() throws MalformedObjectNameException { JmxWriteRequest req = new JmxRequestBuilder(WRITE,"test:type=blub") .attribute("bla") .build(); HistoryKey key = new HistoryKey(req); assertTrue(key.toString().contains("attribute")); assertTrue(key.toString().contains("bla")); assertTrue(key.toString().contains("test:type=blub")); } @Test public void execRequest() throws MalformedObjectNameException { JmxExecRequest req = new JmxRequestBuilder(EXEC,"test:type=blub") .operation("exec") .arguments("eins","zwei") .build(); HistoryKey key = new HistoryKey(req); assertTrue(key.toString().contains("operation")); assertTrue(key.toString().contains("exec")); assertTrue(key.toString().contains("test:type=blub")); key = new HistoryKey("test:type=blub","exec","targetUrl"); assertTrue(key.toString().contains("targetUrl")); } @Test public void matches() throws MalformedObjectNameException { HistoryKey key = new HistoryKey("test:type=*","bla",null,null); assertTrue(key.isMBeanPattern()); JmxReadRequest req2 = new JmxRequestBuilder(READ,"test:type=hello") .attribute("bla") .build(); JmxReadRequest req3 = new JmxRequestBuilder(READ,"test:name=hello") .attribute("bla") .build(); HistoryKey key2 = new HistoryKey(req2); assertFalse(key2.isMBeanPattern()); HistoryKey key3 = new HistoryKey(req3); assertFalse(key3.isMBeanPattern()); assertTrue(key.matches(key2)); assertFalse(key.matches(key3)); } @Test public void emptyPath() throws MalformedObjectNameException { HistoryKey key1 = new HistoryKey("test:type=bla","bla","",null); HistoryKey key2 = new HistoryKey("test:type=bla","bla",null,null); assertEquals(key1,key2); } }