|
21 | 21 | def checkpoint_factory(state_manager, consumer, row_producer_factory):
|
22 | 22 | def factory(
|
23 | 23 | commit_interval: float = 1,
|
| 24 | + commit_every: int = 0, |
24 | 25 | consumer_: Optional[Consumer] = None,
|
25 | 26 | producer_: Optional[RowProducer] = None,
|
26 | 27 | state_manager_: Optional[StateStoreManager] = None,
|
27 | 28 | exactly_once: bool = False,
|
28 | 29 | ):
|
29 | 30 | return Checkpoint(
|
30 | 31 | commit_interval=commit_interval,
|
| 32 | + commit_every=commit_every, |
31 | 33 | producer=producer_ or row_producer_factory(transactional=exactly_once),
|
32 | 34 | consumer=consumer_ or consumer,
|
33 | 35 | state_manager=state_manager_ or state_manager,
|
@@ -60,15 +62,30 @@ def test_exactly_once_init(self, checkpoint_factory):
|
60 | 62 | mock_producer.begin_transaction.assert_called()
|
61 | 63 |
|
62 | 64 | @pytest.mark.parametrize("commit_interval, expired", [(0, True), (999, False)])
|
63 |
| - def test_expired(self, commit_interval, expired, checkpoint_factory): |
| 65 | + def test_expired_with_commit_interval( |
| 66 | + self, commit_interval, expired, checkpoint_factory |
| 67 | + ): |
64 | 68 | checkpoint = checkpoint_factory(commit_interval=commit_interval)
|
65 | 69 | assert checkpoint.expired() == expired
|
66 | 70 |
|
| 71 | + def test_expired_with_commit_every(self, checkpoint_factory): |
| 72 | + checkpoint = checkpoint_factory(commit_interval=999, commit_every=2) |
| 73 | + checkpoint.store_offset("topic", 0, 0) |
| 74 | + assert not checkpoint.expired() |
| 75 | + |
| 76 | + checkpoint.store_offset("topic", 0, 1) |
| 77 | + assert checkpoint.expired() |
| 78 | + |
| 79 | + def test_expired_with_commit_every_and_commit_interval(self, checkpoint_factory): |
| 80 | + checkpoint = checkpoint_factory(commit_interval=0, commit_every=10) |
| 81 | + checkpoint.store_offset("topic", 0, 0) |
| 82 | + assert checkpoint.expired() |
| 83 | + |
67 | 84 | def test_store_already_processed_offset_fails(self, checkpoint_factory):
|
68 | 85 | checkpoint = checkpoint_factory()
|
69 | 86 | checkpoint.store_offset("topic", 0, 10)
|
70 | 87 | with pytest.raises(InvalidStoredOffset):
|
71 |
| - checkpoint.store_offset("topic", 0, 9) |
| 88 | + checkpoint.store_offset("topic", 0, 10) |
72 | 89 |
|
73 | 90 | @pytest.mark.parametrize("exactly_once", [False, True])
|
74 | 91 | def test_commit_no_state_success(
|
|
0 commit comments