/** * Returns a {@code TriggerPolicy} which triggers for every count of given sliding window. * * @param triggerHandler * @param evictionPolicy * @return */ @Override public TriggerPolicy<T, ?> getTriggerPolicy(TriggerHandler triggerHandler, EvictionPolicy<T, ?> evictionPolicy) { return new CountTriggerPolicy<>(windowConfig.getSlidingLength(), triggerHandler, evictionPolicy); }
/** * Returns a {@code TriggerPolicy} which triggers for every count of given sliding window. * * @param triggerHandler * @param evictionPolicy * @return */ @Override public TriggerPolicy<T, ?> getTriggerPolicy(TriggerHandler triggerHandler, EvictionPolicy<T, ?> evictionPolicy) { return new CountTriggerPolicy<>(windowConfig.getSlidingLength(), triggerHandler, evictionPolicy); }
private TriggerPolicy<Tuple, ?> getTriggerPolicy(Count slidingIntervalCount, Duration slidingIntervalDuration, WindowManager<Tuple> manager, EvictionPolicy<Tuple, ?> evictionPolicy) { if (slidingIntervalCount != null) { if (isTupleTs()) { return new WatermarkCountTriggerPolicy<>(slidingIntervalCount.value, manager, evictionPolicy, manager); } else { return new CountTriggerPolicy<>(slidingIntervalCount.value, manager, evictionPolicy); } } else { if (isTupleTs()) { return new WatermarkTimeTriggerPolicy<>(slidingIntervalDuration.value, manager, evictionPolicy, manager); } else { return new TimeTriggerPolicy<>(slidingIntervalDuration.value, manager, evictionPolicy); } } }
@Test public void testTumblingWindow() throws Exception { EvictionPolicy<Integer, ?> evictionPolicy = new CountEvictionPolicy<Integer>(3); windowManager.setEvictionPolicy(evictionPolicy); TriggerPolicy<Integer, ?> triggerPolicy = new CountTriggerPolicy<Integer>(3, windowManager, evictionPolicy); triggerPolicy.start(); windowManager.setTriggerPolicy(triggerPolicy); windowManager.add(1); windowManager.add(2); // nothing expired yet assertTrue(listener.onExpiryEvents.isEmpty()); windowManager.add(3); assertTrue(listener.onExpiryEvents.isEmpty()); assertEquals(seq(1, 3), listener.onActivationEvents); assertTrue(listener.onActivationExpiredEvents.isEmpty()); assertEquals(seq(1, 3), listener.onActivationNewEvents); listener.clear(); windowManager.add(4); windowManager.add(5); windowManager.add(6); assertEquals(seq(1, 3), listener.onExpiryEvents); assertEquals(seq(4, 6), listener.onActivationEvents); assertEquals(seq(1, 3), listener.onActivationExpiredEvents); assertEquals(seq(4, 6), listener.onActivationNewEvents); }
@Test public void testCountBasedWindow() throws Exception { EvictionPolicy<Integer, ?> evictionPolicy = new CountEvictionPolicy<Integer>(5); TriggerPolicy<Integer, ?> triggerPolicy = new CountTriggerPolicy<Integer>(2, windowManager, evictionPolicy); triggerPolicy.start(); windowManager.setEvictionPolicy(evictionPolicy);
/** * Returns a {@code TriggerPolicy} which triggers for every count of given sliding window. * @param triggerHandler * @param evictionPolicy * @return */ @Override public TriggerPolicy<T> getTriggerPolicy(TriggerHandler triggerHandler, EvictionPolicy<T> evictionPolicy) { return new CountTriggerPolicy<>(windowConfig.getSlidingLength(), triggerHandler, evictionPolicy); }
/** * Returns a {@code TriggerPolicy} which triggers for every count of given sliding window. * * @param triggerHandler * @param evictionPolicy * @return */ @Override public TriggerPolicy<T> getTriggerPolicy(TriggerHandler triggerHandler, EvictionPolicy<T> evictionPolicy) { return new CountTriggerPolicy<>(windowConfig.getSlidingLength(), triggerHandler, evictionPolicy); }
private TriggerPolicy<Tuple> getTriggerPolicy(Count slidingIntervalCount, Duration slidingIntervalDuration, WindowManager<Tuple> manager, EvictionPolicy<Tuple> evictionPolicy) { if (slidingIntervalCount != null) { if (isTupleTs()) { return new WatermarkCountTriggerPolicy<>(slidingIntervalCount.value, manager, evictionPolicy, manager); } else { return new CountTriggerPolicy<>(slidingIntervalCount.value, manager, evictionPolicy); } } else { if (isTupleTs()) { return new WatermarkTimeTriggerPolicy<>(slidingIntervalDuration.value, manager, evictionPolicy, manager); } else { return new TimeTriggerPolicy<>(slidingIntervalDuration.value, manager, evictionPolicy); } } }