lukecwik commented on a change in pull request #16354:
URL: https://github.com/apache/beam/pull/16354#discussion_r776848950



##########
File path: 
sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/join/CoGbkResultTest.java
##########
@@ -57,6 +74,175 @@ public void runLazyResult(int cacheSize) {
     assertThat(result.getAll(new TupleTag<>("tag0")), contains(0, 2, 4));
   }
 
+  @Test
+  public void testLazyResults() {
+    TestUnionValues values = new TestUnionValues(0, 0, 1, 1, 0, 1, 1);
+    CoGbkResult result = new CoGbkResult(createSchema(5), values, 0, 2);
+    // Nothing is read until we try to iterate.
+    assertThat(values.maxPos(), equalTo(0));
+    Iterable<?> tag0iterable = result.getAll("tag0");
+    assertThat(values.maxPos(), equalTo(0));
+    tag0iterable.iterator();
+    assertThat(values.maxPos(), equalTo(0));
+
+    // Iterating reads (nearly) the minimal number of values.
+    Iterator<?> tag0 = tag0iterable.iterator();
+    tag0.next();
+    assertThat(values.maxPos(), lessThanOrEqualTo(2));
+    tag0.next();
+    assertThat(values.maxPos(), equalTo(2));
+    // Note that we're skipping over tag 1.
+    tag0.next();
+    assertThat(values.maxPos(), equalTo(5));
+
+    // Iterating again does not cause more reads.
+    Iterator<?> tag0iterAgain = tag0iterable.iterator();
+    tag0iterAgain.next();
+    tag0iterAgain.next();
+    tag0iterAgain.next();
+    assertThat(values.maxPos(), equalTo(5));
+
+    // Iterating over other tags does not cause more reads for values we have 
seen.
+    Iterator<?> tag1 = result.getAll("tag1").iterator();
+    tag1.next();
+    tag1.next();
+    assertThat(values.maxPos(), equalTo(5));
+    // However, finding the next tag1 value does require more reads.
+    tag1.next();
+    assertThat(values.maxPos(), equalTo(6));
+  }
+
+  @Test
+  @SuppressWarnings("BoxedPrimitiveEquality")
+  public void testCachedResults() {
+    // Ensure we don't fail below due to a non-default 
java.lang.Integer.IntegerCache.high setting.

Review comment:
       I understand that. I was trying to highlight the spacing issue in the 
comment. Also consider using a different type which isn't interned by the JVM.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to