(make_timeline, daemon)
| 453 | |
| 454 | @pytest.mark.timeout(3) |
| 455 | def test_unobserved(make_timeline, daemon): |
| 456 | timeline, initial_history = make_timeline() |
| 457 | |
| 458 | worker_can_proceed = threading.Event() |
| 459 | |
| 460 | @daemon |
| 461 | def worker(): |
| 462 | messages = MessageFactory() |
| 463 | |
| 464 | worker_can_proceed.wait() |
| 465 | worker_can_proceed.clear() |
| 466 | timeline.record_event(messages.event("dum", {})) |
| 467 | log.debug("dum") |
| 468 | |
| 469 | worker_can_proceed.wait() |
| 470 | timeline.record_event(messages.event("dee", {})) |
| 471 | log.debug("dee") |
| 472 | |
| 473 | timeline.record_event(messages.event("dum", {})) |
| 474 | log.debug("dum") |
| 475 | |
| 476 | timeline.freeze() |
| 477 | assert timeline.is_frozen |
| 478 | |
| 479 | timeline.proceed() |
| 480 | assert not timeline.is_frozen |
| 481 | worker_can_proceed.set() |
| 482 | |
| 483 | dum = timeline.wait_for_next(Event("dum")) |
| 484 | assert timeline.is_frozen |
| 485 | assert dum.observed |
| 486 | |
| 487 | # Should be fine since we observed 'dum' by waiting for it. |
| 488 | timeline.proceed() |
| 489 | assert not timeline.is_frozen |
| 490 | |
| 491 | worker_can_proceed.set() |
| 492 | worker.join() |
| 493 | |
| 494 | dum2 = timeline.wait_for_next(Event("dum"), freeze=False) |
| 495 | assert not timeline.is_frozen |
| 496 | assert dum2.observed |
| 497 | |
| 498 | timeline.wait_until_realized(Event("dum") >> Event("dum"), freeze=True) |
| 499 | assert timeline.is_frozen |
| 500 | |
| 501 | dee = dum.next |
| 502 | assert not dee.observed |
| 503 | |
| 504 | # Should complain since 'dee' is unobserved. |
| 505 | with pytest.raises(Exception): |
| 506 | timeline.proceed() |
| 507 | |
| 508 | # Observe it! |
| 509 | timeline.expect_realized(Event("dee")) |
| 510 | assert dee.observed |
| 511 | |
| 512 | # Should be good now. |
nothing calls this directly
no test coverage detected
searching dependent graphs…