use of org.apache.felix.scr.integration.components.SimpleServiceImpl in project felix by apache.
the class ServiceBindTest method test_required_single_static.
@Test
public void test_required_single_static() throws Exception {
final SimpleServiceImpl srv1 = SimpleServiceImpl.create(bundleContext, "srv1");
String name = "test_required_single_static";
ComponentConfigurationDTO cc = getDisabledConfigurationAndEnable(name, ComponentConfigurationDTO.ACTIVE);
final SimpleComponent comp10 = SimpleComponent.INSTANCE;
TestCase.assertNotNull(comp10);
TestCase.assertEquals(srv1, comp10.m_singleRef);
TestCase.assertTrue(comp10.m_multiRef.isEmpty());
srv1.drop();
// async reactivate
delay();
findComponentConfigurationByName(name, ComponentConfigurationDTO.UNSATISFIED_REFERENCE);
final SimpleComponent comp11 = SimpleComponent.INSTANCE;
TestCase.assertNull(comp11);
final SimpleServiceImpl srv2 = SimpleServiceImpl.create(bundleContext, "srv2");
// async binding
delay();
findComponentConfigurationByName(name, ComponentConfigurationDTO.ACTIVE);
final SimpleComponent comp12 = SimpleComponent.INSTANCE;
TestCase.assertNotSame(comp10, comp12);
TestCase.assertEquals(srv2, comp12.m_singleRef);
TestCase.assertTrue(comp12.m_multiRef.isEmpty());
disableAndCheck(cc);
// async disabling
delay();
final SimpleServiceImpl srv3 = SimpleServiceImpl.create(bundleContext, "srv3");
// enable component with two services available, expect srv2 bind
// async enabling
enableAndCheck(cc.description);
delay();
findComponentConfigurationByName(name, ComponentConfigurationDTO.ACTIVE);
final SimpleComponent comp20 = SimpleComponent.INSTANCE;
TestCase.assertNotNull(comp20);
TestCase.assertNotSame(comp10, comp20);
TestCase.assertEquals(srv2, comp20.m_singleRef);
TestCase.assertTrue(comp20.m_multiRef.isEmpty());
// drop srv2, expect rebind to srv3
srv2.drop();
// async reactivate
delay();
findComponentConfigurationByName(name, ComponentConfigurationDTO.ACTIVE);
final SimpleComponent comp21 = SimpleComponent.INSTANCE;
TestCase.assertNotSame(comp20, comp21);
TestCase.assertEquals(srv3, comp21.m_singleRef);
TestCase.assertTrue(comp21.m_multiRef.isEmpty());
// create srv4, expect no rebind
final SimpleServiceImpl srv4 = SimpleServiceImpl.create(bundleContext, "srv4");
delay();
findComponentConfigurationByName(name, ComponentConfigurationDTO.ACTIVE);
final SimpleComponent comp22 = SimpleComponent.INSTANCE;
TestCase.assertNotSame(comp20, comp22);
TestCase.assertSame(comp21, comp22);
TestCase.assertEquals(srv3, comp22.m_singleRef);
TestCase.assertTrue(comp22.m_multiRef.isEmpty());
// drop srv4 again, expect no rebind
srv4.drop();
delay();
findComponentConfigurationByName(name, ComponentConfigurationDTO.ACTIVE);
final SimpleComponent comp23 = SimpleComponent.INSTANCE;
TestCase.assertNotSame(comp20, comp23);
TestCase.assertSame(comp21, comp23);
TestCase.assertSame(comp22, comp23);
TestCase.assertEquals(srv3, comp23.m_singleRef);
TestCase.assertTrue(comp23.m_multiRef.isEmpty());
// "reset"
disableAndCheck(cc);
srv3.drop();
delay();
// two services with service ranking (srv6 > srv5)
final SimpleServiceImpl srv5 = SimpleServiceImpl.create(bundleContext, "srv5", 10);
final SimpleServiceImpl srv6 = SimpleServiceImpl.create(bundleContext, "srv6", 20);
enableAndCheck(cc.description);
delay();
findComponentConfigurationByName(name, ComponentConfigurationDTO.ACTIVE);
final SimpleComponent comp30 = SimpleComponent.INSTANCE;
TestCase.assertNotSame(comp23, comp30);
TestCase.assertEquals(srv6, comp30.m_singleRef);
TestCase.assertTrue(comp30.m_multiRef.isEmpty());
// another service with higher ranking -- no rebind !
final SimpleServiceImpl srv7 = SimpleServiceImpl.create(bundleContext, "srv7", 30);
delay();
findComponentConfigurationByName(name, ComponentConfigurationDTO.ACTIVE);
final SimpleComponent comp31 = SimpleComponent.INSTANCE;
TestCase.assertSame(comp30, comp31);
TestCase.assertEquals(srv6, comp31.m_singleRef);
TestCase.assertTrue(comp31.m_multiRef.isEmpty());
// srv6 goes, rebind to srv7
srv6.drop();
delay();
findComponentConfigurationByName(name, ComponentConfigurationDTO.ACTIVE);
final SimpleComponent comp32 = SimpleComponent.INSTANCE;
TestCase.assertNotSame(comp30, comp32);
TestCase.assertNotSame(comp31, comp32);
TestCase.assertEquals(srv7, comp32.m_singleRef);
TestCase.assertTrue(comp32.m_multiRef.isEmpty());
}
use of org.apache.felix.scr.integration.components.SimpleServiceImpl in project felix by apache.
the class ServiceChangedTest method test_required_multiple_static.
@Test
public void test_required_multiple_static() throws Exception {
final SimpleServiceImpl srv1 = SimpleServiceImpl.create(bundleContext, "srv1");
String name = "test_required_multiple_static_target";
getDisabledConfigurationAndEnable(name, ComponentConfigurationDTO.ACTIVE);
final SimpleComponent comp10 = SimpleComponent.INSTANCE;
TestCase.assertNotNull(comp10);
TestCase.assertNull(comp10.m_singleRef);
TestCase.assertTrue(comp10.m_multiRef.contains(srv1));
TestCase.assertEquals(1, comp10.m_multiRefBind);
TestCase.assertEquals(0, comp10.m_multiRefUnbind);
// update a service property
srv1.update("srv1-modified");
// no changes in bindings expected
TestCase.assertNull(comp10.m_singleRef);
TestCase.assertTrue(comp10.m_multiRef.contains(srv1));
TestCase.assertEquals(1, comp10.m_multiRefBind);
TestCase.assertEquals(0, comp10.m_multiRefUnbind);
// set target to not match any more
srv1.setFilterProperty("don't match");
findComponentConfigurationByName(name, ComponentConfigurationDTO.UNSATISFIED_REFERENCE);
final SimpleComponent comp11 = SimpleComponent.INSTANCE;
TestCase.assertNull(comp11);
TestCase.assertNull(comp10.m_singleRef);
TestCase.assertFalse(comp10.m_multiRef.contains(srv1));
TestCase.assertEquals(1, comp10.m_multiRefBind);
TestCase.assertEquals(1, comp10.m_multiRefUnbind);
final SimpleServiceImpl srv2 = SimpleServiceImpl.create(bundleContext, "srv2");
// async binding
delay();
findComponentConfigurationByName(name, ComponentConfigurationDTO.ACTIVE);
final SimpleComponent comp12 = SimpleComponent.INSTANCE;
TestCase.assertNotSame(comp10, comp12);
TestCase.assertNull(comp12.m_singleRef);
TestCase.assertFalse(comp12.m_multiRef.contains(srv1));
TestCase.assertTrue(comp12.m_multiRef.contains(srv2));
TestCase.assertEquals(1, comp12.m_multiRefBind);
TestCase.assertEquals(0, comp12.m_multiRefUnbind);
// make srv1 match again, expect not changes in bindings
srv1.setFilterProperty("match");
TestCase.assertNull(comp12.m_singleRef);
TestCase.assertFalse(comp12.m_multiRef.contains(srv1));
TestCase.assertTrue(comp12.m_multiRef.contains(srv2));
TestCase.assertEquals(1, comp12.m_multiRefBind);
TestCase.assertEquals(0, comp12.m_multiRefUnbind);
// make srv2 to not match, expect binding to srv1
srv2.setFilterProperty("don't match");
// allow reactivation/rebinding
delay();
findComponentConfigurationByName(name, ComponentConfigurationDTO.ACTIVE);
final SimpleComponent comp13 = SimpleComponent.INSTANCE;
TestCase.assertNotSame(comp10, comp13);
TestCase.assertNotSame(comp11, comp13);
TestCase.assertNotSame(comp12, comp13);
TestCase.assertNull(comp13.m_singleRef);
TestCase.assertTrue(comp13.m_multiRef.contains(srv1));
TestCase.assertFalse(comp13.m_multiRef.contains(srv2));
TestCase.assertEquals(1, comp13.m_multiRefBind);
TestCase.assertEquals(0, comp13.m_multiRefUnbind);
}
use of org.apache.felix.scr.integration.components.SimpleServiceImpl in project felix by apache.
the class ServiceChangedTest method test_optional_single_static.
@Test
public void test_optional_single_static() throws Exception {
final SimpleServiceImpl srv1 = SimpleServiceImpl.create(bundleContext, "srv1");
String name = "test_optional_single_static_target";
getDisabledConfigurationAndEnable(name, ComponentConfigurationDTO.ACTIVE);
final SimpleComponent comp10 = SimpleComponent.INSTANCE;
TestCase.assertNotNull(comp10);
TestCase.assertEquals(srv1, comp10.m_singleRef);
TestCase.assertTrue(comp10.m_multiRef.isEmpty());
TestCase.assertEquals(1, comp10.m_singleRefBind);
TestCase.assertEquals(0, comp10.m_singleRefUnbind);
// update a service property
srv1.update("srv1-modified");
// no changes in bindings expected
TestCase.assertEquals(srv1, comp10.m_singleRef);
TestCase.assertTrue(comp10.m_multiRef.isEmpty());
TestCase.assertEquals(1, comp10.m_singleRefBind);
TestCase.assertEquals(0, comp10.m_singleRefUnbind);
// set target to not match any more -> recreate !
srv1.setFilterProperty("don't match");
// async reactivation
delay();
findComponentConfigurationByName(name, ComponentConfigurationDTO.ACTIVE);
final SimpleComponent comp11 = SimpleComponent.INSTANCE;
TestCase.assertNotSame(comp10, comp11);
TestCase.assertNull(comp11.m_singleRef);
TestCase.assertTrue(comp11.m_multiRef.isEmpty());
TestCase.assertEquals(0, comp11.m_singleRefBind);
TestCase.assertEquals(0, comp11.m_singleRefUnbind);
final SimpleServiceImpl srv2 = SimpleServiceImpl.create(bundleContext, "srv2");
// async binding
delay();
findComponentConfigurationByName(name, ComponentConfigurationDTO.ACTIVE);
final SimpleComponent comp12 = SimpleComponent.INSTANCE;
TestCase.assertNotSame(comp10, comp12);
TestCase.assertSame(comp11, comp12);
TestCase.assertNull(comp12.m_singleRef);
TestCase.assertTrue(comp12.m_multiRef.isEmpty());
TestCase.assertEquals(0, comp12.m_singleRefBind);
TestCase.assertEquals(0, comp12.m_singleRefUnbind);
// make srv1 match again, expect not changes in bindings
srv1.setFilterProperty("match");
final SimpleComponent comp13 = SimpleComponent.INSTANCE;
TestCase.assertNotSame(comp10, comp13);
TestCase.assertSame(comp11, comp13);
TestCase.assertSame(comp12, comp13);
TestCase.assertNull(comp13.m_singleRef);
TestCase.assertTrue(comp13.m_multiRef.isEmpty());
TestCase.assertEquals(0, comp13.m_singleRefBind);
TestCase.assertEquals(0, comp13.m_singleRefUnbind);
// make srv2 to not match, expect binding to srv1
srv2.setFilterProperty("don't match");
final SimpleComponent comp14 = SimpleComponent.INSTANCE;
TestCase.assertNotSame(comp10, comp14);
TestCase.assertSame(comp11, comp14);
TestCase.assertSame(comp12, comp14);
TestCase.assertSame(comp13, comp14);
TestCase.assertNull(comp14.m_singleRef);
TestCase.assertTrue(comp14.m_multiRef.isEmpty());
TestCase.assertEquals(0, comp14.m_singleRefBind);
TestCase.assertEquals(0, comp14.m_singleRefUnbind);
}
use of org.apache.felix.scr.integration.components.SimpleServiceImpl in project felix by apache.
the class ServiceChangedTest method test_required_single_static.
@Test
public void test_required_single_static() throws Exception {
final SimpleServiceImpl srv1 = SimpleServiceImpl.create(bundleContext, "srv1");
String name = "test_required_single_static_target";
getDisabledConfigurationAndEnable(name, ComponentConfigurationDTO.ACTIVE);
final SimpleComponent comp10 = SimpleComponent.INSTANCE;
TestCase.assertNotNull(comp10);
TestCase.assertEquals(srv1, comp10.m_singleRef);
TestCase.assertTrue(comp10.m_multiRef.isEmpty());
TestCase.assertEquals(1, comp10.m_singleRefBind);
TestCase.assertEquals(0, comp10.m_singleRefUnbind);
// update a service property
srv1.update("srv1-modified");
// no changes in bindings expected
TestCase.assertEquals(srv1, comp10.m_singleRef);
TestCase.assertTrue(comp10.m_multiRef.isEmpty());
TestCase.assertEquals(1, comp10.m_singleRefBind);
TestCase.assertEquals(0, comp10.m_singleRefUnbind);
// set target to not match any more -> deactivate this component
srv1.setFilterProperty("don't match");
findComponentConfigurationByName(name, ComponentConfigurationDTO.UNSATISFIED_REFERENCE);
TestCase.assertNull(SimpleComponent.INSTANCE);
TestCase.assertNull(comp10.m_singleRef);
TestCase.assertTrue(comp10.m_multiRef.isEmpty());
TestCase.assertEquals(1, comp10.m_singleRefBind);
TestCase.assertEquals(1, comp10.m_singleRefUnbind);
final SimpleServiceImpl srv2 = SimpleServiceImpl.create(bundleContext, "srv2");
// async binding
delay();
findComponentConfigurationByName(name, ComponentConfigurationDTO.ACTIVE);
final SimpleComponent comp12 = SimpleComponent.INSTANCE;
TestCase.assertNotSame(comp10, comp12);
TestCase.assertEquals(srv2, comp12.m_singleRef);
TestCase.assertTrue(comp12.m_multiRef.isEmpty());
TestCase.assertEquals(1, comp12.m_singleRefBind);
TestCase.assertEquals(0, comp12.m_singleRefUnbind);
// make srv1 match again, expect not changes in bindings
srv1.setFilterProperty("match");
final SimpleComponent comp13 = SimpleComponent.INSTANCE;
TestCase.assertNotSame(comp10, comp12);
TestCase.assertSame(comp12, comp13);
TestCase.assertEquals(srv2, comp12.m_singleRef);
TestCase.assertTrue(comp12.m_multiRef.isEmpty());
TestCase.assertEquals(1, comp12.m_singleRefBind);
TestCase.assertEquals(0, comp12.m_singleRefUnbind);
// make srv2 to not match, expect binding to srv1
srv2.setFilterProperty("don't match");
// reactivation required
delay();
final SimpleComponent comp14 = SimpleComponent.INSTANCE;
TestCase.assertNotSame(comp10, comp14);
TestCase.assertNotSame(comp12, comp14);
TestCase.assertNotSame(comp13, comp14);
TestCase.assertEquals(srv1, comp14.m_singleRef);
TestCase.assertTrue(comp14.m_multiRef.isEmpty());
TestCase.assertEquals(1, comp14.m_singleRefBind);
TestCase.assertEquals(0, comp14.m_singleRefUnbind);
}
use of org.apache.felix.scr.integration.components.SimpleServiceImpl in project felix by apache.
the class ServiceChangedTest method test_optional_multiple_static.
@Test
public void test_optional_multiple_static() throws Exception {
final SimpleServiceImpl srv1 = SimpleServiceImpl.create(bundleContext, "srv1");
String name = "test_optional_multiple_static_target";
getDisabledConfigurationAndEnable(name, ComponentConfigurationDTO.ACTIVE);
final SimpleComponent comp10 = SimpleComponent.INSTANCE;
TestCase.assertNotNull(comp10);
TestCase.assertNull(comp10.m_singleRef);
TestCase.assertTrue(comp10.m_multiRef.contains(srv1));
TestCase.assertEquals(1, comp10.m_multiRefBind);
TestCase.assertEquals(0, comp10.m_multiRefUnbind);
// update a service property
srv1.update("srv1-modified");
// no changes in bindings expected
TestCase.assertNull(comp10.m_singleRef);
TestCase.assertTrue(comp10.m_multiRef.contains(srv1));
TestCase.assertEquals(1, comp10.m_multiRefBind);
TestCase.assertEquals(0, comp10.m_multiRefUnbind);
// set target to not match any more
srv1.setFilterProperty("don't match");
// async reactivation (for unbind)
delay();
findComponentConfigurationByName(name, ComponentConfigurationDTO.ACTIVE);
final SimpleComponent comp11 = SimpleComponent.INSTANCE;
TestCase.assertNotSame(comp10, comp11);
TestCase.assertNull(comp10.m_singleRef);
TestCase.assertFalse(comp10.m_multiRef.contains(srv1));
TestCase.assertEquals(1, comp10.m_multiRefBind);
TestCase.assertEquals(1, comp10.m_multiRefUnbind);
TestCase.assertNull(comp11.m_singleRef);
TestCase.assertFalse(comp11.m_multiRef.contains(srv1));
TestCase.assertEquals(0, comp11.m_multiRefBind);
TestCase.assertEquals(0, comp11.m_multiRefUnbind);
final SimpleServiceImpl srv2 = SimpleServiceImpl.create(bundleContext, "srv2");
// async binding (not expected for an optional static ref)
delay();
findComponentConfigurationByName(name, ComponentConfigurationDTO.ACTIVE);
final SimpleComponent comp12 = SimpleComponent.INSTANCE;
TestCase.assertNotSame(comp10, comp12);
TestCase.assertSame(comp11, comp12);
TestCase.assertNull(comp12.m_singleRef);
TestCase.assertFalse(comp12.m_multiRef.contains(srv1));
TestCase.assertFalse(comp12.m_multiRef.contains(srv2));
TestCase.assertEquals(0, comp12.m_multiRefBind);
TestCase.assertEquals(0, comp12.m_multiRefUnbind);
// make srv1 match again, expect not changes in bindings
srv1.setFilterProperty("match");
TestCase.assertNull(comp12.m_singleRef);
TestCase.assertFalse(comp12.m_multiRef.contains(srv1));
TestCase.assertFalse(comp12.m_multiRef.contains(srv2));
TestCase.assertEquals(0, comp12.m_multiRefBind);
TestCase.assertEquals(0, comp12.m_multiRefUnbind);
// make srv2 to not match, expect binding to srv1
srv2.setFilterProperty("don't match");
// allow reactivation delay (for unbind/bind)
delay();
findComponentConfigurationByName(name, ComponentConfigurationDTO.ACTIVE);
final SimpleComponent comp13 = SimpleComponent.INSTANCE;
TestCase.assertNotSame(comp10, comp13);
TestCase.assertSame(comp11, comp13);
TestCase.assertSame(comp12, comp13);
TestCase.assertNull(comp13.m_singleRef);
TestCase.assertFalse(comp13.m_multiRef.contains(srv1));
TestCase.assertFalse(comp13.m_multiRef.contains(srv2));
TestCase.assertEquals(0, comp13.m_multiRefBind);
TestCase.assertEquals(0, comp13.m_multiRefUnbind);
}
Aggregations