User: juhalindfors
  Date: 02/02/24 06:00:50

  Added:       src/main/test/compliance/metadata
                        MBeanOperationInfoTEST.java MetaDataSUITE.java
  Log:
  operation info tests
  
  Revision  Changes    Path
  1.1                  
jmx/src/main/test/compliance/metadata/MBeanOperationInfoTEST.java
  
  Index: MBeanOperationInfoTEST.java
  ===================================================================
  /*
   * JBoss, the OpenSource J2EE webOS
   *
   * Distributable under LGPL license.
   * See terms of license at gnu.org.
   */
  
  package test.compliance.metadata;
  
  
  import junit.framework.TestCase;
  import junit.framework.AssertionFailedError;
  
  import java.lang.reflect.Method;
  
  import javax.management.MBeanServerFactory;
  import javax.management.MBeanServer;
  import javax.management.MBeanOperationInfo;
  import javax.management.MBeanParameterInfo;
  import javax.management.JMRuntimeException;
  
  /**
   * Tests MBeanOperationInfo.
   *
   * @author  <a href="mailto:[EMAIL PROTECTED]";>Juha Lindfors</a>.
   * @version $Revision: 1.1 $ 
   */
  public class MBeanOperationInfoTEST extends TestCase
  {
     public MBeanOperationInfoTEST(String s)
     {
        super(s);
     }
  
     /**
      * Tests <tt>MBeanOperationInfo(String descr, Method m)</tt> constructor.
      */
     public void testConstructorWithMethod()
     {
        try 
        {
           Class c = this.getClass();
           Method m = c.getMethod("testConstructorWithMethod", new Class[0]);
           
           MBeanOperationInfo info = new MBeanOperationInfo("This is a description.", 
m);
           
           assertTrue(info.getDescription().equals("This is a description."));
           assertTrue(info.getName().equals(m.getName()));
           assertTrue(info.getReturnType().equals("void"));
           assertTrue(info.getSignature().length == 0);
           assertTrue(info.getImpact() == MBeanOperationInfo.UNKNOWN);
        }
        catch (AssertionFailedError e)
        {
           throw e;
        }
        catch (Throwable t)
        {
           t.printStackTrace();
           fail("Unexpected error: " + t.toString());
        }
     }
   
     /**
      * Tests <tt>MBeanOperationInfo(String name, String descr, MBeanParameterInfo[] 
sign, String returnType, int impact)</tt> constructor.
      */
     public void testConstructor()
     {
        try
        {
           MBeanOperationInfo info = new MBeanOperationInfo(
                 "MyOperation",
                 "This is a description.",
                 new MBeanParameterInfo[] {
                          new MBeanParameterInfo("FooParam", "java.lang.Object", 
"description"),
                          new MBeanParameterInfo("BarParam", "java.lang.String", 
"description")
                 },
                 "java.util.StringBuffer",
                 MBeanOperationInfo.INFO
           );
           
           assertTrue(info.getDescription().equals("This is a description."));
           assertTrue(info.getName().equals("MyOperation"));
           assertTrue(info.getReturnType().equals("java.util.StringBuffer"));
           assertTrue(info.getSignature().length == 2);
           assertTrue(info.getImpact() == MBeanOperationInfo.INFO);
           assertTrue(info.getSignature() [0].getName().equals("FooParam"));
           assertTrue(info.getSignature() [1].getName().equals("BarParam"));
           assertTrue(info.getSignature() [0].getDescription().equals("description"));
           assertTrue(info.getSignature() [1].getDescription().equals("description"));
           assertTrue(info.getSignature() [0].getType().equals("java.lang.Object"));
           assertTrue(info.getSignature() [1].getType().equals("java.lang.String"));
           
        }
        catch (AssertionFailedError e)
        {
           throw e;
        }
        catch (Throwable t)
        {
           t.printStackTrace();
           fail("Unexpected error: " + t.toString());
        }
     }
     
     /**
      * Tests the clone operation.
      */
     public void testClone()
     {
        try
        {
           MBeanOperationInfo info = new MBeanOperationInfo(
                 "MyOperation",
                 "This is a description.",
                 new MBeanParameterInfo[] {
                          new MBeanParameterInfo("FooParam", "java.lang.Object", 
"description"),
                          new MBeanParameterInfo("BarParam", "java.lang.String", 
"description")
                 },
                 "java.util.StringBuffer",
                 MBeanOperationInfo.ACTION_INFO
           );
           
           MBeanOperationInfo clone = (MBeanOperationInfo)info.clone();
           
           assertTrue(clone.getDescription().equals("This is a description."));
           assertTrue(clone.getName().equals("MyOperation"));
           assertTrue(clone.getReturnType().equals("java.util.StringBuffer"));
           assertTrue(clone.getSignature().length == 2);
           assertTrue(clone.getImpact() == MBeanOperationInfo.ACTION_INFO);
           assertTrue(clone.getSignature() [0].getName().equals("FooParam"));
           assertTrue(clone.getSignature() [1].getName().equals("BarParam"));
           assertTrue(clone.getSignature() [0].getDescription().equals("description"));
           assertTrue(clone.getSignature() [1].getDescription().equals("description"));
           assertTrue(clone.getSignature() [0].getType().equals("java.lang.Object"));
           assertTrue(clone.getSignature() [1].getType().equals("java.lang.String"));
           
        }
        catch (AssertionFailedError e)
        {
           throw e;
        }
        catch (Throwable t)
        {
           t.printStackTrace();
           fail("Unexpected error: " + t.toString());
        }
     }
  
     /**
      * Tests <tt>MBeanOperationInfo</tt> creation and <tt>getName()</tt> accessor 
with empty name.
      */
     public void testGetNameEmpty()
     {
        try
        {
           MBeanOperationInfo info1 = new MBeanOperationInfo(
                 "",
                 "This is a description.",
                 new MBeanParameterInfo[] {
                          new MBeanParameterInfo("FooParam", "java.lang.Object", 
"description"),
                          new MBeanParameterInfo("BarParam", "java.lang.String", 
"description")
                 },
                 "java.util.StringBuffer",
                 MBeanOperationInfo.ACTION_INFO
           );
           
           assertTrue(info1.getName().equals(""));
           
        }
        catch (AssertionFailedError e)
        {
           throw e;
        }
        catch (Throwable t)
        {
           t.printStackTrace();
           fail("Unexpected error: " + t.toString());
        }
     }
  
     /**
      * Tests <tt>MBeanOperationInfo</tt> creation and <tt>getName()</tt> accessor 
with <tt>null</tt> name.
      */
     public void testGetNameNull()
     {
        try
        {
           MBeanOperationInfo info1 = new MBeanOperationInfo(
                 null,
                 "This is a description.",
                 new MBeanParameterInfo[] {
                          new MBeanParameterInfo("FooParam", "java.lang.Object", 
"description"),
                          new MBeanParameterInfo("BarParam", "java.lang.String", 
"description")
                 },
                 "java.util.StringBuffer",
                 MBeanOperationInfo.ACTION_INFO
           );
           
           assertTrue(info1.getName() == null);
           
        }
        catch (AssertionFailedError e)
        {
           throw e;
        }
        catch (Throwable t)
        {
           t.printStackTrace();
           fail("Unexpected error: " + t.toString());
        }
     }
  
     /**
      * Tests <tt>MBeanOperationInfo</tt> creation and <tt>getDescription()</tt> 
accessor with <tt>null</tt> description.
      */
     public void testGetDescriptionNull()
     {
        try
        {
           MBeanOperationInfo info1 = new MBeanOperationInfo(
                 "SomeName",
                 null,
                 new MBeanParameterInfo[] {
                          new MBeanParameterInfo("FooParam", "java.lang.Object", 
"description"),
                          new MBeanParameterInfo("BarParam", "java.lang.String", 
"description")
                 },
                 "java.util.StringBuffer",
                 MBeanOperationInfo.ACTION_INFO
           );
           
           assertTrue(info1.getDescription() == null);
           
        }
        catch (AssertionFailedError e)
        {
           throw e;
        }
        catch (Throwable t)
        {
           t.printStackTrace();
           fail("Unexpected error: " + t.toString());
        }
     }
     
     /**
      * Tests <tt>MBeanOperationInfo</tt> creation and <tt>getImpact()</tt> accessor 
with invalid value.
      */
     public void testGetImpactInvalid()
     {
        try
        {
           MBeanOperationInfo info1 = new MBeanOperationInfo(
                 "SomeName",
                 "some description",
                 new MBeanParameterInfo[] {
                          new MBeanParameterInfo("FooParam", "java.lang.Object", 
"description"),
                          new MBeanParameterInfo("BarParam", "java.lang.String", 
"description")
                 },
                 "java.util.StringBuffer",
                 -22342
           );
           
           // according to javadoc, getImpact() is only allowed to return a value that 
matches
           // either ACTION, ACTION_INFO, INFO or UNKNOWN constant value.
           if (info1.getImpact() != MBeanOperationInfo.ACTION)
              if (info1.getImpact() != MBeanOperationInfo.INFO)
                 if (info1.getImpact() != MBeanOperationInfo.ACTION_INFO)
                    if (info1.getImpact() != MBeanOperationInfo.UNKNOWN)
                       
                       // JPL: This fails in RI. The spec doesn't define how invalid 
impact types should be
                       //      handled. This could be checked at construction time 
(early) or at getImpact()
                       //      invocation time (late). Since behaviour is not 
specified, I've opted to check
                       //      late and throw an JMRuntimeException in case there is 
an invalid impact value.
                       fail("FAILS IN RI: MBeanOperation.getImpact() is only allowed 
to return values that match either ACTION, ACTION_INFO, INFO or UNKNOWN constant 
values.");
        
           // should not reach here unless -22342 has somehow become a valid impact 
value (in which case this test should be modified)
           fail("ERROR IN TEST: invalid impact value test does not work correctly.");  
             
        }
        catch (AssertionFailedError e)
        {
           throw e;
        }
        catch (JMRuntimeException e)
        {
           // should reach here due to invalid impact value
        }
        catch (Throwable t)
        {
           t.printStackTrace();
           fail("Unexpected error: " + t.toString());
        }
     }
     
     /**
      * Tests <tt>MBeanOperationInfo</tt> creation and <tt>getSignature()</tt> with 
<tt>null</tt> signature.
      */
     public void testGetSignatureNull()
     {
        try
        {
           MBeanOperationInfo info1 = new MBeanOperationInfo(
                 "SomeName",
                 "some description",
                 null,
                 "java.util.StringBuffer",
                 MBeanOperationInfo.ACTION
           );
           
           assertTrue(info1.getSignature().length == 0);
           
        }
        catch (AssertionFailedError e)
        {
           throw e;
        }
        catch (Throwable t)
        {
           t.printStackTrace();
           fail("Unexpected error: " + t.toString());
        }
     }
  
     /**
      * Tests <tt>MBeanOperationInfo</tt> creation and <tt>getSignature()</tt> with 
empty signature array.
      */
     public void testGetSignatureEmpty()
     {
        try
        {
           MBeanOperationInfo info1 = new MBeanOperationInfo(
                 "SomeName",
                 "some description",
                 new MBeanParameterInfo[0],
                 "java.util.StringBuffer",
                 MBeanOperationInfo.ACTION
           );
           
           assertTrue(info1.getSignature().length == 0);
           
        }
        catch (AssertionFailedError e)
        {
           throw e;
        }
        catch (Throwable t)
        {
           t.printStackTrace();
           fail("Unexpected error: " + t.toString());
        }
     }
  
     /**
      * Tests <tt>MBeanOperationInfo</tt> creation and <tt>getReturnType()</tt> with 
empty return type string.
      */
     public void testGetReturnTypeEmpty()
     {
        try
        {
           MBeanOperationInfo info1 = new MBeanOperationInfo(
                 "SomeName",
                 "some description",
                 new MBeanParameterInfo[0],
                 "",
                 MBeanOperationInfo.ACTION
           );
           
           // JPL: IMHO empty or null strings should not be allowed as return type 
strings since they can
           //      never match any class name. However, RI allows both cases and I'm 
leaving JBossMX as is,
           //      unless and until the issue comes up somewhere else.
           assertTrue(info1.getReturnType().equals(""));
           
        }
        catch (AssertionFailedError e)
        {
           throw e;
        }
        catch (Throwable t)
        {
           t.printStackTrace();
           fail("Unexpected error: " + t.toString());
        }
     }
  
  
     /**
      * Tests <tt>MBeanOperationInfo</tt> creation and <tt>getReturnType()</tt> with 
<tt>null</tt> return type.
      */
     public void testGetReturnTypeNull()
     {
        try
        {
           MBeanOperationInfo info1 = new MBeanOperationInfo(
                 "SomeName",
                 "some description",
                 new MBeanParameterInfo[0],
                 null,
                 MBeanOperationInfo.INFO
           );
           
           // JPL: IMHO empty or null strings should not be allowed as return type 
strings since they can
           //      never match any class name. However, RI allows both cases and I'm 
leaving JBossMX as is,
           //      unless and until the issue comes up somewhere else.
           assertTrue(info1.getReturnType() == null);
           
        }
        catch (AssertionFailedError e)
        {
           throw e;
        }
        catch (Throwable t)
        {
           t.printStackTrace();
           fail("Unexpected error: " + t.toString());
        }
     }
              
  }
  
  
  
  1.1                  jmx/src/main/test/compliance/metadata/MetaDataSUITE.java
  
  Index: MetaDataSUITE.java
  ===================================================================
  /*
   * JBoss, the OpenSource J2EE webOS
   *
   * Distributable under LGPL license.
   * See terms of license at gnu.org.
   */
  
  package test.compliance.metadata;
  
  import junit.framework.Test;
  import junit.framework.TestSuite;
  
  /**
   * Test cases for JMX metadata classes.
   *
   * @author  <a href="mailto:[EMAIL PROTECTED]";>Juha Lindfors</a>.
   * @version $Revision: 1.1 $ 
   */
  public class MetaDataSUITE
     extends TestSuite
  {
     
    public static void main(String[] args)
     {
        junit.textui.TestRunner.run(suite());
     }
  
     public static Test suite()
     {
        TestSuite suite = new TestSuite("JBossMX Meta Data Tests");
  
        suite.addTest(new TestSuite(MBeanOperationInfoTEST.class));
        
        return suite;
     }
     
  }
        
  
  
  
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to