You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tez.apache.org by sr...@apache.org on 2016/02/24 23:34:52 UTC

[15/45] tez git commit: TEZ-3026. Tez UI 2: Add adapters for RM & AM (sree)

TEZ-3026. Tez UI 2: Add adapters for RM & AM (sree)


Project: http://git-wip-us.apache.org/repos/asf/tez/repo
Commit: http://git-wip-us.apache.org/repos/asf/tez/commit/0213e55d
Tree: http://git-wip-us.apache.org/repos/asf/tez/tree/0213e55d
Diff: http://git-wip-us.apache.org/repos/asf/tez/diff/0213e55d

Branch: refs/heads/TEZ-2980
Commit: 0213e55d90735f64bda46051647d109a26d2c823
Parents: e2fbcc4
Author: Sreenath Somarajapuram <sr...@apache.org>
Authored: Wed Jan 6 18:25:29 2016 +0530
Committer: Sreenath Somarajapuram <sr...@apache.org>
Committed: Thu Feb 25 03:32:15 2016 +0530

----------------------------------------------------------------------
 TEZ-2980-CHANGES.txt                            |  1 +
 .../src/main/webapp/app/adapters/abstract.js    | 11 +++----
 tez-ui2/src/main/webapp/app/adapters/am.js      | 25 ++++++++++++++++
 tez-ui2/src/main/webapp/app/adapters/rm.js      | 25 ++++++++++++++++
 .../src/main/webapp/app/adapters/timeline.js    |  2 ++
 tez-ui2/src/main/webapp/app/services/env.js     | 24 +++++++--------
 tez-ui2/src/main/webapp/app/services/hosts.js   |  6 ++--
 .../src/main/webapp/config/default-app-conf.js  | 11 +++----
 .../webapp/tests/unit/adapters/abstract-test.js | 28 ++++++++++++++++++
 .../main/webapp/tests/unit/adapters/am-test.js  | 31 ++++++++++++++++++++
 .../main/webapp/tests/unit/adapters/rm-test.js  | 31 ++++++++++++++++++++
 .../main/webapp/tests/unit/services/env-test.js | 29 ++++++++++--------
 12 files changed, 179 insertions(+), 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tez/blob/0213e55d/TEZ-2980-CHANGES.txt
----------------------------------------------------------------------
diff --git a/TEZ-2980-CHANGES.txt b/TEZ-2980-CHANGES.txt
index c8f9d0f..28584a8 100644
--- a/TEZ-2980-CHANGES.txt
+++ b/TEZ-2980-CHANGES.txt
@@ -10,3 +10,4 @@ ALL CHANGES:
   TEZ-3021. Tez UI 2: Add env service & initializer
   TEZ-3023. Tez UI 2: Abstract adapter and route
   TEZ-3022. Tez UI 2: Add serializer & adapter for timeline server
+  TEZ-3026. Tez UI 2: Add adapters for RM & AM

