Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/test/javax/management/ObjectName/RepositoryWildcardTest.java
38838 views
/*1* Copyright (c) 2005, 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* @run clean RepositoryWildcardTest30* @run build RepositoryWildcardTest31* @run main RepositoryWildcardTest32*/3334import java.util.HashSet;35import java.util.Set;36import java.util.TreeSet;37import javax.management.InstanceNotFoundException;38import javax.management.MBeanServer;39import javax.management.MBeanServerDelegate;40import javax.management.MBeanServerFactory;41import javax.management.ObjectName;42import javax.management.RuntimeOperationsException;4344public class RepositoryWildcardTest {4546private static final String classname =47"javax.management.monitor.StringMonitor";4849private static int mbeanCreation(MBeanServer mbs, String name)50throws Exception {51int error = 0;52try {53System.out.println("Test: createMBean(" + name + ")");54mbs.createMBean(classname, ObjectName.getInstance(name));55error++;56System.out.println("Didn't get expected exception!");57System.out.println("Test failed!");58} catch (RuntimeOperationsException e) {59System.out.println("Got expected exception = " +60e.getCause().toString());61System.out.println("Test passed!");62}63return error;64}6566private static int mbeanDeletion(MBeanServer mbs, String name)67throws Exception {68int error = 0;69try {70System.out.println("Test: unregisterMBean(" + name + ")");71mbs.unregisterMBean(ObjectName.getInstance(name));72error++;73System.out.println("Didn't get expected exception!");74System.out.println("Test failed!");75} catch (InstanceNotFoundException e) {76System.out.println("Got expected exception = " + e.toString());77System.out.println("Test passed!");78}79return error;80}8182private static int mbeanQuery(MBeanServer mbs,83String name,84Set<ObjectName> expectedSet)85throws Exception {86int error = 0;87System.out.println("Test: queryNames(" + name + ")");88Set<ObjectName> returnedSet =89mbs.queryNames(ObjectName.getInstance(name), null);90System.out.println("ReturnedSet = " + new TreeSet(returnedSet));91System.out.println("ExpectedSet = " + new TreeSet(expectedSet));92if (returnedSet.equals(expectedSet)) {93System.out.println("Test passed!");94} else {95error++;96System.out.println("Test failed!");97}98return error;99}100101public static void main(String[] args) throws Exception {102103int error = 0;104105MBeanServer mbs = MBeanServerFactory.newMBeanServer();106107ObjectName[] namesArray = {108ObjectName.getInstance("d:k=abc"),109ObjectName.getInstance("d:k=abcd"),110ObjectName.getInstance("d:k=abcde"),111ObjectName.getInstance("d:k=abc,k2=v2"),112ObjectName.getInstance("d:k=abcd,k2=v2"),113ObjectName.getInstance("d:k=abcde,k2=v2"),114ObjectName.getInstance("d:k=\"abc\""),115ObjectName.getInstance("d:k=\"abc\",k2=v2"),116ObjectName.getInstance("d:p1=v1,p2=v2,p3=v3,p4=v4,p5=v5,p6=v6," +117"p7=v7,p8=v8,p9=v9,p10=v10,p11=v11,p12=v12")118};119120for (ObjectName name : namesArray)121mbs.createMBean(classname, name);122123System.out.println("----------------------------------------------");124System.out.println("TEST createMBean WITH PATTERNS");125System.out.println("----------------------------------------------");126127error += mbeanCreation(mbs, "d:k=v,*");128error += mbeanCreation(mbs, "d:k=*");129error += mbeanCreation(mbs, "d:k=a?b");130error += mbeanCreation(mbs, "d:k=\"?\"");131error += mbeanCreation(mbs, "d:k=\"a*b\"");132133System.out.println("----------------------------------------------");134System.out.println("TEST queryNames WITH PATTERNS");135System.out.println("----------------------------------------------");136137Set<ObjectName> expectedSet = new HashSet<ObjectName>();138for (ObjectName name : namesArray)139expectedSet.add(name);140expectedSet.add(MBeanServerDelegate.DELEGATE_NAME);141Set<ObjectName> returnedSet =142mbs.queryNames(ObjectName.getInstance("*:*"), null);143error += mbeanQuery(mbs, "*:*", expectedSet);144145expectedSet = new HashSet<ObjectName>();146for (ObjectName name : namesArray)147expectedSet.add(name);148error += mbeanQuery(mbs, "d:*", expectedSet);149150expectedSet = new HashSet<ObjectName>();151expectedSet.add(namesArray[0]);152expectedSet.add(namesArray[1]);153expectedSet.add(namesArray[2]);154expectedSet.add(namesArray[6]);155error += mbeanQuery(mbs, "d:k=*", expectedSet);156157expectedSet = new HashSet<ObjectName>();158expectedSet.add(namesArray[3]);159expectedSet.add(namesArray[4]);160expectedSet.add(namesArray[5]);161expectedSet.add(namesArray[7]);162error += mbeanQuery(mbs, "d:k=*,k2=v2", expectedSet);163164expectedSet = new HashSet<ObjectName>();165expectedSet.add(namesArray[3]);166expectedSet.add(namesArray[4]);167expectedSet.add(namesArray[5]);168expectedSet.add(namesArray[7]);169error += mbeanQuery(mbs, "d:k=*,k2=v?", expectedSet);170171expectedSet = new HashSet<ObjectName>();172expectedSet.add(namesArray[3]);173expectedSet.add(namesArray[4]);174expectedSet.add(namesArray[5]);175expectedSet.add(namesArray[7]);176error += mbeanQuery(mbs, "d:*,k2=v2", expectedSet);177178expectedSet = new HashSet<ObjectName>();179expectedSet.add(namesArray[1]);180error += mbeanQuery(mbs, "d:k=ab?d", expectedSet);181182expectedSet = new HashSet<ObjectName>();183expectedSet.add(namesArray[1]);184expectedSet.add(namesArray[4]);185error += mbeanQuery(mbs, "d:k=ab?d,*", expectedSet);186187expectedSet = new HashSet<ObjectName>();188expectedSet.add(namesArray[6]);189error += mbeanQuery(mbs, "d:k=\"*\"", expectedSet);190191expectedSet = new HashSet<ObjectName>();192expectedSet.add(namesArray[7]);193error += mbeanQuery(mbs, "d:k=\"*\",k2=v?", expectedSet);194195expectedSet = new HashSet<ObjectName>();196expectedSet.add(namesArray[8]);197error += mbeanQuery(mbs,198"d:p1=v?,p2=v?,p3=v?,p4=v?,p5=v?,p6=v?," +199"p7=v?,p8=v?,p9=v?,p10=v??,p11=v??,p12=v??",200expectedSet);201202System.out.println("----------------------------------------------");203System.out.println("TEST unregisterMBean WITH PATTERNS");204System.out.println("----------------------------------------------");205206error += mbeanDeletion(mbs, "d:k=*");207error += mbeanDeletion(mbs, "d:k=\"*\"");208209if (error > 0) {210final String msg = "Test FAILED! Got " + error + " error(s)";211System.out.println(msg);212throw new IllegalArgumentException(msg);213} else {214System.out.println("Test PASSED!");215}216}217}218219220