mirror of
https://github.com/tiqi-group/pydase.git
synced 2025-04-20 00:10:03 +02:00
adds test checking for multiple instances of a class containing a task
This commit is contained in:
parent
e491ac7458
commit
6b6ce1d43f
@ -138,3 +138,154 @@ async def test_nested_dict_autostart_task(
|
|||||||
"'sub_services_dict[\"second\"].my_task.status' changed to 'TaskStatus.RUNNING'"
|
"'sub_services_dict[\"second\"].my_task.status' changed to 'TaskStatus.RUNNING'"
|
||||||
in caplog.text
|
in caplog.text
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.asyncio(scope="function")
|
||||||
|
async def test_manual_start_with_multiple_service_instances(
|
||||||
|
caplog: LogCaptureFixture,
|
||||||
|
) -> None:
|
||||||
|
class MySubService(pydase.DataService):
|
||||||
|
@task()
|
||||||
|
async def my_task(self) -> None:
|
||||||
|
logger.info("Triggered task.")
|
||||||
|
while True:
|
||||||
|
await asyncio.sleep(1)
|
||||||
|
|
||||||
|
class MyService(pydase.DataService):
|
||||||
|
sub_services_list = [MySubService() for i in range(2)]
|
||||||
|
sub_services_dict = {"first": MySubService(), "second": MySubService()}
|
||||||
|
|
||||||
|
service_instance = MyService()
|
||||||
|
state_manager = StateManager(service_instance)
|
||||||
|
DataServiceObserver(state_manager)
|
||||||
|
|
||||||
|
autostart_service_tasks(service_instance)
|
||||||
|
|
||||||
|
await asyncio.sleep(0.1)
|
||||||
|
|
||||||
|
assert (
|
||||||
|
service_instance.sub_services_list[0].my_task.status == TaskStatus.NOT_RUNNING
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
service_instance.sub_services_list[1].my_task.status == TaskStatus.NOT_RUNNING
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
service_instance.sub_services_dict["first"].my_task.status
|
||||||
|
== TaskStatus.NOT_RUNNING
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
service_instance.sub_services_dict["second"].my_task.status
|
||||||
|
== TaskStatus.NOT_RUNNING
|
||||||
|
)
|
||||||
|
|
||||||
|
service_instance.sub_services_list[0].my_task.start()
|
||||||
|
await asyncio.sleep(0.01)
|
||||||
|
|
||||||
|
assert service_instance.sub_services_list[0].my_task.status == TaskStatus.RUNNING
|
||||||
|
assert (
|
||||||
|
"'sub_services_list[0].my_task.status' changed to 'TaskStatus.RUNNING'"
|
||||||
|
in caplog.text
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
"'sub_services_list[1].my_task.status' changed to 'TaskStatus.RUNNING'"
|
||||||
|
not in caplog.text
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
"'sub_services_dict[\"first\"].my_task.status' changed to 'TaskStatus.RUNNING'"
|
||||||
|
not in caplog.text
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
"'sub_services_dict[\"second\"].my_task.status' changed to 'TaskStatus.RUNNING'"
|
||||||
|
not in caplog.text
|
||||||
|
)
|
||||||
|
|
||||||
|
service_instance.sub_services_list[0].my_task.stop()
|
||||||
|
await asyncio.sleep(0.01)
|
||||||
|
|
||||||
|
assert "Task 'my_task' was cancelled" in caplog.text
|
||||||
|
caplog.clear()
|
||||||
|
|
||||||
|
service_instance.sub_services_list[1].my_task.start()
|
||||||
|
await asyncio.sleep(0.01)
|
||||||
|
|
||||||
|
assert service_instance.sub_services_list[1].my_task.status == TaskStatus.RUNNING
|
||||||
|
assert (
|
||||||
|
"'sub_services_list[0].my_task.status' changed to 'TaskStatus.RUNNING'"
|
||||||
|
not in caplog.text
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
"'sub_services_list[1].my_task.status' changed to 'TaskStatus.RUNNING'"
|
||||||
|
in caplog.text
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
"'sub_services_dict[\"first\"].my_task.status' changed to 'TaskStatus.RUNNING'"
|
||||||
|
not in caplog.text
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
"'sub_services_dict[\"second\"].my_task.status' changed to 'TaskStatus.RUNNING'"
|
||||||
|
not in caplog.text
|
||||||
|
)
|
||||||
|
|
||||||
|
service_instance.sub_services_list[1].my_task.stop()
|
||||||
|
await asyncio.sleep(0.01)
|
||||||
|
|
||||||
|
assert "Task 'my_task' was cancelled" in caplog.text
|
||||||
|
caplog.clear()
|
||||||
|
|
||||||
|
service_instance.sub_services_dict["first"].my_task.start()
|
||||||
|
await asyncio.sleep(0.01)
|
||||||
|
|
||||||
|
assert (
|
||||||
|
service_instance.sub_services_dict["first"].my_task.status == TaskStatus.RUNNING
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
"'sub_services_list[0].my_task.status' changed to 'TaskStatus.RUNNING'"
|
||||||
|
not in caplog.text
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
"'sub_services_list[1].my_task.status' changed to 'TaskStatus.RUNNING'"
|
||||||
|
not in caplog.text
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
"'sub_services_dict[\"first\"].my_task.status' changed to 'TaskStatus.RUNNING'"
|
||||||
|
in caplog.text
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
"'sub_services_dict[\"second\"].my_task.status' changed to 'TaskStatus.RUNNING'"
|
||||||
|
not in caplog.text
|
||||||
|
)
|
||||||
|
|
||||||
|
service_instance.sub_services_dict["first"].my_task.stop()
|
||||||
|
await asyncio.sleep(0.01)
|
||||||
|
|
||||||
|
assert "Task 'my_task' was cancelled" in caplog.text
|
||||||
|
caplog.clear()
|
||||||
|
|
||||||
|
service_instance.sub_services_dict["second"].my_task.start()
|
||||||
|
await asyncio.sleep(0.01)
|
||||||
|
|
||||||
|
assert (
|
||||||
|
service_instance.sub_services_dict["second"].my_task.status
|
||||||
|
== TaskStatus.RUNNING
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
"'sub_services_list[0].my_task.status' changed to 'TaskStatus.RUNNING'"
|
||||||
|
not in caplog.text
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
"'sub_services_list[1].my_task.status' changed to 'TaskStatus.RUNNING'"
|
||||||
|
not in caplog.text
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
"'sub_services_dict[\"first\"].my_task.status' changed to 'TaskStatus.RUNNING'"
|
||||||
|
not in caplog.text
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
"'sub_services_dict[\"second\"].my_task.status' changed to 'TaskStatus.RUNNING'"
|
||||||
|
in caplog.text
|
||||||
|
)
|
||||||
|
|
||||||
|
service_instance.sub_services_dict["second"].my_task.stop()
|
||||||
|
await asyncio.sleep(0.01)
|
||||||
|
|
||||||
|
assert "Task 'my_task' was cancelled" in caplog.text
|
||||||
|
Loading…
x
Reference in New Issue
Block a user