/*
* (c) Rob Gordon 2006
*/
package org.oddjob.logging.polling;
import junit.framework.TestCase;
import org.oddjob.logging.ArchiveNameResolver;
import org.oddjob.logging.LogArchiver;
import org.oddjob.logging.LogEvent;
import org.oddjob.logging.LogLevel;
import org.oddjob.logging.LogListener;
import org.oddjob.logging.cache.LogEventSource;
import org.oddjob.logging.cache.PollingLogArchiver;
public class PollingLogArchiverTest extends TestCase {
private class OurLogEventSource implements LogEventSource {
Object component;
long from;
int max;
public LogEvent[] retrieveEvents(Object component, long from, int max) {
this.component = component;
this.from = from;
this.max = max;
if (from < 0) {
return new LogEvent[] { new LogEvent("org.oddjob.TestLogger", 0, LogLevel.INFO, "Test") };
}
else {
return new LogEvent[0];
}
}
}
private class OurArchiveNameResolver implements ArchiveNameResolver {
Object component;
public String resolveName(Object component) {
this.component = component;
return "org.oddjob.TestLogger";
}
}
private class OurLogListener implements LogListener {
LogEvent e;
public void logEvent(LogEvent logEvent) {
this.e = logEvent;
}
}
public void testPoll() {
OurLogEventSource source = new OurLogEventSource();
OurArchiveNameResolver resolver = new OurArchiveNameResolver();
Object component = new Object();
PollingLogArchiver test = new PollingLogArchiver(
resolver, source);
OurLogListener l = new OurLogListener();
// add a listener because LogPoller only polls what's being listened
// to.
test.addLogListener(l, component, LogLevel.INFO, -1, 10);
assertEquals("source component", component, source.component);
assertEquals("source from", -1, source.from);
assertEquals("source max", LogArchiver.MAX_HISTORY, source.max);
assertEquals("resolever component", component, resolver.component);
assertNotNull("event", l.e);
assertEquals("event message", "Test", l.e.getMessage());
l.e = null;
test.poll();
assertEquals("source from", 0, source.from);
assertEquals("source max", LogArchiver.MAX_HISTORY, source.max);
assertNull("no event", l.e);
}
}