I think (3) sounds good for BEAM-2644. I think keep them both open since one is to develop the capability and the other is to use it.
On Wed, Jul 19, 2017 at 12:32 PM, Ben Chambers <bchamb...@google.com.invalid > wrote: > I also reported something similar to this as > https://issues.apache.org/jira/browse/BEAM-2577. That issue was reported > because we don't have any tests that use a runner and attempt to pass > ValueProviders in. This means that we've found bugs such as > NestedValueProviders used with non-serializable anonymous functions. > > One solution seems be to use that pattern: > > 1. Create an extension of PipelineOptions with some ValueProviders > 2. Use that in your test pipeline > 3. allow TestPipeline.run() to take additional arguments to provide at > template execution time to populate those value providers > > On Wed, Jul 19, 2017 at 12:03 PM Eugene Kirpichov > <kirpic...@google.com.invalid> wrote: > > > Hi, > > > > Just filed JIRA https://issues.apache.org/jira/browse/BEAM-2644 > > > > Many transforms that take ValueProvider's have different codepaths for > when > > the provider is accessible or not. However, as far as I can tell, there > is > > no good way to construct a pipeline with PipelineOptions containing an > > inaccessible ValueProvider, and then test how it would run as a template > > invocation with an actual value supplied. > > > > The only way I could come up with is mimicking > > > > https://github.com/apache/beam/blob/master/sdks/java/ > core/src/test/java/org/apache/beam/sdk/options/ValueProviderTest.java#L202 > > , which is very ugly. > > > > Am I missing something? Is there already a good way to do this? > > >