001    // jademx - JADE management using JMX
002    // Copyright 2005 Caboodle Networks, Inc.
003    //
004    // This library is free software; you can redistribute it and/or
005    // modify it under the terms of the GNU Lesser General Public
006    // License as published by the Free Software Foundation; either
007    // version 2.1 of the License, or (at your option) any later version.
008    //
009    // This library is distributed in the hope that it will be useful,
010    // but WITHOUT ANY WARRANTY; without even the implied warranty of
011    // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
012    // Lesser General Public License for more details.
013    //
014    // You should have received a copy of the GNU Lesser General Public
015    // License along with this library; if not, write to the Free Software
016    // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
017    
018    package jade.jademx;
019    
020    import java.util.Iterator;
021    
022    import javax.management.MBeanServer;
023    import javax.management.ObjectName;
024    
025    import junit.framework.Test;
026    import junit.framework.TestSuite;
027    
028    import jade.jademx.agent.AgentSuiteTest;
029    import jade.jademx.config.ConfigSuiteTest;
030    import jade.jademx.mbean.MBeanSuiteTest;
031    import jade.jademx.server.JadeMXServerFactory;
032    import jade.jademx.server.ServerSuiteTest;
033    import jade.jademx.unit.UnitSuiteTest;
034    import jade.jademx.util.UtilSuiteTest;
035    import jade.util.Logger;
036    
037    /** 
038     * test suite for jademx
039     * @author David Bernstein
040     */
041    public class JadeMXSuiteTest extends TestSuite {
042        
043        /**
044         * make a JadeMXSuiteTest
045         */
046        public JadeMXSuiteTest() {
047            super("jademx JUnit test suite, " + 
048                    JadeMXServerFactory.SERVER_TYPE_PROPERTY + "=" +
049                    JadeMXServerFactory.serverClassName() );
050        }    
051    
052        
053        /**
054         * factory for creating suite of tests
055         * @return test suite
056         */
057        public static Test suite() {
058            TestSuite suite = 
059                new TestSuite( 
060                        nameWithClass( JadeMXSuiteTest.class,
061                        "jade.jademx.server package" ) );
062            suite.addTest( UtilSuiteTest.suite() );
063            suite.addTest( ConfigSuiteTest.suite() );
064            suite.addTest( ServerSuiteTest.suite() );
065            suite.addTest( MBeanSuiteTest.suite() );
066            suite.addTest( AgentSuiteTest.suite() );
067            suite.addTest( UnitSuiteTest.suite() );
068            return suite;
069        }
070        
071    
072        // helper methods
073        
074        /**
075         * convenience method to append classname to a name
076         * @param theClass class to make expanded name for
077         * @param simpleName simple name for test suite
078         * @return simpleName-param (theClass-param.getName)
079         */
080        public static String nameWithClass( Class theClass, String simpleName ) {
081            StringBuffer sb = new StringBuffer();
082            sb.append( simpleName );
083            sb.append( " (" );
084            sb.append( theClass.getName() );
085            sb.append( ")" );
086            return sb.toString();
087        }
088    
089      
090        /** my logger */
091        private static final Logger logger = 
092            Logger.getMyLogger(JadeMXSuiteTest.class.getName());
093        /** list out current mbeans */
094        public static void listMBeans( MBeanServer mBeanServer, String msg) {
095            StringBuffer sb = new StringBuffer();
096            sb.append( "<<<\n" );
097            sb.append( msg + "\n");
098            if ( null == mBeanServer ) {
099                sb.append( "null MBeanServer\n" );       
100            }
101            else {
102                Iterator mBeanNameIter = mBeanServer.queryNames( null, null ).iterator();
103                int mBeanNameCount = 0;
104                while ( mBeanNameIter.hasNext() ) {
105                    ObjectName mBeanName = (ObjectName)mBeanNameIter.next();
106                    String name =  mBeanName.getCanonicalName();
107                    if ( !name.startsWith("java.")) {
108                        mBeanNameCount++;
109                        sb.append( mBeanNameCount+". "+name+"\n");
110                    }
111                }
112            }
113            sb.append( ">>>" );
114            logger.log( Logger.INFO, sb.toString() );
115        }
116        
117    }