Package org.cyclopsgroup.jmxterm.cmd

Source Code of org.cyclopsgroup.jmxterm.cmd.BeanCommandTest

package org.cyclopsgroup.jmxterm.cmd;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;

import java.io.IOException;
import java.io.StringWriter;

import javax.management.JMException;
import javax.management.MBeanServerConnection;
import javax.management.ObjectName;

import org.cyclopsgroup.jmxterm.MockSession;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.junit.Test;

/**
* Test case for {@link BeanCommand}
*
* @author <a href="mailto:jiaqi.guo@gmail.com">Jiaqi Guo</a>
*/
public class BeanCommandTest
{
    private BeanCommand command = new BeanCommand();

    private StringWriter output = new StringWriter();

    private void setBeanAndVerify( String beanName, String domainName, final String expectedBean )
        throws IOException, JMException
    {
        Mockery context = new Mockery();
        final MBeanServerConnection con = context.mock( MBeanServerConnection.class );
        command.setBean( beanName );
        MockSession s = new MockSession( output, con );
        if ( domainName != null )
        {
            s.setDomain( domainName );
        }
        context.checking( new Expectations()
        {
            {
                atLeast( 1 ).of( con ).getMBeanInfo( new ObjectName( expectedBean ) );
            }
        } );
        command.setSession( s );
        command.execute();
        assertEquals( expectedBean, s.getBean() );
    }

    /**
     * Test execution with NULL result
     *
     * @throws IOException Allows network IO errors
     * @throws JMException Allows JMX exceptions
     */
    @Test
    public void testExecuteWithGettingNull()
        throws IOException, JMException
    {
        command.setSession( new MockSession( output, null ) );
        command.execute();
        assertEquals( "null", output.toString().trim() );
    }

    /**
     * Test execution with some result
     *
     * @throws IOException Allows network IO errors
     * @throws JMException Allows JMX exceptions
     */
    @Test
    public void testExecuteWithGettingSomething()
        throws IOException, JMException
    {
        MockSession s = new MockSession( output, null );
        s.setBean( "something" );
        command.setSession( s );
        command.execute();
        assertEquals( "something", output.toString().trim() );
    }

    /**
     * Test the case where an illegal bean is requested
     *
     * @throws IOException Allows network IO errors
     * @throws JMException Allows JMX exceptions
     */
    @Test( expected = IllegalArgumentException.class )
    public void testExecuteWithInvalidBean()
        throws IOException, JMException
    {
        command.setBean( "blablabla" );
        command.setSession( new MockSession( output, null ) );
        command.execute();
    }

    /**
     * Test the case where NULL is get
     *
     * @throws IOException Allows network IO errors
     * @throws JMException Allows JMX exceptions
     */
    @Test
    public void testExecuteWithSettingNull()
        throws IOException, JMException
    {
        command.setBean( "null" );
        MockSession s = new MockSession( output, null );
        s.setBean( "something" );
        command.setSession( s );
        command.execute();
        assertNull( s.getBean() );
    }

    /**
     * Test setting names with special character such as dot, dash and underline, without setting a domain first
     *
     * @throws IOException Allows network IO errors
     * @throws JMException Allows JMX exceptions
     */
    @Test
    public void testSettingSpecialCharactersWithoutDomain()
        throws IOException, JMException
    {
        setBeanAndVerify( "domain_name.with-dash:attr.name_1-1=a.b", null, "domain_name.with-dash:attr.name_1-1=a.b" );
    }

    /**
     * Test the case where a domain is set
     *
     * @throws IOException Allows network IO errors
     * @throws JMException Allows JMX exceptions
     */
    @Test
    public void testSettingWithDomain()
        throws IOException, JMException
    {
        setBeanAndVerify( "type=x", "something", "something:type=x" );
    }

    /**
     * Test the case where domain is set
     *
     * @throws IOException Allows network IO errors
     * @throws JMException Allows JMX exceptions
     */
    @Test
    public void testSettingWithoutDomain()
        throws IOException, JMException
    {
        setBeanAndVerify( "something:type=x", null, "something:type=x" );
    }

    /**
     * Test setting names with special character such as dot, dash and underline
     *
     * @throws IOException Allows network IO errors
     * @throws JMException Allows JMX exceptions
     */
    @Test
    public void testSettingWithSpecialCharacters()
        throws IOException, JMException
    {
        setBeanAndVerify( "attr.name_1-1=a.b", "domain_name.with-dash", "domain_name.with-dash:attr.name_1-1=a.b" );
    }
}
TOP

Related Classes of org.cyclopsgroup.jmxterm.cmd.BeanCommandTest

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.