If element doesn't exist in empty PCollection - PAssert.thatSingleton emits the following error message:
java.util.NoSuchElementException
org.apache.beam.sdk.Pipeline$PipelineExecutionException: java.util.NoSuchElementException
(stack trace)
Caused by: java.util.NoSuchElementException
at java.base/java.util.ArrayList$Itr.next(ArrayList.java:970)
at org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.Iterators.getOnlyElement(Iterators.java:309)
at org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.Iterables.getOnlyElement(Iterables.java:263)
at org.apache.beam.sdk.testing.PAssert$SingletonCheckerDoFn.processElement(PAssert.java:1613)
If element is not the only element in PCollection - PAssert.thatSingleton emits the following error message:
java.lang.IllegalArgumentException: expected one element but was: (...)
org.apache.beam.sdk.Pipeline$PipelineExecutionException: java.lang.IllegalArgumentException: expected one element but was: (...)
(stack trace)
Caused by: java.lang.IllegalArgumentException: expected one element but was: (...) at org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.Iterators.getOnlyElement(Iterators.java:323)
at org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.Iterables.getOnlyElement(Iterables.java:263)
at org.apache.beam.sdk.testing.PAssert$SingletonCheckerDoFn.processElement(PAssert.java:1613)
For presented scenarios assertion errors doesn't really help - there is no assertion call site info.
private static class SingletonCheckerDoFn ... {
@ProcessElement
public void processElement(ProcessContext c) {
ActualT actualContents = Iterables.getOnlyElement(c.element()); // <- runtime exception here
c.output(doChecks(site, actualContents, checkerFn)); // <- no doCheck call with proper assertion site info
}
}
What would you like to happen?
If element doesn't exist in empty PCollection - PAssert.thatSingleton emits the following error message:
If element is not the only element in PCollection - PAssert.thatSingleton emits the following error message:
For presented scenarios assertion errors doesn't really help - there is no assertion call site info.
Issue Priority
Priority: 3 (nice-to-have improvement)
Issue Components