public virtual void TestServiceStopFromInited()
 {
     TestCompositeService.ServiceManager serviceManager = new TestCompositeService.ServiceManager
                                                              ("ServiceManager");
     // Add services
     for (int i = 0; i < NumOfServices; i++)
     {
         TestCompositeService.CompositeServiceImpl service = new TestCompositeService.CompositeServiceImpl
                                                                 (i);
         serviceManager.AddTestService(service);
     }
     TestCompositeService.CompositeServiceImpl[] services = Collections.ToArray
                                                                (serviceManager.GetServices(), new TestCompositeService.CompositeServiceImpl[0]);
     serviceManager.Init(new Configuration());
     serviceManager.Stop();
     if (StopOnlyStartedServices)
     {
         //this policy => no services were stopped
         AssertInState(Service.STATE.Inited, services);
     }
     else
     {
         AssertInState(Service.STATE.Stopped, services);
     }
 }
        public virtual void TestServiceStop()
        {
            TestCompositeService.ServiceManager serviceManager = new TestCompositeService.ServiceManager
                                                                     ("ServiceManager");
            // Add services
            for (int i = 0; i < NumOfServices; i++)
            {
                TestCompositeService.CompositeServiceImpl service = new TestCompositeService.CompositeServiceImpl
                                                                        (i);
                if (i == FailedServiceSeqNumber)
                {
                    service.SetThrowExceptionOnStop(true);
                }
                serviceManager.AddTestService(service);
            }
            TestCompositeService.CompositeServiceImpl[] services = Collections.ToArray
                                                                       (serviceManager.GetServices(), new TestCompositeService.CompositeServiceImpl[0]);
            Configuration conf = new Configuration();

            // Initialise the composite service
            serviceManager.Init(conf);
            serviceManager.Start();
            // Stop the composite service
            try
            {
                serviceManager.Stop();
            }
            catch (TestCompositeService.ServiceTestRuntimeException)
            {
            }
            AssertInState(Service.STATE.Stopped, services);
        }
 public virtual void TestServiceLifecycleNoChildren()
 {
     TestCompositeService.ServiceManager serviceManager = new TestCompositeService.ServiceManager
                                                              ("ServiceManager");
     serviceManager.Init(new Configuration());
     serviceManager.Start();
     serviceManager.Stop();
 }
        public virtual void TestCallSequence()
        {
            TestCompositeService.ServiceManager serviceManager = new TestCompositeService.ServiceManager
                                                                     ("ServiceManager");
            // Add services
            for (int i = 0; i < NumOfServices; i++)
            {
                TestCompositeService.CompositeServiceImpl service = new TestCompositeService.CompositeServiceImpl
                                                                        (i);
                serviceManager.AddTestService(service);
            }
            TestCompositeService.CompositeServiceImpl[] services = Collections.ToArray
                                                                       (serviceManager.GetServices(), new TestCompositeService.CompositeServiceImpl[0]);
            Assert.Equal("Number of registered services ", NumOfServices,
                         services.Length);
            Configuration conf = new Configuration();

            // Initialise the composite service
            serviceManager.Init(conf);
            //verify they were all inited
            AssertInState(Service.STATE.Inited, services);
            // Verify the init() call sequence numbers for every service
            for (int i_1 = 0; i_1 < NumOfServices; i_1++)
            {
                Assert.Equal("For " + services[i_1] + " service, init() call sequence number should have been "
                             , i_1, services[i_1].GetCallSequenceNumber());
            }
            // Reset the call sequence numbers
            ResetServices(services);
            serviceManager.Start();
            //verify they were all started
            AssertInState(Service.STATE.Started, services);
            // Verify the start() call sequence numbers for every service
            for (int i_2 = 0; i_2 < NumOfServices; i_2++)
            {
                Assert.Equal("For " + services[i_2] + " service, start() call sequence number should have been "
                             , i_2, services[i_2].GetCallSequenceNumber());
            }
            ResetServices(services);
            serviceManager.Stop();
            //verify they were all stopped
            AssertInState(Service.STATE.Stopped, services);
            // Verify the stop() call sequence numbers for every service
            for (int i_3 = 0; i_3 < NumOfServices; i_3++)
            {
                Assert.Equal("For " + services[i_3] + " service, stop() call sequence number should have been "
                             , ((NumOfServices - 1) - i_3), services[i_3].GetCallSequenceNumber());
            }
            // Try to stop again. This should be a no-op.
            serviceManager.Stop();
            // Verify that stop() call sequence numbers for every service don't change.
            for (int i_4 = 0; i_4 < NumOfServices; i_4++)
            {
                Assert.Equal("For " + services[i_4] + " service, stop() call sequence number should have been "
                             , ((NumOfServices - 1) - i_4), services[i_4].GetCallSequenceNumber());
            }
        }
 public virtual void TestInitNullConf()
 {
     TestCompositeService.ServiceManager serviceManager = new TestCompositeService.ServiceManager
                                                              ("testInitNullConf");
     TestCompositeService.CompositeServiceImpl service = new TestCompositeService.CompositeServiceImpl
                                                             (0);
     serviceManager.AddTestService(service);
     try
     {
         serviceManager.Init(null);
         Log.Warn("Null Configurations are permitted " + serviceManager);
     }
     catch (ServiceStateException)
     {
     }
 }
 public virtual void TestServiceStopFromNotInited()
 {
     TestCompositeService.ServiceManager serviceManager = new TestCompositeService.ServiceManager
                                                              ("ServiceManager");
     // Add services
     for (int i = 0; i < NumOfServices; i++)
     {
         TestCompositeService.CompositeServiceImpl service = new TestCompositeService.CompositeServiceImpl
                                                                 (i);
         serviceManager.AddTestService(service);
     }
     TestCompositeService.CompositeServiceImpl[] services = Collections.ToArray
                                                                (serviceManager.GetServices(), new TestCompositeService.CompositeServiceImpl[0]);
     serviceManager.Stop();
     AssertInState(Service.STATE.Notinited, services);
 }
        public virtual void TestServiceStartup()
        {
            TestCompositeService.ServiceManager serviceManager = new TestCompositeService.ServiceManager
                                                                     ("ServiceManager");
            // Add services
            for (int i = 0; i < NumOfServices; i++)
            {
                TestCompositeService.CompositeServiceImpl service = new TestCompositeService.CompositeServiceImpl
                                                                        (i);
                if (i == FailedServiceSeqNumber)
                {
                    service.SetThrowExceptionOnStart(true);
                }
                serviceManager.AddTestService(service);
            }
            TestCompositeService.CompositeServiceImpl[] services = Collections.ToArray
                                                                       (serviceManager.GetServices(), new TestCompositeService.CompositeServiceImpl[0]);
            Configuration conf = new Configuration();

            // Initialise the composite service
            serviceManager.Init(conf);
            // Start the composite service
            try
            {
                serviceManager.Start();
                NUnit.Framework.Assert.Fail("Exception should have been thrown due to startup failure of last service"
                                            );
            }
            catch (TestCompositeService.ServiceTestRuntimeException)
            {
                for (int i_1 = 0; i_1 < NumOfServices - 1; i_1++)
                {
                    if (i_1 >= FailedServiceSeqNumber && StopOnlyStartedServices)
                    {
                        // Failed service state should be INITED
                        Assert.Equal("Service state should have been ", Service.STATE.
                                     Inited, services[NumOfServices - 1].GetServiceState());
                    }
                    else
                    {
                        Assert.Equal("Service state should have been ", Service.STATE.
                                     Stopped, services[i_1].GetServiceState());
                    }
                }
            }
        }