001: /**
002: * Copyright (C) The MX4J Contributors.
003: * All rights reserved.
004: *
005: * This software is distributed under the terms of the MX4J License version 1.0.
006: * See the terms of the MX4J License in the documentation provided with this software.
007: */package test.javax.management.openmbean;
008:
009: import java.util.Arrays;
010: import javax.management.MBeanNotificationInfo;
011: import javax.management.MBeanOperationInfo;
012: import javax.management.openmbean.ArrayType;
013: import javax.management.openmbean.OpenMBeanAttributeInfo;
014: import javax.management.openmbean.OpenMBeanAttributeInfoSupport;
015: import javax.management.openmbean.OpenMBeanConstructorInfo;
016: import javax.management.openmbean.OpenMBeanConstructorInfoSupport;
017: import javax.management.openmbean.OpenMBeanInfoSupport;
018: import javax.management.openmbean.OpenMBeanOperationInfo;
019: import javax.management.openmbean.OpenMBeanOperationInfoSupport;
020: import javax.management.openmbean.OpenMBeanParameterInfo;
021: import javax.management.openmbean.OpenMBeanParameterInfoSupport;
022: import javax.management.openmbean.SimpleType;
023:
024: import junit.framework.TestCase;
025: import junit.textui.TestRunner;
026:
027: /**
028: */
029: public class OpenMBeanInfoSupportTest extends TestCase {
030: private OpenMBeanAttributeInfo[] attrs;
031: private OpenMBeanConstructorInfo[] ctors;
032: private OpenMBeanOperationInfo[] ops;
033: private MBeanNotificationInfo[] notifs;
034:
035: public static void main(String[] args) {
036: TestRunner.run(OpenMBeanInfoSupportTest.class);
037: }
038:
039: public void testCtor() throws Exception {
040: OpenMBeanInfoSupport info = new OpenMBeanInfoSupport(
041: "CurrencyMBean", "Does stuff with currencies", attrs,
042: ctors, ops, notifs);
043: assertTrue("Null info constructed", info != null);
044: assertTrue("Unexpected name", info.getClassName().compareTo(
045: "CurrencyMBean") == 0);
046: assertTrue("Unexpected description", info.getDescription()
047: .compareTo("Does stuff with currencies") == 0);
048: assertTrue("Unexpected attributes", Arrays.equals(info
049: .getAttributes(), attrs));
050: assertTrue("Unexpected constructors", Arrays.equals(info
051: .getConstructors(), ctors));
052: assertTrue("Unexpected operations", Arrays.equals(info
053: .getOperations(), ops));
054: assertTrue("Unexpected notifications", Arrays.equals(info
055: .getNotifications(), notifs));
056: }
057:
058: public void testEquals() throws Exception {
059: OpenMBeanInfoSupport infoone = new OpenMBeanInfoSupport(
060: "CurrencyMBean", "Does stuff with currencies", attrs,
061: ctors, ops, notifs);
062: assertTrue("Null info constructed", infoone != null);
063:
064: OpenMBeanInfoSupport infotwo = new OpenMBeanInfoSupport(
065: "CurrencyMBean", "manages currencies", attrs, ctors,
066: ops, notifs);
067: assertTrue("Null info constructed", infotwo != null);
068:
069: assertTrue(
070: "Expecting equality (only description is different)",
071: infotwo.equals(infoone));
072:
073: OpenMBeanAttributeInfo[] testattrs = new OpenMBeanAttributeInfoSupport[] {
074: new OpenMBeanAttributeInfoSupport("Uptime",
075: "how long it's been running", SimpleType.FLOAT,
076: true, false, false),
077: new OpenMBeanAttributeInfoSupport("Exchanges",
078: "number of exchanges completed",
079: SimpleType.FLOAT, true, false, false) };
080:
081: OpenMBeanConstructorInfo[] testctors = new OpenMBeanConstructorInfoSupport[] { new OpenMBeanConstructorInfoSupport(
082: "CurrencyMBean",
083: "create a currency mbean",
084: new OpenMBeanParameterInfoSupport[] { new OpenMBeanParameterInfoSupport(
085: "currencies",
086: "currencies that may be exchanged",
087: new ArrayType(1, SimpleType.STRING)) }) };
088:
089: OpenMBeanParameterInfo[] ratesig = new OpenMBeanParameterInfo[] {
090: new OpenMBeanParameterInfoSupport("to",
091: "currency to convert to", SimpleType.STRING),
092: new OpenMBeanParameterInfoSupport("from",
093: "currency to convert from", SimpleType.STRING) };
094:
095: OpenMBeanParameterInfo[] exsig = new OpenMBeanParameterInfo[] {
096: new OpenMBeanParameterInfoSupport("from",
097: "currency to convert from", SimpleType.STRING),
098: new OpenMBeanParameterInfoSupport("amount",
099: "amount of currency to convert",
100: SimpleType.FLOAT),
101: new OpenMBeanParameterInfoSupport("to",
102: "currency to convert to", SimpleType.STRING) };
103:
104: OpenMBeanOperationInfo[] testops = new OpenMBeanOperationInfoSupport[] {
105: new OpenMBeanOperationInfoSupport("exchangeRate",
106: "compute the exchange rate for two currencies",
107: ratesig, SimpleType.FLOAT,
108: MBeanOperationInfo.INFO),
109: new OpenMBeanOperationInfoSupport("exchange",
110: "compute the exchange rate for two currencies",
111: exsig, SimpleType.FLOAT,
112: MBeanOperationInfo.INFO) };
113:
114: OpenMBeanInfoSupport infothree = new OpenMBeanInfoSupport(
115: "CurrencyMBean", "Does stuff with currencies",
116: testattrs, testctors, testops, notifs);
117: assertTrue("Null info constructed", infoone != null);
118:
119: assertFalse(
120: "Expecting inequality (the parameter orders are different)",
121: infothree.equals(infoone));
122: }
123:
124: public void testHashCode() throws Exception {
125: OpenMBeanInfoSupport infoone = new OpenMBeanInfoSupport(
126: "CurrencyMBean", "Does stuff with currencies", attrs,
127: ctors, ops, notifs);
128: assertTrue("Null info constructed", infoone != null);
129:
130: OpenMBeanInfoSupport infotwo = new OpenMBeanInfoSupport(
131: "CurrencyMBean", "manages currencies", attrs, ctors,
132: ops, notifs);
133: assertTrue("Null info constructed", infotwo != null);
134:
135: assertTrue(
136: "Expecting identical hash codes (only description is different)",
137: infotwo.hashCode() == infoone.hashCode());
138:
139: OpenMBeanAttributeInfo[] testattrs = new OpenMBeanAttributeInfoSupport[] {
140: new OpenMBeanAttributeInfoSupport("Uptime",
141: "how long it's been running", SimpleType.FLOAT,
142: true, false, false),
143: new OpenMBeanAttributeInfoSupport("Exchanges",
144: "number of exchanges completed",
145: SimpleType.FLOAT, true, false, false) };
146:
147: OpenMBeanConstructorInfo[] testctors = new OpenMBeanConstructorInfoSupport[] { new OpenMBeanConstructorInfoSupport(
148: "CurrencyMBean",
149: "create a currency mbean",
150: new OpenMBeanParameterInfoSupport[] { new OpenMBeanParameterInfoSupport(
151: "currencies",
152: "currencies that may be exchanged",
153: new ArrayType(1, SimpleType.STRING)) }) };
154:
155: OpenMBeanParameterInfo[] ratesig = new OpenMBeanParameterInfo[] {
156: new OpenMBeanParameterInfoSupport("to",
157: "currency to convert to", SimpleType.STRING),
158: new OpenMBeanParameterInfoSupport("from",
159: "currency to convert from", SimpleType.STRING) };
160:
161: OpenMBeanParameterInfo[] exsig = new OpenMBeanParameterInfo[] {
162: new OpenMBeanParameterInfoSupport("from",
163: "currency to convert from", SimpleType.STRING),
164: new OpenMBeanParameterInfoSupport("amount",
165: "amount of currency to convert",
166: SimpleType.FLOAT),
167: new OpenMBeanParameterInfoSupport("to",
168: "currency to convert to", SimpleType.STRING) };
169:
170: OpenMBeanOperationInfo[] testops = new OpenMBeanOperationInfoSupport[] {
171: new OpenMBeanOperationInfoSupport("exchangeRate",
172: "compute the exchange rate for two currencies",
173: ratesig, SimpleType.FLOAT,
174: MBeanOperationInfo.INFO),
175: new OpenMBeanOperationInfoSupport("exchange",
176: "compute the exchange rate for two currencies",
177: exsig, SimpleType.FLOAT,
178: MBeanOperationInfo.INFO) };
179:
180: OpenMBeanInfoSupport infothree = new OpenMBeanInfoSupport(
181: "CurrencyMBean", "Does stuff with currencies",
182: testattrs, testctors, testops, notifs);
183: assertTrue("Null info constructed", infoone != null);
184:
185: assertFalse(
186: "Expecting different hash codes (the parameter orders are different)",
187: infothree.hashCode() == infoone.hashCode());
188: }
189:
190: protected void setUp() throws Exception {
191: attrs = new OpenMBeanAttributeInfoSupport[] {
192: new OpenMBeanAttributeInfoSupport("Exchanges",
193: "number of exchanges completed",
194: SimpleType.FLOAT, true, false, false),
195: new OpenMBeanAttributeInfoSupport("Uptime",
196: "how long it's been running", SimpleType.FLOAT,
197: true, false, false) };
198:
199: ctors = new OpenMBeanConstructorInfoSupport[] { new OpenMBeanConstructorInfoSupport(
200: "CurrencyMBean",
201: "create a currency mbean",
202: new OpenMBeanParameterInfoSupport[] { new OpenMBeanParameterInfoSupport(
203: "currencies",
204: "currencies that may be exchanged",
205: new ArrayType(1, SimpleType.STRING)) }) };
206:
207: OpenMBeanParameterInfo[] ratesig = new OpenMBeanParameterInfo[] {
208: new OpenMBeanParameterInfoSupport("from",
209: "currency to convert from", SimpleType.STRING),
210: new OpenMBeanParameterInfoSupport("to",
211: "currency to convert to", SimpleType.STRING) };
212:
213: OpenMBeanParameterInfo[] exsig = new OpenMBeanParameterInfo[] {
214: new OpenMBeanParameterInfoSupport("from",
215: "currency to convert from", SimpleType.STRING),
216: new OpenMBeanParameterInfoSupport("to",
217: "currency to convert to", SimpleType.STRING),
218: new OpenMBeanParameterInfoSupport("amount",
219: "amount of currency to convert",
220: SimpleType.FLOAT) };
221:
222: ops = new OpenMBeanOperationInfoSupport[] {
223: new OpenMBeanOperationInfoSupport("exchangeRate",
224: "compute the exchange rate for two currencies",
225: ratesig, SimpleType.FLOAT,
226: MBeanOperationInfo.INFO),
227: new OpenMBeanOperationInfoSupport("exchange",
228: "compute the exchange rate for two currencies",
229: exsig, SimpleType.FLOAT,
230: MBeanOperationInfo.INFO) };
231:
232: notifs = new MBeanNotificationInfo[0];
233: }
234:
235: protected void tearDown() {
236: }
237: }
|