KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > oddjob > jmx > client > RemoteLogPollerTest


1 /*
2  * (c) Rob Gordon 2005
3  */

4 package org.oddjob.jmx.client;
5
6 import java.lang.reflect.Proxy JavaDoc;
7
8 import javax.management.MBeanServer JavaDoc;
9 import javax.management.MBeanServerFactory JavaDoc;
10 import javax.management.ObjectName JavaDoc;
11
12 import junit.framework.TestCase;
13
14 import org.apache.commons.beanutils.DynaBean;
15 import org.apache.log4j.Logger;
16 import org.oddjob.arooa.registry.ComponentRegistry;
17 import org.oddjob.jmx.server.DynaBeanInfo;
18 import org.oddjob.jmx.server.InterfaceManagerFactory;
19 import org.oddjob.jmx.server.OddjobMBean;
20 import org.oddjob.jmx.server.RemoteOddjobInfo;
21 import org.oddjob.jmx.server.ServerContext;
22 import org.oddjob.jmx.server.ServerModel;
23 import org.oddjob.logging.ConsoleArchiver;
24 import org.oddjob.logging.LogArchiver;
25 import org.oddjob.logging.LogHelper;
26 import org.oddjob.logging.LogEvent;
27 import org.oddjob.logging.LogLevel;
28 import org.oddjob.logging.LogListener;
29 import org.oddjob.util.ThreadManager;
30
31 public class RemoteLogPollerTest extends TestCase {
32     private static final Logger logger = Logger.getLogger(RemoteLogPollerTest.class);
33
34     private ComponentRegistry cr;
35     
36     public void setUp() {
37         logger.debug("================== Running " + getName() + "================");
38         System.setProperty("mx4j.log.priority", "trace");
39         cr = new ComponentRegistry();
40     }
41     
42     public class LogThing {
43         public String JavaDoc getlogger() { return "foo"; }
44     }
45     
46     public class NoLogThing {
47     }
48     
49     public class Archivers implements LogArchiver, ConsoleArchiver {
50         public void addLogListener(LogListener l, Object JavaDoc component, LogLevel level, long from, int max) {
51             l.logEvent(new LogEvent("foo", 0, LogLevel.INFO, "Hello"));
52         }
53         public void removeLogListener(LogListener l, Object JavaDoc component) {
54         }
55         public void addConsoleListener(LogListener l, Object JavaDoc compoennt, long from, int max) {
56             l.logEvent(new LogEvent("console", 0, LogLevel.INFO, "Goodbye"));
57         }
58         public void removeConsoleListener(LogListener l, Object JavaDoc component) {
59         }
60         public String JavaDoc consoleIdFor(Object JavaDoc component) { return "console"; }
61     };
62     
63     class LL implements LogListener {
64         String JavaDoc text;
65         public void logEvent(LogEvent logEvent) {
66             text = logEvent.getMessage();
67         }
68     }
69     
70     class MyServerContext extends ServerContext {
71         MyServerContext(ServerModel m) { super(m); }
72         Archivers archivers = new Archivers();
73         public ConsoleArchiver getConsoleArchiver() {
74             return archivers;
75         }
76         public LogArchiver getLogArchiver() {
77             return archivers;
78         }
79     }
80     
81     public void testLogging() throws Exception JavaDoc {
82         LogThing component = new LogThing();
83         InterfaceManagerFactory imf = new InterfaceManagerFactory();
84         imf.addInterfaceInfo(new DynaBeanInfo());
85         imf.addInterfaceInfo(new RemoteOddjobInfo());
86         
87         ServerModel sm = new ServerModel("//test/",
88                 new ThreadManager(),
89                 imf);
90         
91         OddjobMBean mb = new OddjobMBean(component, null,
92                 new MyServerContext(sm));
93         
94         MBeanServer JavaDoc mbs = MBeanServerFactory.createMBeanServer();
95         ObjectName JavaDoc on = new ObjectName JavaDoc("oddjob:name=whatever");
96         mbs.registerMBean(mb, on);
97
98         Object JavaDoc proxy = ClientNode.createProxyFor(on, mbs, this, cr, new DummyNP());
99         assertTrue(proxy instanceof DynaBean);
100         assertEquals("foo", LogHelper.getLogger(proxy));
101         
102         ClientNode cn = (ClientNode) Proxy.getInvocationHandler(proxy);
103
104         assertEquals("console", cn.consoleId());
105
106         RemoteLogPoller poller = new RemoteLogPoller(proxy, 10, 10);
107         
108         LL cl = new LL();
109         LL ll = new LL();
110
111         poller.addConsoleListener(cl, proxy, -1, 100);
112         poller.addLogListener(ll, proxy, LogLevel.DEBUG, -1, 5);
113         
114         poller.poll();
115         
116         assertEquals("Hello", ll.text);
117         assertEquals("Goodbye", cl.text);
118         
119     }
120     
121     public void testNotLogging() throws Exception JavaDoc {
122         NoLogThing component = new NoLogThing();
123         InterfaceManagerFactory imf = new InterfaceManagerFactory();
124         imf.addInterfaceInfo(new DynaBeanInfo());
125         imf.addInterfaceInfo(new RemoteOddjobInfo());
126         
127         ServerModel sm = new ServerModel("//test/",
128                 new ThreadManager(),
129                 imf);
130         
131         OddjobMBean mb = new OddjobMBean(component, null,
132                 new MyServerContext(sm));
133         
134         
135         MBeanServer JavaDoc mbs = MBeanServerFactory.createMBeanServer();
136         ObjectName JavaDoc on = new ObjectName JavaDoc("oddjob:name=whatever");
137         mbs.registerMBean(mb, on);
138
139         Object JavaDoc proxy = ClientNode.createProxyFor(on, mbs, this, cr, new DummyNP());
140         assertTrue(proxy instanceof DynaBean);
141         assertEquals(null, LogHelper.getLogger(proxy));
142         
143         ClientNode cn = (ClientNode) Proxy.getInvocationHandler(proxy);
144
145         assertEquals("console", cn.consoleId());
146
147         RemoteLogPoller poller = new RemoteLogPoller(proxy, 10, 10);
148         
149         LL cl = new LL();
150         LL ll = new LL();
151
152         poller.addConsoleListener(cl, proxy, -1, 100);
153         poller.addLogListener(ll, proxy, LogLevel.DEBUG, -1, 5);
154         
155         poller.poll();
156         
157         assertEquals("No Log available", ll.text);
158         assertEquals("Goodbye", cl.text);
159         
160     }
161 }
162
Popular Tags