Package org.apache.qpid.management.wsdm.capabilities

Source Code of org.apache.qpid.management.wsdm.capabilities.MBeanCapabilityTest

/*
*
* 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.wsdm.capabilities;

import java.lang.management.ManagementFactory;
import java.net.URI;

import javax.management.ObjectName;

import junit.framework.TestCase;

import org.apache.muse.ws.addressing.EndpointReference;
import org.apache.muse.ws.resource.WsResource;
import org.apache.muse.ws.resource.impl.SimpleWsResource;
import org.apache.qpid.management.domain.handler.impl.QpidDomainObject;
import org.apache.qpid.management.wsdm.common.EntityInstanceNotFoundFault;
import org.apache.qpid.management.wsdm.common.NoSuchAttributeFault;
import org.apache.qpid.management.wsdm.common.QManFault;

/**
* Test case for MBeanCapability supertype layer..
*
* @author Andrea Gazzarini
*/
public class MBeanCapabilityTest extends TestCase
  private final String _typeAttributeName = "Type";
  private final String _newTypeValue = "DomainObject";
 
  private ObjectName _objectName;
  private ObjectName _unknownObjectName;

  private MBeanCapability _capability;

  @Override
  protected void setUp() throws Exception
  {
    _objectName = new ObjectName("Test:Name=aName");
    _unknownObjectName = new ObjectName("Test:Type=unknown");
   
    _capability = new MBeanCapability(){
      @Override
      public WsResource getWsResource()
      {
        return new SimpleWsResource(){
          @Override
          public EndpointReference getEndpointReference()
          {
            return new EndpointReference(URI.create("http://qpid.apache.org/qman"));
          }
        };
      }
    };
    _capability.setResourceObjectName(_objectName);
    ManagementFactory.getPlatformMBeanServer().registerMBean(new QpidDomainObject(), _objectName);
  }
 
  /**
   * Tests the execution of the getAttribute() and setAttribute() method.
   *
   * <br>precondition : the mbean is registered and a _capability is associated with it.
   * <br>postcondition : the set value of the requested attribute is correctly returned.
   */
  public void testGetAndSetAttributeOK() throws Exception
  {
    Object name = _capability.getAttribute(_typeAttributeName);
    assertNull("Name has an initial value of null so how is possibile that is not null?",name);
   
    _capability.setAttribute(_typeAttributeName,_newTypeValue);
   
    name = _capability.getAttribute(_typeAttributeName);
    assertEquals("Now the name attribute must be set to \""+_newTypeValue+"\"",_newTypeValue,name);
  }
 
  /**
   * Tests the execution of the getAttribute() and setAttribte() methods when an unknown attribute is given..
   *
   * <br>precondition : the mbean is registered, a _capability is associated with it and the requested attribute doesn't exist.
   * <br>postcondition : an exception is thrown indicating the failure.
   */
  public void testNoSuchAttributeFault() throws Exception
  {
    // I suppose that we shouldn't have an attribute with this name...
    String unknownAttribute = String.valueOf(System.currentTimeMillis());
   
    try
    {
      _capability.getAttribute(unknownAttribute);
      fail("An exception must be thrown here in order to indicate that the attribute is unknown.");
    } catch(NoSuchAttributeFault expected)
    {
    }
   
    try
    {
      _capability.setAttribute(unknownAttribute,null);
      fail("An exception must be thrown here in order to indicate that the attribute is unknown.");
    } catch(NoSuchAttributeFault expected)
    {
    }
  }
 
  /**
   * Tests the execution of the setAttribute,getAttribute and invoke methods when the target mbean
   * doesn't exists.
   *
   * <br>precondition : the object name associated with the capability is not pointing to an existent MBean.
   * <br>postcondition : an exception is thrown indicating the failure.
   */
  public void testEntityInstanceNotFoundFault() throws Exception
  {
    _capability.setResourceObjectName(_unknownObjectName);
   
    try
    {
      _capability.getAttribute(_typeAttributeName);
      fail("An exception must be thrown here in order to indicate that the attribute is unknown.");
    } catch(EntityInstanceNotFoundFault expected)
    {
    }
   
    try
    {
      _capability.setAttribute(_typeAttributeName,_newTypeValue);
      fail("An exception must be thrown here in order to indicate that the attribute is unknown.");
    } catch(EntityInstanceNotFoundFault  expected)
    {
    }
   
    try
    {
      _capability.invoke("operationName", null,null);
      fail("An exception must be thrown here in order to indicate that the attribute is unknown.");
    } catch(EntityInstanceNotFoundFault expected)
    {
    }
  }

  /**
   * Tests the execution of the setAttribute,getAttribute and invoke methods when an unknown / unexpected
   * exception is thrown.
   *
   * <br>precondition : the mbean is registered and a capability is associated with it. Something
   *                 unexpected happens during method invocation.
   * <br>postcondition : an exception is thrown indicating the failure.
   */
  public void testQManFault() throws Exception
  {
    // Emulate a RuntimeException (which is the best example of uncaught exception... :) )
    _capability.setResourceObjectName(null);
   
    try
    {
      _capability.getAttribute(_typeAttributeName);
      fail("An exception must be thrown here in order to indicate that the attribute is unknown.");
    } catch(QManFault expected)
    {
    }
   
    try
    {
      _capability.setAttribute(_typeAttributeName,_newTypeValue);
      fail("An exception must be thrown here in order to indicate that the attribute is unknown.");
    } catch(QManFault  expected)
    {
    }
   
    try
    {
      _capability.invoke("operationName", null,null);
      fail("An exception must be thrown here in order to indicate that the attribute is unknown.");
    } catch(QManFault expected)
    {
    }
  }
 
 
  /**
   * Shutdown procedure for this test case.
   */
  @Override
  protected void tearDown() throws Exception
  {
    ManagementFactory.getPlatformMBeanServer().unregisterMBean(_objectName);
  }
}
TOP

Related Classes of org.apache.qpid.management.wsdm.capabilities.MBeanCapabilityTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.