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 2017/11/17 20:31:36 UTC
[45/50] [abbrv] beam git commit: [BEAM-3202] Ensure that
PipelineOptions.getOptionsId is always populated.
[BEAM-3202] Ensure that PipelineOptions.getOptionsId is always populated.
Project: http://git-wip-us.apache.org/repos/asf/beam/repo
Commit: http://git-wip-us.apache.org/repos/asf/beam/commit/c234352e
Tree: http://git-wip-us.apache.org/repos/asf/beam/tree/c234352e
Diff: http://git-wip-us.apache.org/repos/asf/beam/diff/c234352e
Branch: refs/heads/tez-runner
Commit: c234352e4a0d159724b4c6ef339e82b43b7026c6
Parents: f96bbd4
Author: Luke Cwik <lc...@google.com>
Authored: Thu Nov 16 09:40:42 2017 -0800
Committer: Luke Cwik <lc...@google.com>
Committed: Thu Nov 16 14:28:10 2017 -0800
----------------------------------------------------------------------
.../org/apache/beam/sdk/options/PipelineOptions.java | 2 +-
.../beam/sdk/options/PipelineOptionsFactory.java | 4 ++++
.../beam/sdk/options/PipelineOptionsFactoryTest.java | 15 +++++++++++++++
.../apache/beam/sdk/testing/TestPipelineTest.java | 6 ++++--
4 files changed, 24 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/beam/blob/c234352e/sdks/java/core/src/main/java/org/apache/beam/sdk/options/PipelineOptions.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/options/PipelineOptions.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/options/PipelineOptions.java
index 77117b6..1dc9d44 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/options/PipelineOptions.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/options/PipelineOptions.java
@@ -334,7 +334,7 @@ public interface PipelineOptions extends HasDisplayData {
Map<String, Map<String, Object>> outputRuntimeOptions();
/**
- * Provides a unique ID for this {@link PipelineOptions} object, assigned at graph
+ * Provides a process wide unique ID for this {@link PipelineOptions} object, assigned at graph
* construction time.
*/
@Hidden
http://git-wip-us.apache.org/repos/asf/beam/blob/c234352e/sdks/java/core/src/main/java/org/apache/beam/sdk/options/PipelineOptionsFactory.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/options/PipelineOptionsFactory.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/options/PipelineOptionsFactory.java
index ad6979e..f75daee 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/options/PipelineOptionsFactory.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/options/PipelineOptionsFactory.java
@@ -302,6 +302,10 @@ public class PipelineOptionsFactory {
appNameOptions.setAppName(defaultAppName);
}
+ // Ensure the options id has been populated either by the user using the command line
+ // or by the default value factory.
+ t.getOptionsId();
+
if (validation) {
if (isCli) {
PipelineOptionsValidator.validateCli(klass, t);
http://git-wip-us.apache.org/repos/asf/beam/blob/c234352e/sdks/java/core/src/test/java/org/apache/beam/sdk/options/PipelineOptionsFactoryTest.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/options/PipelineOptionsFactoryTest.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/options/PipelineOptionsFactoryTest.java
index f8de74a..b534ed8 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/options/PipelineOptionsFactoryTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/options/PipelineOptionsFactoryTest.java
@@ -36,6 +36,7 @@ import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.Module;
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@@ -58,6 +59,7 @@ import org.apache.beam.sdk.runners.PipelineRunnerRegistrar;
import org.apache.beam.sdk.testing.CrashingRunner;
import org.apache.beam.sdk.testing.ExpectedLogs;
import org.apache.beam.sdk.testing.RestoreSystemProperties;
+import org.apache.beam.sdk.util.common.ReflectHelpers;
import org.hamcrest.Matchers;
import org.junit.Rule;
import org.junit.Test;
@@ -123,6 +125,19 @@ public class PipelineOptionsFactoryTest {
}
@Test
+ public void testOptionsIdIsSet() throws Exception {
+ ObjectMapper mapper = new ObjectMapper().registerModules(
+ ObjectMapper.findModules(ReflectHelpers.findClassLoader()));
+ PipelineOptions options = PipelineOptionsFactory.create();
+ // We purposely serialize/deserialize to get another instance. This allows to test if the
+ // default has been set or not.
+ PipelineOptions clone =
+ mapper.readValue(mapper.writeValueAsString(options), PipelineOptions.class);
+ // It is important that we don't call getOptionsId() before we have created the clone.
+ assertEquals(options.getOptionsId(), clone.getOptionsId());
+ }
+
+ @Test
public void testManualRegistration() {
assertFalse(PipelineOptionsFactory.getRegisteredOptions().contains(TestPipelineOptions.class));
PipelineOptionsFactory.register(TestPipelineOptions.class);
http://git-wip-us.apache.org/repos/asf/beam/blob/c234352e/sdks/java/core/src/test/java/org/apache/beam/sdk/testing/TestPipelineTest.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/testing/TestPipelineTest.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/testing/TestPipelineTest.java
index ec681ea..8d50c59 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/testing/TestPipelineTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/testing/TestPipelineTest.java
@@ -125,10 +125,12 @@ public class TestPipelineTest implements Serializable {
PipelineOptions options = PipelineOptionsFactory.fromArgs(args).as(PipelineOptions.class);
String[] arr = TestPipeline.convertToArgs(options);
List<String> lst = Arrays.asList(arr);
- assertEquals(lst.size(), 2);
+ assertEquals(lst.size(), 3);
assertThat(
lst,
- containsInAnyOrder("--tempLocation=Test_Location", "--appName=TestPipelineCreationTest"));
+ containsInAnyOrder("--tempLocation=Test_Location",
+ "--appName=TestPipelineCreationTest",
+ "--optionsId=" + options.getOptionsId()));
}
@Test