Search in sources :

Example 16 with Ensure

use of org.apache.felix.dm.itest.util.Ensure in project felix by apache.

the class TemporalServiceDependencyTest method testServiceConsumptionWithCallbackAndIntermittentAvailability.

public void testServiceConsumptionWithCallbackAndIntermittentAvailability() {
    final DependencyManager m = getDM();
    // helper class that ensures certain steps get executed in sequence
    Ensure e = new Ensure();
    // create a service provider and consumer
    TemporalServiceProvider provider = new TemporalServiceProvider(e);
    Component sp = m.createComponent().setImplementation(provider).setInterface(TemporalServiceInterface.class.getName(), null);
    TemporalServiceProvider2 provider2 = new TemporalServiceProvider2(e);
    Component sp2 = m.createComponent().setImplementation(provider2).setInterface(TemporalServiceInterface.class.getName(), null);
    TemporalServiceConsumerWithCallback consumer = new TemporalServiceConsumerWithCallback(e);
    ServiceDependency temporalDep = m.createTemporalServiceDependency(10000).setService(TemporalServiceInterface.class).setRequired(true).setCallbacks("add", "remove");
    Component sc = m.createComponent().setImplementation(consumer).add(temporalDep);
    // add the service consumer
    m.add(sc);
    // now add the first provider
    m.add(sp);
    e.waitForStep(2, 5000);
    // and remove it again (this should not affect the consumer yet)
    m.remove(sp);
    // now add the second provider
    m.add(sp2);
    e.step(3);
    e.waitForStep(4, 5000);
    // and remove it again
    m.remove(sp2);
    // finally remove the consumer
    m.remove(sc);
    // Wait for the consumer.remove callback
    e.waitForStep(6, 5000);
    // ensure we executed all steps inside the component instance
    e.step(7);
    m.clear();
}
Also used : DependencyManager(org.apache.felix.dm.DependencyManager) ServiceDependency(org.apache.felix.dm.ServiceDependency) Ensure(org.apache.felix.dm.itest.util.Ensure) Component(org.apache.felix.dm.Component)

Example 17 with Ensure

use of org.apache.felix.dm.itest.util.Ensure in project felix by apache.

the class TemporalServiceDependencyTest method testServiceConsumptionAndIntermittentAvailability.

public void testServiceConsumptionAndIntermittentAvailability() {
    final DependencyManager m = getDM();
    // helper class that ensures certain steps get executed in sequence
    Ensure e = new Ensure();
    // create a service provider and consumer
    TemporalServiceProvider provider = new TemporalServiceProvider(e);
    Component sp = m.createComponent().setImplementation(provider).setInterface(TemporalServiceInterface.class.getName(), null);
    TemporalServiceProvider2 provider2 = new TemporalServiceProvider2(e);
    Component sp2 = m.createComponent().setImplementation(provider2).setInterface(TemporalServiceInterface.class.getName(), null);
    TemporalServiceConsumer consumer = new TemporalServiceConsumer(e);
    Component sc = m.createComponent().setImplementation(consumer).add(m.createTemporalServiceDependency(10000).setService(TemporalServiceInterface.class).setRequired(true));
    // add the service consumer
    m.add(sc);
    // now add the first provider
    m.add(sp);
    e.waitForStep(2, 5000);
    // and remove it again (this should not affect the consumer yet)
    m.remove(sp);
    // now add the second provider
    m.add(sp2);
    e.step(3);
    e.waitForStep(4, 5000);
    // and remove it again
    m.remove(sp2);
    // finally remove the consumer
    m.remove(sc);
    // ensure we executed all steps inside the component instance
    e.step(6);
    m.clear();
}
Also used : DependencyManager(org.apache.felix.dm.DependencyManager) Ensure(org.apache.felix.dm.itest.util.Ensure) Component(org.apache.felix.dm.Component)

Example 18 with Ensure

use of org.apache.felix.dm.itest.util.Ensure in project felix by apache.

the class TemporalServiceDependencyTest method testFelix4602_PropagateServiceInvocationException.