http://git-wip-us.apache.org/repos/asf/tez/blob/0213e55d/tez-ui2/src/main/webapp/app/adapters/abstract.js
----------------------------------------------------------------------
diff --git a/tez-ui2/src/main/webapp/app/adapters/abstract.js b/tez-ui2/src/main/webapp/app/adapters/abstract.js
index b412a46..6cb701b 100644
--- a/tez-ui2/src/main/webapp/app/adapters/abstract.js
+++ b/tez-ui2/src/main/webapp/app/adapters/abstract.js
@@ -28,15 +28,12 @@ export default LoaderAdapter.extend({
     return this.get(`hosts.${serverName}`);
   }),
   namespace: Ember.computed("serverName", function () {
-    var serverName = this.get("serverName"),
-        env = this.get("env");
-    return env.getAppConfig(`namespaces.webService.${serverName}`);
+    var serverName = this.get("serverName");
+    return this.get(`env.app.namespaces.webService.${serverName}`);
   }),
   pathTypeHash: Ember.computed("serverName", function () {
-    var serverName = this.get("serverName"),
-        env = this.get("env");
-
-    return env.getAppConfig(`paths.${serverName}`);
+    var serverName = this.get("serverName");
+    return this.get(`env.app.paths.${serverName}`);
   }),
 
   ajaxOptions: function(url, method, options) {

http://git-wip-us.apache.org/repos/asf/tez/blob/0213e55d/tez-ui2/src/main/webapp/app/adapters/am.js
----------------------------------------------------------------------
diff --git a/tez-ui2/src/main/webapp/app/adapters/am.js b/tez-ui2/src/main/webapp/app/adapters/am.js
new file mode 100644
index 0000000..f80cdd5
--- /dev/null
+++ b/tez-ui2/src/main/webapp/app/adapters/am.js
@@ -0,0 +1,25 @@
+/**
+ * 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.
+ */
+
+import AbstractAdapter from './abstract';
+
+export default AbstractAdapter.extend({
+  serverName: "am",
+
+  // Any am specific adapter changes must be added here
+});

http://git-wip-us.apache.org/repos/asf/tez/blob/0213e55d/tez-ui2/src/main/webapp/app/adapters/rm.js
----------------------------------------------------------------------
diff --git a/tez-ui2/src/main/webapp/app/adapters/rm.js b/tez-ui2/src/main/webapp/app/adapters/rm.js
new file mode 100644
index 0000000..b87c77d
--- /dev/null
+++ b/tez-ui2/src/main/webapp/app/adapters/rm.js
@@ -0,0 +1,25 @@
+/**
+ * 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.
+ */
+
+import AbstractAdapter from './abstract';
+
+export default AbstractAdapter.extend({
+  serverName: "rm",
+
+  // Any rm specific adapter changes must be added here
+});

http://git-wip-us.apache.org/repos/asf/tez/blob/0213e55d/tez-ui2/src/main/webapp/app/adapters/timeline.js
----------------------------------------------------------------------
diff --git a/tez-ui2/src/main/webapp/app/adapters/timeline.js b/tez-ui2/src/main/webapp/app/adapters/timeline.js
index aba7e1e..454cbc9 100644
--- a/tez-ui2/src/main/webapp/app/adapters/timeline.js
+++ b/tez-ui2/src/main/webapp/app/adapters/timeline.js
@@ -20,4 +20,6 @@ import AbstractAdapter from './abstract';
 
 export default AbstractAdapter.extend({
   serverName: "timeline",
+
+  // Any timeline specific adapter changes must be added here
 });

http://git-wip-us.apache.org/repos/asf/tez/blob/0213e55d/tez-ui2/src/main/webapp/app/services/env.js
----------------------------------------------------------------------
diff --git a/tez-ui2/src/main/webapp/app/services/env.js b/tez-ui2/src/main/webapp/app/services/env.js
index 397293d..bd7dde7 100644
--- a/tez-ui2/src/main/webapp/app/services/env.js
+++ b/tez-ui2/src/main/webapp/app/services/env.js
@@ -24,32 +24,28 @@ import environment from '../config/environment';
 var MoreObject = more.Object;
 
 export default Ember.Service.extend({
-  _configs: null,
+  ENV: null,
 
   init: function () {
     this.collateConfigs();
   },
 
   collateConfigs: function () {
-    var configs = {},
+    var collatedENV = {
+          APP: {}
+        },
         ENV = window.ENV;
 
-    MoreObject.merge(configs, environment);
+    MoreObject.merge(collatedENV, environment);
 
     if(ENV) {
-      MoreObject.merge(configs.APP, ENV);
+      MoreObject.merge(collatedENV.APP, ENV);
     }
 
-    this.set("_configs", configs);
+    this.set("ENV", collatedENV);
   },
 
-  getConfig: function (path) {
-    var configs = this.get("_configs");
-    return Ember.get(configs, path);
-  },
-
-  getAppConfig: function (path) {
-    var configs = this.get("_configs.APP");
-    return Ember.get(configs, path);
-  }
+  app: Ember.computed("ENV.APP", function () {
+    return this.get("ENV.APP");
+  })
 });

http://git-wip-us.apache.org/repos/asf/tez/blob/0213e55d/tez-ui2/src/main/webapp/app/services/hosts.js
----------------------------------------------------------------------
diff --git a/tez-ui2/src/main/webapp/app/services/hosts.js b/tez-ui2/src/main/webapp/app/services/hosts.js
index 07de04d..a3dc1f3 100644
--- a/tez-ui2/src/main/webapp/app/services/hosts.js
+++ b/tez-ui2/src/main/webapp/app/services/hosts.js
@@ -56,13 +56,11 @@ export default Ember.Service.extend({
   },
 
   timeline: Ember.computed(function () {
-    var env = this.get("env");
-    return this.normalizeURL(env.getAppConfig("hosts.timeline"));
+    return this.normalizeURL(this.get("env.app.hosts.timeline"));
   }),
 
   rm: Ember.computed(function () {
-    var env = this.get("env");
-    return this.normalizeURL(env.getAppConfig("hosts.rm"));
+    return this.normalizeURL(this.get("env.app.hosts.rm"));
   }),
 
 });

