Repository: hadoop
Updated Branches:
  refs/heads/trunk a8dae0047 -> cadbc8b57


http://git-wip-us.apache.org/repos/asf/hadoop/blob/cadbc8b5/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/client/cli/yarnservice/YarnServiceCliTestUtils.java
----------------------------------------------------------------------
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/client/cli/yarnservice/YarnServiceCliTestUtils.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/client/cli/yarnservice/YarnServiceCliTestUtils.java
new file mode 100644
index 0000000..e4825ea
--- /dev/null
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/client/cli/yarnservice/YarnServiceCliTestUtils.java
@@ -0,0 +1,35 @@
+/**
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.hadoop.yarn.submarine.client.cli.yarnservice;
+
+import org.apache.hadoop.yarn.submarine.common.MockClientContext;
+import org.apache.hadoop.yarn.submarine.runtimes.RuntimeFactory;
+import org.apache.hadoop.yarn.submarine.runtimes.common.MemorySubmarineStorage;
+import 
org.apache.hadoop.yarn.submarine.runtimes.yarnservice.YarnServiceRuntimeFactory;
+
+public class YarnServiceCliTestUtils {
+  public static MockClientContext getMockClientContext() {
+    MockClientContext mockClientContext = new MockClientContext();
+    RuntimeFactory runtimeFactory = new YarnServiceRuntimeFactory(
+        mockClientContext);
+    mockClientContext.setRuntimeFactory(runtimeFactory);
+    runtimeFactory.setSubmarineStorage(new MemorySubmarineStorage());
+    return mockClientContext;
+  }
+}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/cadbc8b5/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/common/MockClientContext.java
----------------------------------------------------------------------
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/common/MockClientContext.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/common/MockClientContext.java
new file mode 100644
index 0000000..5c06ddc
--- /dev/null
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/common/MockClientContext.java
@@ -0,0 +1,56 @@
+/**
+ * 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.hadoop.yarn.submarine.common;
+
+import org.apache.hadoop.yarn.submarine.common.fs.MockRemoteDirectoryManager;
+import org.apache.hadoop.yarn.submarine.common.fs.RemoteDirectoryManager;
+import org.apache.hadoop.yarn.client.api.YarnClient;
+import org.apache.hadoop.yarn.exceptions.YarnException;
+import org.apache.hadoop.yarn.service.client.ServiceClient;
+import org.apache.hadoop.yarn.util.resource.ResourceUtils;
+
+import java.io.IOException;
+
+import static org.junit.Assert.fail;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class MockClientContext extends ClientContext {
+  private MockRemoteDirectoryManager remoteDirectoryMgr =
+      new MockRemoteDirectoryManager();
+
+  @Override
+  public RemoteDirectoryManager getRemoteDirectoryManager() {
+    return remoteDirectoryMgr;
+  }
+
+  @Override
+  public synchronized YarnClient getOrCreateYarnClient() {
+    YarnClient client = mock(YarnClient.class);
+    try {
+      when(client.getResourceTypeInfo()).thenReturn(
+          ResourceUtils.getResourcesTypeInfo());
+    } catch (YarnException e) {
+      fail(e.getMessage());
+    } catch (IOException e) {
+      fail(e.getMessage());
+    }
+    return client;
+  }
+}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/cadbc8b5/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/common/fs/MockRemoteDirectoryManager.java
----------------------------------------------------------------------
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/common/fs/MockRemoteDirectoryManager.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/common/fs/MockRemoteDirectoryManager.java
new file mode 100644
index 0000000..a195b59
--- /dev/null
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/common/fs/MockRemoteDirectoryManager.java
@@ -0,0 +1,83 @@
+/**
+ * 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.hadoop.yarn.submarine.common.fs;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.Path;
+
+import java.io.File;
+import java.io.IOException;
+
+public class MockRemoteDirectoryManager implements RemoteDirectoryManager {
+  private File jobsParentDir = null;
+  private File modelParentDir = null;
+
+  @Override
+  public Path getJobStagingArea(String jobName, boolean create)
+      throws IOException {
+    if (jobsParentDir == null && create) {
+      jobsParentDir = new File(
+          "target/_staging_area_" + System.currentTimeMillis());
+      if (!jobsParentDir.mkdirs()) {
+        throw new IOException(
+            "Failed to mkdirs for" + jobsParentDir.getAbsolutePath());
+      }
+    }
+
+    File jobDir = new File(jobsParentDir.getAbsolutePath(), jobName);
+    if (create && !jobDir.exists()) {
+      if (!jobDir.mkdirs()) {
+        throw new IOException("Failed to mkdirs for " + 
jobDir.getAbsolutePath());
+      }
+    }
+    return new Path(jobDir.getAbsolutePath());
+  }
+
+  @Override
+  public Path getJobCheckpointDir(String jobName, boolean create)
+      throws IOException {
+    return null;
+  }
+
+  @Override
+  public Path getModelDir(String modelName, boolean create) throws IOException 
{
+    if (modelParentDir == null && create) {
+      modelParentDir = new File(
+          "target/_models_" + System.currentTimeMillis());
+      if (!modelParentDir.mkdirs()) {
+        throw new IOException(
+            "Failed to mkdirs for " + modelParentDir.getAbsolutePath());
+      }
+    }
+
+    File modelDir = new File(modelParentDir.getAbsolutePath(), modelName);
+    if (create) {
+      if (!modelDir.exists() && !modelDir.mkdirs()) {
+        throw new IOException("Failed to mkdirs for " + 
modelDir.getAbsolutePath());
+      }
+    }
+    return new Path(modelDir.getAbsolutePath());
+  }
+
+  @Override
+  public FileSystem getFileSystem() throws IOException {
+    return FileSystem.getLocal(new Configuration());
+  }
+}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/cadbc8b5/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/runtimes/common/MemorySubmarineStorage.java
----------------------------------------------------------------------
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/runtimes/common/MemorySubmarineStorage.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/runtimes/common/MemorySubmarineStorage.java
new file mode 100644
index 0000000..013614e
--- /dev/null
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/runtimes/common/MemorySubmarineStorage.java
@@ -0,0 +1,74 @@
+/**
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.hadoop.yarn.submarine.runtimes.common;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+public class MemorySubmarineStorage extends SubmarineStorage {
+  private Map<String, Map<String, String>> jobsInfo = new HashMap<>();
+  private Map<String, Map<String, Map<String, String>>> modelsInfo =
+      new HashMap<>();
+
+  @Override
+  public synchronized void addNewJob(String jobName, Map<String, String> 
jobInfo)
+      throws IOException {
+    jobsInfo.put(jobName, jobInfo);
+  }
+
+  @Override
+  public synchronized Map<String, String> getJobInfoByName(String jobName)
+      throws IOException {
+    Map<String, String> info = jobsInfo.get(jobName);
+    if (info == null) {
+      throw new IOException("Failed to find job=" + jobName);
+    }
+    return info;
+  }
+
+  @Override
+  public synchronized void addNewModel(String modelName, String version,
+      Map<String, String> modelInfo) throws IOException {
+    if (!modelsInfo.containsKey(modelName)) {
+      modelsInfo.put(modelName, new HashMap<>());
+    }
+    modelsInfo.get(modelName).put(version, modelInfo);
+  }
+
+  @Override
+  public synchronized Map<String, String> getModelInfoByName(String modelName,
+      String version) throws IOException {
+
+    boolean notFound = false;
+    Map<String, String> info = null;
+    try {
+       info = modelsInfo.get(modelName).get(version);
+    } catch (NullPointerException e) {
+      notFound = true;
+    }
+
+    if (notFound || info == null) {
+      throw new IOException(
+          "Failed to find, model=" + modelName + " version=" + version);
+    }
+
+    return info;
+  }
+}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/cadbc8b5/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/runtimes/common/TestFSBasedSubmarineStorage.java
----------------------------------------------------------------------
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/runtimes/common/TestFSBasedSubmarineStorage.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/runtimes/common/TestFSBasedSubmarineStorage.java
new file mode 100644
index 0000000..52a68b3
--- /dev/null
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/runtimes/common/TestFSBasedSubmarineStorage.java
@@ -0,0 +1,73 @@
+/**
+ * Licensed 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. See accompanying LICENSE file.
+ */
+
+package org.apache.hadoop.yarn.submarine.runtimes.common;
+
+import org.apache.hadoop.yarn.submarine.common.ClientContext;
+import org.apache.hadoop.yarn.submarine.common.fs.MockRemoteDirectoryManager;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class TestFSBasedSubmarineStorage {
+  private Map<String, String> getMap(String prefix) {
+    Map<String, String> map = new HashMap<>();
+    map.put(prefix + "1", "1");
+    map.put(prefix + "2", "2");
+    map.put(prefix + "3", "3");
+    map.put(prefix + "4", "4");
+    return map;
+  }
+
+  private void compareMap(Map<String, String> map1, Map<String, String> map2) {
+    Assert.assertEquals(map1.size(), map2.size());
+    for (String k : map1.keySet()) {
+      Assert.assertEquals(map1.get(k), map2.get(k));
+    }
+  }
+
+  @Test
+  public void testStorageOps() throws IOException {
+    MockRemoteDirectoryManager remoteDirectoryManager = new 
MockRemoteDirectoryManager();
+    ClientContext clientContext = mock(ClientContext.class);
+    
when(clientContext.getRemoteDirectoryManager()).thenReturn(remoteDirectoryManager);
+    FSBasedSubmarineStorageImpl storage = new FSBasedSubmarineStorageImpl(
+        clientContext);
+    storage.addNewJob("job1", getMap("job1"));
+    storage.addNewJob("job2", getMap("job2"));
+    storage.addNewJob("job3", getMap("job3"));
+    storage.addNewJob("job4", new HashMap<>());
+    storage.addNewModel("model1", "1.0", getMap("model1_1.0"));
+    storage.addNewModel("model1", "2.0.0", getMap("model1_2.0.0"));
+    storage.addNewModel("model2", null, getMap("model1_default"));
+    storage.addNewModel("model2", "1.0", getMap("model2_1.0"));
+
+    // create a new storage and read it back.
+    storage = new FSBasedSubmarineStorageImpl(
+        clientContext);
+    compareMap(getMap("job1"), storage.getJobInfoByName("job1"));
+    compareMap(getMap("job2"), storage.getJobInfoByName("job2"));
+    compareMap(getMap("job3"), storage.getJobInfoByName("job3"));
+    compareMap(new HashMap<>(), storage.getJobInfoByName("job4"));
+    compareMap(getMap("model1_1.0"), storage.getModelInfoByName("model1", 
"1.0"));
+    compareMap(getMap("model1_2.0.0"), storage.getModelInfoByName("model1", 
"2.0.0"));
+    compareMap(getMap("model2_1.0"), storage.getModelInfoByName("model2", 
"1.0"));
+  }
+}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/cadbc8b5/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/runtimes/yarnservice/TestTFConfigGenerator.java
----------------------------------------------------------------------
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/runtimes/yarnservice/TestTFConfigGenerator.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/runtimes/yarnservice/TestTFConfigGenerator.java
new file mode 100644
index 0000000..d7dc874
--- /dev/null
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/java/org/apache/hadoop/yarn/submarine/runtimes/yarnservice/TestTFConfigGenerator.java
@@ -0,0 +1,42 @@
+/**
+ * Licensed 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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. See accompanying LICENSE file.
+ */
+
+package org.apache.hadoop.yarn.submarine.runtimes.yarnservice;
+
+import org.codehaus.jettison.json.JSONException;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class TestTFConfigGenerator {
+  @Test
+  public void testSimpleDistributedTFConfigGenerator() throws JSONException {
+    String json = YarnServiceUtils.getTFConfigEnv("worker", 5, 3, "wtan",
+        "tf-job-001", "example.com");
+    String expected =
+        
"{\\\"cluster\\\":{\\\"master\\\":[\\\"master-0.wtan.tf-job-001.example.com:8000\\\"],\\\"worker\\\":[\\\"worker-0.wtan.tf-job-001.example.com:8000\\\",\\\"worker-1.wtan.tf-job-001.example.com:8000\\\",\\\"worker-2.wtan.tf-job-001.example.com:8000\\\",\\\"worker-3.wtan.tf-job-001.example.com:8000\\\"],\\\"ps\\\":[\\\"ps-0.wtan.tf-job-001.example.com:8000\\\",\\\"ps-1.wtan.tf-job-001.example.com:8000\\\",\\\"ps-2.wtan.tf-job-001.example.com:8000\\\"]},\\\"task\\\":{
 \\\"type\\\":\\\"worker\\\", 
\\\"index\\\":$_TASK_INDEX},\\\"environment\\\":\\\"cloud\\\"}";
+    Assert.assertEquals(expected, json);
+
+    json = YarnServiceUtils.getTFConfigEnv("ps", 5, 3, "wtan", "tf-job-001",
+        "example.com");
+    expected =
+        
"{\\\"cluster\\\":{\\\"master\\\":[\\\"master-0.wtan.tf-job-001.example.com:8000\\\"],\\\"worker\\\":[\\\"worker-0.wtan.tf-job-001.example.com:8000\\\",\\\"worker-1.wtan.tf-job-001.example.com:8000\\\",\\\"worker-2.wtan.tf-job-001.example.com:8000\\\",\\\"worker-3.wtan.tf-job-001.example.com:8000\\\"],\\\"ps\\\":[\\\"ps-0.wtan.tf-job-001.example.com:8000\\\",\\\"ps-1.wtan.tf-job-001.example.com:8000\\\",\\\"ps-2.wtan.tf-job-001.example.com:8000\\\"]},\\\"task\\\":{
 \\\"type\\\":\\\"ps\\\", 
\\\"index\\\":$_TASK_INDEX},\\\"environment\\\":\\\"cloud\\\"}";
+    Assert.assertEquals(expected, json);
+
+    json = YarnServiceUtils.getTFConfigEnv("master", 2, 1, "wtan", 
"tf-job-001",
+        "example.com");
+    expected =
+        
"{\\\"cluster\\\":{\\\"master\\\":[\\\"master-0.wtan.tf-job-001.example.com:8000\\\"],\\\"worker\\\":[\\\"worker-0.wtan.tf-job-001.example.com:8000\\\"],\\\"ps\\\":[\\\"ps-0.wtan.tf-job-001.example.com:8000\\\"]},\\\"task\\\":{
 \\\"type\\\":\\\"master\\\", 
\\\"index\\\":$_TASK_INDEX},\\\"environment\\\":\\\"cloud\\\"}";
+    Assert.assertEquals(expected, json);
+  }
+}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/cadbc8b5/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/resources/core-site.xml
----------------------------------------------------------------------
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/resources/core-site.xml
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/resources/core-site.xml
new file mode 100644
index 0000000..50ec146
--- /dev/null
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/resources/core-site.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+  Licensed 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. See accompanying LICENSE file.
+-->
+
+<!-- Put site-specific property overrides in this file. -->
+
+<configuration>
+
+</configuration>

http://git-wip-us.apache.org/repos/asf/hadoop/blob/cadbc8b5/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/resources/hdfs-site.xml
----------------------------------------------------------------------
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/resources/hdfs-site.xml
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/resources/hdfs-site.xml
new file mode 100644
index 0000000..50ec146
--- /dev/null
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/test/resources/hdfs-site.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+  Licensed 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. See accompanying LICENSE file.
+-->
+
+<!-- Put site-specific property overrides in this file. -->
+
+<configuration>
+
+</configuration>

http://git-wip-us.apache.org/repos/asf/hadoop/blob/cadbc8b5/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/pom.xml
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/pom.xml 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/pom.xml
index 490e9ad..4c03f3c 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/pom.xml
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/pom.xml
@@ -37,6 +37,7 @@
     <module>hadoop-yarn-applications-distributedshell</module>
     <module>hadoop-yarn-applications-unmanaged-am-launcher</module>
     <module>hadoop-yarn-services</module>
+    <module>hadoop-yarn-submarine</module>
   </modules>
 
  <profiles>


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-commits-h...@hadoop.apache.org

Reply via email to