pause_intake answers False when claimed work outlasts its timeout, and reload then resumes intake and raises RebuildBusy before tearing anything down
This commit is contained in:
@@ -5,13 +5,14 @@ service stops claiming and its timers once claimed work has finished. Both
|
||||
wait without a limit and can be aborted.
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
import threading
|
||||
import time
|
||||
|
||||
import pytest
|
||||
|
||||
from fluksio.flow import executor
|
||||
from fluksio.flow.controller import FlowController, LoadedNode
|
||||
from fluksio.flow.controller import FlowController, LoadedNode, RebuildBusy
|
||||
from fluksio.flow.executor import ExecutionService
|
||||
from fluksio.flow.messages import DType, MessageSpec
|
||||
from fluksio.flow.namespace import Rename
|
||||
@@ -149,6 +150,29 @@ def test_pause_intake_waits_out_a_claim_already_under_way(monkeypatch):
|
||||
service.stop()
|
||||
|
||||
|
||||
def test_a_reload_that_cannot_drain_leaves_the_pipeline_as_it_was(
|
||||
tmp_path, monkeypatch
|
||||
):
|
||||
monkeypatch.setattr(executor, "DRAIN_TIMEOUT_S", 0.05)
|
||||
seen: list = []
|
||||
running, finish, consume = _blocking(seen)
|
||||
pipeline, service, source = _engine(consume)
|
||||
controller = FlowController(FlowStore(tmp_path / "flows"), execution=service)
|
||||
controller.pipeline = pipeline
|
||||
service.start()
|
||||
try:
|
||||
source.inject({"reading": 1.0})
|
||||
assert running.wait(5)
|
||||
with pytest.raises(RebuildBusy):
|
||||
asyncio.run(controller.reload())
|
||||
assert controller.pipeline is pipeline
|
||||
assert service._pipeline is pipeline
|
||||
assert service._intake.is_set()
|
||||
finally:
|
||||
finish.set()
|
||||
service.stop()
|
||||
|
||||
|
||||
def test_a_hold_waits_out_a_claim_already_under_way():
|
||||
seen: list = []
|
||||
queue = SlowClaim()
|
||||
|
||||
Reference in New Issue
Block a user