Reconcile delayed frame sync before scheduled writes
This commit is contained in:
@@ -152,3 +152,55 @@ def test_offline(service):
|
||||
id = submit(service)
|
||||
service.process_one()
|
||||
assert service.operation(id)["error"]["code"] == "DEVICE_OFFLINE"
|
||||
|
||||
|
||||
def test_late_sync_resolves_unknown_without_upload_retry(service, monkeypatch):
|
||||
id = submit(service)
|
||||
service.process_one()
|
||||
service.update(id, "UNKNOWN")
|
||||
driver = service.registry.get("living-room")
|
||||
calls = []
|
||||
device = driver.device
|
||||
monkeypatch.setattr(driver, "device", lambda **kw: calls.append(kw) or device(**kw))
|
||||
service.sync()
|
||||
assert service.operation(id)["status"] == "COMPLETED"
|
||||
assert driver.client.uploads == 1
|
||||
assert calls == [{"refresh": True}]
|
||||
assert not service.blocked("living-room")
|
||||
assert service.db.one(
|
||||
"SELECT confirmed_at FROM managed_cloud_uploads WHERE operation_id=?", (id,)
|
||||
)["confirmed_at"]
|
||||
|
||||
|
||||
def test_unknown_wrong_target_stays_locked_and_queries_at_most_once_per_minute(
|
||||
service, monkeypatch
|
||||
):
|
||||
id = submit(service)
|
||||
service.process_one()
|
||||
service.update(id, "UNKNOWN")
|
||||
driver = service.registry.get("living-room")
|
||||
driver.client.display(1)
|
||||
driver.invalidate()
|
||||
calls = []
|
||||
device = driver.device
|
||||
monkeypatch.setattr(driver, "device", lambda **kw: calls.append(kw) or device(**kw))
|
||||
service.sync()
|
||||
service.sync()
|
||||
assert service.operation(id)["status"] == "UNKNOWN"
|
||||
assert service.blocked("living-room")
|
||||
assert driver.client.uploads == 1
|
||||
assert len(calls) == 1
|
||||
|
||||
|
||||
def test_unknown_matching_image_without_sync_stays_locked(service, monkeypatch):
|
||||
id = submit(service)
|
||||
service.process_one()
|
||||
service.update(id, "UNKNOWN")
|
||||
driver = service.registry.get("living-room")
|
||||
device = driver.device()
|
||||
device.current_content.synced = False
|
||||
monkeypatch.setattr(driver, "device", lambda **kw: device)
|
||||
service.sync()
|
||||
assert service.operation(id)["status"] == "UNKNOWN"
|
||||
assert service.blocked("living-room")
|
||||
assert driver.client.uploads == 1
|
||||
|
||||
Reference in New Issue
Block a user