Path: blob/master/test/jdk/javax/management/ObjectName/RepositoryWildcardTest.java
41149 views
/*1* Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223/*24* @test25* @bug 471680726* @summary Test if the repository supports correctly the use of27* wildcards in the ObjectName key properties value part.28* @author Luis-Miguel Alventosa29*30* @run clean RepositoryWildcardTest31* @run build RepositoryWildcardTest32* @run main RepositoryWildcardTest33*/3435import java.util.HashSet;36import java.util.Set;37import java.util.TreeSet;38import javax.management.InstanceNotFoundException;39import javax.management.MBeanServer;40import javax.management.MBeanServerDelegate;41import javax.management.MBeanServerFactory;42import javax.management.ObjectName;43import javax.management.RuntimeOperationsException;4445public class RepositoryWildcardTest {4647private static final String classname =48"javax.management.monitor.StringMonitor";4950private static int mbeanCreation(MBeanServer mbs, String name)51throws Exception {52int error = 0;53try {54System.out.println("Test: createMBean(" + name + ")");55mbs.createMBean(classname, ObjectName.getInstance(name));56error++;57System.out.println("Didn't get expected exception!");58System.out.println("Test failed!");59} catch (RuntimeOperationsException e) {60System.out.println("Got expected exception = " +61e.getCause().toString());62System.out.println("Test passed!");63}64return error;65}6667private static int mbeanDeletion(MBeanServer mbs, String name)68throws Exception {69int error = 0;70try {71System.out.println("Test: unregisterMBean(" + name + ")");72mbs.unregisterMBean(ObjectName.getInstance(name));73error++;74System.out.println("Didn't get expected exception!");75System.out.println("Test failed!");76} catch (InstanceNotFoundException e) {77System.out.println("Got expected exception = " + e.toString());78System.out.println("Test passed!");79}80return error;81}8283private static int mbeanQuery(MBeanServer mbs,84String name,85Set<ObjectName> expectedSet)86throws Exception {87int error = 0;88System.out.println("Test: queryNames(" + name + ")");89Set<ObjectName> returnedSet =90mbs.queryNames(ObjectName.getInstance(name), null);91System.out.println("ReturnedSet = " + new TreeSet(returnedSet));92System.out.println("ExpectedSet = " + new TreeSet(expectedSet));93if (returnedSet.equals(expectedSet)) {94System.out.println("Test passed!");95} else {96error++;97System.out.println("Test failed!");98}99return error;100}101102public static void main(String[] args) throws Exception {103104int error = 0;105106MBeanServer mbs = MBeanServerFactory.newMBeanServer();107108ObjectName[] namesArray = {109ObjectName.getInstance("d:k=abc"),110ObjectName.getInstance("d:k=abcd"),111ObjectName.getInstance("d:k=abcde"),112ObjectName.getInstance("d:k=abc,k2=v2"),113ObjectName.getInstance("d:k=abcd,k2=v2"),114ObjectName.getInstance("d:k=abcde,k2=v2"),115ObjectName.getInstance("d:k=\"abc\""),116ObjectName.getInstance("d:k=\"abc\",k2=v2"),117ObjectName.getInstance("d:p1=v1,p2=v2,p3=v3,p4=v4,p5=v5,p6=v6," +118"p7=v7,p8=v8,p9=v9,p10=v10,p11=v11,p12=v12")119};120121for (ObjectName name : namesArray)122mbs.createMBean(classname, name);123124System.out.println("----------------------------------------------");125System.out.println("TEST createMBean WITH PATTERNS");126System.out.println("----------------------------------------------");127128error += mbeanCreation(mbs, "d:k=v,*");129error += mbeanCreation(mbs, "d:k=*");130error += mbeanCreation(mbs, "d:k=a?b");131error += mbeanCreation(mbs, "d:k=\"?\"");132error += mbeanCreation(mbs, "d:k=\"a*b\"");133134System.out.println("----------------------------------------------");135System.out.println("TEST queryNames WITH PATTERNS");136System.out.println("----------------------------------------------");137138Set<ObjectName> expectedSet = new HashSet<ObjectName>();139for (ObjectName name : namesArray)140expectedSet.add(name);141expectedSet.add(MBeanServerDelegate.DELEGATE_NAME);142Set<ObjectName> returnedSet =143mbs.queryNames(ObjectName.getInstance("*:*"), null);144error += mbeanQuery(mbs, "*:*", expectedSet);145146expectedSet = new HashSet<ObjectName>();147for (ObjectName name : namesArray)148expectedSet.add(name);149error += mbeanQuery(mbs, "d:*", expectedSet);150151expectedSet = new HashSet<ObjectName>();152expectedSet.add(namesArray[0]);153expectedSet.add(namesArray[1]);154expectedSet.add(namesArray[2]);155expectedSet.add(namesArray[6]);156error += mbeanQuery(mbs, "d:k=*", expectedSet);157158expectedSet = new HashSet<ObjectName>();159expectedSet.add(namesArray[3]);160expectedSet.add(namesArray[4]);161expectedSet.add(namesArray[5]);162expectedSet.add(namesArray[7]);163error += mbeanQuery(mbs, "d:k=*,k2=v2", expectedSet);164165expectedSet = new HashSet<ObjectName>();166expectedSet.add(namesArray[3]);167expectedSet.add(namesArray[4]);168expectedSet.add(namesArray[5]);169expectedSet.add(namesArray[7]);170error += mbeanQuery(mbs, "d:k=*,k2=v?", expectedSet);171172expectedSet = new HashSet<ObjectName>();173expectedSet.add(namesArray[3]);174expectedSet.add(namesArray[4]);175expectedSet.add(namesArray[5]);176expectedSet.add(namesArray[7]);177error += mbeanQuery(mbs, "d:*,k2=v2", expectedSet);178179expectedSet = new HashSet<ObjectName>();180expectedSet.add(namesArray[1]);181error += mbeanQuery(mbs, "d:k=ab?d", expectedSet);182183expectedSet = new HashSet<ObjectName>();184expectedSet.add(namesArray[1]);185expectedSet.add(namesArray[4]);186error += mbeanQuery(mbs, "d:k=ab?d,*", expectedSet);187188expectedSet = new HashSet<ObjectName>();189expectedSet.add(namesArray[6]);190error += mbeanQuery(mbs, "d:k=\"*\"", expectedSet);191192expectedSet = new HashSet<ObjectName>();193expectedSet.add(namesArray[7]);194error += mbeanQuery(mbs, "d:k=\"*\",k2=v?", expectedSet);195196expectedSet = new HashSet<ObjectName>();197expectedSet.add(namesArray[8]);198error += mbeanQuery(mbs,199"d:p1=v?,p2=v?,p3=v?,p4=v?,p5=v?,p6=v?," +200"p7=v?,p8=v?,p9=v?,p10=v??,p11=v??,p12=v??",201expectedSet);202203System.out.println("----------------------------------------------");204System.out.println("TEST unregisterMBean WITH PATTERNS");205System.out.println("----------------------------------------------");206207error += mbeanDeletion(mbs, "d:k=*");208error += mbeanDeletion(mbs, "d:k=\"*\"");209210if (error > 0) {211final String msg = "Test FAILED! Got " + error + " error(s)";212System.out.println(msg);213throw new IllegalArgumentException(msg);214} else {215System.out.println("Test PASSED!");216}217}218}219220221