| /* |
| * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| * |
| * This code is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License version 2 only, as |
| * published by the Free Software Foundation. |
| * |
| * This code 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 General Public License |
| * version 2 for more details (a copy is included in the LICENSE file that |
| * accompanied this code). |
| * |
| * You should have received a copy of the GNU General Public License version |
| * 2 along with this work; if not, write to the Free Software Foundation, |
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| * |
| * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| * or visit www.oracle.com if you need additional information or have any |
| * questions. |
| */ |
| |
| /* |
| * @test |
| * @bug 4716807 |
| * @summary Test the ObjectName.apply(ObjectName) method |
| * with wildcards in the key properties value part. |
| * @author Luis-Miguel Alventosa |
| * @run clean ApplyWildcardTest |
| * @run build ApplyWildcardTest |
| * @run main ApplyWildcardTest |
| */ |
| |
| import javax.management.ObjectName; |
| |
| public class ApplyWildcardTest { |
| |
| private static final String positiveTests[][] = { |
| { "d:k=*", "d:k=\"\"" }, |
| |
| { "d:k=*", "d:k=" }, |
| { "d:k=*", "d:k=v" }, |
| { "d:k=a*b", "d:k=axyzb" }, |
| { "d:k=a*b,*", "d:k=axyzb,k2=v2" }, |
| { "d:*,k=a*b", "d:k=axyzb,k2=v2" }, |
| { "d:k=?", "d:k=v" }, |
| { "d:k=a?b", "d:k=axb" }, |
| { "d:k=a?b,*", "d:k=axb,k2=v2" }, |
| { "d:*,k=a?b", "d:k=axb,k2=v2" }, |
| { "d:k=?*", "d:k=axyzb" }, |
| { "d:k=a?bc*d", "d:k=axbcyzd" }, |
| { "d:k=a?bc*d,*", "d:k=axbcyzd,k2=v2" }, |
| { "d:*,k=a?bc*d", "d:k=axbcyzd,k2=v2" }, |
| { "d:k1=?,k2=*", "d:k1=a,k2=ab" }, |
| { "d:k1=a?b,k2=c*d", "d:k1=axb,k2=cyzd" }, |
| { "d:k1=a?b,k2=c*d,*", "d:k1=axb,k2=cyzd,k3=v3" }, |
| { "d:*,k1=a?b,k2=c*d", "d:k1=axb,k2=cyzd,k3=v3" }, |
| |
| { "d:k=\"*\"", "d:k=\"\"" }, |
| { "d:k=\"*\"", "d:k=\"v\"" }, |
| { "d:k=\"a*b\"", "d:k=\"axyzb\"" }, |
| { "d:k=\"a*b\",*", "d:k=\"axyzb\",k2=\"v2\"" }, |
| { "d:*,k=\"a*b\"", "d:k=\"axyzb\",k2=\"v2\"" }, |
| { "d:k=\"?\"", "d:k=\"v\"" }, |
| { "d:k=\"a?b\"", "d:k=\"axb\"" }, |
| { "d:k=\"a?b\",*", "d:k=\"axb\",k2=\"v2\"" }, |
| { "d:*,k=\"a?b\"", "d:k=\"axb\",k2=\"v2\"" }, |
| { "d:k=\"?*\"", "d:k=\"axyzb\"" }, |
| { "d:k=\"a?bc*d\"", "d:k=\"axbcyzd\"" }, |
| { "d:k=\"a?bc*d\",*", "d:k=\"axbcyzd\",k2=\"v2\"" }, |
| { "d:*,k=\"a?bc*d\"", "d:k=\"axbcyzd\",k2=\"v2\"" }, |
| { "d:k1=\"?\",k2=\"*\"", "d:k1=\"a\",k2=\"ab\"" }, |
| { "d:k1=\"a?b\",k2=\"c*d\"", "d:k1=\"axb\",k2=\"cyzd\"" }, |
| { "d:k1=\"a?b\",k2=\"c*d\",*", "d:k1=\"axb\",k2=\"cyzd\",k3=\"v3\"" }, |
| { "d:*,k1=\"a?b\",k2=\"c*d\"", "d:k1=\"axb\",k2=\"cyzd\",k3=\"v3\"" }, |
| }; |
| |
| private static final String negativeTests[][] = { |
| { "d:k=\"*\"", "d:k=" }, |
| |
| { "d:k=*", "d:k=,k2=" }, |
| { "d:k=*", "d:k=v,k2=v2" }, |
| { "d:k=a*b", "d:k=axyzbc" }, |
| { "d:k=a*b,*", "d:k=axyzbc,k2=v2" }, |
| { "d:*,k=a*b", "d:k=axyzbc,k2=v2" }, |
| { "d:k=?", "d:k=xyz" }, |
| { "d:k=a?b", "d:k=ab" }, |
| { "d:k=a?b,*", "d:k=ab,k2=v2" }, |
| { "d:*,k=a?b", "d:k=ab,k2=v2" }, |
| { "d:k=?*", "d:k=axyzb,k2=v2" }, |
| { "d:k=a?bc*d", "d:k=abcd" }, |
| { "d:k=a?bc*d,*", "d:k=abcd,k2=v2" }, |
| { "d:*,k=a?bc*d", "d:k=abcd,k2=v2" }, |
| { "d:k1=?,k2=*", "d:k1=ab,k2=ab" }, |
| { "d:k1=a?b,k2=c*d", "d:k1=ab,k2=cd" }, |
| { "d:k1=a?b,k2=c*d,*", "d:k1=ab,k2=cd,k3=v3" }, |
| { "d:*,k1=a?b,k2=c*d", "d:k1=ab,k2=cd,k3=v3" }, |
| |
| { "d:k=\"*\"", "d:k=\"\",k2=\"\"" }, |
| { "d:k=\"*\"", "d:k=\"v\",k2=\"v2\"" }, |
| { "d:k=\"a*b\"", "d:k=\"axyzbc\"" }, |
| { "d:k=\"a*b\",*", "d:k=\"axyzbc\",k2=\"v2\"" }, |
| { "d:*,k=\"a*b\"", "d:k=\"axyzbc\",k2=\"v2\"" }, |
| { "d:k=\"?\"", "d:k=\"xyz\"" }, |
| { "d:k=\"a?b\"", "d:k=\"ab\"" }, |
| { "d:k=\"a?b\",*", "d:k=\"ab\",k2=\"v2\"" }, |
| { "d:*,k=\"a?b\"", "d:k=\"ab\",k2=\"v2\"" }, |
| { "d:k=\"?*\"", "d:k=\"axyzb\",k2=\"v2\"" }, |
| { "d:k=\"a?bc*d\"", "d:k=\"abcd\"" }, |
| { "d:k=\"a?bc*d\",*", "d:k=\"abcd\",k2=\"v2\"" }, |
| { "d:*,k=\"a?bc*d\"", "d:k=\"abcd\",k2=\"v2\"" }, |
| { "d:k1=\"?\",k2=\"*\"", "d:k1=\"ab\",k2=\"ab\"" }, |
| { "d:k1=\"a?b\",k2=\"c*d\"", "d:k1=\"ab\",k2=\"cd\"" }, |
| { "d:k1=\"a?b\",k2=\"c*d\",*", "d:k1=\"ab\",k2=\"cd\",k3=\"v3\"" }, |
| { "d:*,k1=\"a?b\",k2=\"c*d\"", "d:k1=\"ab\",k2=\"cd\",k3=\"v3\"" }, |
| }; |
| |
| private static int runPositiveTests() { |
| int error = 0; |
| for (int i = 0; i < positiveTests.length; i++) { |
| System.out.println("----------------------------------------------"); |
| try { |
| ObjectName on1 = ObjectName.getInstance(positiveTests[i][0]); |
| ObjectName on2 = ObjectName.getInstance(positiveTests[i][1]); |
| System.out.println("\"" + on1 + "\".apply(\"" + on2 + "\")"); |
| boolean result = on1.apply(on2); |
| System.out.println("Result = " + result); |
| if (result == false) { |
| error++; |
| System.out.println("Test failed!"); |
| } else { |
| System.out.println("Test passed!"); |
| } |
| } catch (Exception e) { |
| error++; |
| System.out.println("Got Unexpected Exception = " + e.toString()); |
| System.out.println("Test failed!"); |
| } |
| System.out.println("----------------------------------------------"); |
| } |
| return error; |
| } |
| |
| private static int runNegativeTests() { |
| int error = 0; |
| for (int i = 0; i < negativeTests.length; i++) { |
| System.out.println("----------------------------------------------"); |
| try { |
| ObjectName on1 = ObjectName.getInstance(negativeTests[i][0]); |
| ObjectName on2 = ObjectName.getInstance(negativeTests[i][1]); |
| System.out.println("\"" + on1 + "\".apply(\"" + on2 + "\")"); |
| boolean result = on1.apply(on2); |
| System.out.println("Result = " + result); |
| if (result == true) { |
| error++; |
| System.out.println("Test failed!"); |
| } else { |
| System.out.println("Test passed!"); |
| } |
| } catch (Exception e) { |
| error++; |
| System.out.println("Got Unexpected Exception = " + e.toString()); |
| System.out.println("Test failed!"); |
| } |
| System.out.println("----------------------------------------------"); |
| } |
| return error; |
| } |
| |
| public static void main(String[] args) throws Exception { |
| |
| int error = 0; |
| |
| // Check null values |
| // |
| System.out.println("----------------------------------------------"); |
| System.out.println("Test ObjectName.apply(null)"); |
| try { |
| new ObjectName("d:k=v").apply(null); |
| error++; |
| System.out.println("Didn't get expected NullPointerException!"); |
| System.out.println("Test failed!"); |
| } catch (NullPointerException e) { |
| System.out.println("Got expected exception '" + e.toString() + "'"); |
| System.out.println("Test passed!"); |
| } catch (Exception e) { |
| error++; |
| System.out.println("Got unexpected exception '" + e.toString() + "'"); |
| System.out.println("Test failed!"); |
| } |
| System.out.println("----------------------------------------------"); |
| |
| // Check domain pattern values |
| // |
| System.out.println("----------------------------------------------"); |
| System.out.println("Test ObjectName.apply(domain_pattern)"); |
| try { |
| if (new ObjectName("d:k=v").apply(new ObjectName("*:k=v"))) { |
| error++; |
| System.out.println("Got 'true' expecting 'false'"); |
| System.out.println("Test failed!"); |
| } else { |
| System.out.println("Got expected return value 'false'"); |
| System.out.println("Test passed!"); |
| } |
| } catch (Exception e) { |
| error++; |
| System.out.println("Got unexpected exception = " + e.toString()); |
| System.out.println("Test failed!"); |
| } |
| System.out.println("----------------------------------------------"); |
| |
| // Check key property list pattern values |
| // |
| System.out.println("----------------------------------------------"); |
| System.out.println("Test ObjectName.apply(key_property_list_pattern)"); |
| try { |
| if (new ObjectName("d:k=v").apply(new ObjectName("d:k=v,*"))) { |
| error++; |
| System.out.println("Got 'true' expecting 'false'"); |
| System.out.println("Test failed!"); |
| } else { |
| System.out.println("Got expected return value 'false'"); |
| System.out.println("Test passed!"); |
| } |
| } catch (Exception e) { |
| error++; |
| System.out.println("Got unexpected exception = " + e.toString()); |
| System.out.println("Test failed!"); |
| } |
| System.out.println("----------------------------------------------"); |
| |
| // Check key property value pattern values |
| // |
| System.out.println("----------------------------------------------"); |
| System.out.println("Test ObjectName.apply(key_property_value_pattern)"); |
| try { |
| if (new ObjectName("d:k=v").apply(new ObjectName("d:k=*"))) { |
| error++; |
| System.out.println("Got 'true' expecting 'false'"); |
| System.out.println("Test failed!"); |
| } else { |
| System.out.println("Got expected return value 'false'"); |
| System.out.println("Test passed!"); |
| } |
| } catch (Exception e) { |
| error++; |
| System.out.println("Got unexpected exception = " + e.toString()); |
| System.out.println("Test failed!"); |
| } |
| System.out.println("----------------------------------------------"); |
| |
| error += runPositiveTests(); |
| error += runNegativeTests(); |
| |
| if (error > 0) { |
| final String msg = "Test FAILED! Got " + error + " error(s)"; |
| System.out.println(msg); |
| throw new IllegalArgumentException(msg); |
| } else { |
| System.out.println("Test PASSED!"); |
| } |
| } |
| } |