You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by al...@apache.org on 2015/03/25 19:38:38 UTC

ambari git commit: AMBARI-10208. Service Graphs resize upon changing time range (alexantonenko)

Repository: ambari
Updated Branches:
  refs/heads/trunk 271660a6d -> 907166990


AMBARI-10208. Service Graphs resize upon changing time range (alexantonenko)


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

Branch: refs/heads/trunk
Commit: 907166990a87469f89fc9d3e0508dc2ad4b0ff9d
Parents: 271660a
Author: Alex Antonenko <hi...@gmail.com>
Authored: Wed Mar 25 19:37:53 2015 +0200
Committer: Alex Antonenko <hi...@gmail.com>
Committed: Wed Mar 25 20:38:35 2015 +0200

----------------------------------------------------------------------
 .../app/views/main/service/info/summary.js      |   8 +-
 .../views/main/service/info/summary_test.js     | 207 ++++++++++++++++++-
 2 files changed, 212 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/90716699/ambari-web/app/views/main/service/info/summary.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/summary.js b/ambari-web/app/views/main/service/info/summary.js
index c545b2a..f3fe1f5 100644
--- a/ambari-web/app/views/main/service/info/summary.js
+++ b/ambari-web/app/views/main/service/info/summary.js
@@ -22,6 +22,10 @@ require('data/service_graph_config');
 
 App.MainServiceInfoSummaryView = Em.View.extend(App.UserPref, {
   templateName: require('templates/main/service/info/summary'),
+  /**
+   * @property {Number} chunkSize - number of columns in Metrics section
+   */
+  chunkSize: 5,
   attributes:null,
 
   /**
@@ -301,7 +305,7 @@ App.MainServiceInfoSummaryView = Em.View.extend(App.UserPref, {
    * (will only display rows with 5 items)
    */
   constructGraphObjects: function(graphNames) {
-    var result = [], graphObjects = [], chunkSize = 5;
+    var result = [], graphObjects = [], chunkSize = this.get('chunkSize');
     var self = this;
 
     if (!graphNames) {
@@ -391,7 +395,7 @@ App.MainServiceInfoSummaryView = Em.View.extend(App.UserPref, {
       self.set('currentTimeRangeIndex', event.context.index);
       var svcName = self.get('service.serviceName');
       if (svcName) {
-        var result = [], graphObjects = [], chunkSize = 2;
+        var result = [], graphObjects = [], chunkSize = this.get('chunkSize');
         App.service_graph_config[svcName.toLowerCase()].forEach(function(graphName) {
           graphObjects.push(App["ChartServiceMetrics" + graphName].extend({
             currentTimeIndex : event.context.index

http://git-wip-us.apache.org/repos/asf/ambari/blob/90716699/ambari-web/test/views/main/service/info/summary_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/main/service/info/summary_test.js b/ambari-web/test/views/main/service/info/summary_test.js
index 58f7fde..97ff3c9 100644
--- a/ambari-web/test/views/main/service/info/summary_test.js
+++ b/ambari-web/test/views/main/service/info/summary_test.js
@@ -36,7 +36,7 @@ describe('App.MainServiceInfoSummaryView', function() {
   });
 
   describe('#servers', function () {
-    it('services shuldn\'t have servers except FLUME and ZOOKEEPER', function () {
+    it('services shouldn\'t have servers except FLUME and ZOOKEEPER', function () {
       expect(view.get('servers')).to.be.empty;
     });
 
@@ -180,4 +180,209 @@ describe('App.MainServiceInfoSummaryView', function() {
     });
 
   });
+
+  describe('#setTimeRange', function () {
+
+    var cases = [
+      {
+        currentTimeRangeIndex: 0,
+        isServiceMetricLoaded: false,
+        graphIds: [],
+        title: 'no event passed'
+      },
+      {
+        event: {},
+        currentTimeRangeIndex: 0,
+        isServiceMetricLoaded: false,
+        graphIds: [],
+        title: 'no event context passed'
+      },
+      {
+        event: {
+          context: {
+            index: 1
+          }
+        },
+        currentTimeRangeIndex: 1,
+        isServiceMetricLoaded: false,
+        graphIds: [],
+        title: 'no service name set'
+      },
+      {
+        event: {
+          context: {
+            index: 2
+          }
+        },
+        serviceName: 'HDFS',
+        currentTimeRangeIndex: 2,
+        isServiceMetricLoaded: true,
+        graphIds: [
+          [
+            'service-metrics-hdfs-space-utilization', 'service-metrics-hdfs-file-operations',
+            'service-metrics-hdfs-block-status', 'service-metrics-hdfs-io', 'service-metrics-hdfs-rpc'
+          ],
+          [
+            'service-metrics-hdfs-gc', 'service-metrics-hdfs-jvm-heap', 'service-metrics-hdfs-jvm-threads'
+          ]
+        ]
+      },
+      {
+        event: {
+          context: {
+            index: 3
+          }
+        },
+        serviceName: 'YARN',
+        currentTimeRangeIndex: 3,
+        isServiceMetricLoaded: true,
+        graphIds: [
+          [
+            'service-metrics-yarn-queue-allocated', 'service-metrics-yarn-queue-memory-resource',
+            'service-metrics-yarn-queue-allocated-container', 'service-metrics-yarn-node-manager-statuses',
+            'service-metrics-yarn-apps-current-states'
+          ],
+          [
+            'service-metrics-yarn-apps-finished-states', 'service-metrics-yarn-rpc', 'service-metrics-yarn-gc',
+            'service-metrics-yarn-jvm-threads', 'service-metrics-yarn-jvm-heap'
+          ]
+        ]
+      },
+      {
+        event: {
+          context: {
+            index: 4
+          }
+        },
+        serviceName: 'HBASE',
+        currentTimeRangeIndex: 4,
+        isServiceMetricLoaded: true,
+        graphIds: [
+          [
+            'service-metrics-hbase-cluster-requests', 'service-metrics-hbase-regionserver-rw-requests',
+            'service-metrics-hbase-regionserver-regions', 'service-metrics-hbase-regionserver-queuesize',
+            'service-metrics-hbase-hlog-split-time'
+          ],
+          [
+            'service-metrics-hbase-hlog-split-size'
+          ]
+        ]
+      },
+      {
+        event: {
+          context: {
+            index: 5
+          }
+        },
+        serviceName: 'AMBARI_METRICS',
+        currentTimeRangeIndex: 5,
+        isServiceMetricLoaded: true,
+        graphIds: [
+          [
+            'service-metrics-ambari-metrics-master-average-load',
+            'service-metrics-ambari-metrics-region-server-store-files',
+            'service-metrics-ambari-metrics-region-server-regions',
+            'service-metrics-ambari-metrics-region-server-requests',
+            'service-metrics-ambari-metrics-region-server-block-cache-hit-percent'
+          ],
+          [
+            'service-metrics-ambari-metrics-region-server-compaction-queue-size'
+          ]
+        ]
+      },
+      {
+        event: {
+          context: {
+            index: 6
+          }
+        },
+        serviceName: 'FLUME',
+        currentTimeRangeIndex: 6,
+        isServiceMetricLoaded: true,
+        graphIds: [
+          [
+            'service-metrics-flume-channel-size-mma', 'service-metrics-flume-channel-size-sum',
+            'service-metrics-flume-incoming_mma', 'service-metrics-flume-incoming_sum',
+            'service-metrics-flume-outgoing_mma'
+          ],
+          [
+            'service-metrics-flume-outgoing_sum'
+          ]
+        ]
+      },
+      {
+        event: {
+          context: {
+            index: 7
+          }
+        },
+        serviceName: 'STORM',
+        currentTimeRangeIndex: 7,
+        isServiceMetricLoaded: true,
+        graphIds: [
+          [
+            'service-metrics-storm-supervisor-allocated', 'service-metrics-storm-executors',
+            'service-metrics-storm-topologies', 'service-metrics-storm-tasks'
+          ]
+        ]
+      },
+      {
+        event: {
+          context: {
+            index: 8
+          }
+        },
+        serviceName: 'KAFKA',
+        chunkSize: 4,
+        currentTimeRangeIndex: 8,
+        isServiceMetricLoaded: true,
+        graphIds: [
+          [
+            'service-metrics-kafka-broker-topic-metrics', 'service-metrics-kafka-controller-metrics',
+            'service-metrics-kafka-controler-status-metrics', 'service-metrics-kafka-replica-manager-metrics'
+          ],
+          [
+            'service-metrics-kafka-log-metrics', 'service-metrics-kafka-replica-fetcher-metrics'
+          ]
+        ]
+      }
+    ];
+
+    beforeEach(function () {
+      sinon.stub(view, 'postUserPref', Em.K);
+      view.setProperties({
+        chunkSize: 5,
+        currentTimeRangeIndex: 0,
+        isServiceMetricLoaded: false,
+        serviceMetricGraphs: []
+      });
+    });
+
+    afterEach(function () {
+      view.postUserPref.restore();
+    });
+
+    cases.forEach(function (item) {
+      it(item.serviceName || item.title, function () {
+        view.set('chunkSize', Em.isNone(item.chunkSize) ? 5 : item.chunkSize);
+        view.set('service.serviceName', item.serviceName);
+        view.setTimeRange(item.event);
+        var graphIndices = [],
+          graphIds = view.get('serviceMetricGraphs').map(function (graphs) {
+          return graphs.map(function (graph) {
+            var graphView = graph.create();
+            graphIndices.push(graphView.get('currentTimeIndex'));
+            return graphView.get('id');
+          });
+        });
+        expect(view.get('currentTimeRangeIndex')).to.equal(item.currentTimeRangeIndex);
+        expect(view.get('isServiceMetricLoaded')).to.equal(item.isServiceMetricLoaded);
+        if (item.event && item.event.context && item.serviceName) {
+          expect(graphIndices.uniq()).to.eql([item.currentTimeRangeIndex]);
+        }
+        expect(graphIds).to.eql(item.graphIds);
+      });
+    });
+
+  });
 });
\ No newline at end of file