From d73ecf42d981c6fac2c0fd7bdc4eb1a181dc91eb Mon Sep 17 00:00:00 2001 From: Thomas Groh Date: Tue, 9 May 2017 16:09:25 -0700 Subject: [PATCH] Improve Pruning performed by the DirectRunnerApiSurfaceTest Prune the parts of the Core SDK that must be exposed as part of the API surface. The remainder should not be exposed accidentally. --- .../direct/DirectRunnerApiSurfaceTest.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/runners/direct-java/src/test/java/org/apache/beam/runners/direct/DirectRunnerApiSurfaceTest.java b/runners/direct-java/src/test/java/org/apache/beam/runners/direct/DirectRunnerApiSurfaceTest.java index 9928cb0d36b7..631349fc251a 100644 --- a/runners/direct-java/src/test/java/org/apache/beam/runners/direct/DirectRunnerApiSurfaceTest.java +++ b/runners/direct-java/src/test/java/org/apache/beam/runners/direct/DirectRunnerApiSurfaceTest.java @@ -23,7 +23,12 @@ import com.google.common.collect.ImmutableSet; import java.util.Set; -import javax.annotation.Nullable; +import org.apache.beam.sdk.Pipeline; +import org.apache.beam.sdk.PipelineRunner; +import org.apache.beam.sdk.metrics.MetricResults; +import org.apache.beam.sdk.options.PipelineOptions; +import org.apache.beam.sdk.options.PipelineOptionsRegistrar; +import org.apache.beam.sdk.transforms.display.DisplayData; import org.apache.beam.sdk.util.ApiSurface; import org.junit.Test; import org.junit.runner.RunWith; @@ -43,9 +48,17 @@ public void testDirectRunnerApiSurface() throws Exception { final ClassLoader thisClassLoader = getClass().getClassLoader(); ApiSurface apiSurface = ApiSurface.ofPackage(thisPackage, thisClassLoader) + // Do not include dependencies that are required based on the known exposures. This + // could alternatively prune everything exposed by the public parts of the Core SDK + .pruningClass(Pipeline.class) + .pruningClass(PipelineRunner.class) + .pruningClass(PipelineOptions.class) + .pruningClass(PipelineOptionsRegistrar.class) + .pruningClass(PipelineOptions.DirectRunner.class) + .pruningClass(DisplayData.Builder.class) + .pruningClass(MetricResults.class) .pruningPattern("org[.]apache[.]beam[.].*Test.*") .pruningPattern("org[.]apache[.]beam[.].*IT") - .pruningClass(Nullable.class) .pruningPattern("java[.]io.*") .pruningPattern("java[.]lang.*") .pruningPattern("java[.]util.*");