def test_sessions_default(self): self.run_trigger_simple( Sessions(10), # pyformat break DefaultTrigger(), AccumulationMode.ACCUMULATING, [(1, 'a'), (2, 'b')], {IntervalWindow(1, 12): [set('ab')]}, 1, 2, -2, -1) self.run_trigger_simple( Sessions(10), # pyformat break AfterWatermark(), AccumulationMode.ACCUMULATING, [(1, 'a'), (2, 'b'), (15, 'c'), (16, 'd'), (30, 'z'), (9, 'e'), (10, 'f'), (30, 'y')], { IntervalWindow(1, 26): [set('abcdef')], IntervalWindow(30, 40): [set('yz')] }, 1, 2, 3, 4, 5, 6, -4, -2, -1)
def test_trigger_encoding(self): for trigger_fn in (DefaultTrigger(), AfterAll(AfterCount(1), AfterCount(10)), AfterAny(AfterCount(10), AfterCount(100)), AfterWatermark(early=AfterCount(1000)), AfterWatermark(early=AfterCount(1000), late=AfterCount(1)), Repeatedly(AfterCount(100)), trigger.OrFinally(AfterCount(3), AfterCount(10))): context = pipeline_context.PipelineContext() self.assertEqual( trigger_fn, TriggerFn.from_runner_api(trigger_fn.to_runner_api(context), context))
def test_after_each_all_safe(self): self._test(AfterEach(Repeatedly(AfterCount(1)), DefaultTrigger()), 0, DataLossReason.NO_POTENTIAL_LOSS)
def test_after_any_some_unsafe(self): self._test(AfterAny(AfterCount(1), DefaultTrigger()), 0, DataLossReason.NO_POTENTIAL_LOSS)
def test_after_each_some_unsafe(self): self._test(AfterEach(AfterCount(1), DefaultTrigger()), 0, DataLossReason.MAY_FINISH)
def test_after_watermark_safe_late(self): self._test(AfterWatermark(late=DefaultTrigger()), 60, DataLossReason.NO_POTENTIAL_LOSS)
def test_repeatedly_safe_underlying(self): self._test(Repeatedly(DefaultTrigger()), 0, DataLossReason.NO_POTENTIAL_LOSS)
def test_default_trigger(self): self._test(DefaultTrigger(), 0, DataLossReason.NO_POTENTIAL_LOSS)
def test_after_each_at_least_one_safe(self): self._test(AfterEach(AfterCount(1), DefaultTrigger(), AfterCount(2)), 0, DataLossReason.NO_POTENTIAL_LOSS)
def test_after_all_some_may_finish(self): self._test(AfterAll(AfterCount(1), DefaultTrigger()), 0, DataLossReason.NO_POTENTIAL_LOSS)
def test_after_any_all_safe(self): self._test(AfterAny(Repeatedly(AfterCount(42)), DefaultTrigger()), 0, DataLossReason.NO_POTENTIAL_LOSS)
def test_after_any_one_may_finish(self): self._test(AfterAny(AfterCount(42), DefaultTrigger()), 0, DataLossReason.MAY_FINISH)