use of org.eclipse.osgi.tests.container.dummys.DummyModuleDatabase.DummyModuleEvent in project rt.equinox.framework by eclipse.
the class TestModuleContainer method testEventsRefresh.
@Test
public void testEventsRefresh() throws BundleException, IOException {
DummyContainerAdaptor adaptor = createDummyAdaptor();
ModuleContainer container = adaptor.getContainer();
DummyModuleDatabase database = adaptor.getDatabase();
Module systemBundle = installDummyModule("system.bundle.MF", Constants.SYSTEM_BUNDLE_LOCATION, container);
container.resolve(Arrays.asList(systemBundle), true);
Module c1 = installDummyModule("c1_v1.MF", "c1_v1", container);
Module c2 = installDummyModule("c2_v1.MF", "c2_v1", container);
Module c3 = installDummyModule("c3_v1.MF", "c3_v1", container);
Module c4 = installDummyModule("c4_v1.MF", "c4_v1", container);
Module c5 = installDummyModule("c5_v1.MF", "c5_v1", container);
Module c6 = installDummyModule("c6_v1.MF", "c6_v1", container);
Module c7 = installDummyModule("c7_v1.MF", "c7_v1", container);
container.resolve(Arrays.asList(c1, c2, c3, c4, c5, c6, c7), true);
// throw away installed and resolved events
database.getModuleEvents();
container.refresh(Arrays.asList(systemBundle));
List<DummyModuleEvent> actual = database.getModuleEvents();
List<DummyModuleEvent> expected = new ArrayList<DummyModuleEvent>(Arrays.asList(new DummyModuleEvent(systemBundle, ModuleEvent.UNRESOLVED, State.INSTALLED), new DummyModuleEvent(c1, ModuleEvent.UNRESOLVED, State.INSTALLED), new DummyModuleEvent(c2, ModuleEvent.UNRESOLVED, State.INSTALLED), new DummyModuleEvent(c3, ModuleEvent.UNRESOLVED, State.INSTALLED), new DummyModuleEvent(c4, ModuleEvent.UNRESOLVED, State.INSTALLED), new DummyModuleEvent(c5, ModuleEvent.UNRESOLVED, State.INSTALLED), new DummyModuleEvent(c6, ModuleEvent.UNRESOLVED, State.INSTALLED), new DummyModuleEvent(c7, ModuleEvent.UNRESOLVED, State.INSTALLED), new DummyModuleEvent(systemBundle, ModuleEvent.RESOLVED, State.RESOLVED), new DummyModuleEvent(c1, ModuleEvent.RESOLVED, State.RESOLVED), new DummyModuleEvent(c2, ModuleEvent.RESOLVED, State.RESOLVED), new DummyModuleEvent(c3, ModuleEvent.RESOLVED, State.RESOLVED), new DummyModuleEvent(c4, ModuleEvent.RESOLVED, State.RESOLVED), new DummyModuleEvent(c5, ModuleEvent.RESOLVED, State.RESOLVED), new DummyModuleEvent(c6, ModuleEvent.RESOLVED, State.RESOLVED), new DummyModuleEvent(c7, ModuleEvent.RESOLVED, State.RESOLVED)));
assertEvents(expected, actual, false);
}
use of org.eclipse.osgi.tests.container.dummys.DummyModuleDatabase.DummyModuleEvent in project rt.equinox.framework by eclipse.
the class TestModuleContainer method testRemovalPending.
@Test
public void testRemovalPending() throws BundleException, IOException {
DummyContainerAdaptor adaptor = createDummyAdaptor();
ModuleContainer container = adaptor.getContainer();
DummyModuleDatabase database = adaptor.getDatabase();
Module systemBundle = installDummyModule("system.bundle.MF", Constants.SYSTEM_BUNDLE_LOCATION, container);
container.resolve(Arrays.asList(systemBundle), true);
Module c4 = installDummyModule("c4_v1.MF", "c4_v1", container);
Module c6 = installDummyModule("c6_v1.MF", "c6_v1", container);
Module c7 = installDummyModule("c7_v1.MF", "c7_v1", container);
container.resolve(Arrays.asList(c7), true);
// throw out installed and resolved events
database.getModuleEvents();
ModuleRevision c4Revision0 = c4.getCurrentRevision();
// updating to identical content
container.update(c4, OSGiManifestBuilderFactory.createBuilder(getManifest("c4_v1.MF")), null);
container.resolve(Arrays.asList(c4), true);
Collection<ModuleRevision> removalPending = container.getRemovalPending();
Assert.assertEquals("Wrong number of removal pending", 1, removalPending.size());
Assert.assertTrue("Wrong module removalPending: " + removalPending, removalPending.contains(c4Revision0));
ModuleRevision c6Revision0 = c6.getCurrentRevision();
// updating to identical content
container.update(c6, OSGiManifestBuilderFactory.createBuilder(getManifest("c6_v1.MF")), null);
container.resolve(Arrays.asList(c6), true);
removalPending = container.getRemovalPending();
Assert.assertEquals("Wrong number of removal pending", 2, removalPending.size());
Assert.assertTrue("Wrong module removalPending: " + removalPending, removalPending.containsAll(Arrays.asList(c4Revision0, c6Revision0)));
// update again with identical content
container.update(c4, OSGiManifestBuilderFactory.createBuilder(getManifest("c4_v1.MF")), null);
container.update(c6, OSGiManifestBuilderFactory.createBuilder(getManifest("c6_v1.MF")), null);
container.resolve(Arrays.asList(c4, c6), true);
// Again we only have two since the previous current revisions did not have any dependents
removalPending = container.getRemovalPending();
Assert.assertEquals("Wrong number of removal pending", 2, removalPending.size());
Assert.assertTrue("Wrong module removalPending: " + removalPending, removalPending.containsAll(Arrays.asList(c4Revision0, c6Revision0)));
container.refresh(null);
removalPending = container.getRemovalPending();
Assert.assertEquals("Wrong number of removal pending", 0, removalPending.size());
List<DummyModuleEvent> actual = database.getModuleEvents();
List<DummyModuleEvent> expected = new ArrayList<DummyModuleEvent>(Arrays.asList(new DummyModuleEvent(c4, ModuleEvent.UNRESOLVED, State.INSTALLED), new DummyModuleEvent(c4, ModuleEvent.UPDATED, State.INSTALLED), new DummyModuleEvent(c4, ModuleEvent.RESOLVED, State.RESOLVED), new DummyModuleEvent(c6, ModuleEvent.UNRESOLVED, State.INSTALLED), new DummyModuleEvent(c6, ModuleEvent.UPDATED, State.INSTALLED), new DummyModuleEvent(c6, ModuleEvent.RESOLVED, State.RESOLVED), new DummyModuleEvent(c4, ModuleEvent.UNRESOLVED, State.INSTALLED), new DummyModuleEvent(c4, ModuleEvent.UPDATED, State.INSTALLED), new DummyModuleEvent(c6, ModuleEvent.UNRESOLVED, State.INSTALLED), new DummyModuleEvent(c6, ModuleEvent.UPDATED, State.INSTALLED), new DummyModuleEvent(c4, ModuleEvent.RESOLVED, State.RESOLVED), new DummyModuleEvent(c6, ModuleEvent.RESOLVED, State.RESOLVED), new DummyModuleEvent(c4, ModuleEvent.UNRESOLVED, State.INSTALLED), new DummyModuleEvent(c6, ModuleEvent.UNRESOLVED, State.INSTALLED), new DummyModuleEvent(c7, ModuleEvent.UNRESOLVED, State.INSTALLED), new DummyModuleEvent(c4, ModuleEvent.RESOLVED, State.RESOLVED), new DummyModuleEvent(c6, ModuleEvent.RESOLVED, State.RESOLVED), new DummyModuleEvent(c7, ModuleEvent.RESOLVED, State.RESOLVED)));
assertEvents(expected, actual, false);
// uninstall c4
c4Revision0 = c4.getCurrentRevision();
container.uninstall(c4);
removalPending = container.getRemovalPending();
Assert.assertEquals("Wrong number of removal pending", 1, removalPending.size());
Assert.assertTrue("Wrong module removalPending: " + removalPending, removalPending.containsAll(Arrays.asList(c4Revision0)));
container.refresh(null);
actual = database.getModuleEvents();
expected = new ArrayList<DummyModuleEvent>(Arrays.asList(new DummyModuleEvent(c4, ModuleEvent.UNRESOLVED, State.INSTALLED), new DummyModuleEvent(c4, ModuleEvent.UNINSTALLED, State.UNINSTALLED), new DummyModuleEvent(c6, ModuleEvent.UNRESOLVED, State.INSTALLED), new DummyModuleEvent(c7, ModuleEvent.UNRESOLVED, State.INSTALLED)));
assertEvents(expected, actual, false);
// Test bug 411833
// install c4 again and resolve c6
c4 = installDummyModule("c4_v1.MF", "c4_v1", container);
container.resolve(Arrays.asList(c6), true);
// throw out installed and resolved events
database.getModuleEvents();
removalPending = container.getRemovalPending();
Assert.assertEquals("Wrong number of removal pending", 0, removalPending.size());
c4Revision0 = c4.getCurrentRevision();
// uninstall c4, but refresh c6 instead
// this should result in removal pending c4 to be removed.
container.uninstall(c4);
removalPending = container.getRemovalPending();
Assert.assertEquals("Wrong number of removal pending", 1, removalPending.size());
Assert.assertTrue("Wrong module removalPending: " + removalPending, removalPending.containsAll(Arrays.asList(c4Revision0)));
container.refresh(Collections.singletonList(c6));
actual = database.getModuleEvents();
expected = new ArrayList<DummyModuleEvent>(Arrays.asList(new DummyModuleEvent(c4, ModuleEvent.UNRESOLVED, State.INSTALLED), new DummyModuleEvent(c4, ModuleEvent.UNINSTALLED, State.UNINSTALLED), new DummyModuleEvent(c6, ModuleEvent.UNRESOLVED, State.INSTALLED), new DummyModuleEvent(c7, ModuleEvent.UNRESOLVED, State.INSTALLED)));
assertEvents(expected, actual, false);
removalPending = container.getRemovalPending();
Assert.assertEquals("Wrong number of removal pending", 0, removalPending.size());
}
use of org.eclipse.osgi.tests.container.dummys.DummyModuleDatabase.DummyModuleEvent in project rt.equinox.framework by eclipse.
the class TestModuleContainer method doTestEventsStartLevel.
private void doTestEventsStartLevel(int beginningStartLevel) throws BundleException, IOException {
Map<String, String> configuration = new HashMap<String, String>();
configuration.put(Constants.FRAMEWORK_BEGINNING_STARTLEVEL, String.valueOf(beginningStartLevel));
DummyContainerAdaptor adaptor = new DummyContainerAdaptor(new DummyCollisionHook(false), configuration);
ModuleContainer container = adaptor.getContainer();
DummyModuleDatabase database = adaptor.getDatabase();
Module systemBundle = installDummyModule("system.bundle.MF", Constants.SYSTEM_BUNDLE_LOCATION, container);
container.resolve(Arrays.asList(systemBundle), true);
Module c1 = installDummyModule("c1_v1.MF", "c1_v1", container);
Module c2 = installDummyModule("c2_v1.MF", "c2_v1", container);
Module c3 = installDummyModule("c3_v1.MF", "c3_v1", container);
Module c4 = installDummyModule("c4_v1.MF", "c4_v1", container);
Module c5 = installDummyModule("c5_v1.MF", "c5_v1", container);
Module c6 = installDummyModule("c6_v1.MF", "c6_v1", container);
Module c7 = installDummyModule("c7_v1.MF", "c7_v1", container);
container.resolve(Arrays.asList(c1, c2, c3, c4, c5, c6, c7), true);
database.getModuleEvents();
c1.setStartLevel(70);
c2.setStartLevel(60);
c3.setStartLevel(50);
c4.setStartLevel(40);
c5.setStartLevel(30);
c6.setStartLevel(20);
c7.setStartLevel(10);
c1.start();
c2.start();
c3.start();
c4.start();
c5.start();
c6.start();
c7.start();
List<DummyModuleEvent> actualModuleEvents = database.getModuleEvents();
Assert.assertEquals("Expecting no events.", 0, actualModuleEvents.size());
systemBundle.start();
if (beginningStartLevel == 1) {
actualModuleEvents = database.getModuleEvents(2);
List<DummyModuleEvent> expectedModuleEvents = new ArrayList<DummyModuleEvent>(Arrays.asList(new DummyModuleEvent(systemBundle, ModuleEvent.STARTING, State.STARTING), new DummyModuleEvent(systemBundle, ModuleEvent.STARTED, State.ACTIVE)));
assertEvents(expectedModuleEvents, actualModuleEvents, true);
List<DummyContainerEvent> actualContainerEvents = database.getContainerEvents();
List<DummyContainerEvent> expectedContainerEvents = new ArrayList<DummyContainerEvent>(Arrays.asList(new DummyContainerEvent(ContainerEvent.STARTED, systemBundle, null)));
Assert.assertEquals("Wrong container events.", expectedContainerEvents, actualContainerEvents);
container.getFrameworkStartLevel().setStartLevel(100);
actualModuleEvents = database.getModuleEvents(14);
expectedModuleEvents = new ArrayList<DummyModuleEvent>(Arrays.asList(new DummyModuleEvent(c7, ModuleEvent.STARTING, State.STARTING), new DummyModuleEvent(c7, ModuleEvent.STARTED, State.ACTIVE), new DummyModuleEvent(c6, ModuleEvent.STARTING, State.STARTING), new DummyModuleEvent(c6, ModuleEvent.STARTED, State.ACTIVE), new DummyModuleEvent(c5, ModuleEvent.STARTING, State.STARTING), new DummyModuleEvent(c5, ModuleEvent.STARTED, State.ACTIVE), new DummyModuleEvent(c4, ModuleEvent.STARTING, State.STARTING), new DummyModuleEvent(c4, ModuleEvent.STARTED, State.ACTIVE), new DummyModuleEvent(c3, ModuleEvent.STARTING, State.STARTING), new DummyModuleEvent(c3, ModuleEvent.STARTED, State.ACTIVE), new DummyModuleEvent(c2, ModuleEvent.STARTING, State.STARTING), new DummyModuleEvent(c2, ModuleEvent.STARTED, State.ACTIVE), new DummyModuleEvent(c1, ModuleEvent.STARTING, State.STARTING), new DummyModuleEvent(c1, ModuleEvent.STARTED, State.ACTIVE)));
actualContainerEvents = database.getContainerEvents(1);
expectedContainerEvents = new ArrayList<DummyContainerEvent>(Arrays.asList(new DummyContainerEvent(ContainerEvent.START_LEVEL, systemBundle, null)));
Assert.assertEquals("Wrong container events.", expectedContainerEvents, actualContainerEvents);
} else {
actualModuleEvents = database.getModuleEvents(16);
List<DummyModuleEvent> expectedModuleEvents = new ArrayList<DummyModuleEvent>(Arrays.asList(new DummyModuleEvent(systemBundle, ModuleEvent.STARTING, State.STARTING), new DummyModuleEvent(c7, ModuleEvent.STARTING, State.STARTING), new DummyModuleEvent(c7, ModuleEvent.STARTED, State.ACTIVE), new DummyModuleEvent(c6, ModuleEvent.STARTING, State.STARTING), new DummyModuleEvent(c6, ModuleEvent.STARTED, State.ACTIVE), new DummyModuleEvent(c5, ModuleEvent.STARTING, State.STARTING), new DummyModuleEvent(c5, ModuleEvent.STARTED, State.ACTIVE), new DummyModuleEvent(c4, ModuleEvent.STARTING, State.STARTING), new DummyModuleEvent(c4, ModuleEvent.STARTED, State.ACTIVE), new DummyModuleEvent(c3, ModuleEvent.STARTING, State.STARTING), new DummyModuleEvent(c3, ModuleEvent.STARTED, State.ACTIVE), new DummyModuleEvent(c2, ModuleEvent.STARTING, State.STARTING), new DummyModuleEvent(c2, ModuleEvent.STARTED, State.ACTIVE), new DummyModuleEvent(c1, ModuleEvent.STARTING, State.STARTING), new DummyModuleEvent(c1, ModuleEvent.STARTED, State.ACTIVE), new DummyModuleEvent(systemBundle, ModuleEvent.STARTED, State.ACTIVE)));
assertEvents(expectedModuleEvents, actualModuleEvents, true);
List<DummyContainerEvent> actualContainerEvents = database.getContainerEvents();
List<DummyContainerEvent> expectedContainerEvents = new ArrayList<DummyContainerEvent>(Arrays.asList(new DummyContainerEvent(ContainerEvent.STARTED, systemBundle, null)));
Assert.assertEquals("Wrong container events.", expectedContainerEvents, actualContainerEvents);
}
if (beginningStartLevel == 1) {
container.getFrameworkStartLevel().setStartLevel(1);
actualModuleEvents = database.getModuleEvents(14);
List<DummyModuleEvent> expectedModuleEvents = new ArrayList<DummyModuleEvent>(Arrays.asList(new DummyModuleEvent(c1, ModuleEvent.STOPPING, State.STOPPING), new DummyModuleEvent(c1, ModuleEvent.STOPPED, State.RESOLVED), new DummyModuleEvent(c2, ModuleEvent.STOPPING, State.STOPPING), new DummyModuleEvent(c2, ModuleEvent.STOPPED, State.RESOLVED), new DummyModuleEvent(c3, ModuleEvent.STOPPING, State.STOPPING), new DummyModuleEvent(c3, ModuleEvent.STOPPED, State.RESOLVED), new DummyModuleEvent(c4, ModuleEvent.STOPPING, State.STOPPING), new DummyModuleEvent(c4, ModuleEvent.STOPPED, State.RESOLVED), new DummyModuleEvent(c5, ModuleEvent.STOPPING, State.STOPPING), new DummyModuleEvent(c5, ModuleEvent.STOPPED, State.RESOLVED), new DummyModuleEvent(c6, ModuleEvent.STOPPING, State.STOPPING), new DummyModuleEvent(c6, ModuleEvent.STOPPED, State.RESOLVED), new DummyModuleEvent(c7, ModuleEvent.STOPPING, State.STOPPING), new DummyModuleEvent(c7, ModuleEvent.STOPPED, State.RESOLVED)));
assertEvents(expectedModuleEvents, actualModuleEvents, true);
List<DummyContainerEvent> actualContainerEvents = database.getContainerEvents(1);
List<DummyContainerEvent> expectedContainerEvents = new ArrayList<DummyContainerEvent>(Arrays.asList(new DummyContainerEvent(ContainerEvent.START_LEVEL, systemBundle, null)));
Assert.assertEquals("Wrong container events.", expectedContainerEvents, actualContainerEvents);
}
systemBundle.stop();
if (beginningStartLevel == 1) {
actualModuleEvents = database.getModuleEvents(2);
List<DummyModuleEvent> expectedModuleEvents = new ArrayList<DummyModuleEvent>(Arrays.asList(new DummyModuleEvent(systemBundle, ModuleEvent.STOPPING, State.STOPPING), new DummyModuleEvent(systemBundle, ModuleEvent.STOPPED, State.RESOLVED)));
assertEvents(expectedModuleEvents, actualModuleEvents, true);
} else {
actualModuleEvents = database.getModuleEvents(16);
List<DummyModuleEvent> expectedModuleEvents = new ArrayList<DummyModuleEvent>(Arrays.asList(new DummyModuleEvent(systemBundle, ModuleEvent.STOPPING, State.STOPPING), new DummyModuleEvent(c1, ModuleEvent.STOPPING, State.STOPPING), new DummyModuleEvent(c1, ModuleEvent.STOPPED, State.RESOLVED), new DummyModuleEvent(c2, ModuleEvent.STOPPING, State.STOPPING), new DummyModuleEvent(c2, ModuleEvent.STOPPED, State.RESOLVED), new DummyModuleEvent(c3, ModuleEvent.STOPPING, State.STOPPING), new DummyModuleEvent(c3, ModuleEvent.STOPPED, State.RESOLVED), new DummyModuleEvent(c4, ModuleEvent.STOPPING, State.STOPPING), new DummyModuleEvent(c4, ModuleEvent.STOPPED, State.RESOLVED), new DummyModuleEvent(c5, ModuleEvent.STOPPING, State.STOPPING), new DummyModuleEvent(c5, ModuleEvent.STOPPED, State.RESOLVED), new DummyModuleEvent(c6, ModuleEvent.STOPPING, State.STOPPING), new DummyModuleEvent(c6, ModuleEvent.STOPPED, State.RESOLVED), new DummyModuleEvent(c7, ModuleEvent.STOPPING, State.STOPPING), new DummyModuleEvent(c7, ModuleEvent.STOPPED, State.RESOLVED), new DummyModuleEvent(systemBundle, ModuleEvent.STOPPED, State.RESOLVED)));
assertEvents(expectedModuleEvents, actualModuleEvents, true);
}
List<DummyContainerEvent> actualContainerEvents = database.getContainerEvents();
List<DummyContainerEvent> expectedContainerEvents = new ArrayList<DummyContainerEvent>(Arrays.asList(new DummyContainerEvent(ContainerEvent.STOPPED, systemBundle, null)));
Assert.assertEquals("Wrong container events.", expectedContainerEvents, actualContainerEvents);
}
use of org.eclipse.osgi.tests.container.dummys.DummyModuleDatabase.DummyModuleEvent in project rt.equinox.framework by eclipse.
the class TestModuleContainer method removeFirstListOfCommonEvents.
private List<DummyModuleEvent> removeFirstListOfCommonEvents(List<DummyModuleEvent> events) {
List<DummyModuleEvent> result = new ArrayList<DummyModuleDatabase.DummyModuleEvent>();
if (events.isEmpty()) {
return result;
}
ModuleEvent commonEvent = events.get(0).event;
for (Iterator<DummyModuleEvent> iEvents = events.iterator(); iEvents.hasNext(); ) {
DummyModuleEvent current = iEvents.next();
if (commonEvent.equals(current.event)) {
iEvents.remove();
result.add(current);
} else {
break;
}
}
return result;
}
use of org.eclipse.osgi.tests.container.dummys.DummyModuleDatabase.DummyModuleEvent in project rt.equinox.framework by eclipse.
the class TestModuleContainer method testEventsResolved.
@Test
public void testEventsResolved() throws BundleException, IOException {
DummyContainerAdaptor adaptor = createDummyAdaptor();
ModuleContainer container = adaptor.getContainer();
DummyModuleDatabase database = adaptor.getDatabase();
Module systemBundle = installDummyModule("system.bundle.MF", Constants.SYSTEM_BUNDLE_LOCATION, container);
container.resolve(Arrays.asList(systemBundle), true);
Module c1 = installDummyModule("c1_v1.MF", "c1_v1", container);
Module c2 = installDummyModule("c2_v1.MF", "c2_v1", container);
Module c3 = installDummyModule("c3_v1.MF", "c3_v1", container);
Module c4 = installDummyModule("c4_v1.MF", "c4_v1", container);
Module c5 = installDummyModule("c5_v1.MF", "c5_v1", container);
Module c6 = installDummyModule("c6_v1.MF", "c6_v1", container);
Module c7 = installDummyModule("c7_v1.MF", "c7_v1", container);
// throw away installed events
database.getModuleEvents();
container.resolve(Arrays.asList(c1, c2, c3, c4, c5, c6, c7), true);
List<DummyModuleEvent> actual = database.getModuleEvents();
List<DummyModuleEvent> expected = new ArrayList<DummyModuleEvent>(Arrays.asList(new DummyModuleEvent(c1, ModuleEvent.RESOLVED, State.RESOLVED), new DummyModuleEvent(c2, ModuleEvent.RESOLVED, State.RESOLVED), new DummyModuleEvent(c3, ModuleEvent.RESOLVED, State.RESOLVED), new DummyModuleEvent(c4, ModuleEvent.RESOLVED, State.RESOLVED), new DummyModuleEvent(c5, ModuleEvent.RESOLVED, State.RESOLVED), new DummyModuleEvent(c6, ModuleEvent.RESOLVED, State.RESOLVED), new DummyModuleEvent(c7, ModuleEvent.RESOLVED, State.RESOLVED)));
assertEvents(expected, actual, false);
}
Aggregations