TEZ-3040. Tez UI 2: Create Vertex details page & sub tables (sree)
Project: http://git-wip-us.apache.org/repos/asf/tez/repo Commit: http://git-wip-us.apache.org/repos/asf/tez/commit/68dc2f5d Tree: http://git-wip-us.apache.org/repos/asf/tez/tree/68dc2f5d Diff: http://git-wip-us.apache.org/repos/asf/tez/diff/68dc2f5d Branch: refs/heads/TEZ-2980 Commit: 68dc2f5de7eba7fbfe5c4403befdf8bfb2418b00 Parents: a1c3622 Author: Sreenath Somarajapuram <s...@apache.org> Authored: Tue Jan 19 00:23:31 2016 +0530 Committer: Sreenath Somarajapuram <s...@apache.org> Committed: Thu Feb 25 03:32:15 2016 +0530 ---------------------------------------------------------------------- TEZ-2980-CHANGES.txt | 1 + tez-ui2/src/main/webapp/app/controllers/dag.js | 4 +- .../main/webapp/app/controllers/dag/attempts.js | 12 +- .../main/webapp/app/controllers/dag/tasks.js | 10 +- .../main/webapp/app/controllers/dag/vertices.js | 12 ++ .../src/main/webapp/app/controllers/vertex.js | 49 +++++++ .../webapp/app/controllers/vertex/attempts.js | 77 +++++++++++ .../main/webapp/app/controllers/vertex/index.js | 22 ++++ .../main/webapp/app/controllers/vertex/tasks.js | 65 ++++++++++ tez-ui2/src/main/webapp/app/models/vertex.js | 20 ++- tez-ui2/src/main/webapp/app/router.js | 4 + .../src/main/webapp/app/routes/dag/attempts.js | 2 +- tez-ui2/src/main/webapp/app/routes/vertex.js | 31 +++++ .../main/webapp/app/routes/vertex/attempts.js | 35 +++++ .../src/main/webapp/app/routes/vertex/index.js | 33 +++++ .../src/main/webapp/app/routes/vertex/tasks.js | 35 +++++ .../src/main/webapp/app/serializers/vertex.js | 11 +- .../src/main/webapp/app/styles/page-layout.less | 5 +- .../src/main/webapp/app/templates/dag/index.hbs | 97 +++++++------- .../src/main/webapp/app/templates/vertex.hbs | 20 +++ .../webapp/app/templates/vertex/attempts.hbs | 33 +++++ .../main/webapp/app/templates/vertex/index.hbs | 130 +++++++++++++++++++ .../main/webapp/app/templates/vertex/tasks.hbs | 33 +++++ .../tests/unit/controllers/vertex-test.js | 36 +++++ .../unit/controllers/vertex/attempts-test.js | 36 +++++ .../tests/unit/controllers/vertex/index-test.js | 34 +++++ .../tests/unit/controllers/vertex/tasks-test.js | 36 +++++ .../webapp/tests/unit/routes/vertex-test.js | 32 +++++ .../tests/unit/routes/vertex/attempts-test.js | 45 +++++++ .../tests/unit/routes/vertex/index-test.js | 45 +++++++ .../tests/unit/routes/vertex/tasks-test.js | 45 +++++++ 31 files changed, 987 insertions(+), 63 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/TEZ-2980-CHANGES.txt ---------------------------------------------------------------------- diff --git a/TEZ-2980-CHANGES.txt b/TEZ-2980-CHANGES.txt index 372369a..3389c46 100644 --- a/TEZ-2980-CHANGES.txt +++ b/TEZ-2980-CHANGES.txt @@ -15,3 +15,4 @@ ALL CHANGES: TEZ-2986. Tez UI 2: Implement All DAGs page TEZ-3038. Tez UI 2: Create DAG details page TEZ-3039. Tez UI 2: Create all sub-pages for DAG + TEZ-3040. Tez UI 2: Create Vertex details page & sub tables http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/app/controllers/dag.js ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/app/controllers/dag.js b/tez-ui2/src/main/webapp/app/controllers/dag.js index f54d8cf..732a0df 100644 --- a/tez-ui2/src/main/webapp/app/controllers/dag.js +++ b/tez-ui2/src/main/webapp/app/controllers/dag.js @@ -25,7 +25,7 @@ export default AbstractController.extend({ var name = this.get("model.name"); return [{ - text: `DAG [${name}]`, + text: `DAG [ ${name} ]`, routeName: "dag.index", model: this.get("model.entityID") }]; @@ -41,7 +41,7 @@ export default AbstractController.extend({ text: "All Tasks", routeName: "dag.tasks" }, { - text: "All Attempts", + text: "All Task Attempts", routeName: "dag.attempts" }] }); http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/app/controllers/dag/attempts.js ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/app/controllers/dag/attempts.js b/tez-ui2/src/main/webapp/app/controllers/dag/attempts.js index 1ffc00c..c2e3950 100644 --- a/tez-ui2/src/main/webapp/app/controllers/dag/attempts.js +++ b/tez-ui2/src/main/webapp/app/controllers/dag/attempts.js @@ -21,7 +21,7 @@ import ColumnDefinition from 'em-table/utils/column-definition'; export default TablePageController.extend({ breadcrumbs: [{ - text: "All Attempts", + text: "All Task Attempts", routeName: "dag.attempts", }], @@ -36,7 +36,15 @@ export default TablePageController.extend({ },{ id: 'vertexName', headerTitle: 'Vertex Index', - contentPath: 'vertexName' + contentPath: 'vertexName', + cellComponentName: 'em-table-linked-cell', + getCellContent: function (row) { + return { + routeName: "vertex", + model: row.get("vertexID"), + text: row.get("vertexName") + }; + } },{ id: 'status', headerTitle: 'Status', http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/app/controllers/dag/tasks.js ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/app/controllers/dag/tasks.js b/tez-ui2/src/main/webapp/app/controllers/dag/tasks.js index 7c91deb..4721b81 100644 --- a/tez-ui2/src/main/webapp/app/controllers/dag/tasks.js +++ b/tez-ui2/src/main/webapp/app/controllers/dag/tasks.js @@ -32,7 +32,15 @@ export default TablePageController.extend({ },{ id: 'vertexName', headerTitle: 'Vertex Name', - contentPath: 'vertexName' + contentPath: 'vertexName', + cellComponentName: 'em-table-linked-cell', + getCellContent: function (row) { + return { + routeName: "vertex", + model: row.get("vertexID"), + text: row.get("vertexName") + }; + } },{ id: 'status', headerTitle: 'Status', http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/app/controllers/dag/vertices.js ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/app/controllers/dag/vertices.js b/tez-ui2/src/main/webapp/app/controllers/dag/vertices.js index 7bdc229..b20a558 100644 --- a/tez-ui2/src/main/webapp/app/controllers/dag/vertices.js +++ b/tez-ui2/src/main/webapp/app/controllers/dag/vertices.js @@ -29,6 +29,14 @@ export default TablePageController.extend({ id: 'name', headerTitle: 'Vertex Name', contentPath: 'name', + cellComponentName: 'em-table-linked-cell', + getCellContent: function (row) { + return { + routeName: "vertex", + model: row.get("entityID"), + text: row.get("name") + }; + } },{ id: 'entityID', headerTitle: 'Vertex Id', @@ -73,6 +81,10 @@ export default TablePageController.extend({ type: 'date' } },{ + id: 'totalTasks', + headerTitle: 'Tasks', + contentPath: 'totalTasks', + },{ id: 'processorClassName', headerTitle: 'Processor Class', contentPath: 'processorClassName', http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/app/controllers/vertex.js ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/app/controllers/vertex.js b/tez-ui2/src/main/webapp/app/controllers/vertex.js new file mode 100644 index 0000000..946eaa5 --- /dev/null +++ b/tez-ui2/src/main/webapp/app/controllers/vertex.js @@ -0,0 +1,49 @@ +/** + * 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 Ember from 'ember'; + +import AbstractController from './abstract'; + +export default AbstractController.extend({ + breadcrumbs: Ember.computed("model.dag", function () { + var dagName = this.get("model.dag.name"), + vertexName = this.get("model.name"); + + return [{ + text: `DAG [ ${dagName} ]`, + routeName: "dag.index", + model: this.get("model.dagID") + },{ + text: `Vertex [ ${vertexName} ]`, + routeName: "vertex.index", + model: this.get("model.vertexID") + }]; + }), + + tabs: [{ + text: "Vertex Details", + routeName: "vertex.index" + }, { + text: "Tasks", + routeName: "vertex.tasks" + }, { + text: "Task Attempts", + routeName: "vertex.attempts" + }] +}); http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/app/controllers/vertex/attempts.js ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/app/controllers/vertex/attempts.js b/tez-ui2/src/main/webapp/app/controllers/vertex/attempts.js new file mode 100644 index 0000000..61a6a63 --- /dev/null +++ b/tez-ui2/src/main/webapp/app/controllers/vertex/attempts.js @@ -0,0 +1,77 @@ +/** + * 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 TablePageController from '../table-page'; +import ColumnDefinition from 'em-table/utils/column-definition'; + +export default TablePageController.extend({ + breadcrumbs: [{ + text: "Task Attempts", + routeName: "vertex.attempts", + }], + + columns: ColumnDefinition.make([{ + id: 'index', + headerTitle: 'Attempt No', + contentPath: 'index' + },{ + id: 'taskIndex', + headerTitle: 'Task Index', + contentPath: 'taskIndex' + },{ + id: 'status', + headerTitle: 'Status', + contentPath: 'status', + cellComponentName: 'em-table-status-cell' + },{ + id: 'progress', + headerTitle: 'Progress', + contentPath: 'progress', + cellComponentName: 'em-table-progress-cell', + observePath: true + },{ + id: 'startTime', + headerTitle: 'Start Time', + contentPath: 'startTime', + cellDefinition: { + type: 'date' + } + },{ + id: 'endTime', + headerTitle: 'End Time', + contentPath: 'endTime', + cellDefinition: { + type: 'date' + } + },{ + id: 'duration', + headerTitle: 'Duration', + contentPath: 'duration', + cellDefinition: { + type: 'duration' + } + },{ + id: 'containerID', + headerTitle: 'Container', + contentPath: 'containerID' + },{ + id: 'nodeID', + headerTitle: 'Node', + contentPath: 'nodeID' + }]) +}); http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/app/controllers/vertex/index.js ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/app/controllers/vertex/index.js b/tez-ui2/src/main/webapp/app/controllers/vertex/index.js new file mode 100644 index 0000000..9745328 --- /dev/null +++ b/tez-ui2/src/main/webapp/app/controllers/vertex/index.js @@ -0,0 +1,22 @@ +/** + * 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 PageController from '../page'; + +export default PageController.extend({ +}); http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/app/controllers/vertex/tasks.js ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/app/controllers/vertex/tasks.js b/tez-ui2/src/main/webapp/app/controllers/vertex/tasks.js new file mode 100644 index 0000000..ce67150 --- /dev/null +++ b/tez-ui2/src/main/webapp/app/controllers/vertex/tasks.js @@ -0,0 +1,65 @@ +/** + * 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 TablePageController from '../table-page'; +import ColumnDefinition from 'em-table/utils/column-definition'; + +export default TablePageController.extend({ + breadcrumbs: [{ + text: "Tasks", + routeName: "vertex.tasks", + }], + + columns: ColumnDefinition.make([{ + id: 'index', + headerTitle: 'Task Index', + contentPath: 'index' + },{ + id: 'status', + headerTitle: 'Status', + contentPath: 'status', + cellComponentName: 'em-table-status-cell' + },{ + id: 'progress', + headerTitle: 'Progress', + contentPath: 'progress', + cellComponentName: 'em-table-progress-cell', + observePath: true + },{ + id: 'startTime', + headerTitle: 'Start Time', + contentPath: 'startTime', + cellDefinition: { + type: 'date' + } + },{ + id: 'endTime', + headerTitle: 'End Time', + contentPath: 'endTime', + cellDefinition: { + type: 'date' + } + },{ + id: 'duration', + headerTitle: 'Duration', + contentPath: 'duration', + cellDefinition: { + type: 'duration' + } + }]) +}); http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/app/models/vertex.js ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/app/models/vertex.js b/tez-ui2/src/main/webapp/app/models/vertex.js index dcdb0f2..4192771 100644 --- a/tez-ui2/src/main/webapp/app/models/vertex.js +++ b/tez-ui2/src/main/webapp/app/models/vertex.js @@ -38,13 +38,22 @@ import TimelineModel from './timeline'; */ export default TimelineModel.extend({ + needs: { + dag: { + type: "dag", + idKey: "dagID", + silent: true + } + }, + name: DS.attr('string'), firstTaskStartTime: DS.attr('number'), + lastTaskFinishTime: DS.attr('number'), - numTasks: DS.attr('number'), + totalTasks: DS.attr('number'), failedTasks: DS.attr('number'), - sucessfulTasks: DS.attr('number'), + successfulTasks: DS.attr('number'), killedTasks: DS.attr('number'), runningTasks: Ember.computed("status", function () { @@ -57,5 +66,12 @@ export default TimelineModel.extend({ failedTaskAttempts: DS.attr('number'), killedTaskAttempts: DS.attr('number'), + minDuration: DS.attr('number'), + maxDuration: DS.attr('number'), + avgDuration: DS.attr('number'), + processorClassName: DS.attr('string'), + + dagID: DS.attr('string'), + dag: DS.attr('object'), // Auto-loaded by need }); http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/app/router.js ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/app/router.js b/tez-ui2/src/main/webapp/app/router.js index d94a837..e80c817 100644 --- a/tez-ui2/src/main/webapp/app/router.js +++ b/tez-ui2/src/main/webapp/app/router.js @@ -31,6 +31,10 @@ Router.map(function() { this.route('attempts'); }); this.route('app', {path: '/app/:app_id'}); + this.route('vertex', {path: '/vertex/:vertex_id'}, function() { + this.route('tasks'); + this.route('attempts'); + }); }); export default Router; http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/app/routes/dag/attempts.js ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/app/routes/dag/attempts.js b/tez-ui2/src/main/webapp/app/routes/dag/attempts.js index 3a05867..f438b95 100644 --- a/tez-ui2/src/main/webapp/app/routes/dag/attempts.js +++ b/tez-ui2/src/main/webapp/app/routes/dag/attempts.js @@ -20,7 +20,7 @@ import Ember from 'ember'; import AbstractRoute from '../abstract'; export default AbstractRoute.extend({ - title: "All Attempts", + title: "All Task Attempts", setupController: function (controller, model) { this._super(controller, model); http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/app/routes/vertex.js ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/app/routes/vertex.js b/tez-ui2/src/main/webapp/app/routes/vertex.js new file mode 100644 index 0000000..2a38001 --- /dev/null +++ b/tez-ui2/src/main/webapp/app/routes/vertex.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 AbstractRoute from './abstract'; + +export default AbstractRoute.extend({ + title: "Vertex", + + loaderQueryParams: { + id: "vertex_id" + }, + + model: function (params) { + return this.get("loader").queryRecord('vertex', this.queryFromParams(params).id); + } +}); http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/app/routes/vertex/attempts.js ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/app/routes/vertex/attempts.js b/tez-ui2/src/main/webapp/app/routes/vertex/attempts.js new file mode 100644 index 0000000..cead8a2 --- /dev/null +++ b/tez-ui2/src/main/webapp/app/routes/vertex/attempts.js @@ -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 + * + * 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 Ember from 'ember'; +import AbstractRoute from '../abstract'; + +export default AbstractRoute.extend({ + title: "Task Attempts", + + setupController: function (controller, model) { + this._super(controller, model); + Ember.run.later(this, "startCrumbBubble"); + }, + + load: function (/*value, query*/) { + return this.get("loader").query('attempt', { + vertexID: this.modelFor("vertex").id + }); + } +}); http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/app/routes/vertex/index.js ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/app/routes/vertex/index.js b/tez-ui2/src/main/webapp/app/routes/vertex/index.js new file mode 100644 index 0000000..d05e5f6 --- /dev/null +++ b/tez-ui2/src/main/webapp/app/routes/vertex/index.js @@ -0,0 +1,33 @@ +/** + * 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 Ember from 'ember'; +import AbstractRoute from '../abstract'; + +export default AbstractRoute.extend({ + title: "DAG Details", + + setupController: function (controller, model) { + this._super(controller, model); + Ember.run.later(this, "startCrumbBubble"); + }, + + load: function (/*value, query*/) { + return this.get("loader").queryRecord('vertex', this.modelFor("vertex").id); + }, +}); http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/app/routes/vertex/tasks.js ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/app/routes/vertex/tasks.js b/tez-ui2/src/main/webapp/app/routes/vertex/tasks.js new file mode 100644 index 0000000..e959fef --- /dev/null +++ b/tez-ui2/src/main/webapp/app/routes/vertex/tasks.js @@ -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 + * + * 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 Ember from 'ember'; +import AbstractRoute from '../abstract'; + +export default AbstractRoute.extend({ + title: "All Tasks", + + setupController: function (controller, model) { + this._super(controller, model); + Ember.run.later(this, "startCrumbBubble"); + }, + + load: function (/*value, query*/) { + return this.get("loader").query('task', { + vertexID: this.modelFor("vertex").id + }); + } +}); http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/app/serializers/vertex.js ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/app/serializers/vertex.js b/tez-ui2/src/main/webapp/app/serializers/vertex.js index 88ee5d3..7c36074 100644 --- a/tez-ui2/src/main/webapp/app/serializers/vertex.js +++ b/tez-ui2/src/main/webapp/app/serializers/vertex.js @@ -30,15 +30,22 @@ export default TimelineSerializer.extend({ name: 'otherinfo.vertexName', firstTaskStartTime: 'otherinfo.stats.firstTaskStartTime', + lastTaskFinishTime: 'otherinfo.stats.lastTaskFinishTime', - numTasks: 'otherinfo.numTasks', + totalTasks: 'otherinfo.numTasks', failedTasks: 'otherinfo.numFailedTasks', - sucessfulTasks: 'otherinfo.numSucceededTasks', + successfulTasks: 'otherinfo.numSucceededTasks', killedTasks: 'otherinfo.numKilledTasks', failedTaskAttempts: 'otherinfo.numFailedTaskAttempts', killedTaskAttempts: 'otherinfo.numKilledTaskAttempts', + minDuration: 'otherinfo.stats.minTaskDuration', + maxDuration: 'otherinfo.stats.maxTaskDuration', + avgDuration: 'otherinfo.stats.avgTaskDuration', + processorClassName: getProcessorClass, + + dagID: 'primaryfilters.TEZ_DAG_ID.0', } }); http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/app/styles/page-layout.less ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/app/styles/page-layout.less b/tez-ui2/src/main/webapp/app/styles/page-layout.less index c3530ff..5a49abc 100644 --- a/tez-ui2/src/main/webapp/app/styles/page-layout.less +++ b/tez-ui2/src/main/webapp/app/styles/page-layout.less @@ -124,7 +124,10 @@ body, html { color: @logo-orange; } - .footer, .footer-frame { + .footer-frame { + height: 60px; + } + .footer { height: 40px; } http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/app/templates/dag/index.hbs ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/app/templates/dag/index.hbs b/tez-ui2/src/main/webapp/app/templates/dag/index.hbs index 2811a35..1bd3c21 100644 --- a/tez-ui2/src/main/webapp/app/templates/dag/index.hbs +++ b/tez-ui2/src/main/webapp/app/templates/dag/index.hbs @@ -24,58 +24,51 @@ </tr> </thead> <tbody> - <tr> - <td colspan="2"> - {{bs-button icon="fa fa-download" title="Download data" defaultText="Download data" type="info" clicked="downloadDagJson"}} - </td> - </tr> - <tr> - <td>Application ID</td> - <td> - {{#link-to 'app' model.appID class='ember-table-content'}} - {{model.appID}} - {{/link-to}} - </td> - </tr> - <tr> - <td>ID</td> - <td>{{model.entityID}}</td> - </tr> - <tr> - <td>Submitter</td> - <td>{{model.user}}</td> - </tr> - <tr> - <td>Status</td> - <td> - {{em-table-status-cell content=model.status}} - {{#if progressStr}} {{bs-badge content=progressStr}}{{/if}} - {{#if hasFailedTasks}} - [ <a href='{{unbound failedTasksLink}}'>Failed Tasks</a> ] - {{/if}} - {{#if hasFailedTaskAttempts}} - [ <a href='{{unbound failedTaskAttemptsLink}}'>Failed TaskAttempts</a> ] - {{/if}} - </td> - </tr> - <tr> - <td>Start Time</td> - <td>{{txt model.startTime type="date"}}</td> - </tr> - <tr> - <td>End Time</td> - <td>{{txt model.endTime type="date"}}</td> - </tr> - <tr> - <td>Duration</td> - <td>{{txt model.duration type="duration"}}</td> - </tr> - <tr> - <td>Logs</td> - <td> - {{em-table-linked-cell content=model.containerLogs}} - </td> - </tr> + <tr> + <td colspan="2"> + {{bs-button icon="fa fa-download" title="Download data" defaultText="Download data" type="info" clicked="downloadDagJson"}} + </td> + </tr> + <tr> + <td>Application ID</td> + <td> + {{#link-to 'app' model.appID class='ember-table-content'}} + {{model.appID}} + {{/link-to}} + </td> + </tr> + <tr> + <td>ID</td> + <td>{{model.entityID}}</td> + </tr> + <tr> + <td>Submitter</td> + <td>{{model.user}}</td> + </tr> + <tr> + <td>Status</td> + <td> + {{em-table-status-cell content=model.status}} + </td> + </tr> + <tr> + <td>Start Time</td> + <td>{{txt model.startTime type="date"}}</td> + </tr> + <tr> + <td>End Time</td> + <td>{{txt model.endTime type="date"}}</td> + </tr> + <tr> + <td>Duration</td> + <td>{{txt model.duration type="duration"}}</td> + </tr> + <tr> + <td>Logs</td> + <td> + {{em-table-linked-cell content=model.containerLogs}} + </td> + </tr> </tbody> </table> {{else}} http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/app/templates/vertex.hbs ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/app/templates/vertex.hbs b/tez-ui2/src/main/webapp/app/templates/vertex.hbs new file mode 100644 index 0000000..308b905 --- /dev/null +++ b/tez-ui2/src/main/webapp/app/templates/vertex.hbs @@ -0,0 +1,20 @@ +{{! + * 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. +}} + +{{tab-n-refresh tabs=tabs}} +{{outlet}} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/app/templates/vertex/attempts.hbs ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/app/templates/vertex/attempts.hbs b/tez-ui2/src/main/webapp/app/templates/vertex/attempts.hbs new file mode 100644 index 0000000..cdb28aa --- /dev/null +++ b/tez-ui2/src/main/webapp/app/templates/vertex/attempts.hbs @@ -0,0 +1,33 @@ +{{! + * 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. +}} + +{{#if loaded}} + {{em-table + columns=columns + rows=model + + definition=definition + + searchAction="searchChanged" + sortAction="sortChanged" + rowAction="rowsChanged" + pageAction="pageChanged" + }} +{{else}} + {{partial "partials/loading-anim"}} +{{/if}} http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/app/templates/vertex/index.hbs ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/app/templates/vertex/index.hbs b/tez-ui2/src/main/webapp/app/templates/vertex/index.hbs new file mode 100644 index 0000000..8183842 --- /dev/null +++ b/tez-ui2/src/main/webapp/app/templates/vertex/index.hbs @@ -0,0 +1,130 @@ +{{! + * 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. +}} + +{{#if loaded}} + <table class='detail-list'> + <thead> + <tr> + <th colspan=2>Description</th> + </tr> + </thead> + <tbody> + <tr> + <td>Vertex ID</td> + <td>{{model.entityID}}</td> + </tr> + <tr> + <td>Vertex Name</td> + <td>{{model.name}}</td> + </tr> + <tr> + <td>Processor Class</td> + <td>{{model.processorClassName}}</td> + </tr> + </tbody> + </table> + + <br/> + + <table class='detail-list'> + <thead> + <tr> + <th colspan=2>Details</th> + </tr> + </thead> + <tbody> + <tr> + <td>Status</td> + <td>{{em-table-status-cell content=model.status}}</td> + </tr> + <tr> + <td>Start Time</td> + <td>{{txt model.startTime type="date"}}</td> + </tr> + <tr> + <td>End Time</td> + <td>{{txt model.endTime type="date"}}</td> + </tr> + <tr> + <td>Duration</td> + <td>{{txt model.duration type="duration"}}</td> + </tr> + <tr> + <td>First Task Start Time</td> + <td> + {{txt model.firstTaskStartTime type="date"}} + </td> + </tr> + <tr> + <td>Last Task Finish Time</td> + <td> + {{txt model.lastTaskFinishTime type="date"}} + </td> + </tr> + </tbody> + </table> + + <br/> + + <table class='detail-list'> + <thead> + <tr> + <th colspan=2>Tasks of this Vertex</th> + </tr> + </thead> + <tbody> + <tr> + <td>Total Tasks</td> + <td>{{txt model.totalTasks type="number"}}</td> + </tr> + <tr> + <td>Successful Tasks</td> + <td>{{txt model.successfulTasks type="number"}}</td> + </tr> + <tr> + <td>Failed Tasks</td> + <td>{{txt model.failedTasks type="number"}}</td> + </tr> + <tr> + <td>Killed Tasks</td> + <td>{{txt model.killedTasks type="number"}}</td> + </tr> + <tr> + <td>Average Duration</td> + <td> + {{txt model.avgDuration type="duration"}} + </td> + </tr> + <tr> + <td>Minimum Duration</td> + <td> + {{txt model.minDuration type="duration"}} + </td> + </tr> + <tr> + <td>Maximum Duration</td> + <td> + {{txt model.maxDuration type="duration"}} + </td> + </tr> + </tbody> + </table> + +{{else}} + {{partial "partials/loading-anim"}} +{{/if}} http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/app/templates/vertex/tasks.hbs ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/app/templates/vertex/tasks.hbs b/tez-ui2/src/main/webapp/app/templates/vertex/tasks.hbs new file mode 100644 index 0000000..cdb28aa --- /dev/null +++ b/tez-ui2/src/main/webapp/app/templates/vertex/tasks.hbs @@ -0,0 +1,33 @@ +{{! + * 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. +}} + +{{#if loaded}} + {{em-table + columns=columns + rows=model + + definition=definition + + searchAction="searchChanged" + sortAction="sortChanged" + rowAction="rowsChanged" + pageAction="pageChanged" + }} +{{else}} + {{partial "partials/loading-anim"}} +{{/if}} http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/tests/unit/controllers/vertex-test.js ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/tests/unit/controllers/vertex-test.js b/tez-ui2/src/main/webapp/tests/unit/controllers/vertex-test.js new file mode 100644 index 0000000..0061f74 --- /dev/null +++ b/tez-ui2/src/main/webapp/tests/unit/controllers/vertex-test.js @@ -0,0 +1,36 @@ +/** + * 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 Ember from 'ember'; + +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:vertex', 'Unit | Controller | vertex', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('Basic creation test', function(assert) { + let controller = this.subject({ + send: Ember.K + }); + + assert.ok(controller); + assert.ok(controller.breadcrumbs); + assert.ok(controller.tabs); +}); http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/tests/unit/controllers/vertex/attempts-test.js ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/tests/unit/controllers/vertex/attempts-test.js b/tez-ui2/src/main/webapp/tests/unit/controllers/vertex/attempts-test.js new file mode 100644 index 0000000..933096e --- /dev/null +++ b/tez-ui2/src/main/webapp/tests/unit/controllers/vertex/attempts-test.js @@ -0,0 +1,36 @@ +/** + * 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 Ember from 'ember'; + +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:vertex/attempts', 'Unit | Controller | vertex/attempts', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('Basic creation test', function(assert) { + let controller = this.subject({ + send: Ember.K + }); + + assert.ok(controller); + assert.ok(controller.breadcrumbs); + assert.ok(controller.columns); +}); http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/tests/unit/controllers/vertex/index-test.js ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/tests/unit/controllers/vertex/index-test.js b/tez-ui2/src/main/webapp/tests/unit/controllers/vertex/index-test.js new file mode 100644 index 0000000..e9b46b5 --- /dev/null +++ b/tez-ui2/src/main/webapp/tests/unit/controllers/vertex/index-test.js @@ -0,0 +1,34 @@ +/** + * 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 Ember from 'ember'; + +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:vertex/index', 'Unit | Controller | vertex/index', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('Basic creation test', function(assert) { + let controller = this.subject({ + send: Ember.K + }); + + assert.ok(controller); +}); http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/tests/unit/controllers/vertex/tasks-test.js ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/tests/unit/controllers/vertex/tasks-test.js b/tez-ui2/src/main/webapp/tests/unit/controllers/vertex/tasks-test.js new file mode 100644 index 0000000..a449dc2 --- /dev/null +++ b/tez-ui2/src/main/webapp/tests/unit/controllers/vertex/tasks-test.js @@ -0,0 +1,36 @@ +/** + * 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 Ember from 'ember'; + +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('controller:vertex/tasks', 'Unit | Controller | vertex/tasks', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('Basic creation test', function(assert) { + let controller = this.subject({ + send: Ember.K + }); + + assert.ok(controller); + assert.ok(controller.breadcrumbs); + assert.ok(controller.columns); +}); http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/tests/unit/routes/vertex-test.js ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/tests/unit/routes/vertex-test.js b/tez-ui2/src/main/webapp/tests/unit/routes/vertex-test.js new file mode 100644 index 0000000..79cef72 --- /dev/null +++ b/tez-ui2/src/main/webapp/tests/unit/routes/vertex-test.js @@ -0,0 +1,32 @@ +/** + * 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('route:vertex', 'Unit | Route | vertex', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('Basic creation test', function(assert) { + let route = this.subject(); + + assert.ok(route); + assert.ok(route.loaderQueryParams); + assert.ok(route.model); +}); http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/tests/unit/routes/vertex/attempts-test.js ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/tests/unit/routes/vertex/attempts-test.js b/tez-ui2/src/main/webapp/tests/unit/routes/vertex/attempts-test.js new file mode 100644 index 0000000..9ba3cf0 --- /dev/null +++ b/tez-ui2/src/main/webapp/tests/unit/routes/vertex/attempts-test.js @@ -0,0 +1,45 @@ +/** + * 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('route:vertex/attempts', 'Unit | Route | vertex/attempts', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('Basic creation test', function(assert) { + let route = this.subject(); + + assert.ok(route); + assert.ok(route.title); + assert.ok(route.setupController); + assert.ok(route.load); +}); + +test('setupController test', function(assert) { + assert.expect(1); + + let route = this.subject({ + startCrumbBubble: function () { + assert.ok(true); + } + }); + + route.setupController({}, {}); +}); http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/tests/unit/routes/vertex/index-test.js ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/tests/unit/routes/vertex/index-test.js b/tez-ui2/src/main/webapp/tests/unit/routes/vertex/index-test.js new file mode 100644 index 0000000..cc7e9de --- /dev/null +++ b/tez-ui2/src/main/webapp/tests/unit/routes/vertex/index-test.js @@ -0,0 +1,45 @@ +/** + * 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('route:vertex/index', 'Unit | Route | vertex/index', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('Basic creation test', function(assert) { + let route = this.subject(); + + assert.ok(route); + assert.ok(route.title); + assert.ok(route.setupController); + assert.ok(route.load); +}); + +test('setupController test', function(assert) { + assert.expect(1); + + let route = this.subject({ + startCrumbBubble: function () { + assert.ok(true); + } + }); + + route.setupController({}, {}); +}); http://git-wip-us.apache.org/repos/asf/tez/blob/68dc2f5d/tez-ui2/src/main/webapp/tests/unit/routes/vertex/tasks-test.js ---------------------------------------------------------------------- diff --git a/tez-ui2/src/main/webapp/tests/unit/routes/vertex/tasks-test.js b/tez-ui2/src/main/webapp/tests/unit/routes/vertex/tasks-test.js new file mode 100644 index 0000000..e70434f --- /dev/null +++ b/tez-ui2/src/main/webapp/tests/unit/routes/vertex/tasks-test.js @@ -0,0 +1,45 @@ +/** + * 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('route:vertex/tasks', 'Unit | Route | vertex/tasks', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('Basic creation test', function(assert) { + let route = this.subject(); + + assert.ok(route); + assert.ok(route.title); + assert.ok(route.setupController); + assert.ok(route.load); +}); + +test('setupController test', function(assert) { + assert.expect(1); + + let route = this.subject({ + startCrumbBubble: function () { + assert.ok(true); + } + }); + + route.setupController({}, {}); +});