blob: 484ad7f9d52a098152366054197de52b7cd1a1f1 [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 junit.framework.TestCase;
import org.eclipse.equinox.log.ExtendedLogReaderService;
import org.eclipse.equinox.log.ExtendedLogService;
import org.eclipse.equinox.log.LogFilter;
import org.osgi.framework.Bundle;
import org.osgi.framework.ServiceReference;
import org.osgi.service.log.LogService;
public class ExtendedLogServiceTest extends TestCase {
private Bundle bundle;
private Bundle logBundle;
private ExtendedLogService log;
private ServiceReference logReference;
private ExtendedLogReaderService reader;
private ServiceReference readerReference;
private TestListener listener;
public ExtendedLogServiceTest(String name) {
super(name);
}
protected void setUp() throws Exception {
bundle = Activator.getBundleContext().getBundle();
logBundle = Activator.getBundle("org.eclipse.equinox.log");
logBundle.start();
logReference = Activator.getBundleContext().getServiceReference(ExtendedLogService.class.getName());
readerReference = Activator.getBundleContext().getServiceReference(ExtendedLogReaderService.class.getName());
log = (ExtendedLogService) Activator.getBundleContext().getService(logReference);
reader = (ExtendedLogReaderService) Activator.getBundleContext().getService(readerReference);
listener = new TestListener();
reader.addLogListener(listener);
}
protected void tearDown() throws Exception {
reader.removeLogListener(listener);
Activator.getBundleContext().ungetService(logReference);
Activator.getBundleContext().ungetService(readerReference);
logBundle.stop();
}
public void testLogContext() throws Exception {
synchronized (listener) {
log.log(this, LogService.LOG_INFO, null);
listener.wait();
}
assertTrue(listener.getEntryX().getContext() == this);
}
public void testNullLogContext() throws Exception {
synchronized (listener) {
log.log(null, LogService.LOG_INFO, null);
listener.wait();
}
assertTrue(listener.getEntryX().getContext() == null);
}
public void testLogContextWithNullThrowable() throws Exception {
synchronized (listener) {
log.log(this, LogService.LOG_INFO, null, null);
listener.wait();
}
assertTrue(listener.getEntryX().getContext() == this);
}
public void testIsLoggableTrue() throws Exception {
if (!log.isLoggable(LogService.LOG_INFO))
fail();
}
public void testNotIsLoggableWithNoListener() throws Exception {
reader.removeLogListener(listener);
if (log.isLoggable(LogService.LOG_INFO))
fail();
}
public void testNotIsLoggableWithListener() throws Exception {
reader.addLogListener(listener, new LogFilter() {
public boolean isLoggable(Bundle b, String loggerName, int logLevel) {
return false;
}
});
if (log.isLoggable(LogService.LOG_INFO))
fail();
}
public void testNamedLoggerLogNull() throws Exception {
synchronized (listener) {
log.getLogger("test").log(null, 0, null, null);
listener.wait();
}
assertTrue(listener.getEntryX().getLoggerName() == "test");
assertTrue(listener.getEntry().getLevel() == 0);
assertTrue(listener.getEntry().getMessage() == null);
assertTrue(listener.getEntry().getException() == null);
assertTrue(listener.getEntry().getServiceReference() == null);
}
public void testNullLoggerLogNull() throws Exception {
synchronized (listener) {
log.getLogger(null).log(null, 0, null, null);
listener.wait();
}
assertTrue(listener.getEntryX().getLoggerName() == null);
assertTrue(listener.getEntry().getLevel() == 0);
assertTrue(listener.getEntry().getMessage() == null);
assertTrue(listener.getEntry().getException() == null);
assertTrue(listener.getEntry().getServiceReference() == null);
}
public void testNamedLoggerLogFull() throws Exception {
String message = "test";
Throwable t = new Throwable("test");
synchronized (listener) {
log.getLogger("test").log(logReference, LogService.LOG_INFO, message, t);
listener.wait();
}
assertTrue(listener.getEntryX().getLoggerName() == "test");
assertTrue(listener.getEntry().getBundle() == bundle);
assertTrue(listener.getEntry().getLevel() == LogService.LOG_INFO);
assertTrue(listener.getEntry().getMessage().equals(message));
assertTrue(listener.getEntry().getException().getMessage().equals(t.getMessage()));
assertTrue(listener.getEntry().getServiceReference() == logReference);
}
public void testNamedLoggerLogFullWithNullBundle() throws Exception {
String message = "test";
Throwable t = new Throwable("test");
synchronized (listener) {
log.getLogger(null, "test").log(logReference, LogService.LOG_INFO, message, t);
listener.wait();
}
assertTrue(listener.getEntryX().getLoggerName() == "test");
assertTrue(listener.getEntry().getBundle() == bundle);
assertTrue(listener.getEntry().getLevel() == LogService.LOG_INFO);
assertTrue(listener.getEntry().getMessage().equals(message));
assertTrue(listener.getEntry().getException().getMessage().equals(t.getMessage()));
assertTrue(listener.getEntry().getServiceReference() == logReference);
}
public void testNamedLoggerLogFullWithBundle() throws Exception {
String message = "test";
Throwable t = new Throwable("test");
synchronized (listener) {
log.getLogger(bundle, "test").log(logReference, LogService.LOG_INFO, message, t);
listener.wait();
}
assertTrue(listener.getEntryX().getLoggerName() == "test");
assertTrue(listener.getEntry().getBundle() == bundle);
assertTrue(listener.getEntry().getLevel() == LogService.LOG_INFO);
assertTrue(listener.getEntry().getMessage().equals(message));
assertTrue(listener.getEntry().getException().getMessage().equals(t.getMessage()));
assertTrue(listener.getEntry().getServiceReference() == logReference);
}
public void testLoggerIsLoggableTrue() throws Exception {
reader.addLogListener(listener, new LogFilter() {
public boolean isLoggable(Bundle b, String loggerName, int logLevel) {
if (loggerName.equals("test"))
return true;
return false;
}
});
if (!log.getLogger("test").isLoggable(LogService.LOG_INFO))
fail();
}
public void testLoggerNotIsLoggableWithListener() throws Exception {
reader.addLogListener(listener, new LogFilter() {
public boolean isLoggable(Bundle b, String loggerName, int logLevel) {
if (loggerName.equals("test"))
return false;
return true;
}
});
if (log.getLogger("test").isLoggable(LogService.LOG_INFO))
fail();
}
}