/**
* Verify that invoke method retrieves returned value of method from cache
* or invoke operation depends on currencyTimeLimit > 0 and
* lastUpdatedTimeStamp.
* <ul>
* Step by step:
* <li>Create operation method without parameters which always returns
* value.
* <li>Create ModelMBeanOperationInfo object for operation method.
* <li>Set value currencyTimeLimit = > 0 in descriptor for
* ModelMBeanOperationInfo object.
* <li>Create ModelMBeanInfoSupport object with default descriptor. All
* ModelMBeanXXXInfo except ModelMBeanOperationInfo are default.
* <li>Instance of class created in 1st step sets managed resource for
* RequiredModelMBean using setManagedResource method.
* <li>Create ObjectName object.
* <li>Register RequiredModelMBean object in MBeanServer with above
* ObjectName.
* <li>Invoke operation method thru invoke method of MBeanServer.
* <li>Verify value which the invoke method returned is the same as value
* which the operation method returned.
* <li>Verify that operation method was invoked.
* <li>Verify value of field `value` in descriptor for
* ModelMBeanOperationInfo object.
* <li>Invoke again operation method thru invoke method of MBeanServer.
* <li>Verify returned value is not changed.
* <li>Verify that operation method wasn't invoked.
* <li>Verify value of field `value` in descriptor for
* ModelMBeanOperationInfo object is not changed.
* <li>Change returned value of operation method.
* <li> Wait currencyTimeLimit seconds.
* <li>Invoke again operation method thru invoke method of MBeanServer.
* <li>Verify value which the invoke method returned is the same as value
* which the operation method returned.
* <li>Verify that operation method was invoked.
* <li>Verify value of field `value` in descriptor for
* ModelMBeanOperationInfo object is changed and verify this value.
* </ul>
*/
public Result testPositive() throws Exception {
Method method = class1.getMethod("simpleMethod", null);
ModelMBeanOperationInfo operationInfo1 = new ModelMBeanOperationInfo(
"description", method);
Descriptor descriptor = operationInfo1.getDescriptor();
int currencyTimeLimit = 5;
descriptor.setField("currencyTimeLimit", currencyTimeLimit + "");
operationInfo1.setDescriptor(descriptor);
ModelMBeanInfoSupport beanInfoSupport = new ModelMBeanInfoSupport(
class1.getName(), "description", null, null,
new ModelMBeanOperationInfo[] { operationInfo1 }, null);
RequiredModelMBean requiredModelMBean = new RequiredModelMBean(
beanInfoSupport);
requiredModelMBean.setManagedResource(this, "ObjectReference");
ObjectName objectName = new ObjectName("domain", "name", "simple name");
MBeanServer server = MBeanServerFactory.createMBeanServer();
server.registerMBean(requiredModelMBean, objectName);
Object value = server.invoke(objectName, method.getName(), null, null);
assertEquals(value, returnedObject);
assertTrue(isInvokedMethod());
printValue(server.getMBeanInfo(objectName));
value = server.invoke(objectName, method.getName(), null, null);
assertEquals(value, returnedObject);
assertFalse(isInvokedMethod());
printValue(server.getMBeanInfo(objectName));
returnedObject = new Integer(10);
Thread.sleep(1000 * currencyTimeLimit + latancy);
value = server.invoke(objectName, method.getName(), null, null);
assertEquals(value, returnedObject);
printValue(server.getMBeanInfo(objectName));
assertTrue(isInvokedMethod());
return result();
}
InvocationTest.java 文件源码
java
阅读 21
收藏 0
点赞 0
评论 0
项目:freeVM
作者:
评论列表
文章目录