Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'tests/bundles/org.eclipse.ecf.tests.provider.discovery/src/org/eclipse/ecf/tests/provider/discovery/SingleCompositeDiscoveryServiceContainerTest.java')
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.provider.discovery/src/org/eclipse/ecf/tests/provider/discovery/SingleCompositeDiscoveryServiceContainerTest.java198
1 files changed, 0 insertions, 198 deletions
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery/src/org/eclipse/ecf/tests/provider/discovery/SingleCompositeDiscoveryServiceContainerTest.java b/tests/bundles/org.eclipse.ecf.tests.provider.discovery/src/org/eclipse/ecf/tests/provider/discovery/SingleCompositeDiscoveryServiceContainerTest.java
deleted file mode 100644
index 58150d614..000000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery/src/org/eclipse/ecf/tests/provider/discovery/SingleCompositeDiscoveryServiceContainerTest.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 Markus Alexander Kuppe.
- * 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:
- * Markus Alexander Kuppe (ecf-dev_eclipse.org <at> lemmster <dot> de) - initial API and implementation
- ******************************************************************************/
-package org.eclipse.ecf.tests.provider.discovery;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.eclipse.ecf.discovery.IDiscoveryAdvertiser;
-import org.eclipse.ecf.discovery.IDiscoveryLocator;
-import org.eclipse.ecf.provider.discovery.CompositeDiscoveryContainer;
-import org.eclipse.ecf.tests.discovery.Activator;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceEvent;
-import org.osgi.framework.ServiceReference;
-import org.osgi.framework.ServiceRegistration;
-import org.osgi.framework.hooks.service.EventHook;
-import org.osgi.framework.hooks.service.FindHook;
-
-public abstract class SingleCompositeDiscoveryServiceContainerTest extends
- CompositeDiscoveryServiceContainerTest {
-
- // Whether the OSGi hooks should be de-/registered after and before each
- // individual test and not just after/before the test class.
- // E.g. when tests are executed in random order and thus are interleaved
- // with other tests, setUp/tearDown has to run after each test. Otherwise
- // expect test failures.
- public static boolean SETUP_OSGI_HOOKS_PER_TEST = false;
-
- private static int testMethods;
- private static int testMethodsLeft;
- private static ServiceRegistration findHook;
-
- // count all test methods
- static {
- Method[] methods = SingleCompositeDiscoveryServiceContainerTest.class.getMethods();
- for (int i = 0; i < methods.length; i++) {
- Method method = methods[i];
- if (method.getName().startsWith("test") && method.getModifiers() == Modifier.PUBLIC) {
- testMethods++;
- }
- }
- testMethodsLeft = testMethods;
- }
-
- private final String ecfDiscoveryContainerName;
- private final String className;
-
- public SingleCompositeDiscoveryServiceContainerTest(String anECFDiscoveryContainerName, String aClassName) {
- ecfDiscoveryContainerName = anECFDiscoveryContainerName;
- className = aClassName;
- }
-
- private boolean doSetUp() {
- return SETUP_OSGI_HOOKS_PER_TEST || testMethodsLeft == testMethods;
- }
-
- private boolean doTearDown() {
- return SETUP_OSGI_HOOKS_PER_TEST || --testMethodsLeft == 0;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ecf.tests.provider.discovery.CompositeDiscoveryServiceContainerTest#setUp()
- */
- protected void setUp() throws Exception {
- // HACK: @BeforeClass JUnit4 functionality
- if(doSetUp()) {
- // HACK: forcefully start the (nested) discovery container if it hasn't been started yet
- // assuming the bundle declares a lazy start buddy policy
- Class.forName(className);
-
- // initially close the existing CDC to get rid of other test left overs
- Activator.getDefault().closeServiceTracker(containerUnderTest);
-
- final BundleContext context = Activator.getDefault().getContext();
- final String[] clazzes = new String[]{FindHook.class.getName(), EventHook.class.getName()};
- findHook = context.registerService(clazzes, new DiscoveryContainerFilterHook(ecfDiscoveryContainerName), null);
- }
- super.setUp();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ecf.tests.discovery.DiscoveryTest#tearDown()
- */
- protected void tearDown() throws Exception {
- super.tearDown();
- // HACK: @BeforeClass JUnit4 functionality
- if(doTearDown()) {
- if(findHook != null) {
- findHook.unregister();
- findHook = null;
- }
- // close tracker to force creation of a new CDC instance
- Activator.getDefault().closeServiceTracker(containerUnderTest);
-
- // reset so other instances can reuse
- testMethodsLeft = testMethods;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ecf.tests.discovery.DiscoveryServiceTest#getDiscoveryLocator()
- */
- protected IDiscoveryLocator getDiscoveryLocator() {
- final IDiscoveryLocator idl = super.getDiscoveryLocator();
- checkCompositeDiscoveryContainer(className, (CompositeDiscoveryContainer)idl);
- return idl;
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.ecf.tests.discovery.DiscoveryServiceTest#getDiscoveryAdvertiser()
- */
- protected IDiscoveryAdvertiser getDiscoveryAdvertiser() {
- final IDiscoveryAdvertiser ida = super.getDiscoveryAdvertiser();
- checkCompositeDiscoveryContainer(className, (CompositeDiscoveryContainer)ida);
- return ida;
- }
-
- // make sure the CDC has only a single IDC registered with the correct type
- private static void checkCompositeDiscoveryContainer(final String aClassName, final CompositeDiscoveryContainer cdc) {
- final Collection discoveryContainers = cdc.getDiscoveryContainers();
- assertTrue("One IDiscoveryContainer must be registered with the CDC at this point: " + discoveryContainers, discoveryContainers.size() == 1);
- for (final Iterator iterator = discoveryContainers.iterator(); iterator.hasNext();) {
- final IDiscoveryLocator dl = (IDiscoveryLocator) iterator.next();
- assertEquals(aClassName, dl.getClass().getName());
- }
- }
-
- // Filters the corresponding IDC from the result set that is _not_ supposed to be part of the test
- // we need an EventHook too because due to ECF's namespaces the "other" bundle is started asynchronously
- // and consequently registered with the CDC
- private class DiscoveryContainerFilterHook implements FindHook, EventHook {
-
- private static final String BUNDLE_UNDER_TEST = "org.eclipse.ecf.provider.discovery"; // rename if bundle name change
- private final String containerName;
-
- public DiscoveryContainerFilterHook(String anECFDiscoveryContainerName) {
- containerName = anECFDiscoveryContainerName;
- }
-
- /* (non-Javadoc)
- * @see org.osgi.framework.hooks.service.FindHook#find(org.osgi.framework.BundleContext, java.lang.String, java.lang.String, boolean, java.util.Collection)
- */
- public void find(BundleContext context, String name, String filter, boolean allServices, Collection references) {
-
- // is it the composite discovery bundle who tries to find the service?
- final String symbolicName = context.getBundle().getSymbolicName();
- final Collection removees = new ArrayList();
- if(BUNDLE_UNDER_TEST.equals(symbolicName)) {
- for (final Iterator iterator = references.iterator(); iterator.hasNext();) {
- // filter the corresponding container
- final ServiceReference serviceReference = (ServiceReference) iterator.next();
- final String property = (String) serviceReference.getProperty(IDiscoveryLocator.CONTAINER_NAME);
- if(property != null && property.equals(containerName)) {
- removees.add(serviceReference);
- System.out.println("Removed reference: " + property);
- break;
- }
- }
- references.removeAll(removees);
- }
- }
-
- /* (non-Javadoc)
- * @see org.osgi.framework.hooks.service.EventHook#event(org.osgi.framework.ServiceEvent, java.util.Collection)
- */
- public void event(ServiceEvent aServiceEvent, Collection aCollection) {
- if (aServiceEvent.getType() == ServiceEvent.REGISTERED) {
- final ServiceReference serviceReference = aServiceEvent.getServiceReference();
- final String property = (String) serviceReference.getProperty(IDiscoveryLocator.CONTAINER_NAME);
- if(property != null && property.equals(containerName)) {
- final Collection removees = new ArrayList();
- for (Iterator iterator = aCollection.iterator(); iterator.hasNext();) {
- final BundleContext bundleContext = (BundleContext) iterator.next();
- final String symbolicName = bundleContext.getBundle().getSymbolicName();
- if(BUNDLE_UNDER_TEST.equals(symbolicName)) {
- removees.add(bundleContext);
- System.out.println("Filtered reference: " + property);
- break;
- }
- }
- aCollection.removeAll(removees);
- }
- }
- }
- }
-}

Back to the top