blob: 1955e3f487b10a3026bb6b0a1630a4ba5cab2de6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007, 2009 IBM Corporation and others All rights reserved. This
* program and the accompanying materials are made available under the terms of
* the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors: IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.log.test;
import java.io.*;
import java.util.Hashtable;
import junit.framework.TestCase;
import org.eclipse.equinox.log.internal.ExtendedLogReaderServiceFactory;
import org.osgi.framework.*;
import org.osgi.service.log.*;
public class LogReaderServiceTest extends TestCase {
private LogService log;
private ServiceReference logReference;
private LogReaderService reader;
private ServiceReference readerReference;
public LogReaderServiceTest(String name) {
super(name);
}
protected void setUp() throws Exception {
Activator.getBundle("org.eclipse.equinox.log").start(); //$NON-NLS-1$
logReference = Activator.getBundleContext().getServiceReference(LogService.class.getName());
readerReference = Activator.getBundleContext().getServiceReference(LogReaderService.class.getName());
log = (LogService) Activator.getBundleContext().getService(logReference);
reader = (LogReaderService) Activator.getBundleContext().getService(readerReference);
}
protected void tearDown() throws Exception {
Activator.getBundleContext().ungetService(logReference);
Activator.getBundleContext().ungetService(readerReference);
Activator.getBundle("org.eclipse.equinox.log").stop(); //$NON-NLS-1$
}
public void testaddListener() throws Exception {
TestListener listener = new TestListener();
reader.addLogListener(listener);
synchronized (listener) {
log.log(LogService.LOG_INFO, "info"); //$NON-NLS-1$
listener.wait();
}
assertTrue(listener.getEntry().getLevel() == LogService.LOG_INFO);
}
public void testaddListenerTwice() throws Exception {
TestListener listener = new TestListener();
reader.addLogListener(listener);
reader.addLogListener(listener);
synchronized (listener) {
log.log(LogService.LOG_INFO, "info"); //$NON-NLS-1$
listener.wait();
}
assertTrue(listener.getEntry().getLevel() == LogService.LOG_INFO);
}
public void testaddNullListener() throws Exception {
try {
reader.addLogListener(null);
} catch (IllegalArgumentException t) {
return;
}
fail();
}
public void testBadListener() throws Exception {
LogListener listener = new LogListener() {
public synchronized void logged(LogEntry entry) {
notifyAll();
throw new RuntimeException("Expected error for testBadListener."); //$NON-NLS-1$
}
};
reader.addLogListener(listener);
ExtendedLogReaderServiceFactory.setErrorStream(new PrintStream(new OutputStream() {
public void write(int arg0) throws IOException {
}
}));
synchronized (listener) {
log.log(LogService.LOG_INFO, "info"); //$NON-NLS-1$
listener.wait();
}
}
public void testLogEntry() throws Exception {
TestListener listener = new TestListener();
reader.addLogListener(listener);
long timeBeforeLog = System.currentTimeMillis();
synchronized (listener) {
log.log(logReference, LogService.LOG_INFO, "info", new Throwable("test")); //$NON-NLS-1$ //$NON-NLS-2$
listener.wait();
}
assertTrue(listener.getEntry().getBundle() == Activator.getBundleContext().getBundle());
assertTrue(listener.getEntry().getMessage().equals("info")); //$NON-NLS-1$
assertTrue(listener.getEntry().getException().getMessage().equals("test")); //$NON-NLS-1$
assertTrue(listener.getEntry().getServiceReference() == logReference);
assertTrue(listener.getEntry().getTime() >= timeBeforeLog);
assertTrue(listener.getEntry().getLevel() == LogService.LOG_INFO);
}
public void testLogBundleEventInfo() throws Exception {
// this is just a bundle that is harmless to start/stop
Bundle servicesBundle = Activator.getBundle("org.eclipse.osgi.services"); //$NON-NLS-1$
if (servicesBundle == null)
return; // ignore
servicesBundle.stop();
TestListener listener = new TestListener();
reader.addLogListener(listener);
synchronized (listener) {
servicesBundle.start();
listener.wait();
}
assertTrue(listener.getEntry().getLevel() == LogService.LOG_INFO);
}
public void testLogServiceEventInfo() throws Exception {
TestListener listener = new TestListener();
reader.addLogListener(listener);
synchronized (listener) {
Activator.getBundleContext().registerService(Object.class.getName(), new Object(), null);
listener.wait();
}
assertTrue(listener.getEntry().getLevel() == LogService.LOG_INFO);
}
public void testLogServiceEventDebug() throws Exception {
ServiceRegistration registration = Activator.getBundleContext().registerService(Object.class.getName(), new Object(), null);
TestListener listener = new TestListener();
reader.addLogListener(listener);
synchronized (listener) {
registration.setProperties(new Hashtable());
listener.wait();
}
assertTrue(listener.getEntry().getLevel() == LogService.LOG_DEBUG);
}
public void testLogFrameworkEvent() throws Exception {
TestListener listener = new TestListener();
reader.addLogListener(listener);
synchronized (listener) {
Activator.refreshPackages();
listener.wait();
}
assertTrue(listener.getEntry().getLevel() == LogService.LOG_INFO);
}
}