blob: 38dd11fd33586fc9ca9c80a946dae5336eb86620 [file] [log] [blame]
package org.eclipse.epp.usagedata.internal.gathering.services;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.epp.usagedata.internal.gathering.events.UsageDataEvent;
import org.eclipse.epp.usagedata.internal.gathering.events.UsageDataEventListener;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* This test class tests the various method concerned with providing
* usage data events to the service. This test case does not need to
* run inside the workbench (i.e. it can be "Run As... > JUnit Test".
* @author Wayne
*
*/
public class UsageDataServiceTests {
private UsageDataService service;
@Before
public void setUp() throws Exception {
service = new UsageDataService() {
@Override
protected void startMonitors() {
}
/*
* Override this method since we don't really care
* if the workbench is running and (at least in some
* cases) it will never start running.
*/
@Override
protected void waitForWorkbenchToFinishStarting() {
}
};
service.startMonitoring();
}
@After
public void tearDown() throws Exception {
service.stopMonitoring();
}
@Test (timeout=2000)
public void testRecordEvent() throws Exception {
final List<UsageDataEvent> events = new ArrayList<UsageDataEvent>();
UsageDataEventListener listener = new UsageDataEventListener() {
public void accept(UsageDataEvent event) {
events.add(event);
}
};
service.addUsageDataEventListener(listener);
long time = System.currentTimeMillis();
service.recordEvent("bogus", "bogus", "bogus", "bogus");
while (events.isEmpty()) Thread.sleep(100);
// There should be only one event.
UsageDataEvent event = events.get(0);
assertEquals("bogus", event.bundleId);
assertNull(event.bundleVersion);
assertTrue(Math.abs(time - event.when) < 2000);
}
@Test (timeout=2000)
public void testRecordEventWithBundleVersionResolution() throws Exception {
final List<UsageDataEvent> events = new ArrayList<UsageDataEvent>();
UsageDataEventListener listener = new UsageDataEventListener() {
public void accept(UsageDataEvent event) {
events.add(event);
}
};
service.addUsageDataEventListener(listener);
service.recordEvent("started", "bundle", "bogus", "bogus_bundle", "bogus_version");
service.recordEvent("bogus", "bogus", "bogus", "bogus_bundle");
while (events.isEmpty()) Thread.sleep(100);
UsageDataEvent bundleEvent = events.get(0);
assertEquals("bogus_bundle", bundleEvent.bundleId);
assertEquals("bogus_version", bundleEvent.bundleVersion);
// The first event is the bundle start, the second one is the one we're interested in.
UsageDataEvent event = events.get(1);
assertEquals("bogus_bundle", event.bundleId);
assertEquals("bogus_version", event.bundleVersion);
}
}