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 <atk...@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'] + })); + }); + }); + +});