http://git-wip-us.apache.org/repos/asf/tez/blob/0213e55d/tez-ui2/src/main/webapp/config/default-app-conf.js
----------------------------------------------------------------------
diff --git a/tez-ui2/src/main/webapp/config/default-app-conf.js b/tez-ui2/src/main/webapp/config/default-app-conf.js
index 51a2e81..31a946f 100644
--- a/tez-ui2/src/main/webapp/config/default-app-conf.js
+++ b/tez-ui2/src/main/webapp/config/default-app-conf.js
@@ -24,15 +24,12 @@ module.exports = { // Tez App configurations
   namespaces: {
     webService: {
       timeline: 'ws/v1/timeline',
-      history: 'ws/v1/applicationhistory',
-      am: {
-        v1: 'proxy/__app_id__/ws/v1/tez',
-        v2: 'proxy/__app_id__/ws/v2/tez',
-      },
-      cluster: 'ws/v1/cluster',
+      appHistory: 'ws/v1/applicationhistory',
+      rm: 'ws/v1/cluster',
+      am: 'proxy/{app_id}/ws/v{version}/tez',
     },
     web: {
-      cluster: 'cluster'
+      rm: 'cluster'
     },
   },
   paths: {

http://git-wip-us.apache.org/repos/asf/tez/blob/0213e55d/tez-ui2/src/main/webapp/tests/unit/adapters/abstract-test.js
----------------------------------------------------------------------
diff --git a/tez-ui2/src/main/webapp/tests/unit/adapters/abstract-test.js b/tez-ui2/src/main/webapp/tests/unit/adapters/abstract-test.js
index bc00679..5ff39e7 100644
--- a/tez-ui2/src/main/webapp/tests/unit/adapters/abstract-test.js
+++ b/tez-ui2/src/main/webapp/tests/unit/adapters/abstract-test.js
@@ -37,6 +37,34 @@ test('Basic creation test', function(assert) {
   assert.ok(adapter.pathForType);
 });
 
+test('host, namespace & pathTypeHash test', function(assert) {
+  let adapter = this.subject(),
+      testServerName = "sn",
+      testHosts = {
+        sn: "foo.bar",
+      },
+      testENV = {
+        app: {
+          namespaces: {
+            webService: {
+              sn: "ws"
+            }
+          },
+          paths: {
+            sn: "path"
+          }
+        }
+      };
+
+  adapter.hosts = testHosts;
+  adapter.env = testENV;
+  adapter.set("serverName", testServerName);
+
+  assert.equal(adapter.get("host"), testHosts.sn);
+  assert.equal(adapter.get("namespace"), testENV.app.namespaces.webService.sn);
+  assert.equal(adapter.get("pathTypeHash"), testENV.app.paths.sn);
+});
+
 test('ajaxOptions test', function(assert) {
   let adapter = this.subject(),
       testUrl = "foo.bar",

http://git-wip-us.apache.org/repos/asf/tez/blob/0213e55d/tez-ui2/src/main/webapp/tests/unit/adapters/am-test.js
----------------------------------------------------------------------
diff --git a/tez-ui2/src/main/webapp/tests/unit/adapters/am-test.js b/tez-ui2/src/main/webapp/tests/unit/adapters/am-test.js
new file mode 100644
index 0000000..a452467
--- /dev/null
+++ b/tez-ui2/src/main/webapp/tests/unit/adapters/am-test.js
@@ -0,0 +1,31 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('adapter:am', 'Unit | Adapter | am', {
+  // Specify the other units that are required for this test.
+  // needs: ['serializer:foo']
+});
+
+test('Basic creation test', function(assert) {
+  let adapter = this.subject();
+
+  assert.ok(adapter);
+  assert.equal(adapter.serverName, "am");
+});

http://git-wip-us.apache.org/repos/asf/tez/blob/0213e55d/tez-ui2/src/main/webapp/tests/unit/adapters/rm-test.js
----------------------------------------------------------------------
diff --git a/tez-ui2/src/main/webapp/tests/unit/adapters/rm-test.js b/tez-ui2/src/main/webapp/tests/unit/adapters/rm-test.js
new file mode 100644
index 0000000..0b0445e
--- /dev/null
+++ b/tez-ui2/src/main/webapp/tests/unit/adapters/rm-test.js
@@ -0,0 +1,31 @@
+/**
+ * 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.
+ */
+
+import { moduleFor, test } from 'ember-qunit';
+
+moduleFor('adapter:rm', 'Unit | Adapter | rm', {
+  // Specify the other units that are required for this test.
+  // needs: ['serializer:foo']
+});
+
+test('Basic creation test', function(assert) {
+  let adapter = this.subject();
+
+  assert.ok(adapter);
+  assert.equal(adapter.serverName, "rm");
+});

http://git-wip-us.apache.org/repos/asf/tez/blob/0213e55d/tez-ui2/src/main/webapp/tests/unit/services/env-test.js
----------------------------------------------------------------------
diff --git a/tez-ui2/src/main/webapp/tests/unit/services/env-test.js b/tez-ui2/src/main/webapp/tests/unit/services/env-test.js
index a8a064b..5064fc3 100644
--- a/tez-ui2/src/main/webapp/tests/unit/services/env-test.js
+++ b/tez-ui2/src/main/webapp/tests/unit/services/env-test.js
@@ -29,9 +29,9 @@ test('Basic creation test', function(assert) {
   let service = this.subject();
 
   assert.ok(service);
+  assert.ok(service.ENV);
   assert.ok(service.collateConfigs);
-  assert.ok(service.getConfig);
-  assert.ok(service.getAppConfig);
+  assert.ok(service.app);
 });
 
 test('collateConfigs test', function(assert) {
@@ -46,25 +46,28 @@ test('collateConfigs test', function(assert) {
 
   service.collateConfigs();
 
-  APP = service._configs.APP;
+  APP = service.get("app");
   assert.equal(APP.a, 1, "Test window.ENV merge onto environment.APP");
   assert.equal(APP.b, 22);
 });
 
-test('getConfig test', function(assert) {
-  let service = this.subject();
+test('app computed property test', function(assert) {
+  let service = this.subject(),
+      ENV = {
+        b: 2
+      };
 
-  window.ENV = {};
-  environment.a = 11;
+  window.ENV = ENV;
+  environment.APP.a = 11;
   service.collateConfigs();
-  assert.equal(service.getConfig("a"), environment.a);
+  assert.equal(service.get("app.a"), environment.APP.a);
+  assert.equal(service.get("app.b"), ENV.b);
 });
 
-test('getAppConfig test', function(assert) {
+test('Validate config/default-app-conf.js', function(assert) {
   let service = this.subject();
 
-  window.ENV = {};
-  environment.APP.a = 11;
-  service.collateConfigs();
-  assert.equal(service.getAppConfig("a"), environment.APP.a);
+  assert.equal(service.get("app.hosts.timeline"), "localhost:8188");
+  assert.equal(service.get("app.namespaces.webService.timeline"), "ws/v1/timeline");
+  assert.equal(service.get("app.paths.timeline.dag"), "TEZ_DAG_ID");
 });