You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by ke...@apache.org on 2016/04/20 21:03:55 UTC
[1/2] incubator-beam git commit: Update ApiSurface and test to
improve accuracy
Repository: incubator-beam
Updated Branches:
refs/heads/master fdec569f3 -> 009e805f0
Update ApiSurface and test to improve accuracy
Project: http://git-wip-us.apache.org/repos/asf/incubator-beam/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-beam/commit/6963d7d6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-beam/tree/6963d7d6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-beam/diff/6963d7d6
Branch: refs/heads/master
Commit: 6963d7d63e00fe4a97e8dade4d5c20be0a9ed61a
Parents: 70e6a13
Author: Kenneth Knowles <kl...@google.com>
Authored: Fri Mar 11 16:06:36 2016 -0800
Committer: Kenneth Knowles <kl...@google.com>
Committed: Wed Apr 20 12:03:31 2016 -0700
----------------------------------------------------------------------
.../org/apache/beam/sdk/util/ApiSurface.java | 24 +++----
.../apache/beam/sdk/util/ApiSurfaceTest.java | 70 +++++++++++++++++---
2 files changed, 70 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/6963d7d6/sdks/java/core/src/main/java/org/apache/beam/sdk/util/ApiSurface.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/util/ApiSurface.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/util/ApiSurface.java
index e154b58..0d68740 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/util/ApiSurface.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/util/ApiSurface.java
@@ -610,22 +610,18 @@ public class ApiSurface {
////////////////////////////////////////////////////////////////////////////
+ /**
+ * All classes transitively reachable via only public method signatures of the SDK.
+ *
+ * <p>Note that our idea of "public" does not include various internal-only APIs.
+ */
public static ApiSurface getSdkApiSurface() throws IOException {
return ApiSurface.ofPackage("org.apache.beam")
- .pruningPattern("org[.]apache[.]beam.*Test")
- .pruningPattern("org[.]apache[.]beam.*Benchmark")
- .pruningPrefix("org.apache.beam.integration")
- .pruningPrefix("java")
- .pruningPrefix("com.google.api")
- .pruningPrefix("com.google.auth")
- .pruningPrefix("com.google.bigtable.v1")
- .pruningPrefix("com.google.cloud.bigtable.config")
- .pruningPrefix("com.google.cloud.bigtable.grpc.Bigtable*Name")
- .pruningPrefix("com.google.protobuf")
- .pruningPrefix("org.joda.time")
- .pruningPrefix("org.apache.avro")
- .pruningPrefix("org.junit")
- .pruningPrefix("com.fasterxml.jackson.annotation");
+ .pruningPattern("org[.]apache[.]beam[.].*Test")
+
+ // Exposes Guava, but not intended for users
+ .pruningClassName("org.apache.beam.sdk.util.common.ReflectHelpers")
+ .pruningPrefix("java");
}
public static void main(String[] args) throws Exception {
http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/6963d7d6/sdks/java/core/src/test/java/org/apache/beam/sdk/util/ApiSurfaceTest.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/util/ApiSurfaceTest.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/util/ApiSurfaceTest.java
index b07167c..6e87e91 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/util/ApiSurfaceTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/util/ApiSurfaceTest.java
@@ -17,16 +17,21 @@
*/
package org.apache.beam.sdk.util;
+import static org.hamcrest.Matchers.anyOf;
import static org.hamcrest.Matchers.containsInAnyOrder;
import static org.hamcrest.Matchers.emptyIterable;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail;
import com.google.common.base.Joiner;
+import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
+import org.hamcrest.Description;
+import org.hamcrest.Matcher;
+import org.hamcrest.TypeSafeDiagnosingMatcher;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -45,15 +50,7 @@ public class ApiSurfaceTest {
@Test
public void testOurApiSurface() throws Exception {
- ApiSurface checkedApiSurface = ApiSurface.getSdkApiSurface()
- .pruningClassName("org.apache.beam.sdk.runners.worker.StateFetcher")
- .pruningClassName("org.apache.beam.sdk.util.common.ReflectHelpers")
- .pruningClassName("org.apache.beam.sdk.DataflowMatchers")
- .pruningClassName("org.apache.beam.sdk.TestUtils")
- .pruningClassName("org.apache.beam.sdk.WindowMatchers")
- .pruningClassName("org.apache.beam.sdk.transforms.display.DisplayDataMatchers");
-
- checkedApiSurface.getExposedClasses();
+ ApiSurface checkedApiSurface = ApiSurface.getSdkApiSurface();
Map<Class<?>, List<Class<?>>> disallowedClasses = Maps.newHashMap();
for (Class<?> clazz : checkedApiSurface.getExposedClasses()) {
@@ -75,8 +72,61 @@ public class ApiSurfaceTest {
}
}
+ @SuppressWarnings("unchecked")
+ private static final Set<Matcher<Class<?>>> ALLOWED_PACKAGES =
+ ImmutableSet.of(
+ inPackage("org.apache.beam"),
+ inPackage("com.google.api.client"),
+ inPackage("com.google.api.services.bigquery"),
+ inPackage("com.google.api.services.dataflow"),
+ inPackage("com.google.api.services.datastore"),
+ inPackage("com.google.api.services.pubsub"),
+ inPackage("com.google.api.services.storage"),
+ inPackage("com.google.auth"),
+ inPackage("com.google.bigtable.v1"),
+ inPackage("com.google.cloud.bigtable.config"),
+ inPackage("com.google.cloud.bigtable.grpc"),
+ inPackage("com.google.protobuf"),
+ inPackage("com.fasterxml.jackson.annotation"),
+ inPackage("io.grpc"),
+ inPackage("org.apache.avro"),
+ inPackage("org.apache.commons.logging"), // via BigTable
+ inPackage("org.hamcrest"), // via DataflowMatchers
+ inPackage("org.codehaus.jackson"), // via Avro
+ inPackage("org.joda.time"),
+ inPackage("org.junit"),
+ inPackage("java"));
+
+ @SuppressWarnings({"rawtypes", "unchecked"})
private boolean classIsAllowed(Class<?> clazz) {
- return clazz.getName().startsWith("org.apache.beam");
+ // Safe cast inexpressible in Java without rawtypes
+ return anyOf((Iterable) ALLOWED_PACKAGES).matches(clazz);
+ }
+
+ private static final Matcher<Class<?>> inPackage(String packageName) {
+ return new ClassInPackage(packageName);
+ }
+
+ private static class ClassInPackage extends TypeSafeDiagnosingMatcher<Class<?>> {
+
+ private final String packageName;
+
+ public ClassInPackage(String packageName) {
+ this.packageName = packageName;
+ }
+
+ @Override
+ public void describeTo(Description description) {
+ description.appendText("Class in package \"");
+ description.appendText(packageName);
+ description.appendText("\"");
+ }
+
+ @Override
+ protected boolean matchesSafely(Class<?> clazz, Description mismatchDescription) {
+ return clazz.getName().startsWith(packageName + ".");
+ }
+
}
//////////////////////////////////////////////////////////////////////////////////
[2/2] incubator-beam git commit: This closes #215
Posted by ke...@apache.org.
This closes #215
Project: http://git-wip-us.apache.org/repos/asf/incubator-beam/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-beam/commit/009e805f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-beam/tree/009e805f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-beam/diff/009e805f
Branch: refs/heads/master
Commit: 009e805f07887515d2e1454743f7be605e20fb89
Parents: fdec569 6963d7d
Author: Kenneth Knowles <kl...@google.com>
Authored: Wed Apr 20 12:03:44 2016 -0700
Committer: Kenneth Knowles <kl...@google.com>
Committed: Wed Apr 20 12:03:44 2016 -0700
----------------------------------------------------------------------
.../org/apache/beam/sdk/util/ApiSurface.java | 24 +++----
.../apache/beam/sdk/util/ApiSurfaceTest.java | 70 +++++++++++++++++---
2 files changed, 70 insertions(+), 24 deletions(-)
----------------------------------------------------------------------