added logic to help provide dependent service ordering
This commit is contained in:
parent
bf47e5fc0d
commit
37ce407460
4 changed files with 159 additions and 3 deletions
|
@ -1,18 +1,94 @@
|
|||
import os
|
||||
|
||||
import pytest
|
||||
|
||||
from core.service import CoreService
|
||||
from core.service import ServiceManager
|
||||
|
||||
_PATH = os.path.abspath(os.path.dirname(__file__))
|
||||
_SERVICES_PATH = os.path.join(_PATH, "myservices")
|
||||
|
||||
|
||||
class ServiceA(CoreService):
|
||||
name = "A"
|
||||
dependencies = ("B",)
|
||||
|
||||
|
||||
class ServiceB(CoreService):
|
||||
name = "B"
|
||||
dependencies = ("C",)
|
||||
|
||||
|
||||
class ServiceC(CoreService):
|
||||
name = "C"
|
||||
dependencies = ()
|
||||
|
||||
|
||||
class ServiceD(CoreService):
|
||||
name = "D"
|
||||
dependencies = ("A",)
|
||||
|
||||
|
||||
class ServiceE(CoreService):
|
||||
name = "E"
|
||||
dependencies = ("Z",)
|
||||
|
||||
|
||||
class ServiceF(CoreService):
|
||||
name = "F"
|
||||
dependencies = ()
|
||||
|
||||
|
||||
class TestServices:
|
||||
def test_import_service(self):
|
||||
def test_service_import(self):
|
||||
"""
|
||||
Test importing a custom service.
|
||||
|
||||
:param conftest.Core core: core fixture to test with
|
||||
"""
|
||||
ServiceManager.add_services(_SERVICES_PATH)
|
||||
assert ServiceManager.get("MyService")
|
||||
assert ServiceManager.get("MyService2")
|
||||
|
||||
def test_services_dependencies(self, session):
|
||||
# given
|
||||
services = [
|
||||
ServiceA(),
|
||||
ServiceB(),
|
||||
ServiceC(),
|
||||
ServiceD(),
|
||||
ServiceF(),
|
||||
]
|
||||
|
||||
# when
|
||||
startups = session.services.get_service_startups(services)
|
||||
|
||||
# then
|
||||
assert len(startups) == 2
|
||||
|
||||
def test_services_dependencies_not_present(self, session):
|
||||
# given
|
||||
services = [
|
||||
ServiceA(),
|
||||
ServiceB(),
|
||||
ServiceC(),
|
||||
ServiceE()
|
||||
]
|
||||
|
||||
# when
|
||||
with pytest.raises(ValueError):
|
||||
session.services.get_service_startups(services)
|
||||
|
||||
def test_services_dependencies_cycle(self, session):
|
||||
# given
|
||||
service_c = ServiceC()
|
||||
service_c.dependencies = ("D",)
|
||||
services = [
|
||||
ServiceA(),
|
||||
ServiceB(),
|
||||
service_c,
|
||||
ServiceD(),
|
||||
ServiceF()
|
||||
]
|
||||
|
||||
# when
|
||||
with pytest.raises(ValueError):
|
||||
session.services.get_service_startups(services)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue