@Test public void testParDoChaining() throws Exception { Pipeline p = Pipeline.create(); long numElements = 1000; PCollection<Long> input = p.apply(GenerateSequence.from(0).to(numElements)); PAssert.thatSingleton(input.apply("Count", Count.globally())).isEqualTo(numElements); ApexPipelineOptions options = PipelineOptionsFactory.as(ApexPipelineOptions.class); DAG dag = TestApexRunner.translate(p, options); String[] expectedThreadLocal = {"/CreateActual/FilterActuals/Window.Assign"}; Set<String> actualThreadLocal = Sets.newHashSet(); for (DAG.StreamMeta sm : dag.getAllStreamsMeta()) { DAG.OutputPortMeta opm = sm.getSource(); if (sm.getLocality() == Locality.THREAD_LOCAL) { String name = opm.getOperatorMeta().getName(); String prefix = "PAssert$"; if (name.startsWith(prefix)) { // remove indeterministic prefix name = name.substring(prefix.length() + 1); } actualThreadLocal.add(name); } } Assert.assertThat(actualThreadLocal, Matchers.hasItems(expectedThreadLocal)); } }