/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.log.internal;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.Serializable;
import java.util.Enumeration;
import java.util.List;
import java.util.Vector;
import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Test;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.service.component.ComponentContext;
import org.osgi.service.log.LogEntry;
import org.osgi.service.log.LogListener;
import org.osgi.service.log.LogReaderService;
import de.rcenvironment.core.log.SerializableLogEntry;
import de.rcenvironment.core.log.SerializableLogListener;
/**
* Test cases for {@link RemotableLogReaderServiceImp}.
*
* @author Doreen Seider
*/
public class RemotableLogReaderServiceImplTest {
private static final String BUNDLE_SYMBOLIC_NAME = "de.rce.comp.id";
private final String removed = "removed";
private final String added = "added";
private final LogEntry logEntry = EasyMock.createNiceMock(LogEntry.class);
private final SerializableLogListener logListener = new SerializableLogListener() {
private static final long serialVersionUID = 1L;
@Override
public void logged(SerializableLogEntry entry) {}
@Override
public Class<? extends Serializable> getInterface() {
return SerializableLogListener.class;
}
};
private RemotableLogReaderServiceImpl logReader = new RemotableLogReaderServiceImpl();
/** Set up method. */
@Before
public void setUp() {
logReader.bindLogReaderService(new DummyLogReaderService());
Bundle bundleMock = EasyMock.createNiceMock(Bundle.class);
EasyMock.expect(bundleMock.getSymbolicName()).andReturn(BUNDLE_SYMBOLIC_NAME).anyTimes();
EasyMock.replay(bundleMock);
BundleContext bundleContextMock = EasyMock.createNiceMock(BundleContext.class);
EasyMock.expect(bundleContextMock.getBundle()).andReturn(bundleMock).anyTimes();
EasyMock.replay(bundleContextMock);
ComponentContext contextMock = EasyMock.createNiceMock(ComponentContext.class);
EasyMock.expect(contextMock.getBundleContext()).andReturn(bundleContextMock).anyTimes();
EasyMock.replay(contextMock);
Bundle bundle = EasyMock.createNiceMock(Bundle.class);
EasyMock.expect(bundle.getSymbolicName()).andReturn("bundle");
EasyMock.replay(bundle);
EasyMock.expect(logEntry.getBundle()).andReturn(bundle);
EasyMock.expect(logEntry.getMessage()).andReturn("message");
EasyMock.replay(logEntry);
}
/** Test. */
@Test
public void testAddAndRemoveListener() {
try {
logReader.addLogListener(logListener);
fail();
} catch (RuntimeException e) {
assertTrue(added.equals(e.getMessage()));
}
try {
logReader.removeLogListener(logListener);
fail();
} catch (RuntimeException e) {
assertTrue(removed.equals(e.getMessage()));
}
}
/** Test. */
@Test
public void testGetLog() {
List<SerializableLogEntry> entries = logReader.getLog();
assertEquals(1, entries.size());
}
/**
* Dummy local {@link LogReaderService} implementation.
* @author Doreen Seider
*/
private class DummyLogReaderService implements LogReaderService {
@Override
public void addLogListener(LogListener listener) {
if (listener != logListener) {
throw new RuntimeException(added);
}
}
@Override
public Enumeration<LogEntry> getLog() {
@SuppressWarnings("serial")
List<LogEntry> logEntries = new Vector<LogEntry>() {{ add(logEntry); }};
return ((Vector<LogEntry>) logEntries).elements();
}
@Override
public void removeLogListener(LogListener listener) {
if (listener != logListener) {
throw new RuntimeException(removed);
}
}
}
}