Search in sources :

Example 1 with TimerProcessor

use of org.apache.beam.runners.apex.translation.operators.ApexTimerInternals.TimerProcessor in project beam by apache.

the class ApexTimerInternalsTest method testEventTimeTimers.

@Test
public void testEventTimeTimers() {
    final Map<String, Collection<TimerData>> firedTimers = new HashMap<>();
    TimerProcessor<String> timerProcessor = new TimerProcessor<String>() {

        @Override
        public void fireTimer(String key, Collection<TimerData> timerData) {
            firedTimers.put(key, timerData);
        }
    };
    TimerDataCoder timerDataCoder = TimerDataCoder.of(GlobalWindow.Coder.INSTANCE);
    String key1 = "key1";
    Instant instant0 = new Instant(0);
    Instant instant1 = new Instant(1);
    Instant instant2 = new Instant(2);
    ApexTimerInternals<String> timerInternals = new ApexTimerInternals<>(timerDataCoder);
    timerInternals.setContext(key1, StringUtf8Coder.of(), Instant.now(), null);
    TimerData timerData0 = TimerData.of("timerData0", StateNamespaces.global(), instant0, TimeDomain.EVENT_TIME);
    timerInternals.setTimer(timerData0);
    TimerData timerData1 = TimerData.of("timerData1", StateNamespaces.global(), instant1, TimeDomain.EVENT_TIME);
    timerInternals.setTimer(timerData1);
    timerInternals.fireReadyTimers(instant0.getMillis(), timerProcessor, TimeDomain.EVENT_TIME);
    assertEquals(0, firedTimers.size());
    firedTimers.clear();
    timerInternals.fireReadyTimers(instant1.getMillis(), timerProcessor, TimeDomain.PROCESSING_TIME);
    assertEquals(0, firedTimers.size());
    timerInternals.fireReadyTimers(instant1.getMillis(), timerProcessor, TimeDomain.EVENT_TIME);
    assertEquals(1, firedTimers.size());
    assertEquals(Sets.newHashSet(timerData0), Sets.newHashSet(firedTimers.values().iterator().next()));
    firedTimers.clear();
    timerInternals.fireReadyTimers(instant2.getMillis(), timerProcessor, TimeDomain.EVENT_TIME);
    assertEquals(1, firedTimers.size());
    assertEquals(Sets.newHashSet(timerData1), Sets.newHashSet(firedTimers.values().iterator().next()));
    firedTimers.clear();
}
Also used : TimerDataCoder(org.apache.beam.runners.core.TimerInternals.TimerDataCoder) HashMap(java.util.HashMap) Instant(org.joda.time.Instant) TimerData(org.apache.beam.runners.core.TimerInternals.TimerData) Collection(java.util.Collection) TimerProcessor(org.apache.beam.runners.apex.translation.operators.ApexTimerInternals.TimerProcessor) Test(org.junit.Test)

Aggregations

Collection (java.util.Collection)1 HashMap (java.util.HashMap)1 TimerProcessor (org.apache.beam.runners.apex.translation.operators.ApexTimerInternals.TimerProcessor)1 TimerData (org.apache.beam.runners.core.TimerInternals.TimerData)1 TimerDataCoder (org.apache.beam.runners.core.TimerInternals.TimerDataCoder)1 Instant (org.joda.time.Instant)1 Test (org.junit.Test)1