public KeyGroupPartitionerForTimersTest() { super( (random -> new TimerHeapInternalTimer<>(42L, random.nextInt() & Integer.MAX_VALUE, VoidNamespace.INSTANCE)), TimerHeapInternalTimer::getKey); } }
@Override public void deleteEventTimeTimer(N namespace, long time) { eventTimeTimersQueue.remove(new TimerHeapInternalTimer<>(time, (K) keyContext.getCurrentKey(), namespace)); }
@Override public void deleteProcessingTimeTimer(N namespace, long time) { processingTimeTimersQueue.remove(new TimerHeapInternalTimer<>(time, (K) keyContext.getCurrentKey(), namespace)); }
@Override public TimerHeapInternalTimer<K, N> createInstance() { return new TimerHeapInternalTimer<>( 0L, keySerializer.createInstance(), namespaceSerializer.createInstance()); }
@Override public void registerEventTimeTimer(N namespace, long time) { eventTimeTimersQueue.add(new TimerHeapInternalTimer<>(time, (K) keyContext.getCurrentKey(), namespace)); }
@Override public TimerHeapInternalTimer<K, N> deserialize(DataInputView source) throws IOException { K key = keySerializer.deserialize(source); N namespace = namespaceSerializer.deserialize(source); Long timestamp = LongSerializer.INSTANCE.deserialize(source); return new TimerHeapInternalTimer<>(timestamp, key, namespace); }
@Override public TimerHeapInternalTimer<K, N> copy(TimerHeapInternalTimer<K, N> from) { return new TimerHeapInternalTimer<>(from.getTimestamp(), from.getKey(), from.getNamespace()); }
@Override public TimerHeapInternalTimer<K, N> deserialize(DataInputView source) throws IOException { long timestamp = MathUtils.flipSignBit(source.readLong()); K key = keySerializer.deserialize(source); N namespace = namespaceSerializer.deserialize(source); return new TimerHeapInternalTimer<>(timestamp, key, namespace); }
@Override public void registerProcessingTimeTimer(N namespace, long time) { InternalTimer<K, N> oldHead = processingTimeTimersQueue.peek(); if (processingTimeTimersQueue.add(new TimerHeapInternalTimer<>(time, (K) keyContext.getCurrentKey(), namespace))) { long nextTriggerTime = oldHead != null ? oldHead.getTimestamp() : Long.MAX_VALUE; // check if we need to re-schedule our timer to earlier if (time < nextTriggerTime) { if (nextTimer != null) { nextTimer.cancel(false); } nextTimer = processingTimeService.registerTimer(time, this); } } }
@SuppressWarnings("unchecked") @Override protected TimerHeapInternalTimer<Long, TimeWindow>[] getTestData() { return (TimerHeapInternalTimer<Long, TimeWindow>[]) new TimerHeapInternalTimer[]{ new TimerHeapInternalTimer<>(42L, 4711L, new TimeWindow(1000L, 2000L)), new TimerHeapInternalTimer<>(0L, 0L, new TimeWindow(0L, 0L)), new TimerHeapInternalTimer<>(1L, -1L, new TimeWindow(1L, -1L)), new TimerHeapInternalTimer<>(-1L, 1L, new TimeWindow(-1L, 1L)), new TimerHeapInternalTimer<>(Long.MAX_VALUE, Long.MIN_VALUE, new TimeWindow(Long.MAX_VALUE, Long.MIN_VALUE)), new TimerHeapInternalTimer<>(Long.MIN_VALUE, Long.MAX_VALUE, new TimeWindow(Long.MIN_VALUE, Long.MAX_VALUE)) }; } }
@Override public TimerHeapInternalTimer<K, N> copy(TimerHeapInternalTimer<K, N> from) { K keyDuplicate; N namespaceDuplicate; if (isImmutableType()) { keyDuplicate = from.getKey(); namespaceDuplicate = from.getNamespace(); } else { keyDuplicate = keySerializer.copy(from.getKey()); namespaceDuplicate = namespaceSerializer.copy(from.getNamespace()); } return new TimerHeapInternalTimer<>(from.getTimestamp(), keyDuplicate, namespaceDuplicate); }
verify(mockTriggerable, times(1)).onEventTime(eq(new TimerHeapInternalTimer<>(10, key1, "ciao"))); verify(mockTriggerable, times(1)).onEventTime(eq(new TimerHeapInternalTimer<>(10, key1, "hello"))); verify(mockTriggerable, times(1)).onEventTime(eq(new TimerHeapInternalTimer<>(10, key2, "ciao"))); verify(mockTriggerable, times(1)).onEventTime(eq(new TimerHeapInternalTimer<>(10, key2, "hello")));
verify(mockTriggerable, times(1)).onProcessingTime(eq(new TimerHeapInternalTimer<>(10, key1, "ciao"))); verify(mockTriggerable, times(1)).onProcessingTime(eq(new TimerHeapInternalTimer<>(10, key1, "hello"))); verify(mockTriggerable, times(1)).onProcessingTime(eq(new TimerHeapInternalTimer<>(10, key2, "ciao"))); verify(mockTriggerable, times(1)).onProcessingTime(eq(new TimerHeapInternalTimer<>(10, key2, "hello")));
verify(mockTriggerable1, times(1)).onProcessingTime(eq(new TimerHeapInternalTimer<>(10, key1, "ciao"))); verify(mockTriggerable1, never()).onProcessingTime(eq(new TimerHeapInternalTimer<>(10, key2, "hello"))); verify(mockTriggerable1, times(1)).onEventTime(anyInternalTimer()); verify(mockTriggerable1, times(1)).onEventTime(eq(new TimerHeapInternalTimer<>(10, key1, "hello"))); verify(mockTriggerable1, never()).onEventTime(eq(new TimerHeapInternalTimer<>(10, key2, "ciao"))); verify(mockTriggerable2, never()).onProcessingTime(eq(new TimerHeapInternalTimer<>(10, key1, "ciao"))); verify(mockTriggerable2, times(1)).onProcessingTime(eq(new TimerHeapInternalTimer<>(10, key2, "hello"))); verify(mockTriggerable2, times(1)).onEventTime(anyInternalTimer()); verify(mockTriggerable2, never()).onEventTime(eq(new TimerHeapInternalTimer<>(10, key1, "hello"))); verify(mockTriggerable2, times(1)).onEventTime(eq(new TimerHeapInternalTimer<>(10, key2, "ciao")));
verify(mockTriggerable, times(1)).onEventTime(eq(new TimerHeapInternalTimer<>(10, key1, "ciao"))); verify(mockTriggerable, times(0)).onEventTime(eq(new TimerHeapInternalTimer<>(10, key1, "hello"))); verify(mockTriggerable, times(0)).onEventTime(eq(new TimerHeapInternalTimer<>(10, key2, "ciao"))); verify(mockTriggerable, times(1)).onEventTime(eq(new TimerHeapInternalTimer<>(10, key2, "hello")));
verify(mockTriggerable, times(1)).onProcessingTime(eq(new TimerHeapInternalTimer<>(10, key1, "ciao"))); verify(mockTriggerable, times(0)).onProcessingTime(eq(new TimerHeapInternalTimer<>(10, key1, "hello"))); verify(mockTriggerable, times(0)).onProcessingTime(eq(new TimerHeapInternalTimer<>(10, key2, "ciao"))); verify(mockTriggerable, times(1)).onProcessingTime(eq(new TimerHeapInternalTimer<>(10, key2, "hello")));
verify(mockTriggerable2, times(1)).onProcessingTime(eq(new TimerHeapInternalTimer<>(10, key1, "ciao"))); verify(mockTriggerable2, times(1)).onProcessingTime(eq(new TimerHeapInternalTimer<>(10, key2, "hello"))); verify(mockTriggerable2, times(2)).onEventTime(anyInternalTimer()); verify(mockTriggerable2, times(1)).onEventTime(eq(new TimerHeapInternalTimer<>(10, key1, "hello"))); verify(mockTriggerable2, times(1)).onEventTime(eq(new TimerHeapInternalTimer<>(10, key2, "ciao")));
TimerHeapInternalTimer<Integer, String> timer = new TimerHeapInternalTimer<>(10 + i, i, "hello_world_" + i); int keyGroupIdx = KeyGroupRangeAssignment.assignToKeyGroup(timer.getKey(), totalNoOfKeyGroups);
@Override public TimerHeapInternalTimer<K, N> deserialize(DataInputView source) throws IOException { long timestamp = MathUtils.flipSignBit(source.readLong()); K key = keySerializer.deserialize(source); N namespace = namespaceSerializer.deserialize(source); return new TimerHeapInternalTimer<>(timestamp, key, namespace); }
@Override public TimerHeapInternalTimer<K, N> deserialize(DataInputView source) throws IOException { long timestamp = MathUtils.flipSignBit(source.readLong()); K key = keySerializer.deserialize(source); N namespace = namespaceSerializer.deserialize(source); return new TimerHeapInternalTimer<>(timestamp, key, namespace); }