def test_add_service(): service_alias = "test-1" manager = ServiceManager("service-manager-1") service_meta = ServiceMetaData(service_alias) test_service = BaseService(service_meta.alias) # Add service assert manager.add_service(test_service, service_meta) == True # Add adding again should fail assert manager.add_service(test_service, service_meta) == False
def test_baseservice(): """ Base service tests for: - [x] name on init - [x] idle state on init - [x] starting state on start() - [x] ready() alias for idle state - [x] stopped state on stop() - [x] idle state exception when service not in stopped state - [x] idle state on idle() :return: """ name = "base-service-1" base = BaseService(name) assert base.alias == name assert base.unique_name == '%s/%s' % (name, base.uuid) assert base.get_state() == BaseStates.Idle assert base.ready() is True # ready == Idle greenlet = base.start() assert greenlet is not None assert base.get_state() == BaseStates.Starting assert base.ready() is False # exception should be thrown if state is started # and asking service to make itself idle. try: base.idle() except IdleActionException as ex: assert ex is not None base.stop() assert base.get_state() == BaseStates.Stopped # Try restarting the service, it will fail because it is not idle # In order to restart a service must be set to idle again. try: base.start() assert not True # <-- should never get here except ServiceNotIdleException as ex: assert ex is not None # now set to idle base.idle() # should not throw this time assert base.get_state() == BaseStates.Idle # not start, should work and not throw an exception base.start()
def test_stop_service(): service_alias = "test-1" manager = ServiceManager("service-manager-1") service_meta = ServiceMetaData(service_alias) test_service = BaseService(service_meta.alias) # Add service assert manager.add_service(test_service, service_meta) == True assert manager.get_service_count() is 1 # Stop assert manager.stop_service(service_alias) == True assert manager.get_service_count() == 0 # Stop Again will fail assert manager.stop_service(service_alias) == False
def test_baseservice_service_directory(): """ Base service tests for: - [x] name on init - [x] idle state on init - [x] started state on start() - [x] ready() alias for idle state - [x] stopped state on stop() - [x] idle state exception when service not in stopped state - [x] idle state on idle() :return: """ name = "base-service-1" base = BaseService(name) assert base.alias == name assert base.unique_name == '%s/%s' % (name, base.uuid) assert base.get_state() == BaseStates.Idle assert base.ready() is True # ready == Idle greenlet = base.start() assert greenlet is not None assert base.get_state() == BaseStates.Starting assert base.ready() is False # exception should be thrown if state is started # and asking service to make itself idle. try: base.idle() except IdleActionException as ex: assert ex is not None base.stop() assert base.get_state() == BaseStates.Stopped base.idle() # should not throw this time assert base.get_state() == BaseStates.Idle