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/11/23 06:24:49 UTC
[1/2] incubator-beam git commit: This closes #1425
Repository: incubator-beam
Updated Branches:
refs/heads/master dd85cad02 -> 3ae9425b3
This closes #1425
Project: http://git-wip-us.apache.org/repos/asf/incubator-beam/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-beam/commit/3ae9425b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-beam/tree/3ae9425b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-beam/diff/3ae9425b
Branch: refs/heads/master
Commit: 3ae9425b3a36e34890980647952c61cedbd91ff3
Parents: dd85cad 73d0af9
Author: Kenneth Knowles <kl...@google.com>
Authored: Tue Nov 22 22:24:37 2016 -0800
Committer: Kenneth Knowles <kl...@google.com>
Committed: Tue Nov 22 22:24:37 2016 -0800
----------------------------------------------------------------------
.../sdk/runners/TransformHierarchyTest.java | 142 +++++++++++++++++++
1 file changed, 142 insertions(+)
----------------------------------------------------------------------
[2/2] incubator-beam git commit: Add TransformHierarchyTest
Posted by ke...@apache.org.
Add TransformHierarchyTest
This tests basic features of TransformHierarchy
Project: http://git-wip-us.apache.org/repos/asf/incubator-beam/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-beam/commit/73d0af91
Tree: http://git-wip-us.apache.org/repos/asf/incubator-beam/tree/73d0af91
Diff: http://git-wip-us.apache.org/repos/asf/incubator-beam/diff/73d0af91
Branch: refs/heads/master
Commit: 73d0af9151340d85df1f720e88366f8a463b44bc
Parents: dd85cad
Author: Thomas Groh <tg...@google.com>
Authored: Tue Nov 22 16:14:29 2016 -0800
Committer: Kenneth Knowles <kl...@google.com>
Committed: Tue Nov 22 22:24:37 2016 -0800
----------------------------------------------------------------------
.../sdk/runners/TransformHierarchyTest.java | 142 +++++++++++++++++++
1 file changed, 142 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/73d0af91/sdks/java/core/src/test/java/org/apache/beam/sdk/runners/TransformHierarchyTest.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/runners/TransformHierarchyTest.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/runners/TransformHierarchyTest.java
new file mode 100644
index 0000000..c28f23e
--- /dev/null
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/runners/TransformHierarchyTest.java
@@ -0,0 +1,142 @@
+/*
+ * 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.sdk.runners;
+
+import static org.hamcrest.Matchers.containsInAnyOrder;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertThat;
+
+import java.util.HashSet;
+import java.util.Set;
+import org.apache.beam.sdk.Pipeline.PipelineVisitor;
+import org.apache.beam.sdk.io.CountingSource;
+import org.apache.beam.sdk.io.Read;
+import org.apache.beam.sdk.testing.TestPipeline;
+import org.apache.beam.sdk.transforms.Create;
+import org.apache.beam.sdk.transforms.MapElements;
+import org.apache.beam.sdk.transforms.SimpleFunction;
+import org.apache.beam.sdk.values.PBegin;
+import org.apache.beam.sdk.values.PCollection;
+import org.apache.beam.sdk.values.PValue;
+import org.hamcrest.Matchers;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+/**
+ * Tests for {@link TransformHierarchy}.
+ */
+@RunWith(JUnit4.class)
+public class TransformHierarchyTest {
+ @Rule public ExpectedException thrown = ExpectedException.none();
+ private TransformHierarchy hierarchy;
+ private TestPipeline pipeline;
+
+ @Before
+ public void setup() {
+ hierarchy = new TransformHierarchy();
+ pipeline = TestPipeline.create();
+ }
+
+ @Test
+ public void getCurrentNoPushReturnsRoot() {
+ assertThat(hierarchy.getCurrent().isRootNode(), is(true));
+ }
+
+ @Test
+ public void popWithoutPushThrows() {
+ thrown.expect(IllegalStateException.class);
+ hierarchy.popNode();
+ }
+
+ @Test
+ public void pushThenPopSucceeds() {
+ TransformTreeNode root = hierarchy.getCurrent();
+ TransformTreeNode node =
+ new TransformTreeNode(hierarchy.getCurrent(), Create.of(1), "Create", PBegin.in(pipeline));
+ hierarchy.pushNode(node);
+ assertThat(hierarchy.getCurrent(), equalTo(node));
+ hierarchy.popNode();
+ assertThat(hierarchy.getCurrent(), equalTo(root));
+ }
+
+ @Test
+ public void visitVisitsAllPushed() {
+ TransformTreeNode root = hierarchy.getCurrent();
+ Create.Values<Integer> create = Create.of(1);
+ PCollection<Integer> created = pipeline.apply(create);
+ PBegin begin = PBegin.in(pipeline);
+
+ TransformTreeNode compositeNode =
+ new TransformTreeNode(root, create, "Create", begin);
+ root.addComposite(compositeNode);
+ TransformTreeNode primitiveNode =
+ new TransformTreeNode(
+ compositeNode, Read.from(CountingSource.upTo(1L)), "Create/Read", begin);
+ compositeNode.addComposite(primitiveNode);
+
+ TransformTreeNode otherPrimitive =
+ new TransformTreeNode(
+ root, MapElements.via(new SimpleFunction<Integer, Integer>() {
+ @Override
+ public Integer apply(Integer input) {
+ return input;
+ }
+ }), "ParDo", created);
+ root.addComposite(otherPrimitive);
+ otherPrimitive.addInputProducer(created, primitiveNode);
+
+ hierarchy.pushNode(compositeNode);
+ hierarchy.pushNode(primitiveNode);
+ hierarchy.popNode();
+ hierarchy.popNode();
+ hierarchy.pushNode(otherPrimitive);
+ hierarchy.popNode();
+
+ final Set<TransformTreeNode> visitedCompositeNodes = new HashSet<>();
+ final Set<TransformTreeNode> visitedPrimitiveNodes = new HashSet<>();
+ final Set<PValue> visitedValuesInVisitor = new HashSet<>();
+
+ Set<PValue> visitedValues = new HashSet<>();
+ hierarchy.visit(new PipelineVisitor.Defaults() {
+ @Override
+ public CompositeBehavior enterCompositeTransform(TransformTreeNode node) {
+ visitedCompositeNodes.add(node);
+ return CompositeBehavior.ENTER_TRANSFORM;
+ }
+
+ @Override
+ public void visitPrimitiveTransform(TransformTreeNode node) {
+ visitedPrimitiveNodes.add(node);
+ }
+
+ @Override
+ public void visitValue(PValue value, TransformTreeNode producer) {
+ visitedValuesInVisitor.add(value);
+ }
+ }, visitedValues);
+
+ assertThat(visitedCompositeNodes, containsInAnyOrder(root, compositeNode));
+ assertThat(visitedPrimitiveNodes, containsInAnyOrder(primitiveNode, otherPrimitive));
+ assertThat(visitedValuesInVisitor, Matchers.<PValue>containsInAnyOrder(created));
+ }
+}