(no commit message)
[utils] / system / general / src / test / java / org / wamblee / system / SystemAssemblerTest.java
index 7b3ea273513253d283a3916f4456de56d1cab1b0..d862b15e3eb4d08fbe2f1a64b89ebc60fa7b8425 100644 (file)
@@ -11,12 +11,9 @@ import junit.framework.TestCase;
 
 public class SystemAssemblerTest extends TestCase {
 
-       private ServiceRegistry _registry;
-
        @Override
        protected void setUp() throws Exception {
                super.setUp();
-               _registry = new DefaultServiceRegistry();
        }
 
        private static class MyMultiple implements Serializable, Runnable {
@@ -27,69 +24,61 @@ public class SystemAssemblerTest extends TestCase {
        }
 
        public void testFilterProvided() {
-               RequiredInterfaceDescriptor req1 = new DefaultRequiredInterfaceDescriptor(
-                               "name", Runnable.class);
-               RequiredInterfaceDescriptor req2 = new DefaultRequiredInterfaceDescriptor(
-                               "name", Serializable.class);
-               ProvidedInterfaceDescriptor prov1 = new DefaultProvidedInterfaceDescriptor(
+               RequiredInterface req1 = new DefaultRequiredInterface("name",
+                               Runnable.class);
+               RequiredInterface req2 = new DefaultRequiredInterface("name",
+                               Serializable.class);
+               ProvidedInterface prov1 = new DefaultProvidedInterface(
                                "name", Runnable.class);
-               ProvidedInterfaceDescriptor prov2 = new DefaultProvidedInterfaceDescriptor(
+               ProvidedInterface prov2 = new DefaultProvidedInterface(
                                "name", Serializable.class);
-               ProvidedInterfaceDescriptor prov3 = new DefaultProvidedInterfaceDescriptor(
+               ProvidedInterface prov3 = new DefaultProvidedInterface(
                                "name", MyMultiple.class);
 
-               AssertionUtils.assertEquals(new RequiredInterfaceDescriptor[] { req1 },
+               AssertionUtils.assertEquals(new RequiredInterface[] { req1 },
                                SystemAssembler.filterRequiredServices(prov1, Arrays
-                                               .asList(new RequiredInterfaceDescriptor[] { req1 })));
-               AssertionUtils.assertEquals(new RequiredInterfaceDescriptor[] { req1 },
-                               SystemAssembler.filterRequiredServices(prov1,
-                                               Arrays.asList(new RequiredInterfaceDescriptor[] { req1,
-                                                               req2 })));
-               AssertionUtils.assertEquals(new RequiredInterfaceDescriptor[] { req1,
-                               req2 }, SystemAssembler.filterRequiredServices(prov3, Arrays
-                               .asList(new RequiredInterfaceDescriptor[] { req1, req2 })));
-
-               AssertionUtils.assertEquals(
-                               new ProvidedInterfaceDescriptor[] { prov1 },
+                                               .asList(new RequiredInterface[] { req1 })));
+               AssertionUtils.assertEquals(new RequiredInterface[] { req1 },
+                               SystemAssembler.filterRequiredServices(prov1, Arrays
+                                               .asList(new RequiredInterface[] { req1, req2 })));
+               AssertionUtils.assertEquals(new RequiredInterface[] { req1, req2 },
+                               SystemAssembler.filterRequiredServices(prov3, Arrays
+                                               .asList(new RequiredInterface[] { req1, req2 })));
+
+               AssertionUtils.assertEquals(new ProvidedInterface[] { prov1 },
                                SystemAssembler.filterProvidedServices(req1, Arrays
-                                               .asList(new ProvidedInterfaceDescriptor[] { prov1 })));
-               AssertionUtils.assertEquals(
-                               new ProvidedInterfaceDescriptor[] { prov1 }, SystemAssembler
-                                               .filterProvidedServices(req1, Arrays
-                                                               .asList(new ProvidedInterfaceDescriptor[] {
-                                                                               prov1, prov2 })));
-               AssertionUtils.assertEquals(new ProvidedInterfaceDescriptor[] { prov1,
-                               prov3 }, SystemAssembler.filterProvidedServices(req1, Arrays
-                               .asList(new ProvidedInterfaceDescriptor[] { prov1, prov3 })));
+                                               .asList(new ProvidedInterface[] { prov1 })));
+               AssertionUtils.assertEquals(new ProvidedInterface[] { prov1 },
+                               SystemAssembler.filterProvidedServices(req1, Arrays
+                                               .asList(new ProvidedInterface[] { prov1, prov2 })));
+               AssertionUtils.assertEquals(new ProvidedInterface[] { prov1, prov3 },
+                               SystemAssembler.filterProvidedServices(req1, Arrays
+                                               .asList(new ProvidedInterface[] { prov1, prov3 })));
        }
 
        public void testEnvironmentApplication() {
-               Component environment = new Environment(_registry);
-               Component application = new Application(_registry);
+               Component environment = new Environment();
+               Component application = new Application();
                SystemAssembler assembler = new SystemAssembler(new Component[] {
-                               environment, application }, new ProvidedInterfaceDescriptor[0]);
-               assembler.start(_registry, new Service[0]);
-               Service[] envServices = environment.getRunningServices();
+                               environment, application }, new ProvidedInterface[0]);
+               assembler.start();
+               ProvidedInterface[] envServices = environment.getRunningServices();
                assertEquals(2, envServices.length);
-               Service[] appServices = environment.getRunningServices();
+               ProvidedInterface[] appServices = environment.getRunningServices();
                assertEquals(2, appServices.length);
-               assertEquals(2, _registry.listAllServices().length);
 
+               // TODO test stopping!!!!!!
                environment.stop();
-               assertEquals(0, _registry.listAllServices().length);
-
                application.stop();
-               assertEquals(0, _registry.listAllServices().length);
        }
 
        public void testApplicationEnvironment() {
                try {
-                       Component environment = new Environment(_registry);
-                       Component application = new Application(_registry);
+                       Component environment = new Environment();
+                       Component application = new Application();
                        SystemAssembler assembler = new SystemAssembler(new Component[] {
-                                       application, environment },
-                                       new ProvidedInterfaceDescriptor[0]);
-                       assembler.start(_registry, new Service[0]);
+                                       application, environment }, new ProvidedInterface[0]);
+                       assembler.start();
                } catch (SystemAssemblyException e) {
                        // e.printStackTrace();
                        return;
@@ -98,18 +87,18 @@ public class SystemAssemblerTest extends TestCase {
        }
 
        public void testComposite() {
-               Component environment = new Environment(_registry);
-               Component application = new Application(_registry);
+               Component environment = new Environment();
+               Component application = new Application();
                assertEquals(Status.NOT_STARTED, environment.getStatus());
                assertEquals(Status.NOT_STARTED, application.getStatus());
-               Container system = new Container("all", _registry, new Component[] {
-                               environment, application }, new ProvidedInterfaceDescriptor[0],
-                               new RequiredInterfaceDescriptor[0]);
+               Container system = new Container("all", new Component[] { environment,
+                               application }, new ProvidedInterface[0],
+                               new RequiredInterface[0]);
                assertEquals(Status.NOT_STARTED, system.getStatus());
-               system.start("root", new Service[0]);
-               RequiredInterfaceDescriptor[] required = system.getRequiredServices();
+               system.start("root");
+               RequiredInterface[] required = system.getRequiredServices();
                assertEquals(0, required.length);
-               InterfaceDescriptor[] provided = system.getProvidedServices();
+               ProvidedInterface[] provided = system.getProvidedServices();
                assertEquals(0, provided.length);
                assertEquals(Status.RUNNING, environment.getStatus());
                assertEquals(Status.RUNNING, application.getStatus());
@@ -123,15 +112,31 @@ public class SystemAssemblerTest extends TestCase {
 
        public void testCompositeWithWrongProvidedInfo() {
                try {
-                       Component environment = new Environment(_registry);
-                       Component application = new Application(_registry);
+                       Component environment = new Environment();
+                       Component application = new Application();
                        Container system = new Container(
                                        "all",
-                                       _registry,
                                        new Component[] { environment, application },
-                                       new ProvidedInterfaceDescriptor[] { new DefaultProvidedInterfaceDescriptor(
+                                       new ProvidedInterface[] { new DefaultProvidedInterface(
                                                        "string", String.class) },
-                                       new DefaultRequiredInterfaceDescriptor[0]);
+                                       new DefaultRequiredInterface[0]);
+               } catch (SystemAssemblyException e) {
+                       return;
+               }
+               fail();
+       }
+
+       public void testCompositeRequiredInterfaceNotProvided() {
+               try {
+                       Component environment = new Environment();
+                       Component application = new Application();
+                       Container system = new Container(
+                                       "all",
+                                       new Component[] { environment, application },
+                                       new ProvidedInterface[0],
+                                       new RequiredInterface[] { new DefaultRequiredInterface(
+                                                       "string", String.class) });
+                       system.start("root");
                } catch (SystemAssemblyException e) {
                        return;
                }
@@ -139,31 +144,31 @@ public class SystemAssemblerTest extends TestCase {
        }
 
        public void testCompositeWithSuperfluousRequiredInfo() {
-               Component environment = new Environment(_registry);
-               Component application = new Application(_registry);
+               Component environment = new Environment();
+               Component application = new Application();
                Container system = new Container(
                                "all",
-                               _registry,
                                new Component[] { environment, application },
-                               new ProvidedInterfaceDescriptor[0],
-                               new RequiredInterfaceDescriptor[] { new DefaultRequiredInterfaceDescriptor(
+                               new ProvidedInterface[0],
+                               new RequiredInterface[] { new DefaultRequiredInterface(
                                                "string", String.class) });
-               system.start("root", new Service[0]);
-               RequiredInterfaceDescriptor[] required = system.getRequiredServices();
+               system.getRequiredServices()[0].setProvider(
+                               new DefaultProvidedInterface("hallo", String.class));
+               system.start("root");
+               RequiredInterface[] required = system.getRequiredServices();
                assertEquals(1, required.length);
-               ProvidedInterfaceDescriptor[] provided = system.getProvidedServices();
+               ProvidedInterface[] provided = system.getProvidedServices();
                assertEquals(0, provided.length);
        }
 
        public void testCompositeWithExternalDependencesNotProvided() {
                try {
-                       Component environment = new Environment(_registry);
-                       Component application = new Application(_registry);
-                       Container system = new Container("all", _registry,
-                                       new Component[] { application },
-                                       new ProvidedInterfaceDescriptor[0], application
-                                                       .getRequiredServices());
-                       system.start("root", new Service[0]);
+                       Component environment = new Environment();
+                       Component application = new Application();
+                       Container system = new Container("all",
+                                       new Component[] { application }, new ProvidedInterface[0],
+                                       application.getRequiredServices());
+                       system.start("root");
                } catch (SystemAssemblyException e) {
                        return;
                }
@@ -173,30 +178,32 @@ public class SystemAssemblerTest extends TestCase {
 
        public void testCompositeWithExternalDependencesProvided() {
 
-               Component environment = new Environment(_registry);
-               Component application = new Application(_registry);
-               Container system = new Container("all", _registry,
-                               new Component[] { application },
-                               new ProvidedInterfaceDescriptor[0], application
-                                               .getRequiredServices());
-               Service[] envServices = environment.start("env", new Service[0]);
-               system.start("root", envServices);
-               RequiredInterfaceDescriptor[] required = system.getRequiredServices();
+               Component environment = new Environment();
+               Component application = new Application();
+               Container system = new Container("all",
+                               new Component[] { application }, new ProvidedInterface[0],
+                               application.getRequiredServices());
+               environment.start("env");
+               system.getRequiredServices()[0].setProvider(environment.getProvidedServices()[0]);
+               system.getRequiredServices()[1].setProvider(environment.getProvidedServices()[1]);
+               
+               system.start("root");
+               RequiredInterface[] required = system.getRequiredServices();
                assertEquals(2, required.length);
-               ProvidedInterfaceDescriptor[] provided = system.getProvidedServices();
+               ProvidedInterface[] provided = system.getProvidedServices();
                assertEquals(0, provided.length);
 
        }
 
        public void testAmbiguousInterfaces() {
                try {
-                       Component environment1 = new Environment(_registry);
-                       Component environment2 = new Environment(_registry);
-                       Component application = new Application(_registry);
+                       Component environment1 = new Environment();
+                       Component environment2 = new Environment();
+                       Component application = new Application();
                        SystemAssembler assembler = new SystemAssembler(new Component[] {
                                        environment1, environment2, application },
-                                       new ProvidedInterfaceDescriptor[0]);
-                       assembler.start(_registry, new Service[0]);
+                                       new ProvidedInterface[0]);
+                       assembler.start();
 
                } catch (SystemAssemblyException e) {
                        return;
@@ -206,12 +213,11 @@ public class SystemAssemblerTest extends TestCase {
 
        public void testIncompleteRequirements() {
                try {
-                       Component application = new Application(_registry);
-                       Container system = new Container("all", _registry,
-                                       new Component[] { application },
-                                       new ProvidedInterfaceDescriptor[0],
-                                       new RequiredInterfaceDescriptor[0]);
-                       system.start("root", new Service[0]);
+                       Component application = new Application();
+                       Container system = new Container("all",
+                                       new Component[] { application }, new ProvidedInterface[0],
+                                       new RequiredInterface[0]);
+                       system.start("root");
                } catch (SystemAssemblyException e) {
                        return;
                }