blob: b265e7bf6e1041f8feb682cda88df9c4c6ac683c [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
20 * CA 95054 USA or visit www.sun.com if you need additional information or
21 * have any questions.
22 */
23
24/*
25 * @test
26 * @bug 4716807
27 * @summary Test the ObjectName.apply(ObjectName) method
28 * with wildcards in the key properties value part.
29 * @author Luis-Miguel Alventosa
30 * @run clean ApplyWildcardTest
31 * @run build ApplyWildcardTest
32 * @run main ApplyWildcardTest
33 */
34
35import javax.management.ObjectName;
36
37public class ApplyWildcardTest {
38
39 private static final String positiveTests[][] = {
40 { "d:k=*", "d:k=\"\"" },
41
42 { "d:k=*", "d:k=" },
43 { "d:k=*", "d:k=v" },
44 { "d:k=a*b", "d:k=axyzb" },
45 { "d:k=a*b,*", "d:k=axyzb,k2=v2" },
46 { "d:*,k=a*b", "d:k=axyzb,k2=v2" },
47 { "d:k=?", "d:k=v" },
48 { "d:k=a?b", "d:k=axb" },
49 { "d:k=a?b,*", "d:k=axb,k2=v2" },
50 { "d:*,k=a?b", "d:k=axb,k2=v2" },
51 { "d:k=?*", "d:k=axyzb" },
52 { "d:k=a?bc*d", "d:k=axbcyzd" },
53 { "d:k=a?bc*d,*", "d:k=axbcyzd,k2=v2" },
54 { "d:*,k=a?bc*d", "d:k=axbcyzd,k2=v2" },
55 { "d:k1=?,k2=*", "d:k1=a,k2=ab" },
56 { "d:k1=a?b,k2=c*d", "d:k1=axb,k2=cyzd" },
57 { "d:k1=a?b,k2=c*d,*", "d:k1=axb,k2=cyzd,k3=v3" },
58 { "d:*,k1=a?b,k2=c*d", "d:k1=axb,k2=cyzd,k3=v3" },
59
60 { "d:k=\"*\"", "d:k=\"\"" },
61 { "d:k=\"*\"", "d:k=\"v\"" },
62 { "d:k=\"a*b\"", "d:k=\"axyzb\"" },
63 { "d:k=\"a*b\",*", "d:k=\"axyzb\",k2=\"v2\"" },
64 { "d:*,k=\"a*b\"", "d:k=\"axyzb\",k2=\"v2\"" },
65 { "d:k=\"?\"", "d:k=\"v\"" },
66 { "d:k=\"a?b\"", "d:k=\"axb\"" },
67 { "d:k=\"a?b\",*", "d:k=\"axb\",k2=\"v2\"" },
68 { "d:*,k=\"a?b\"", "d:k=\"axb\",k2=\"v2\"" },
69 { "d:k=\"?*\"", "d:k=\"axyzb\"" },
70 { "d:k=\"a?bc*d\"", "d:k=\"axbcyzd\"" },
71 { "d:k=\"a?bc*d\",*", "d:k=\"axbcyzd\",k2=\"v2\"" },
72 { "d:*,k=\"a?bc*d\"", "d:k=\"axbcyzd\",k2=\"v2\"" },
73 { "d:k1=\"?\",k2=\"*\"", "d:k1=\"a\",k2=\"ab\"" },
74 { "d:k1=\"a?b\",k2=\"c*d\"", "d:k1=\"axb\",k2=\"cyzd\"" },
75 { "d:k1=\"a?b\",k2=\"c*d\",*", "d:k1=\"axb\",k2=\"cyzd\",k3=\"v3\"" },
76 { "d:*,k1=\"a?b\",k2=\"c*d\"", "d:k1=\"axb\",k2=\"cyzd\",k3=\"v3\"" },
77 };
78
79 private static final String negativeTests[][] = {
80 { "d:k=\"*\"", "d:k=" },
81
82 { "d:k=*", "d:k=,k2=" },
83 { "d:k=*", "d:k=v,k2=v2" },
84 { "d:k=a*b", "d:k=axyzbc" },
85 { "d:k=a*b,*", "d:k=axyzbc,k2=v2" },
86 { "d:*,k=a*b", "d:k=axyzbc,k2=v2" },
87 { "d:k=?", "d:k=xyz" },
88 { "d:k=a?b", "d:k=ab" },
89 { "d:k=a?b,*", "d:k=ab,k2=v2" },
90 { "d:*,k=a?b", "d:k=ab,k2=v2" },
91 { "d:k=?*", "d:k=axyzb,k2=v2" },
92 { "d:k=a?bc*d", "d:k=abcd" },
93 { "d:k=a?bc*d,*", "d:k=abcd,k2=v2" },
94 { "d:*,k=a?bc*d", "d:k=abcd,k2=v2" },
95 { "d:k1=?,k2=*", "d:k1=ab,k2=ab" },
96 { "d:k1=a?b,k2=c*d", "d:k1=ab,k2=cd" },
97 { "d:k1=a?b,k2=c*d,*", "d:k1=ab,k2=cd,k3=v3" },
98 { "d:*,k1=a?b,k2=c*d", "d:k1=ab,k2=cd,k3=v3" },
99
100 { "d:k=\"*\"", "d:k=\"\",k2=\"\"" },
101 { "d:k=\"*\"", "d:k=\"v\",k2=\"v2\"" },
102 { "d:k=\"a*b\"", "d:k=\"axyzbc\"" },
103 { "d:k=\"a*b\",*", "d:k=\"axyzbc\",k2=\"v2\"" },
104 { "d:*,k=\"a*b\"", "d:k=\"axyzbc\",k2=\"v2\"" },
105 { "d:k=\"?\"", "d:k=\"xyz\"" },
106 { "d:k=\"a?b\"", "d:k=\"ab\"" },
107 { "d:k=\"a?b\",*", "d:k=\"ab\",k2=\"v2\"" },
108 { "d:*,k=\"a?b\"", "d:k=\"ab\",k2=\"v2\"" },
109 { "d:k=\"?*\"", "d:k=\"axyzb\",k2=\"v2\"" },
110 { "d:k=\"a?bc*d\"", "d:k=\"abcd\"" },
111 { "d:k=\"a?bc*d\",*", "d:k=\"abcd\",k2=\"v2\"" },
112 { "d:*,k=\"a?bc*d\"", "d:k=\"abcd\",k2=\"v2\"" },
113 { "d:k1=\"?\",k2=\"*\"", "d:k1=\"ab\",k2=\"ab\"" },
114 { "d:k1=\"a?b\",k2=\"c*d\"", "d:k1=\"ab\",k2=\"cd\"" },
115 { "d:k1=\"a?b\",k2=\"c*d\",*", "d:k1=\"ab\",k2=\"cd\",k3=\"v3\"" },
116 { "d:*,k1=\"a?b\",k2=\"c*d\"", "d:k1=\"ab\",k2=\"cd\",k3=\"v3\"" },
117 };
118
119 private static int runPositiveTests() {
120 int error = 0;
121 for (int i = 0; i < positiveTests.length; i++) {
122 System.out.println("----------------------------------------------");
123 try {
124 ObjectName on1 = ObjectName.getInstance(positiveTests[i][0]);
125 ObjectName on2 = ObjectName.getInstance(positiveTests[i][1]);
126 System.out.println("\"" + on1 + "\".apply(\"" + on2 + "\")");
127 boolean result = on1.apply(on2);
128 System.out.println("Result = " + result);
129 if (result == false) {
130 error++;
131 System.out.println("Test failed!");
132 } else {
133 System.out.println("Test passed!");
134 }
135 } catch (Exception e) {
136 error++;
137 System.out.println("Got Unexpected Exception = " + e.toString());
138 System.out.println("Test failed!");
139 }
140 System.out.println("----------------------------------------------");
141 }
142 return error;
143 }
144
145 private static int runNegativeTests() {
146 int error = 0;
147 for (int i = 0; i < negativeTests.length; i++) {
148 System.out.println("----------------------------------------------");
149 try {
150 ObjectName on1 = ObjectName.getInstance(negativeTests[i][0]);
151 ObjectName on2 = ObjectName.getInstance(negativeTests[i][1]);
152 System.out.println("\"" + on1 + "\".apply(\"" + on2 + "\")");
153 boolean result = on1.apply(on2);
154 System.out.println("Result = " + result);
155 if (result == true) {
156 error++;
157 System.out.println("Test failed!");
158 } else {
159 System.out.println("Test passed!");
160 }
161 } catch (Exception e) {
162 error++;
163 System.out.println("Got Unexpected Exception = " + e.toString());
164 System.out.println("Test failed!");
165 }
166 System.out.println("----------------------------------------------");
167 }
168 return error;
169 }
170
171 public static void main(String[] args) throws Exception {
172
173 int error = 0;
174
175 // Check null values
176 //
177 System.out.println("----------------------------------------------");
178 System.out.println("Test ObjectName.apply(null)");
179 try {
180 new ObjectName("d:k=v").apply(null);
181 error++;
182 System.out.println("Didn't get expected NullPointerException!");
183 System.out.println("Test failed!");
184 } catch (NullPointerException e) {
185 System.out.println("Got expected exception '" + e.toString() + "'");
186 System.out.println("Test passed!");
187 } catch (Exception e) {
188 error++;
189 System.out.println("Got unexpected exception '" + e.toString() + "'");
190 System.out.println("Test failed!");
191 }
192 System.out.println("----------------------------------------------");
193
194 // Check domain pattern values
195 //
196 System.out.println("----------------------------------------------");
197 System.out.println("Test ObjectName.apply(domain_pattern)");
198 try {
199 if (new ObjectName("d:k=v").apply(new ObjectName("*:k=v"))) {
200 error++;
201 System.out.println("Got 'true' expecting 'false'");
202 System.out.println("Test failed!");
203 } else {
204 System.out.println("Got expected return value 'false'");
205 System.out.println("Test passed!");
206 }
207 } catch (Exception e) {
208 error++;
209 System.out.println("Got unexpected exception = " + e.toString());
210 System.out.println("Test failed!");
211 }
212 System.out.println("----------------------------------------------");
213
214 // Check key property list pattern values
215 //
216 System.out.println("----------------------------------------------");
217 System.out.println("Test ObjectName.apply(key_property_list_pattern)");
218 try {
219 if (new ObjectName("d:k=v").apply(new ObjectName("d:k=v,*"))) {
220 error++;
221 System.out.println("Got 'true' expecting 'false'");
222 System.out.println("Test failed!");
223 } else {
224 System.out.println("Got expected return value 'false'");
225 System.out.println("Test passed!");
226 }
227 } catch (Exception e) {
228 error++;
229 System.out.println("Got unexpected exception = " + e.toString());
230 System.out.println("Test failed!");
231 }
232 System.out.println("----------------------------------------------");
233
234 // Check key property value pattern values
235 //
236 System.out.println("----------------------------------------------");
237 System.out.println("Test ObjectName.apply(key_property_value_pattern)");
238 try {
239 if (new ObjectName("d:k=v").apply(new ObjectName("d:k=*"))) {
240 error++;
241 System.out.println("Got 'true' expecting 'false'");
242 System.out.println("Test failed!");
243 } else {
244 System.out.println("Got expected return value 'false'");
245 System.out.println("Test passed!");
246 }
247 } catch (Exception e) {
248 error++;
249 System.out.println("Got unexpected exception = " + e.toString());
250 System.out.println("Test failed!");
251 }
252 System.out.println("----------------------------------------------");
253
254 error += runPositiveTests();
255 error += runNegativeTests();
256
257 if (error > 0) {
258 final String msg = "Test FAILED! Got " + error + " error(s)";
259 System.out.println(msg);
260 throw new IllegalArgumentException(msg);
261 } else {
262 System.out.println("Test PASSED!");
263 }
264 }
265}