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();
}
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();
}
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();
}
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();
}
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);
}
Aggregations