refactored service methods to be shorter, updated some logging to debug, added some more service tests

This commit is contained in:
Blake J. Harnden 2018-06-22 15:47:02 -07:00
parent 8186f3716c
commit bb533406a6
23 changed files with 226 additions and 112 deletions

View file

@ -10,10 +10,20 @@ class MyService(CoreService):
group = "Utility"
configs = ("myservice.sh",)
startup = ("sh myservice.sh",)
shutdown = ("sh myservice.sh",)
@classmethod
def generate_config(cls, node, filename):
return "# test file"
class MyService2(CoreService):
class MyService2(MyService):
name = "MyService2"
group = "Utility"
configs = ("myservice.sh",)
startup = ("sh myservice.sh",)
configs = ("myservice2.sh",)
startup = ("sh myservice2.sh",)
shutdown = ("sh myservice2.sh",)
@classmethod
def generate_config(cls, node, filename):
return "exit 1"

View file

@ -40,6 +40,91 @@ class ServiceF(CoreService):
class TestServices:
def test_service_file(self, session):
# given
ServiceManager.add_services(_SERVICES_PATH)
my_service = ServiceManager.get("MyService")
node = session.add_node()
file_name = my_service.configs[0]
file_path = node.hostfilename(file_name)
# when
session.services.create_service_files(node, my_service)
# then
assert os.path.exists(file_path)
def test_service_startup(self, session):
# given
ServiceManager.add_services(_SERVICES_PATH)
my_service = ServiceManager.get("MyService")
node = session.add_node()
session.services.create_service_files(node, my_service)
# when
status = session.services.startup_service(node, my_service, wait=True)
# then
assert not status
def test_service_startup_error(self, session):
# given
ServiceManager.add_services(_SERVICES_PATH)
my_service = ServiceManager.get("MyService2")
node = session.add_node()
session.services.create_service_files(node, my_service)
# when
status = session.services.startup_service(node, my_service, wait=True)
# then
assert status
def test_service_stop(self, session):
# given
ServiceManager.add_services(_SERVICES_PATH)
my_service = ServiceManager.get("MyService")
node = session.add_node()
session.services.create_service_files(node, my_service)
# when
status = session.services.stop_service(node, my_service)
# then
assert not status
def test_service_stop_error(self, session):
# given
ServiceManager.add_services(_SERVICES_PATH)
my_service = ServiceManager.get("MyService2")
node = session.add_node()
session.services.create_service_files(node, my_service)
# when
status = session.services.stop_service(node, my_service)
# then
assert status
def test_service_set_file(self, session):
# given
ServiceManager.add_services(_SERVICES_PATH)
my_service = ServiceManager.get("MyService")
node = session.add_node()
file_name = my_service.configs[0]
file_path = node.hostfilename(file_name)
file_data = "# custom file"
session.services.set_service_file(node.objid, my_service.name, file_name, file_data)
custom_service = session.services.get_service(node.objid, my_service.name)
# when
session.services.create_service_files(node, custom_service)
# then
assert os.path.exists(file_path)
with open(file_path, "r") as custom_file:
assert custom_file.read() == file_data
def test_service_import(self):
"""
Test importing a custom service.
@ -48,8 +133,23 @@ class TestServices:
assert ServiceManager.get("MyService")
assert ServiceManager.get("MyService2")
def test_service_defaults(self):
pass
def test_service_setget(self, session):
# given
ServiceManager.add_services(_SERVICES_PATH)
service_name = "MyService"
my_service = ServiceManager.get(service_name)
node = session.add_node()
# when
no_service = session.services.get_service(node.objid, service_name)
default_service = session.services.get_service(node.objid, service_name, default_service=True)
session.services.set_service(node.objid, service_name)
custom_service = session.services.get_service(node.objid, service_name, default_service=True)
# then
assert no_service is None
assert default_service == my_service
assert custom_service and custom_service != my_service
def test_services_dependencies(self, session):
# given
@ -62,7 +162,7 @@ class TestServices:
]
# when
startups = session.services.node_boot_paths(services)
startups = session.services.create_boot_paths(services)
# then
assert len(startups) == 2
@ -78,7 +178,7 @@ class TestServices:
# when
with pytest.raises(ValueError):
session.services.node_boot_paths(services)
session.services.create_boot_paths(services)
def test_services_dependencies_cycle(self, session):
# given
@ -94,4 +194,4 @@ class TestServices:
# when
with pytest.raises(ValueError):
session.services.node_boot_paths(services)
session.services.create_boot_paths(services)