blob: 41cfa7a18d69e1e5c58c49086bfdeea8ed8be9ad [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright 2003 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 4716675
27 * @summary Test that relation type checking uses isInstanceOf
28 * @author Eamonn McManus
29 * @run clean RelationTypeTest
30 * @run build RelationTypeTest
31 * @run main RelationTypeTest
32 */
33
34import java.util.*;
35import javax.management.*;
36import javax.management.relation.*;
37
38public class RelationTypeTest {
39 public static void main(String[] args) throws Exception {
40 System.out.println("Test that relation type checking uses " +
41 "isInstanceOf");
42 MBeanServer mbs = MBeanServerFactory.newMBeanServer();
43 ObjectName relSvc = new ObjectName("a:type=relationService");
44 mbs.createMBean("javax.management.relation.RelationService",
45 relSvc,
46 new Object[] {Boolean.TRUE},
47 new String[] {"boolean"});
48 RoleInfo leftInfo =
49 new RoleInfo("left", "javax.management.timer.TimerMBean");
50 RoleInfo rightInfo =
51 new RoleInfo("right", "javax.management.timer.Timer");
52 mbs.invoke(relSvc, "createRelationType",
53 new Object[] {
54 "typeName",
55 new RoleInfo[] {leftInfo, rightInfo},
56 },
57 new String[] {
58 "java.lang.String",
59 "[Ljavax.management.relation.RoleInfo;",
60 });
61 ObjectName timer1 = new ObjectName("a:type=timer,number=1");
62 ObjectName timer2 = new ObjectName("a:type=timer,number=2");
63 mbs.createMBean("javax.management.timer.Timer", timer1);
64 mbs.createMBean("javax.management.timer.Timer", timer2);
65 Role leftRole =
66 new Role("left", Arrays.asList(new ObjectName[] {timer1}));
67 Role rightRole =
68 new Role("right", Arrays.asList(new ObjectName[] {timer2}));
69 RoleList roles =
70 new RoleList(Arrays.asList(new Role[] {leftRole, rightRole}));
71 mbs.invoke(relSvc, "createRelation",
72 new Object[] {
73 "relationName",
74 "typeName",
75 roles,
76 },
77 new String[] {
78 "java.lang.String",
79 "java.lang.String",
80 "javax.management.relation.RoleList",
81 });
82 Map assoc =
83 (Map) mbs.invoke(relSvc, "findAssociatedMBeans",
84 new Object[] {
85 timer1,
86 "typeName",
87 "left",
88 },
89 new String[] {
90 "javax.management.ObjectName",
91 "java.lang.String",
92 "java.lang.String",
93 });
94
95 if (assoc.size() != 1) {
96 System.out.println("TEST FAILS: findAssociatedMBeans should " +
97 "return one association: " + assoc);
98 System.exit(1);
99 }
100
101 ArrayList list = (ArrayList) assoc.get(timer2);
102 if (list.size() != 1 || !list.get(0).equals("relationName")) {
103 System.out.println("TEST FAILS: MBean not associated as " +
104 "expected: " + list);
105 System.exit(1);
106 }
107 System.out.println("Test passes");
108 }
109}