def test_service_manager(): manager = ServiceManager("service-manager-1") d1 = manager._directory assert d1 is not None # direct mod to directory allowed d1["test-1"] = 1 assert manager.get_service_count() == 1 d1.pop("test-1") assert manager.get_service_count() == 0
def test_directory_service(): """ Start test by getting the directory service via a ServiceManager. :return: """ service_manager = ServiceManager("test-service-manager-1") directory_service = service_manager.get_directory_service_proxy() assert directory_service is not None assert directory_service.name == "directory-service" assert directory_service.get_service_count() == 0
def test_output_service_write(): # create ServiceManager and add services service_manager = ServiceManager("service-manager") # add worker worker_name = "test-worker-1" test_worker_1 = TestWorker(worker_name) service_manager.add_service(test_worker_1, worker_name) # add output service mock_output_service = MockOutputService() service_manager.add_service(mock_output_service, "mock-output-service") assert test_worker_1.get_state() == BaseStates.Idle assert mock_output_service.get_state() == BaseStates.Idle # join and block, waiting for event loop to execute once # and then exits. Mock manually controls the event loop. # Manually starting services rather than using service_manager gevent.joinall([test_worker_1.start(), mock_output_service.start()]) # Assert that state is started. State will not be stopped # or idle because the services were manually called. Except # for the Mock service which will be idle. See the code. assert test_worker_1.get_state() == BaseStates.Started assert mock_output_service.get_state() == BaseStates.Idle # the services ran and I expect the test worker to have queried # the directory proxy and found the output service, writing to it. result = mock_output_service.get() assert result is not None assert result == "test-worker-work-result" assert mock_output_service.size() == 0