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