Huge refactoring.
[utils] / system / general / src / test / java / org / wamblee / system / core / ContainerTest.java
index bcca8cc11bb823c37f01232e81dc78dc2767c76f..74eb43101d0fa461b30e8bd4b31dcf25fd68f479 100644 (file)
@@ -24,6 +24,7 @@ import org.easymock.classextension.ConstructorArgs;
 import org.easymock.classextension.EasyMock;
 import org.easymock.classextension.IMocksControl;
 import org.wamblee.test.AssertionUtils;
+import org.wamblee.test.EasyMockMatchers;
 import org.wamblee.test.EventTracker;
 
 public class ContainerTest extends TestCase {
@@ -83,14 +84,11 @@ public class ContainerTest extends TestCase {
                                environment, application }, new ProvidedInterface[0],
                                new RequiredInterface[0]);
 
-               container.start();
+               Scope scope = container.start();
                AssertionUtils.assertEquals(new String[] { "start.environment",
                                "start.application" }, _tracker.getEvents(
                                Thread.currentThread()).toArray(new String[0]));
-               ProvidedInterface[] envServices = environment.getRunningInterfaces();
-               assertEquals(2, envServices.length);
-               ProvidedInterface[] appServices = application.getRunningInterfaces();
-               assertEquals(0, appServices.length);
+               assertEquals(0, scope.getProvidedInterfaces().length);
                
                assertEquals(environment.getString(), application.getString());
                assertEquals(environment.getInteger(), application.getInteger());
@@ -120,7 +118,7 @@ public class ContainerTest extends TestCase {
                Container system = new Container("all", new Component[] { environment,
                                application }, new ProvidedInterface[0],
                                new RequiredInterface[0]);
-               system.start();
+               Scope runtime = system.start();
                RequiredInterface[] required = system.getRequiredInterfaces();
                assertEquals(0, required.length);
                ProvidedInterface[] provided = system.getProvidedInterfaces();
@@ -131,7 +129,7 @@ public class ContainerTest extends TestCase {
                                Thread.currentThread()).toArray(new String[0]));
                _tracker.clear();
 
-               system.stop();
+               system.stop(runtime);
                AssertionUtils.assertEquals(new String[] { "stop.application",
                                "stop.environment" }, _tracker
                                .getEvents(Thread.currentThread()).toArray(new String[0]));
@@ -206,7 +204,7 @@ public class ContainerTest extends TestCase {
                Container system = new Container("all",
                                new Component[] { application }, new ProvidedInterface[0],
                                application.getRequiredInterfaces());
-               environment.start();
+               environment.start(new DefaultScope(new ProvidedInterface[0]));
                system.getRequiredInterfaces()[0].setProvider(environment
                                .getProvidedInterfaces()[0]);
                system.getRequiredInterfaces()[1].setProvider(environment
@@ -256,9 +254,9 @@ public class ContainerTest extends TestCase {
                Environment environment = new Environment(_tracker);
                Application application = control.createMock(Application.class,
                                new ConstructorArgs(Application.class.getConstructor()),
-                               Application.class.getDeclaredMethod("doStart"));
+                               Application.class.getDeclaredMethod("doStart", Scope.class));
 
-               application.doStart();
+               application.doStart(EasyMockMatchers.anyObject(Scope.class));
                EasyMock.expectLastCall().andThrow(new RuntimeException());
                control.replay();
 
@@ -272,10 +270,6 @@ public class ContainerTest extends TestCase {
                        AssertionUtils.assertEquals(new String[] { "start.environment",
                                        "stop.environment" }, _tracker.getEvents(
                                        Thread.currentThread()).toArray(new String[0]));
-                       ProvidedInterface[] envServices = environment.getRunningInterfaces();
-                       assertEquals(0, envServices.length);
-                       assertNull(environment.getProvidedInterfaces()[0].getImplementation());
-                       assertNull(environment.getProvidedInterfaces()[0].getImplementation());
                        return;
                }
                fail();
@@ -289,17 +283,17 @@ public class ContainerTest extends TestCase {
                // Application 1 will throw an exception while stopping.
                Application application1 = control.createMock(Application.class,
                                new ConstructorArgs(Application.class.getConstructor()),
-                               Application.class.getDeclaredMethod("doStop"));
+                               Application.class.getDeclaredMethod("doStop", Object.class));
 
-               application1.doStop();
+               application1.doStop(EasyMock.anyObject());
                EasyMock.expectLastCall().andThrow(new RuntimeException());
                
                // application 2 will throw an exception while starting
                Application application2 = control.createMock(Application.class,
                                new ConstructorArgs(Application.class.getConstructor()),
-                               Application.class.getDeclaredMethod("doStart"));
+                               Application.class.getDeclaredMethod("doStart", Scope.class));
 
-               application2.doStart();
+               application2.doStart(EasyMockMatchers.anyObject(Scope.class));
                EasyMock.expectLastCall().andThrow(new RuntimeException());
                
                control.replay();
@@ -314,10 +308,6 @@ public class ContainerTest extends TestCase {
                        AssertionUtils.assertEquals(new String[] { "start.environment", 
                                        "stop.environment" }, _tracker.getEvents(
                                        Thread.currentThread()).toArray(new String[0]));
-                       ProvidedInterface[] envServices = environment.getRunningInterfaces();
-                       assertEquals(0, envServices.length);
-                       assertNull(environment.getProvidedInterfaces()[0].getImplementation());
-                       assertNull(environment.getProvidedInterfaces()[0].getImplementation());
                        return;
                }
                fail();
@@ -332,7 +322,10 @@ public class ContainerTest extends TestCase {
                                env.getProvidedInterfaces()[0]); 
                container.getRequiredInterfaces()[1].setProvider(
                                env.getProvidedInterfaces()[1]);
-           container.start();
+               Scope external = new DefaultScope(env.getProvidedInterfaces());
+               env.start(external); 
+               
+           container.start(external);
            assertSame(env.getProvidedInterfaces()[0], container.getRequiredInterfaces()[0].getProvider());
            assertSame(env.getProvidedInterfaces()[1], container.getRequiredInterfaces()[1].getProvider());
            assertSame(env.getProvidedInterfaces()[0], application.getRequiredInterfaces()[0].getProvider());
@@ -345,8 +338,10 @@ public class ContainerTest extends TestCase {
                                new ProvidedInterface[0], Application.required(true));
                Environment env = new Environment();
                container.getRequiredInterfaces()[0].setProvider(
-                               env.getProvidedInterfaces()[0]); 
-           container.start();
+                               env.getProvidedInterfaces()[0]);
+               Scope external = new DefaultScope(new ProvidedInterface[0]); 
+               external.publishInterface(env.getProvidedInterfaces()[0], env.getString());
+           container.start(external);
            assertSame(env.getProvidedInterfaces()[0], container.getRequiredInterfaces()[0].getProvider());
            assertNull(container.getRequiredInterfaces()[1].getProvider());
            assertSame(env.getProvidedInterfaces()[0], application.getRequiredInterfaces()[0].getProvider());