@Test public void testWindowParamOnTimer() throws Exception { final String timerId = "some-timer-id"; DoFnSignature sig = DoFnSignatures.getSignature( new DoFn<String, String>() { @TimerId(timerId) private final TimerSpec myfield1 = TimerSpecs.timer(TimeDomain.EVENT_TIME); @ProcessElement public void process(ProcessContext c) {} @OnTimer(timerId) public void onTimer(BoundedWindow w) {} }.getClass()); assertThat(sig.onTimerMethods().get(timerId).extraParameters().size(), equalTo(1)); assertThat( sig.onTimerMethods().get(timerId).extraParameters().get(0), instanceOf(WindowParameter.class)); }
@Test public void testSimpleTimerWithContext() throws Exception { DoFnSignature sig = DoFnSignatures.getSignature( new DoFn<KV<String, Integer>, Long>() { @TimerId("foo") private final TimerSpec bizzle = TimerSpecs.timer(TimeDomain.EVENT_TIME); @ProcessElement public void foo(ProcessContext context) {} @OnTimer("foo") public void onFoo(OnTimerContext c) {} }.getClass()); assertThat(sig.timerDeclarations().size(), equalTo(1)); DoFnSignature.TimerDeclaration decl = sig.timerDeclarations().get("foo"); assertThat(decl.id(), equalTo("foo")); assertThat(decl.field().getName(), equalTo("bizzle")); assertThat( sig.onTimerMethods().get("foo").extraParameters().get(0), equalTo((Parameter) Parameter.onTimerContext())); }
@Test public void testAllParamsOnTimer() throws Exception { final String timerId = "some-timer-id"; DoFnSignature sig = DoFnSignatures.getSignature( new DoFn<String, String>() { @TimerId(timerId) private final TimerSpec myfield1 = TimerSpecs.timer(TimeDomain.EVENT_TIME); @ProcessElement public void process(ProcessContext c) {} @OnTimer(timerId) public void onTimer( @Timestamp Instant timestamp, TimeDomain timeDomain, BoundedWindow w) {} }.getClass()); assertThat(sig.onTimerMethods().get(timerId).extraParameters().size(), equalTo(3)); assertThat( sig.onTimerMethods().get(timerId).extraParameters().get(0), instanceOf(TimestampParameter.class)); assertThat( sig.onTimerMethods().get(timerId).extraParameters().get(1), instanceOf(TimeDomainParameter.class)); assertThat( sig.onTimerMethods().get(timerId).extraParameters().get(2), instanceOf(WindowParameter.class)); }