diff options
Diffstat (limited to 'M4-RCs/qpid/java/management/client/src/test/java/org/apache/qpid/management/domain/model/QpidClassTest.java')
-rw-r--r-- | M4-RCs/qpid/java/management/client/src/test/java/org/apache/qpid/management/domain/model/QpidClassTest.java | 408 |
1 files changed, 0 insertions, 408 deletions
diff --git a/M4-RCs/qpid/java/management/client/src/test/java/org/apache/qpid/management/domain/model/QpidClassTest.java b/M4-RCs/qpid/java/management/client/src/test/java/org/apache/qpid/management/domain/model/QpidClassTest.java deleted file mode 100644 index 284f3841b8..0000000000 --- a/M4-RCs/qpid/java/management/client/src/test/java/org/apache/qpid/management/domain/model/QpidClassTest.java +++ /dev/null @@ -1,408 +0,0 @@ -/* -* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ - -package org.apache.qpid.management.domain.model; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; - -import javax.management.MBeanAttributeInfo; -import javax.management.MBeanInfo; - -import junit.framework.TestCase; - -import org.apache.qpid.management.TestConstants; -import org.apache.qpid.management.configuration.ConfigurationException; -import org.apache.qpid.management.configuration.Configurator; -import org.apache.qpid.management.domain.handler.impl.MethodOrEventDataTransferObject; -import org.apache.qpid.management.domain.model.QpidClass.QpidManagedObject; - -/** - * Test case for Qpid Class. - * - * @author Andrea Gazzarini - */ -public class QpidClassTest extends TestCase -{ - private QpidClass _class; - private QpidPackage _package; - - @Override - protected void setUp () throws ConfigurationException - { - Configurator configurator = new Configurator(); - configurator.configure(); - _package = new QpidPackage(TestConstants.QPID_PACKAGE_NAME,TestConstants.DOMAIN_MODEL); - _class = new QpidClass(TestConstants.EXCHANGE_CLASS_NAME,TestConstants.HASH,_package); - } - - /** - * Tests the execution of the getObjectInstance() method. - * Basically it tests the addition of a new object instance. - * - * <br>precondition: class has no object instances. - * <br>precondition : class contains the added object instance. - */ - public void testGetObjectInstance() - { - assertFalse ( - "Nobody set instance #"+TestConstants.OBJECT_ID+" into this class so why is it there?", - _class._objectInstances.containsKey(TestConstants.OBJECT_ID)); - - QpidManagedObject instance = _class.getObjectInstance(TestConstants.OBJECT_ID, false); - - assertTrue ( - "Now the instance #"+TestConstants.OBJECT_ID+" should be there...", - _class._objectInstances.containsKey(TestConstants.OBJECT_ID)); - - assertEquals(instance,_class.getObjectInstance(TestConstants.OBJECT_ID, false)); - } - - /** - * Tests the injection of instrumentation and configuration data (related to a specific object instance) before the - * schema is installed. - * - * <br>precondition : the schema hasn't yet installed on this class. - * <br>postcondition : incoming configuration & instrumentation data is stored into the corresponding object instance. - */ - public void testAddInstrumentationAndConfigurationDataBeforeSchemaInstallation() - { - _class._state = _class._schemaRequestedButNotYetInjected; - QpidManagedObject objectInstance = _class.getObjectInstance(TestConstants.OBJECT_ID,false); - - assertTrue( - "This object instance is a new one so how is it possible that it has already instrumentation data? ", - objectInstance._rawInstrumentationData.isEmpty()); - assertTrue( - "This object instance is a new one so how is it possible that it has already configuration data? ", - objectInstance._rawConfigurationData.isEmpty()); - - byte [] dummyConfigurationData = {1,2,3,4,5,6,7,8}; - byte [] dummyInstrumentationData = {11,21,31,41,51,61,71,81}; - - _class.addConfigurationData(TestConstants.OBJECT_ID, dummyConfigurationData); - _class.addInstrumentationData(TestConstants.OBJECT_ID, dummyInstrumentationData); - - assertEquals("Now configuration data should be there...",1,objectInstance._rawConfigurationData.size()); - assertEquals("Now instrumentation data should be there...",1,objectInstance._rawInstrumentationData.size()); - - assertTrue( - "Object instance configuration data should be the previously set...", - Arrays.equals(objectInstance._rawConfigurationData.get(0), - dummyConfigurationData)); - - assertTrue( - "Object instance instrumentation data should be the previously set...", - Arrays.equals(objectInstance._rawInstrumentationData.get(0), - dummyInstrumentationData)); - } - - /** - * Tests the internal state change of a class definition. - */ - public void testStateChange() throws UnableToBuildFeatureException - { - _class = new QpidClass(TestConstants.EXCHANGE_CLASS_NAME,TestConstants.HASH,_package) - { - @Override - void requestSchema() throws Exception { - _state = _schemaRequestedButNotYetInjected; - } - - @Override - void setSchema(List<Map<String, Object>> propertyDefinitions, - List<Map<String, Object>> statisticDefinitions, - List<MethodOrEventDataTransferObject> methodDefinitions) throws UnableToBuildFeatureException { - _state = _schemaInjected; - } - }; - - assertSame( - "Initial state doesn't match.", - _class._schemaNotRequested, - _class._state); - - _class.addConfigurationData(TestConstants.OBJECT_ID, TestConstants.TEST_RAW_DATA); - _class.addInstrumentationData(TestConstants.OBJECT_ID, TestConstants.TEST_RAW_DATA); - - assertSame( - "Request schema has been requested but not yet injected. The current state is not indicating that!", - _class._schemaRequestedButNotYetInjected, - _class._state); - - _class.setSchema( - TestConstants.EMPTY_PROPERTIES_SCHEMA, - TestConstants.EMPTY_STATISTICS_SCHEMA, - new LinkedList<MethodOrEventDataTransferObject>()); - - assertSame( - "Request schema has been injected. The current state is not indicating that!", - _class._schemaInjected, - _class._state); - } - - /** - * Tests the injection of a valid schema on a QpidClass. - * - * <br>precondition : a valid arguments is injected on the qpid class. - * <br>postcondition : class definition is built successfully. - */ - public void testSchemaInjectionOk() throws UnableToBuildFeatureException - { - _class = new QpidClass(TestConstants.EXCHANGE_CLASS_NAME,TestConstants.HASH,_package) - { - @Override - void requestSchema() throws Exception - { - // DO NOTHING : QMan is not running and therefore the schema will be manually injected. - } - - @Override - void updateInstanceWithConfigurationData(QpidManagedObject instance, byte[] rawData) - { - // DO NOTHING Given raw data is not valid so it cannot be converted. - } - }; - - // Incoming configuration data : that will fire the schema request and a state change - // from schema-not-requested to schema-requested-but-not-injected - _class.addConfigurationData(TestConstants.OBJECT_ID, TestConstants.TEST_RAW_DATA); - - // I must be sure that what is obvious for me it's obvious for QMan... :) - assertSame( - "Request schema has been requested but not yet injected. The current state is not indicating that!", - _class._schemaRequestedButNotYetInjected, - _class._state); - - List<Map<String,Object>> propertyDefinitions = new ArrayList<Map<String,Object>>(2); - propertyDefinitions.add( - createProperty( - TestConstants.AGE_ATTRIBUTE_NAME, - 1, - TestConstants.YEARS, - TestConstants.SAMPLE_MIN_VALUE, - TestConstants.SAMPLE_MAX_VALUE, - null, - TestConstants.AGE_ATTRIBUTE_DESCRIPTION, - TestConstants._1, - false, - TestConstants._0)); - - propertyDefinitions.add( - createProperty( - TestConstants.SURNAME_ATTRIBUTE_NAME, - TestConstants.SAMPLE_ACCESS_CODE, - null, - null, - null, - TestConstants.SAMPLE_MAX_VALUE, - TestConstants.SURNAME_ATTRIBUTE_DESCRIPTION, - TestConstants._1, - true, - TestConstants._1)); - - _class.setSchema(propertyDefinitions, TestConstants.EMPTY_STATISTICS_SCHEMA, TestConstants.EMPTY_METHODS_SCHEMA); - - assertEquals(2,_class._properties.size()); - - QpidProperty property = _class._properties.get(TestConstants.AGE_ATTRIBUTE_NAME); - assertEquals(TestConstants.AGE_ATTRIBUTE_NAME,property.getName()); - assertEquals(AccessMode.RC,property.getAccessMode()); - assertEquals(TestConstants.YEARS,property.getUnit()); - assertEquals(TestConstants.SAMPLE_MIN_VALUE,property.getMinValue()); - assertEquals(TestConstants.SAMPLE_MAX_VALUE,property.getMaxValue()); - assertEquals(Integer.MIN_VALUE,property.getMaxLength()); - assertEquals(TestConstants.AGE_ATTRIBUTE_DESCRIPTION,property.getDescription()); - assertEquals(Short.class,property.getJavaType()); - assertFalse(property.isOptional()); - - property = _class._properties.get(TestConstants.SURNAME_ATTRIBUTE_NAME); - assertEquals(TestConstants.SURNAME_ATTRIBUTE_NAME,property.getName()); - assertEquals(AccessMode.RC,property.getAccessMode()); - assertNull(property.getUnit()); - assertEquals(Integer.MIN_VALUE,property.getMinValue()); - assertEquals(Integer.MIN_VALUE,property.getMaxValue()); - assertEquals(TestConstants.SAMPLE_MAX_VALUE,property.getMaxLength()); - assertEquals(TestConstants.SURNAME_ATTRIBUTE_DESCRIPTION,property.getDescription()); - assertEquals(Short.class,property.getJavaType()); - assertTrue(property.isOptional()); - - MBeanInfo mbeanInfo = _class._metadata; - assertEquals(TestConstants.EXCHANGE_CLASS_NAME,mbeanInfo.getClassName()); - - MBeanAttributeInfo [] attributes = mbeanInfo.getAttributes(); - assertEquals(2,attributes.length); - - MBeanAttributeInfo attribute = attributes[0]; - assertEquals(TestConstants.AGE_ATTRIBUTE_NAME,attribute.getName()); - assertEquals(TestConstants.AGE_ATTRIBUTE_DESCRIPTION,attribute.getDescription()); - assertFalse(attribute.isWritable()); - assertTrue(attribute.isReadable()); - assertEquals(Short.class.getName(),attribute.getType()); - - attribute = attributes[1]; - assertEquals(TestConstants.SURNAME_ATTRIBUTE_NAME,attribute.getName()); - assertEquals(TestConstants.SURNAME_ATTRIBUTE_DESCRIPTION,attribute.getDescription()); - assertFalse(attribute.isWritable()); - assertTrue(attribute.isReadable()); - assertEquals(Short.class.getName(),attribute.getType()); - } - - /** - * Tests the behaviour of the class when a schema request can't be made. - * - * <br>precondition : class must be in "schema-not-requested" state when incoming data arrives. - * <br>postcondition : no exception is thrown and no state transition happens. - */ - public void testStateChange_withRequestSchemaFailure() - { - _class= new QpidClass(TestConstants.EXCHANGE_CLASS_NAME,TestConstants.HASH,_package) - { - @Override - void requestSchema() throws Exception { - throw new Exception(); - } - - @Override - void setSchema( - List<Map<String, Object>> propertyDefinitions, - List<Map<String, Object>> statisticDefinitions, - List<MethodOrEventDataTransferObject> methodDefinitions) throws UnableToBuildFeatureException - { - } - }; - - assertSame( - "Initial state must be schema-not-requested.", - _class._schemaNotRequested, - _class._state); - - _class.addInstrumentationData(TestConstants.OBJECT_ID, TestConstants.TEST_RAW_DATA); - - assertSame( - "Current state must be still schema-not-requested.", - _class._schemaNotRequested, - _class._state); - } - - /** - * Tests the behaviour of the class when a schema injection fails. - * - * <br>precondition : class must be in "schema-not-requested" state when incoming data arrives. - * <br>postcondition : an exception is thrown and no state transition happens. - */ - public void testStateChange_withSchemaInjectionFailure() - { - _class = new QpidClass(TestConstants.EXCHANGE_CLASS_NAME,TestConstants.HASH,_package) - { - @Override - void requestSchema() throws Exception - { - // DO NOTHING. - } - - @Override - void setSchema(List<Map<String, Object>> propertyDefinitions, - List<Map<String, Object>> statisticDefinitions, - List<MethodOrEventDataTransferObject> methodDefinitions) - throws UnableToBuildFeatureException - { - throw new UnableToBuildFeatureException(""); - } - }; - - assertSame( - "Initial state must be schema-not-requested.", - _class._schemaNotRequested, - _class._state); - - _class.addInstrumentationData(TestConstants.OBJECT_ID, TestConstants.TEST_RAW_DATA); - - assertSame( - "Request schema has been requested but not yet injected. The current state is not indicating that!", - _class._schemaRequestedButNotYetInjected, - _class._state); - - try { - _class.setSchema( - TestConstants.EMPTY_PROPERTIES_SCHEMA, - TestConstants.EMPTY_STATISTICS_SCHEMA, - TestConstants.EMPTY_METHODS_SCHEMA); - fail("If we are here something was wrong becuase the setSchema() of this event is throwing an exception..."); - } catch (UnableToBuildFeatureException expected) { - assertSame( - "Request schema has been requested but not yet injected. The current state is not indicating that!", - _class._schemaRequestedButNotYetInjected, - _class._state); - } - } - - private Map<String,Object> createProperty( - String name, - Integer accessCode, - String unit, - Integer min, - Integer max, - Integer maxLength, - String description, - Integer type, - boolean optional, - Integer index) - { - Map <String,Object> result = new HashMap<String, Object>(); - result.put(QpidFeatureBuilder.Attribute.name.name(),name); - result.put(QpidFeatureBuilder.Attribute.access.name(), accessCode); - - if (unit != null) - { - result.put(QpidFeatureBuilder.Attribute.unit.name(),unit); - } - - if (min != null) - { - result.put(QpidFeatureBuilder.Attribute.min.name(), min); - } - - if (max != null) - { - result.put(QpidFeatureBuilder.Attribute.max.name(),max); - } - - if (maxLength != null) - { - result.put(QpidFeatureBuilder.Attribute.maxlen.name(),maxLength); - } - - result.put(QpidFeatureBuilder.Attribute.desc.name(), description); - result.put(QpidFeatureBuilder.Attribute.type.name(), type); - result.put(QpidFeatureBuilder.Attribute.optional.name(),optional ? 1 : 0); - - if (index != null) - { - result.put(QpidFeatureBuilder.Attribute.index.name(), index); - } - return result; - } -} |