Repository: beam Updated Branches: refs/heads/master 28180c45b -> 72b361e9a
Shade Dependencies of the DirectRunner Add an API Surface Test Project: http://git-wip-us.apache.org/repos/asf/beam/repo Commit: http://git-wip-us.apache.org/repos/asf/beam/commit/b0a32614 Tree: http://git-wip-us.apache.org/repos/asf/beam/tree/b0a32614 Diff: http://git-wip-us.apache.org/repos/asf/beam/diff/b0a32614 Branch: refs/heads/master Commit: b0a326148e537f4c8a5de59f6a5ffdc1ccabea05 Parents: f03c04a Author: Thomas Groh <[email protected]> Authored: Tue May 9 09:47:47 2017 -0700 Committer: Dan Halperin <[email protected]> Committed: Tue May 9 11:49:14 2017 -0700 ---------------------------------------------------------------------- runners/direct-java/pom.xml | 79 ++++++++++++++++++-- .../GroupAlsoByWindowEvaluatorFactory.java | 6 +- .../direct/DirectRunnerApiSurfaceTest.java | 55 ++++++++++++++ 3 files changed, 133 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/beam/blob/b0a32614/runners/direct-java/pom.xml ---------------------------------------------------------------------- diff --git a/runners/direct-java/pom.xml b/runners/direct-java/pom.xml index ba3cd3e..19ee81a 100644 --- a/runners/direct-java/pom.xml +++ b/runners/direct-java/pom.xml @@ -77,6 +77,76 @@ </executions> </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-shade-plugin</artifactId> + <executions> + <execution> + <id>bundle-and-repackage</id> + <phase>package</phase> + <goals> + <goal>shade</goal> + </goals> + <configuration> + <artifactSet> + <includes> + <include>com.google.guava:guava</include> + <include>com.google.protobuf:protobuf-java</include> + <include>org.apache.beam:beam-runners-core-construction-java</include> + <include>org.apache.beam:beam-runners-core-java</include> + <include>org.apache.beam:beam-sdks-common-runner-api</include> + </includes> + </artifactSet> + <filters> + <filter> + <artifact>*:*</artifact> + <excludes> + <exclude>META-INF/*.SF</exclude> + <exclude>META-INF/*.DSA</exclude> + <exclude>META-INF/*.RSA</exclude> + </excludes> + </filter> + </filters> + <relocations> + <relocation> + <pattern>org.apache.beam.runners.core</pattern> + <shadedPattern> + org.apache.beam.runners.direct.repackaged.runners.core + </shadedPattern> + </relocation> + <relocation> + <pattern>org.apache.beam.sdk.common</pattern> + <shadedPattern> + org.apache.beam.runners.direct.repackaged.sdk.common + </shadedPattern> + </relocation> + <relocation> + <pattern>com.google.common</pattern> + <shadedPattern> + org.apache.beam.runners.direct.repackaged.com.google.common + </shadedPattern> + </relocation> + <relocation> + <pattern>com.google.protobuf</pattern> + <shadedPattern> + org.apache.beam.runners.direct.repackaged.com.google.protobuf + </shadedPattern> + </relocation> + <relocation> + <pattern>com.google.thirdparty</pattern> + <shadedPattern> + org.apache.beam.runners.direct.repackaged.com.google.thirdparty + </shadedPattern> + </relocation> + </relocations> + <transformers> + <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/> + </transformers> + </configuration> + </execution> + </executions> + </plugin> + <!-- Coverage analysis for unit tests. --> <plugin> <groupId>org.jacoco</groupId> @@ -93,18 +163,17 @@ <dependency> <groupId>org.apache.beam</groupId> - <artifactId>beam-runners-core-construction-java</artifactId> + <artifactId>beam-sdks-common-runner-api</artifactId> </dependency> <dependency> <groupId>org.apache.beam</groupId> - <artifactId>beam-runners-core-java</artifactId> + <artifactId>beam-runners-core-construction-java</artifactId> </dependency> <dependency> - <groupId>com.google.http-client</groupId> - <artifactId>google-http-client-protobuf</artifactId> - <scope>runtime</scope> + <groupId>org.apache.beam</groupId> + <artifactId>beam-runners-core-java</artifactId> </dependency> <dependency> http://git-wip-us.apache.org/repos/asf/beam/blob/b0a32614/runners/direct-java/src/main/java/org/apache/beam/runners/direct/GroupAlsoByWindowEvaluatorFactory.java ---------------------------------------------------------------------- diff --git a/runners/direct-java/src/main/java/org/apache/beam/runners/direct/GroupAlsoByWindowEvaluatorFactory.java b/runners/direct-java/src/main/java/org/apache/beam/runners/direct/GroupAlsoByWindowEvaluatorFactory.java index 41c797f..1d079d9 100644 --- a/runners/direct-java/src/main/java/org/apache/beam/runners/direct/GroupAlsoByWindowEvaluatorFactory.java +++ b/runners/direct-java/src/main/java/org/apache/beam/runners/direct/GroupAlsoByWindowEvaluatorFactory.java @@ -40,6 +40,7 @@ import org.apache.beam.runners.core.triggers.TriggerStateMachines; import org.apache.beam.runners.direct.DirectExecutionContext.DirectStepContext; import org.apache.beam.runners.direct.DirectGroupByKey.DirectGroupAlsoByWindow; import org.apache.beam.sdk.coders.Coder; +import org.apache.beam.sdk.common.runner.v1.RunnerApi; import org.apache.beam.sdk.metrics.Counter; import org.apache.beam.sdk.metrics.Metrics; import org.apache.beam.sdk.runners.AppliedPTransform; @@ -161,13 +162,14 @@ class GroupAlsoByWindowEvaluatorFactory implements TransformEvaluatorFactory { CopyOnAccessInMemoryStateInternals stateInternals = (CopyOnAccessInMemoryStateInternals) stepContext.stateInternals(); DirectTimerInternals timerInternals = stepContext.timerInternals(); + RunnerApi.Trigger runnerApiTrigger = + Triggers.toProto(windowingStrategy.getTrigger()); ReduceFnRunner<K, V, Iterable<V>, BoundedWindow> reduceFnRunner = new ReduceFnRunner<>( key, windowingStrategy, ExecutableTriggerStateMachine.create( - TriggerStateMachines.stateMachineForTrigger( - Triggers.toProto(windowingStrategy.getTrigger()))), + TriggerStateMachines.stateMachineForTrigger(runnerApiTrigger)), stateInternals, timerInternals, new OutputWindowedValueToBundle<>(bundle), http://git-wip-us.apache.org/repos/asf/beam/blob/b0a32614/runners/direct-java/src/test/java/org/apache/beam/runners/direct/DirectRunnerApiSurfaceTest.java ---------------------------------------------------------------------- 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 new file mode 100644 index 0000000..9928cb0 --- /dev/null +++ b/runners/direct-java/src/test/java/org/apache/beam/runners/direct/DirectRunnerApiSurfaceTest.java @@ -0,0 +1,55 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.beam.runners.direct; + +import static org.apache.beam.sdk.util.ApiSurface.containsOnlyPackages; +import static org.junit.Assert.assertThat; + +import com.google.common.collect.ImmutableSet; +import java.util.Set; +import javax.annotation.Nullable; +import org.apache.beam.sdk.util.ApiSurface; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +/** API surface verification for {@link org.apache.beam.runners.direct}. */ +@RunWith(JUnit4.class) +public class DirectRunnerApiSurfaceTest { + @Test + public void testDirectRunnerApiSurface() throws Exception { + // The DirectRunner can expose the Core SDK, anything exposed by the Core SDK, and itself + @SuppressWarnings("unchecked") + final Set<String> allowed = + ImmutableSet.of("org.apache.beam.sdk", "org.apache.beam.runners.direct", "org.joda.time"); + + final Package thisPackage = getClass().getPackage(); + final ClassLoader thisClassLoader = getClass().getClassLoader(); + ApiSurface apiSurface = + ApiSurface.ofPackage(thisPackage, thisClassLoader) + .pruningPattern("org[.]apache[.]beam[.].*Test.*") + .pruningPattern("org[.]apache[.]beam[.].*IT") + .pruningClass(Nullable.class) + .pruningPattern("java[.]io.*") + .pruningPattern("java[.]lang.*") + .pruningPattern("java[.]util.*"); + + assertThat(apiSurface, containsOnlyPackages(allowed)); + } +}
