You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by at...@apache.org on 2019/01/08 15:23:36 UTC

[ambari] branch trunk updated: AMBARI-25091 Cover flume metric graphs with unit tests

This is an automated email from the ASF dual-hosted git repository.

atkach pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 313178d  AMBARI-25091 Cover flume metric graphs with unit tests
313178d is described below

commit 313178dc562cb8c2fc341b788a6da50b4274a869
Author: Andrii Tkach <at...@apache.org>
AuthorDate: Tue Jan 8 13:32:52 2019 +0200

    AMBARI-25091 Cover flume metric graphs with unit tests
---
 ambari-web/app/assets/test/tests.js                |   2 +
 .../info/metrics/flume/flume_metric_graphs.js      |   6 +-
 .../info/metrics/flume/flume_metric_graph_test.js  |  77 +++++++++++++++
 .../info/metrics/flume/flume_metric_graphs_test.js | 103 +++++++++++++++++++++
 4 files changed, 185 insertions(+), 3 deletions(-)

diff --git a/ambari-web/app/assets/test/tests.js b/ambari-web/app/assets/test/tests.js
index 3fe472b..4fa752c 100644
--- a/ambari-web/app/assets/test/tests.js
+++ b/ambari-web/app/assets/test/tests.js
@@ -388,6 +388,8 @@ var files = [
   'test/views/main/service/info/component_list_view_test',
   'test/views/main/service/info/metrics/ambari_metrics/regionserver_base_test',
   'test/views/main/service/info/metrics/flume/flume_agent_metrics_section_test',
+  'test/views/main/service/info/metrics/flume/flume_metric_graph_test',
+  'test/views/main/service/info/metrics/flume/flume_metric_graphs_test',
   'test/views/main/service/info/summary/hdfs/slaves_test',
   'test/views/main/service/services/hdfs_test',
   'test/views/main/service/services/hbase_test',
diff --git a/ambari-web/app/views/main/service/info/metrics/flume/flume_metric_graphs.js b/ambari-web/app/views/main/service/info/metrics/flume/flume_metric_graphs.js
index 415d423..0682b32 100644
--- a/ambari-web/app/views/main/service/info/metrics/flume/flume_metric_graphs.js
+++ b/ambari-web/app/views/main/service/info/metrics/flume/flume_metric_graphs.js
@@ -23,12 +23,11 @@ App.MainServiceInfoFlumeGraphsView = App.MainServiceInfoSummaryMetricGraphsView.
   serviceMetricGraphs: [],
 
   loadMetrics: function () {
-    var graphRows = [];
     var viewData = this.get('viewData');
     if (viewData != null) {
       var metricType = viewData.metricType;
       var hostName = viewData.agent.get('hostName');
-      App.ajax.send({
+      return App.ajax.send({
         'name': 'host.host_component.flume.metrics',
         'sender': this,
         'success': 'onLoadMetricsSuccess',
@@ -37,8 +36,9 @@ App.MainServiceInfoFlumeGraphsView = App.MainServiceInfoSummaryMetricGraphsView.
           flumeComponent: metricType
         }
       });
+    } else {
+      return $.Deferred().reject().promise();
     }
-    return graphRows;
   }.observes('viewData', 'metricType'),
 
   onLoadMetricsSuccess: function (data) {
diff --git a/ambari-web/test/views/main/service/info/metrics/flume/flume_metric_graph_test.js b/ambari-web/test/views/main/service/info/metrics/flume/flume_metric_graph_test.js
new file mode 100644
index 0000000..e998fbc
--- /dev/null
+++ b/ambari-web/test/views/main/service/info/metrics/flume/flume_metric_graph_test.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.
+ */
+
+var App = require('app');
+require('views/main/service/info/metrics/flume/flume_metric_graph');
+
+describe('App.ChartServiceFlumeMetricGraph', function () {
+
+  var view;
+
+  beforeEach(function () {
+    view = App.ChartServiceFlumeMetricGraph.create();
+  });
+  
+  describe('#getDataForAjaxRequest', function() {
+   
+    it('should return url', function() {
+      view.setProperties({
+        metricItems: ['metric1'],
+        metricType: 'type1',
+        metricName: 'name1',
+        customStartTime: 1000,
+        customEndTime: 10000,
+        currentTimeIndex: 8,
+        hostName: 'host1'
+      });
+      
+      expect(view.getDataForAjaxRequest().url).to.be.equal(
+        '/api/v1/clusters/c1/hosts/host1/host_components/FLUME_HANDLER?fields=metrics/flume/flume/type1/metric1/name1[1,10,15]'
+      );
+    });
+  });
+  
+  describe('#getData', function() {
+    
+    it('should extract data from json', function() {
+      view.setProperties({
+        metricType: 'type1',
+        metricName: 'name1'
+      });
+      var json = {
+        metrics: {
+          flume: {
+            flume: {
+              type1: {
+                'C1': {
+                  'name1': {data: 'data'}
+                }
+              }
+            }
+          }
+        }
+      };
+  
+      expect(view.getData(json)).to.be.eql([{
+        name: 'C1',
+        data: {data: 'data'}
+      }]);
+    });
+  });
+
+});
diff --git a/ambari-web/test/views/main/service/info/metrics/flume/flume_metric_graphs_test.js b/ambari-web/test/views/main/service/info/metrics/flume/flume_metric_graphs_test.js
new file mode 100644
index 0000000..a671cec
--- /dev/null
+++ b/ambari-web/test/views/main/service/info/metrics/flume/flume_metric_graphs_test.js
@@ -0,0 +1,103 @@
+/**
+ * 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.
+ */
+
+var App = require('app');
+require('views/main/service/info/metrics/flume/flume_metric_graphs');
+var testHelpers = require('test/helpers');
+
+describe('App.MainServiceInfoFlumeGraphsView', function () {
+
+  var view;
+
+  beforeEach(function () {
+    view = App.MainServiceInfoFlumeGraphsView.create();
+  });
+  
+  describe('#loadMetrics', function() {
+    
+    it('App.ajax.send should be called', function() {
+      view.set('viewData', {
+        metricType: 'type1',
+        agent: Em.Object.create({
+          hostName: 'host1'
+        })
+      });
+      view.loadMetrics();
+      var ajax = testHelpers.findAjaxRequest('name', 'host.host_component.flume.metrics')[0];
+      expect(ajax.data).to.be.eql({
+        hostName: 'host1',
+        flumeComponent: 'type1'
+      });
+    });
+  });
+  
+  describe('#didInsertElement', function() {
+    beforeEach(function() {
+      sinon.stub(view, 'loadMetrics');
+    });
+    afterEach(function() {
+      view.loadMetrics.restore();
+    });
+    
+    it('loadMetrics should be called', function() {
+      view.didInsertElement();
+      expect(view.loadMetrics.calledOnce).to.be.true;
+    });
+  });
+  
+  describe('#onLoadMetricsSuccess', function() {
+    beforeEach(function() {
+      sinon.stub(App.ChartServiceFlumeMetricGraph, 'extend', function(object) {
+        return Em.Object.create(object);
+      });
+    });
+    afterEach(function() {
+      App.ChartServiceFlumeMetricGraph.extend.restore();
+    });
+    
+    it('should add metrics to serviceMetricGraphs', function() {
+      view.set('viewData', {
+        metricType: 'type1',
+        agent: Em.Object.create({
+          hostName: 'host1'
+        })
+      });
+      var data = {
+        metrics: {
+          flume: {
+            flume: {
+              type1: {
+                name1: {
+                  metric1: {}
+                }
+              }
+            }
+          }
+        }
+      };
+      view.onLoadMetricsSuccess(data);
+      expect(view.get('serviceMetricGraphs')[0][0]).to.be.eql(Em.Object.create({
+        metricType: 'type1',
+        metricName: 'metric1',
+        hostName: 'host1',
+        metricItems: ['name1']
+      }));
+    });
+  });
+
+});