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.agent;
019
020 import javax.management.Attribute;
021 import javax.management.AttributeList;
022
023 import jade.jademx.JadeMXSuiteTest;
024 import jade.jademx.mbean.JadeAgent;
025 import jade.jademx.mbean.JadeFactory;
026 import jade.jademx.mbean.JadePlatform;
027 import jade.jademx.mbean.JadeRuntime;
028 import jade.jademx.mbean.JademxException;
029 import jade.jademx.server.JadeMXServer;
030 import jade.jademx.server.JadeMXServerFactory;
031 import junit.framework.Test;
032 import junit.framework.TestCase;
033 import junit.framework.TestSuite;
034
035 /**
036 * JadeAgent MBean test
037 * @author David Bernstein, <a href="http://www.caboodlenetworks.com"
038 * >Caboodle Networks, Inc.</a>
039 */
040 public class JademxAgentTest extends TestCase {
041
042 ///** test(suite) name */
043 //private static String name =
044 // JadeMXSuiteTest.nameWithClass(
045 // JademxAgentTest.class,
046 // "testing JadeAgent: JADE agent MBean class");
047
048
049 /** jadeMXServer we're using */
050 private JadeMXServer jadeMXServer = null;
051
052 /** runtime for test use */
053 private JadeRuntime jadeRuntime = null;
054
055 /** mbean for platform under test */
056 JadePlatform platformMBean = null;
057
058 /** resource name for configuration of one nop agent */
059 private static final String ONE_BASE_CONFIG_RESOURCE =
060 "jade/jademx/config/one-base-agent.xml";
061
062 /** name for dummy agent */
063 private static final String AGENT_LOCAL_NAME_DUMMY = "dummy";
064
065
066 // tests
067
068
069 /* (non-Javadoc)
070 * @see junit.framework.TestCase#setUp()
071 */
072 protected void setUp() throws Exception {
073 // first get JadeMXServer
074 jadeMXServer = JadeMXServerFactory.jadeMXServerBySysProp();
075 // now get a factory to use
076 JadeFactory jadeFactory =
077 new JadeFactory( jadeMXServer );
078 jadeRuntime = (JadeRuntime)jadeFactory.runtimeInstance();
079 //JadeMXSuiteTest.listMBeans(mBeanServer, "at end of setUp()");
080 JadePlatform platformMBeans[] =
081 jadeRuntime.platformsFromConfigResource(
082 ONE_BASE_CONFIG_RESOURCE );
083 platformMBean = platformMBeans[0];
084 }
085
086
087
088 /* (non-Javadoc)
089 * @see junit.framework.TestCase#tearDown()
090 */
091 protected void tearDown() throws Exception {
092 //JadeMXSuiteTest.listMBeans(mBeanServer,
093 //"at start of JadePlatformTest.tearDown()");
094 if ( null != jadeRuntime ) {
095 jadeRuntime.shutdown();
096 }
097 //JadeMXSuiteTest.listMBeans(mBeanServer,
098 //"at end of JadePlatformTest.tearDown()");
099 }
100
101 /**
102 * run the NOP agent, which exercises base class code during setup
103 * @throws JademxException
104 */
105 public void testJademxAgentBase() throws JademxException {
106 JadeAgent jadeAgent = platformMBean.getAgent( AGENT_LOCAL_NAME_DUMMY );
107 boolean bound = jadeAgent.waitForJademxAgentBinding(59*1000/*59sec*/,0);
108 assertTrue(bound);
109 AttributeList aList = jadeAgent.getAttributes( new String[0]);
110 assertEquals("expected empty attribute list but is size "+aList.size(),
111 0,aList.size());
112 jadeAgent.setAttributes( aList );
113 try {
114 aList = new AttributeList( 1 );
115 aList.add( new Attribute("foo","bar"));
116 jadeAgent.setAttributes( aList );
117 fail("didn't get exception trying to set non-existent attribute");
118 }
119 catch ( RuntimeException re ) {
120 assertTrue(true);
121 }
122
123 }
124
125 // suite
126
127 /**
128 * return the implicit suite of tests
129 * @return the implicit suite of tests
130 */
131 public static Test suite() {
132 return new TestSuite(
133 JademxAgentTest.class,
134 JadeMXSuiteTest.nameWithClass( JademxAgentTest.class,
135 "testing JademxAgent: jademx agent superclass") );
136 }
137
138
139
140 }