001 // jademx - JADE management using JMX
002 // Copyright 2005-2006 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.unit;
019
020
021 import jade.jademx.JadeMXSuiteTest;
022 import jade.jademx.config.jademx.onto.ConfigAgentSpecifier;
023 import jade.jademx.config.jademx.onto.ConfigPlatform;
024 import jade.jademx.config.jademx.onto.ConfigRuntime;
025 import jade.jademx.config.jademx.onto.JademxConfig;
026 import jade.jademx.mbean.JadeFactory;
027 import jade.jademx.mbean.JadeRuntimeMBean;
028 import jade.jademx.server.JadeMXServer;
029 import jade.jademx.server.JadeMXServerFactory;
030 import jade.jademx.util.ThrowableUtil;
031 import jade.util.Logger;
032
033 import javax.management.MBeanServer;
034 import javax.management.ObjectName;
035
036 import junit.framework.Test;
037 import junit.framework.TestCase;
038 import junit.framework.TestSuite;
039
040 /**
041 * test the null agent
042 * @author David Bernstein, <a href="http://www.caboodlenetworks.com"
043 * >Caboodle Networks, Inc.</a>
044 */
045 public class NullAgentTest extends TestCase {
046
047 /** my logger */
048 private final Logger logger =
049 Logger.getMyLogger(NullAgentTest.class.getName());
050
051 // original inject message before AIDs localized
052 // "(REQUEST"+
053 // " :sender ( agent-identifier :name pinger@diamond:1099/JADE )"+
054 // " :receiver (set ( agent-identifier :name pingee@diamond:1099/JADE ) )"+
055 // " :content \"((action (agent-identifier :name pingee@diamond:1099/JADE) (ping)))\" "+
056 // " :reply-with ping1 :language fipa-sl :ontology ping :protocol fipa-request"+
057 // " :conversation-id ping-conv-1127942689278-18131271 )";
058
059 // /** reply-id used in message to inject */
060 // private static final String INJECT_REPLY_ID = "pinger@diamond:1099/JADE1127942689278";
061 // /** AID for pingee agent in message to inject */
062 // private static final String PINGEE_INJECT_AID = "pingee@diamond:1099/JADE";
063 // /** AID for pinger agent in message to inject */
064 // private static final String PINGER_INJECT_AID = "pinger@diamond:1099/JADE";
065 // /** local name for pingee agent */
066 // private static final String PINGEE_LOCAL_NAME = "pingee";
067 //
068 // /** message to inject */
069 // private final static String injectMsg =
070 // "(REQUEST"+
071 // " :sender ( agent-identifier :name pinger )"+
072 // " :receiver (set ( agent-identifier :name pingee ) )"+
073 // " :content \"((action (agent-identifier :name pingee@diamond:1099/JADE) (ping)))\" "+
074 // " :reply-with ping1 :language fipa-sl :ontology ping :protocol fipa-request"+
075 // " :conversation-id ping-conv-1127942689278-18131271 )";
076 //
077 // /** message to expect */
078 // private final static String expectMsg =
079 // "(INFORM"+
080 // " :sender ( agent-identifier :name pingee@diamond:1099/JADE )"+
081 // " :receiver (set ( agent-identifier :name pinger@diamond:1099/JADE ) )"+
082 // " :content \"((result (action (agent-identifier :name pingee@diamond:1099/JADE) (ping)) pong))\" "+
083 // " :reply-with pinger@diamond:1099/JADE1127942689278 :in-reply-to ping1 "+
084 // ":language fipa-sl :ontology ping :protocol fipa-request"+
085 // " :conversation-id ping-conv-1127942689278-18131271 )";
086
087 // SETUP/TEARDOWN
088
089 /** MBeanServer being used */
090 private MBeanServer mBeanServer = null;
091 /** created JadeRuntimeMBean */
092 private JadeRuntimeMBean runtime = null;
093 /** ObjectName for JadeRuntimeMBean */
094 private ObjectName runtimeON = null;
095
096
097 /* (non-Javadoc)
098 * @see junit.framework.TestCase#setUp()
099 */
100 protected void setUp() throws Exception {
101 // create a jademx config of one ping agent
102 JademxConfig jademxConfig = buildNullAgentCfg();
103 // start the configuration
104 // first get JadeMXServer
105 JadeMXServer jadeMXServer = null;
106 try {
107 jadeMXServer = JadeMXServerFactory.jadeMXServerBySysProp();
108 }
109 catch (Exception e) {
110 fail(ThrowableUtil.errMsg("problem getting jademx server",e));
111 }
112 mBeanServer = jadeMXServer.getMBeanServer();
113 // now get a factory to use
114 JadeFactory jadeFactory = new JadeFactory( jadeMXServer );
115 // instantiate the configuration
116 try {
117 runtime = jadeFactory.instantiateRuntime( jademxConfig );
118 }
119 catch (Exception e) {
120 fail(ThrowableUtil.errMsg("problem instantiating configuration",e));
121 }
122 // get ObjectName for runtime
123 runtimeON = runtime.getObjectName();
124 logger.log( Logger.FINE,"runtimeON:"+runtimeON);
125 }
126
127 /* (non-Javadoc)
128 * @see junit.framework.TestCase#tearDown()
129 */
130 protected void tearDown() throws Exception {
131 // shutdown the configuration
132 try {
133 mBeanServer.invoke( runtimeON,
134 JadeRuntimeMBean.OPER_SHUTDOWN,
135 new Object[]{},
136 JadeRuntimeMBean.OPER_SHUTDOWN_SIGNATURE );
137 }
138 catch ( Exception e ) {
139 fail(ThrowableUtil.errMsg("problem shutting down JADE runtime", e));
140 }
141 }
142
143 /**
144 * make a configuration for testing use programmatically
145 */
146 private JademxConfig buildNullAgentCfg() {
147 JademxConfig jademxConfig = new JademxConfig();
148 ConfigRuntime runtime = new ConfigRuntime();
149 jademxConfig.addRuntime( runtime );
150 ConfigPlatform platform = new ConfigPlatform();
151 runtime.addPlatform( platform );
152 platform.addOption( "port=1917" );
153 platform.addOption( "nomtp=true" );
154 ConfigAgentSpecifier agentSpecifier;
155 agentSpecifier =
156 new ConfigAgentSpecifier(
157 "null",
158 "jade.jademx.unit.NullAgent" );
159 platform.addAgentSpecifier( agentSpecifier );
160 logger.log( Logger.FINE,"jademxconfig:"+jademxConfig);
161 return jademxConfig;
162 }
163
164 // TESTS
165
166 /** test unit testing with calls via MBeanServer */
167 public void testNullAgent() {
168 // setUp and tearDown started and stopped null agent
169 assertTrue(true);
170
171 }
172
173 // suite
174
175 /**
176 * return the implicit suite of tests
177 * @return the implicit suite of tests
178 */
179 public static Test suite() {
180 return new TestSuite(
181 NullAgentTest.class,
182 JadeMXSuiteTest.nameWithClass( NullAgentTest.class,
183 "testing null agent") );
184 }
185
186 }