public void testFelix4602_PropagateServiceInvocationException() {
    final DependencyManager m = getDM();
    final Ensure ensure = new Ensure();
    Runnable provider = new Runnable() {

        public void run() {
            throw new UncheckedException();
        }
    };
    Hashtable props = new Hashtable();
    props.put("target", getClass().getSimpleName());
    Component providerComp = m.createComponent().setInterface(Runnable.class.getName(), props).setImplementation(provider);
    Object consumer = new Object() {

        volatile Runnable m_provider;

        @SuppressWarnings("unused")
        void start() {
            try {
                ensure.step(1);
                m_provider.run();
            } catch (UncheckedException e) {
                ensure.step(2);
            }
        }
    };
    Component consumerComp = m.createComponent().setImplementation(consumer).add(m.createTemporalServiceDependency(5000).setService(Runnable.class, "(target=" + getClass().getSimpleName() + ")").setRequired(true));
    m.add(consumerComp);
    m.add(providerComp);
    ensure.waitForStep(2, 5000);
    m.clear();
}
Also used : Hashtable(java.util.Hashtable) DependencyManager(org.apache.felix.dm.DependencyManager) Ensure(org.apache.felix.dm.itest.util.Ensure) Component(org.apache.felix.dm.Component)

Example 19 with Ensure

use of org.apache.felix.dm.itest.util.Ensure in project felix by apache.

the class AbstractServiceDependencyTest method testAbstractClassDependency.

public void testAbstractClassDependency() {
    DependencyManager m = getDM();
    // helper class that ensures certain steps get executed in sequence
    Ensure e = new Ensure();
    // create a service provider and consumer
    Component sp = m.createComponent().setInterface(ServiceAbstract.class.getName(), null).setImplementation(new ServiceProvider(e));
    Component sc = m.createComponent().setImplementation(new ServiceConsumer(e)).add(m.createServiceDependency().setService(ServiceAbstract.class).setRequired(true).setCallbacks("bind", "unbind"));
    m.add(sp);
    m.add(sc);
    m.remove(sp);
    // ensure we executed all steps inside the component instance
    e.step(8);
    m.clear();
}
Also used : DependencyManager(org.apache.felix.dm.DependencyManager) Ensure(org.apache.felix.dm.itest.util.Ensure) Component(org.apache.felix.dm.Component)

Example 20 with Ensure

use of org.apache.felix.dm.itest.util.Ensure in project felix by apache.

the class AdapterAndConsumerTest method testServiceWithAdapterAndConsumer.

public void testServiceWithAdapterAndConsumer() {
    DependencyManager m = getDM();
    // helper class that ensures certain steps get executed in sequence
    Ensure e = new Ensure();
    Component provider = m.createComponent().setInterface(OriginalService.class.getName(), null).setImplementation(new ServiceProvider(e));
    Component consumer = m.createComponent().setImplementation(new ServiceConsumer(e)).add(m.createServiceDependency().setService(AdaptedService.class).setRequired(true));
    Component adapter = m.createAdapterService(OriginalService.class, null).setInterface(AdaptedService.class.getName(), null).setImplementation(ServiceAdapter.class);
    // add the provider and the adapter
    m.add(provider);
    m.add(adapter);
    // add a consumer that will invoke the adapter
    // which will in turn invoke the original provider
    m.add(consumer);
    // now validate that both have been invoked in the right order
    e.waitForStep(2, 5000);
    // remove the provider again
    m.remove(provider);
    // ensure that the consumer is stopped
    e.waitForStep(3, 5000);
    // remove adapter and consumer
    m.remove(adapter);
    m.remove(consumer);
}
Also used : DependencyManager(org.apache.felix.dm.DependencyManager) Ensure(org.apache.felix.dm.itest.util.Ensure) Component(org.apache.felix.dm.Component)

Aggregations

Ensure (org.apache.felix.dm.itest.util.Ensure)135 Component (org.apache.felix.dm.Component)90 DependencyManager (org.apache.felix.dm.DependencyManager)90 ServiceRegistration (org.osgi.framework.ServiceRegistration)42 Hashtable (java.util.Hashtable)32 Dictionary (java.util.Dictionary)8 URL (java.net.URL)6 HashMap (java.util.HashMap)5 Map (java.util.Map)5 ResourceHandler (org.apache.felix.dm.ResourceHandler)5 IOException (java.io.IOException)4 Dependency (org.apache.felix.dm.Dependency)4 ServiceDependency (org.apache.felix.dm.ServiceDependency)4 ConfigurationAdmin (org.osgi.service.cm.ConfigurationAdmin)4 ArrayList (java.util.ArrayList)2 ForkJoinPool (java.util.concurrent.ForkJoinPool)2 TimeUnit (java.util.concurrent.TimeUnit)2 ComponentStateListener (org.apache.felix.dm.ComponentStateListener)2 TestBase (org.apache.felix.dm.itest.util.TestBase)2 Bundle (org.osgi.framework.Bundle)2