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.mbean;
019
020 import jade.jademx.server.JadeMXServer;
021 import jade.jademx.server.JadeMXServerFactory;
022 import jade.jademx.util.ThrowableUtil;
023 import jade.jademx.JadeMXSuiteTest;
024 import junit.framework.Test;
025 import junit.framework.TestCase;
026 import junit.framework.TestSuite;
027
028 /**
029 * JadeRuntime MBean test
030 * @author David Bernstein, <a href="http://www.caboodlenetworks.com"
031 * >Caboodle Networks, Inc.</a>
032 */
033 public class JadeFactoryTest extends TestCase {
034
035 /** the JadeMXServer */
036 private JadeMXServer jadeMXServer = null;
037
038 ///** test(suite) name */
039 //private static String name =
040 // JadeMXSuiteTest.nameWithClass(
041 // JadeRuntimeTest.class,
042 // "testing JadeRuntime: JADE runtime MBean class");
043
044 // tests
045
046
047 /* (non-Javadoc)
048 * @see junit.framework.TestCase#setUp()
049 */
050 protected void setUp() throws Exception {
051 // first get JadeMXServer
052 try {
053 jadeMXServer = JadeMXServerFactory.jadeMXServerBySysProp();
054 }
055 catch ( Exception e ) {
056 fail( ThrowableUtil.errMsg(
057 "problem creating JadeMXServer by system property", e) );
058 }
059 // now get its MBeanServer
060 //jadeMXServer = jadeMXServer.getMBeanServer();
061 //JadeMXSuiteTest.listMBeans(jadeMXServer,"at end of setup()");
062 }
063
064
065
066 /* (non-Javadoc)
067 * @see junit.framework.TestCase#tearDown()
068 */
069 //protected void tearDown() throws Exception {
070 //JadeMXSuiteTest.listMBeans(jadeMXServer,"at end of tearDown()");
071 //}
072
073 /**
074 * guts of testing a factory
075 * @param jadeFactory factory to test
076 * @param domain expected object name domain for factory
077 * @param runtimeName expected runtimeName for factory
078 * @param threadGroupName expected threadGroupName for factory
079 */
080 private void doIt(
081 JadeFactory jadeFactory, String domain,
082 String runtimeName, String threadGroupName ) {
083 // verify runtime instance
084 JadeRuntimeMBean jadeRuntime = null;
085 try {
086 jadeRuntime = jadeFactory.runtimeInstance();
087 assertTrue( jadeRuntime + " not instanceof JadeRuntimeMBean",
088 jadeRuntime instanceof JadeRuntimeMBean );
089 }
090 catch ( Exception e ) {
091 fail( ThrowableUtil.errMsg(
092 "problem getting runtime instance from jade factory", e) );
093 }
094 // verify object name domain
095 assertEquals( "returned JadeFactory object name domain \""+
096 jadeFactory.getObjectNameDomain()+
097 "\" not one expected: \""+domain+"\"",
098 domain, jadeFactory.getObjectNameDomain() );
099 // verify runtime name
100 assertEquals( "returned JadeFactory runtime name \""+
101 jadeFactory.getRuntimeName() +
102 "\" not one expected: \""+runtimeName+"\"",
103 runtimeName, jadeFactory.getRuntimeName() );
104 // verify thread group name
105 assertEquals( "returned JadeFactory thread group name \""+
106 jadeFactory.getThreadGroupName() +
107 "\" not one expected: \""+threadGroupName+"\"",
108 threadGroupName, jadeFactory.getThreadGroupName() );
109 // verify stringified object
110 String expectedStringified =
111 JadeFactory.class.getName() +
112 "[objectNameDomain="+domain+
113 ",threadGroupName="+threadGroupName+
114 ",runtimeName="+runtimeName+"]";
115 assertEquals( "returned JadeFactory.toString() \""+
116 jadeFactory.toString() +
117 "\" not one expected: \""+expectedStringified+"\"",
118 expectedStringified, jadeFactory.toString() );
119
120 // shutdown the runtime MBean
121 try {
122 jadeRuntime.shutdown();
123 }
124 catch ( Exception e) {
125 fail( ThrowableUtil.errMsg(
126 "problem shutting down JadeRuntime", e) );
127 }
128 }
129
130 /** default name for thread group, must match that in JadeFactory */
131 private static final String THREAD_GROUP_DEFAULT_NAME =
132 "JADE runtime";
133 /** default name property for runtime instance, must match factory's */
134 private static final String RUNTIME_NAME_DEFAULT = "default";
135
136 /**
137 * Test using default JadeFactory
138 */
139 public void testDefaultFactory() {
140 doIt( new JadeFactory( jadeMXServer ),
141 JadeFactory.OBJECT_NAME_DOMAIN_DEFAULT,
142 RUNTIME_NAME_DEFAULT,
143 THREAD_GROUP_DEFAULT_NAME );
144 }
145
146 /**
147 * Test using JadeFactory specifying object domain
148 */
149 public void testFactorySpecifyingDomain() {
150 String objDomain = "FooObjDomain";
151 doIt( new JadeFactory( jadeMXServer, objDomain ),
152 objDomain, RUNTIME_NAME_DEFAULT, THREAD_GROUP_DEFAULT_NAME );
153 }
154
155 /**
156 * Test using JadeFactory specifying object domain and thread group
157 */
158 public void testFactorySpecifyingDomainRuntime() {
159 String objDomain = "BarObjDomain";
160 String runtimeName = "QuuxRuntime";
161 doIt( new JadeFactory( jadeMXServer, objDomain, runtimeName ),
162 objDomain, runtimeName, THREAD_GROUP_DEFAULT_NAME );
163 }
164 /**
165 * Test using JadeFactory specifying object domain and thread group
166 */
167 public void testFactorySpecifyingDomainRuntimeThreadGroup() {
168 String objDomain = "BarObjDomain";
169 String runtimeName = "FooRuntime";
170 String threadGroupName = "BazThreadGroup";
171 doIt( new JadeFactory( jadeMXServer, objDomain, runtimeName,
172 threadGroupName ),
173 objDomain, runtimeName, threadGroupName );
174 }
175
176 // suite
177
178 /**
179 * return the implicit suite of tests
180 * @return the implicit suite of tests
181 */
182 public static Test suite() {
183 return new TestSuite(
184 JadeFactoryTest.class,
185 JadeMXSuiteTest.nameWithClass( JadeFactoryTest.class,
186 "testing JadeFactory: jade runtime MBean factory class") );
187 }
188
189
190
191 }