I left some comments but I like the idea of moving the validation into the pipeline instead of writing matchers that execute outside from within the test driver program.
This fits well with future SplittableDoFn work as this will allow us test sources and sinks and their side effects completely from within a pipeline. On Mon, May 14, 2018 at 1:57 PM Anton Kedin <[email protected]> wrote: > Hi, > > While working on an integration test > <https://github.com/apache/beam/pull/5347> for Pubsub-related > functionality I couldn't find a good solution to test the pipelines that > don't reliably stop. > > I propose we extend PAssert to support eventual verification. In this > case some success/failure predicate is being constantly evaluated against > all elements of the pipeline until it's met. At that point the result gets > communicated to the main program/test. > > Example API: > > *PAssert .thatEventually(pcollection) .containsInAnyOrder(e1, e2, e3) > .synchronizingOver(signalOverPubsub()); .timeoutAfter(10 min)* > > Details doc > <https://docs.google.com/document/d/1X_3KH_6QyfOSnh5kNK-fHlkEDrwPVpA2RnRggMMxhUk/edit#heading=h.i3owzq4bs63l> > > Comments, thoughts, things that I missed? > > Regards, > Anton >
