refactored service methods to be shorter, updated some logging to debug, added some more service tests
This commit is contained in:
parent
8186f3716c
commit
bb533406a6
23 changed files with 226 additions and 112 deletions
|
@ -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"
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue