Repository: tez Updated Branches: refs/heads/master c5ad13ed5 -> af0a3f775
TEZ-3255. Tez UI: Hide swimlane while displaying running DAGs from old versions of Tez (sree) Project: http://git-wip-us.apache.org/repos/asf/tez/repo Commit: http://git-wip-us.apache.org/repos/asf/tez/commit/af0a3f77 Tree: http://git-wip-us.apache.org/repos/asf/tez/tree/af0a3f77 Diff: http://git-wip-us.apache.org/repos/asf/tez/diff/af0a3f77 Branch: refs/heads/master Commit: af0a3f775439dea1306caae3640019a6ae7b2733 Parents: c5ad13e Author: Sreenath Somarajapuram <[email protected]> Authored: Tue May 17 17:33:01 2016 +0530 Committer: Sreenath Somarajapuram <[email protected]> Committed: Tue May 17 17:33:01 2016 +0530 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../main/webapp/app/controllers/dag/swimlane.js | 22 ++++++++++ .../main/webapp/app/templates/dag/swimlane.hbs | 41 ++++++++++--------- .../tests/unit/controllers/dag/swimlane-test.js | 42 ++++++++++++++++++++ 4 files changed, 88 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tez/blob/af0a3f77/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 04cada7..7b34f19 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -30,6 +30,7 @@ ALL CHANGES: TEZ-3233. Tez UI: Have LLAP information reflect in Tez UI TEZ-3086. Tez UI: Backward compatibility changes TEZ-3254. Tez UI: Consider downloading Hive/Pig explain plans + TEZ-3255. Tez UI: Hide swimlane while displaying running DAGs from old versions of Tez Release 0.8.4: Unreleased http://git-wip-us.apache.org/repos/asf/tez/blob/af0a3f77/tez-ui/src/main/webapp/app/controllers/dag/swimlane.js ---------------------------------------------------------------------- diff --git a/tez-ui/src/main/webapp/app/controllers/dag/swimlane.js b/tez-ui/src/main/webapp/app/controllers/dag/swimlane.js index 259d72f..68f1410 100644 --- a/tez-ui/src/main/webapp/app/controllers/dag/swimlane.js +++ b/tez-ui/src/main/webapp/app/controllers/dag/swimlane.js @@ -101,6 +101,28 @@ export default MultiTableController.extend({ contentPath: 'processorClassName', }]), + dataAvailable: Ember.computed("model.firstObject.dag.amWsVersion", + "model.firstObject.dag.isComplete", + "model.firstObject.am.initTime", function () { + var vertex = this.get("model.firstObject"), + dag = this.get("model.firstObject.dag"), + dataAvailable = true; + + if(vertex && dag && !dag.get("isComplete")) { + let amWsVersion = dag.get("amWsVersion"); + // amWsVersion = undefined or 1 + if(!amWsVersion || amWsVersion === 1) { + dataAvailable = false; + } + // amWsVersion >= 2, but without event/time data + if(vertex.get("am") && !vertex.get("am.initTime")) { + dataAvailable = false; + } + } + + return dataAvailable; + }), + processes: Ember.computed("model", function () { var processes = [], processHash = {}, http://git-wip-us.apache.org/repos/asf/tez/blob/af0a3f77/tez-ui/src/main/webapp/app/templates/dag/swimlane.hbs ---------------------------------------------------------------------- diff --git a/tez-ui/src/main/webapp/app/templates/dag/swimlane.hbs b/tez-ui/src/main/webapp/app/templates/dag/swimlane.hbs index 7c50e81..dbbe23fc 100644 --- a/tez-ui/src/main/webapp/app/templates/dag/swimlane.hbs +++ b/tez-ui/src/main/webapp/app/templates/dag/swimlane.hbs @@ -17,26 +17,31 @@ }} {{#if loaded}} - <div class="swimlane-page"> - <div class="button-panel"> - <div class="zoom-range"> - {{zoom}}% - {{input type="range" value=zoom min=100 max=1000}} + {{#if dataAvailable}} + <div class="swimlane-page"> + <div class="button-panel"> + <div class="zoom-range"> + {{zoom}}% + {{input type="range" value=zoom min=100 max=1000}} + </div> + <i class='fa fa-cog fa-border' {{action 'openColumnSelector'}} title="Customize vertex tooltip"></i> + <i class='fa fa-expand fa-border' {{action 'toggleFullscreen'}} title="Toggle fullscreen"></i> + <i class='fa fa-compress fa-border' {{action 'toggleFullscreen'}} title="Toggle fullscreen"></i> </div> - <i class='fa fa-cog fa-border' {{action 'openColumnSelector'}} title="Customize vertex tooltip"></i> - <i class='fa fa-expand fa-border' {{action 'toggleFullscreen'}} title="Toggle fullscreen"></i> - <i class='fa fa-compress fa-border' {{action 'toggleFullscreen'}} title="Toggle fullscreen"></i> - </div> - {{em-swimlane - columns=visibleColumns - processes=processes - nameComponent="em-swimlane-vertex-name" - zoom=zoom - click="click" - consolidate=true - }} - </div> + {{em-swimlane + columns=visibleColumns + processes=processes + nameComponent="em-swimlane-vertex-name" + zoom=zoom + click="click" + consolidate=true + }} + </div> + {{else}} + <h2>Data not available to display swimlane for a running DAG!</h2> + <h4>You might be using an older version of Tez. Please get back after DAG completion.</h4> + {{/if}} {{else}} {{partial "loading"}} {{/if}} http://git-wip-us.apache.org/repos/asf/tez/blob/af0a3f77/tez-ui/src/main/webapp/tests/unit/controllers/dag/swimlane-test.js ---------------------------------------------------------------------- diff --git a/tez-ui/src/main/webapp/tests/unit/controllers/dag/swimlane-test.js b/tez-ui/src/main/webapp/tests/unit/controllers/dag/swimlane-test.js index 7509dee..48c96a2 100644 --- a/tez-ui/src/main/webapp/tests/unit/controllers/dag/swimlane-test.js +++ b/tez-ui/src/main/webapp/tests/unit/controllers/dag/swimlane-test.js @@ -41,6 +41,8 @@ test('Basic creation test', function(assert) { assert.ok(controller.columns); assert.ok(controller.processes); + assert.ok(controller.dataAvailable); + assert.ok(controller.actions.toggleFullscreen); assert.ok(controller.actions.click); }); @@ -87,3 +89,43 @@ test('Processes test', function(assert) { assert.equal(processes[2].blockers[1].vertex, vertices[1]); assert.equal(processes[3].blockers[0].vertex, vertices[2]); }); + +test('dataAvailable test', function(assert) { + let controller = this.subject({ + send: Ember.K, + beforeSort: {bind: Ember.K}, + initVisibleColumns: Ember.K, + getCounterColumns: function () { + return []; + } + }), + dag = Ember.Object.create(), + vertex = Ember.Object.create({ + dag: dag + }); + + assert.equal(controller.get("dataAvailable"), true, "No DAG or vertex"); + + controller.set("model", Ember.Object.create({ + firstObject: vertex + })); + assert.equal(controller.get("dataAvailable"), false, "With vertex & dag but no amWsVersion"); + + dag.set("isComplete", true); + assert.equal(controller.get("dataAvailable"), true, "Complete DAG"); + dag.set("isComplete", false); + + dag.set("amWsVersion", 1); + assert.equal(controller.get("dataAvailable"), false, "With vertex & dag but amWsVersion=1"); + + dag.set("amWsVersion", 2); + assert.equal(controller.get("dataAvailable"), true, "With vertex & dag but amWsVersion=2"); + + vertex.set("am", {}); + assert.equal(controller.get("dataAvailable"), false, "am loaded without event time data"); + + vertex.set("am", { + initTime: Date.now() + }); + assert.equal(controller.get("dataAvailable"), true, "am loaded with event time data"); +});
