private boolean isReady(BoundedWindow mainInputWindow) { if (notReadyWindows.contains(mainInputWindow)) { return false; } for (PCollectionView<?> view : views) { BoundedWindow sideInputWindow = view.getWindowMappingFn().getSideInputWindow(mainInputWindow); if (!sideInputReader.isReady(view, sideInputWindow)) { return false; } } return true; }
@Override public <T> T sideInput(PCollectionView<T> view) { return sideInputReader.get( view, view.getWindowMappingFn().getSideInputWindow(mainInputWindow)); }
private boolean isReady(BoundedWindow mainInputWindow) { for (PCollectionView<?> view : views) { BoundedWindow sideInputWindow = view.getWindowMappingFn().getSideInputWindow(mainInputWindow); if (!sideInputReader.isReady(view, sideInputWindow)) { return false; } } return true; } }
@Override public <T> T sideInput(PCollectionView<T> view) { if (!sideInputReader.contains(view)) { throw new IllegalArgumentException("calling sideInput() with unknown view"); } BoundedWindow sideInputWindow = view.getWindowMappingFn().getSideInputWindow(mainInputWindow); return sideInputReader.get(view, sideInputWindow); } };
final BoundedWindow sideInputWindow = view.getWindowMappingFn().getSideInputWindow(window);
@Test public void getSideInputWindowIdentity() { WindowFn<Object, BoundedWindow> fn = StaticWindows.of(IntervalWindow.getCoder(), ImmutableList.of(first, second)); assertThat(fn.getDefaultWindowMappingFn().getSideInputWindow(first), Matchers.equalTo(first)); assertThat(fn.getDefaultWindowMappingFn().getSideInputWindow(second), Matchers.equalTo(second)); }
@Test public void testDefaultWindowMappingFn() { MonthsWindows windowFn = CalendarWindows.months(2); WindowMappingFn<?> mapping = windowFn.getDefaultWindowMappingFn(); assertThat( mapping.getSideInputWindow( new BoundedWindow() { @Override public Instant maxTimestamp() { return new Instant(100L); } }), equalTo(windowFn.assignWindow(new Instant(100L)))); assertThat(mapping.maximumLookback(), equalTo(Duration.ZERO)); }
@Test public void testDefaultWindowMappingFnGlobal() { MonthsWindows windowFn = CalendarWindows.months(2); WindowMappingFn<?> mapping = windowFn.getDefaultWindowMappingFn(); thrown.expect(IllegalArgumentException.class); mapping.getSideInputWindow(GlobalWindow.INSTANCE); }
for (WindowedValue<InputT> value : pushedBackValues) { for (BoundedWindow win : value.getWindows()) { BoundedWindow sideInputWindow = sideInput.getWindowMappingFn().getSideInputWindow(win); if (!sideInputReader.isReady(sideInput, sideInputWindow)) { Object emptyValue =
@Test public void testDefaultWindowMappingFnGlobalWindow() { PartitioningWindowFn<?, ?> windowFn = FixedWindows.of(Duration.standardMinutes(20L)); WindowMappingFn<?> mapping = windowFn.getDefaultWindowMappingFn(); thrown.expect(IllegalArgumentException.class); mapping.getSideInputWindow(GlobalWindow.INSTANCE); }
@Test public void getSideInputWindowNotPresent() { WindowFn<Object, BoundedWindow> fn = StaticWindows.of(IntervalWindow.getCoder(), ImmutableList.of(second)); thrown.expect(IllegalArgumentException.class); thrown.expectMessage("contains"); fn.getDefaultWindowMappingFn().getSideInputWindow(first); }
@Test public void testDefaultWindowMappingFn() { PartitioningWindowFn<?, ?> windowFn = FixedWindows.of(Duration.standardMinutes(20L)); WindowMappingFn<?> mapping = windowFn.getDefaultWindowMappingFn(); assertThat( mapping.getSideInputWindow( new BoundedWindow() { @Override public Instant maxTimestamp() { return new Instant(100L); } }), equalTo( new IntervalWindow( new Instant(0L), new Instant(0L).plus(Duration.standardMinutes(20L))))); assertThat(mapping.maximumLookback(), equalTo(Duration.ZERO)); }
@Test public void testDefaultWindowMappingFn() { // [40, 1040), [340, 1340), [640, 1640) ... SlidingWindows slidingWindows = SlidingWindows.of(new Duration(1000)).every(new Duration(300)).withOffset(new Duration(40)); WindowMappingFn<?> mapping = slidingWindows.getDefaultWindowMappingFn(); assertThat(mapping.maximumLookback(), equalTo(Duration.ZERO)); // Prior assertEquals( new IntervalWindow(new Instant(340), new Instant(1340)), mapping.getSideInputWindow(new IntervalWindow(new Instant(0), new Instant(1041)))); assertEquals( new IntervalWindow(new Instant(340), new Instant(1340)), mapping.getSideInputWindow(new IntervalWindow(new Instant(0), new Instant(1339)))); // Align assertEquals( new IntervalWindow(new Instant(340), new Instant(1340)), mapping.getSideInputWindow(new IntervalWindow(new Instant(0), new Instant(1340)))); // After assertEquals( new IntervalWindow(new Instant(640), new Instant(1640)), mapping.getSideInputWindow(new IntervalWindow(new Instant(0), new Instant(1341)))); }