You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by nc...@apache.org on 2015/11/04 14:37:07 UTC
[40/50] [abbrv] ambari git commit: AMBARI-13699. Exported metrics
have values in different units than widgets
AMBARI-13699. Exported metrics have values in different units than widgets
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/3cb80cfc
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/3cb80cfc
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/3cb80cfc
Branch: refs/heads/branch-dev-patch-upgrade
Commit: 3cb80cfc16365861596e3fd3b9a94d6774db9f50
Parents: 8aba9a4
Author: Alex Antonenko <hi...@gmail.com>
Authored: Tue Nov 3 17:43:36 2015 +0200
Committer: Alex Antonenko <hi...@gmail.com>
Committed: Tue Nov 3 19:19:41 2015 +0200
----------------------------------------------------------------------
.../common/widgets/export_metrics_mixin.js | 26 +++++--
.../app/views/common/chart/linear_time.js | 25 +++++-
.../views/common/widget/graph_widget_view.js | 14 ++--
.../views/main/dashboard/cluster_metrics/cpu.js | 2 +-
.../main/dashboard/cluster_metrics/memory.js | 2 +-
.../main/dashboard/cluster_metrics/network.js | 2 +-
ambari-web/app/views/main/host/metrics/cpu.js | 2 +-
ambari-web/app/views/main/host/metrics/disk.js | 2 +-
.../app/views/main/host/metrics/memory.js | 2 +-
.../app/views/main/host/metrics/network.js | 2 +-
.../regionserver_block_cache_hit_percent.js | 2 +-
.../info/metrics/flume/channel_fill_pct.js | 2 +-
.../info/metrics/flume/channel_size_mma.js | 3 +-
.../service/info/metrics/flume/channel_sum.js | 2 +-
.../main/service/info/metrics/flume/cpu_user.js | 2 +-
.../info/metrics/flume/flume_incoming_mma.js | 3 +-
.../info/metrics/flume/flume_outgoing_mma.js | 3 +-
.../views/main/service/info/metrics/flume/gc.js | 2 +-
.../main/service/info/metrics/flume/jvm_heap.js | 2 +-
.../common/widgets/export_metrics_mixin_test.js | 80 ++++++++++++++++++--
.../test/views/common/chart/linear_time_test.js | 54 +++++++++++++
.../common/widget/graph_widget_view_test.js | 22 ++++++
22 files changed, 217 insertions(+), 39 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb80cfc/ambari-web/app/mixins/common/widgets/export_metrics_mixin.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mixins/common/widgets/export_metrics_mixin.js b/ambari-web/app/mixins/common/widgets/export_metrics_mixin.js
index 84a2194..2ecb045 100644
--- a/ambari-web/app/mixins/common/widgets/export_metrics_mixin.js
+++ b/ambari-web/app/mixins/common/widgets/export_metrics_mixin.js
@@ -70,7 +70,7 @@ App.ExportMetricsMixin = Em.Mixin.create({
} else {
var fileType = params.isCSV ? 'csv' : 'json',
fileName = 'data.' + fileType,
- data = params.isCSV ? this.prepareCSV(seriesData) : JSON.stringify(seriesData, null, 4);
+ data = params.isCSV ? this.prepareCSV(seriesData) : JSON.stringify(seriesData, this.jsonReplacer(), 4);
fileUtils.downloadTextFile(data, fileType, fileName);
}
},
@@ -80,16 +80,17 @@ App.ExportMetricsMixin = Em.Mixin.create({
},
prepareCSV: function (data) {
- var titles,
+ var displayUnit = this.get('targetView.displayUnit'),
+ titles,
ticksNumber,
metricsNumber,
metricsArray;
- if (Em.isArray(data)) {
- titles = data.mapProperty('name');
- titles.unshift(Em.I18n.t('common.timestamp'));
- ticksNumber = data[0].data.length;
- metricsNumber = data.length;
- }
+ titles = data.map(function (item) {
+ return displayUnit ? item.name + ' (' + displayUnit + ')' : item.name;
+ }, this);
+ titles.unshift(Em.I18n.t('common.timestamp'));
+ ticksNumber = data[0].data.length;
+ metricsNumber = data.length;
metricsArray = [titles];
for (var i = 0; i < ticksNumber; i++) {
metricsArray.push([data[0].data[i][1]]);
@@ -98,6 +99,15 @@ App.ExportMetricsMixin = Em.Mixin.create({
};
}
return stringUtils.arrayToCSV(metricsArray);
+ },
+
+ jsonReplacer: function () {
+ var displayUnit = this.get('targetView.displayUnit');
+ return function (key, value) {
+ if (['name', 'data'].contains(key) || (!isNaN(key))) {
+ return key == 'name' && displayUnit ? value + ' (' + displayUnit + ')' : value;
+ }
+ }
}
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb80cfc/ambari-web/app/views/common/chart/linear_time.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/chart/linear_time.js b/ambari-web/app/views/common/chart/linear_time.js
index 24ca450..a6bd9a4 100644
--- a/ambari-web/app/views/common/chart/linear_time.js
+++ b/ambari-web/app/views/common/chart/linear_time.js
@@ -177,6 +177,7 @@ App.ChartLinearTimeView = Ember.View.extend(App.ExportMetricsMixin, {
didInsertElement: function () {
var self = this;
+ this.setYAxisFormatter();
this.loadData();
this.registerGraph();
this.$().parent().on('mouseleave', function () {
@@ -469,7 +470,7 @@ App.ChartLinearTimeView = Ember.View.extend(App.ExportMetricsMixin, {
/**
* Provides the formatter to use in displaying Y axis.
*
- * Uses the App.ChartLinearTimeView.DefaultFormatter which shows 10K,
+ * By default, uses the App.ChartLinearTimeView.DefaultFormatter which shows 10K,
* 300M etc.
*
* @type Function
@@ -479,6 +480,28 @@ App.ChartLinearTimeView = Ember.View.extend(App.ExportMetricsMixin, {
},
/**
+ * Sets the formatter to use in displaying Y axis depending on graph unit.
+ *
+ * @type Function
+ */
+ setYAxisFormatter: function () {
+ var method,
+ formatterMap = {
+ '%': 'PercentageFormatter',
+ '/s': 'CreateRateFormatter',
+ 'B': 'BytesFormatter',
+ 'ms': 'TimeElapsedFormatter'
+ },
+ methodName = formatterMap[this.get('displayUnit')];
+ if (methodName) {
+ method = (methodName == 'CreateRateFormatter') ?
+ App.ChartLinearTimeView.CreateRateFormatter('', App.ChartLinearTimeView.DefaultFormatter) :
+ App.ChartLinearTimeView[methodName];
+ this.set('yAxisFormatter', method);
+ }
+ },
+
+ /**
* Provides the color (in any HTML color format) to use for a particular
* series.
* May be redefined in child views
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb80cfc/ambari-web/app/views/common/widget/graph_widget_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/widget/graph_widget_view.js b/ambari-web/app/views/common/widget/graph_widget_view.js
index 62bf4d5..7fc4e76 100644
--- a/ambari-web/app/views/common/widget/graph_widget_view.js
+++ b/ambari-web/app/views/common/widget/graph_widget_view.js
@@ -71,6 +71,10 @@ App.GraphWidgetView = Em.View.extend(App.WidgetMixin, App.ExportMetricsMixin, {
*/
data: [],
+ exportTargetView: function () {
+ return this.get('childViews.lastObject');
+ }.property(),
+
drawWidget: function () {
if (this.get('isLoaded')) {
this.set('data', this.calculateValues());
@@ -228,10 +232,10 @@ App.GraphWidgetView = Em.View.extend(App.WidgetMixin, App.ExportMetricsMixin, {
return this.get('parentView.content.properties.display_unit');
}.property('parentView.content.properties.display_unit'),
setYAxisFormatter: function () {
- var self = this;
- if (this.get('displayUnit')) {
- this.set('yAxisFormatter', function (value) {
- return App.ChartLinearTimeView.DisplayUnitFormatter(value, self.get('displayUnit'));
+ var displayUnit = this.get('displayUnit');
+ if (displayUnit) {
+ this.set('yAxisFormatter', function (value) {
+ return App.ChartLinearTimeView.DisplayUnitFormatter(value, displayUnit);
});
}
}.observes('displayUnit'),
@@ -318,7 +322,7 @@ App.GraphWidgetView = Em.View.extend(App.WidgetMixin, App.ExportMetricsMixin, {
return Em.isArray(item.data);
});
if (hasData) {
- data = isCSV ? this.prepareCSV(metrics) : JSON.stringify(metrics, ['name', 'data'], 4);
+ data = isCSV ? this.prepareCSV(metrics) : JSON.stringify(metrics, this.jsonReplacer(), 4);
fileUtils.downloadTextFile(data, fileType, fileName);
} else {
App.showAlertPopup(Em.I18n.t('graphs.noData.title'), Em.I18n.t('graphs.noData.tooltip.title'));
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb80cfc/ambari-web/app/views/main/dashboard/cluster_metrics/cpu.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/dashboard/cluster_metrics/cpu.js b/ambari-web/app/views/main/dashboard/cluster_metrics/cpu.js
index e959ca7..407487d 100644
--- a/ambari-web/app/views/main/dashboard/cluster_metrics/cpu.js
+++ b/ambari-web/app/views/main/dashboard/cluster_metrics/cpu.js
@@ -32,7 +32,7 @@ App.ChartClusterMetricsCPU = App.ChartLinearTimeView.extend({
ajaxIndex: 'dashboard.cluster_metrics.cpu',
title: Em.I18n.t('dashboard.clusterMetrics.cpu'),
- yAxisFormatter: App.ChartLinearTimeView.PercentageFormatter,
+ displayUnit: '%',
isTimePagingDisable: false,
seriesTemplate: {
path: 'metrics.cpu'
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb80cfc/ambari-web/app/views/main/dashboard/cluster_metrics/memory.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/dashboard/cluster_metrics/memory.js b/ambari-web/app/views/main/dashboard/cluster_metrics/memory.js
index 3bcdfb3..844f238 100644
--- a/ambari-web/app/views/main/dashboard/cluster_metrics/memory.js
+++ b/ambari-web/app/views/main/dashboard/cluster_metrics/memory.js
@@ -33,7 +33,7 @@ App.ChartClusterMetricsMemory = App.ChartLinearTimeView.extend({
isTimePagingDisable: false,
title: Em.I18n.t('dashboard.clusterMetrics.memory'),
- yAxisFormatter: App.ChartLinearTimeView.BytesFormatter,
+ displayUnit: 'B',
renderer: 'line',
seriesTemplate: {
path: 'metrics.memory',
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb80cfc/ambari-web/app/views/main/dashboard/cluster_metrics/network.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/dashboard/cluster_metrics/network.js b/ambari-web/app/views/main/dashboard/cluster_metrics/network.js
index 3323bf1..c844480 100644
--- a/ambari-web/app/views/main/dashboard/cluster_metrics/network.js
+++ b/ambari-web/app/views/main/dashboard/cluster_metrics/network.js
@@ -34,7 +34,7 @@ App.ChartClusterMetricsNetwork = App.ChartLinearTimeView.extend({
isTimePagingDisable: false,
title: Em.I18n.t('dashboard.clusterMetrics.network'),
- yAxisFormatter: App.ChartLinearTimeView.BytesFormatter,
+ displayUnit: 'B',
renderer: 'line',
seriesTemplate: {
path: 'metrics.network'
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb80cfc/ambari-web/app/views/main/host/metrics/cpu.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/host/metrics/cpu.js b/ambari-web/app/views/main/host/metrics/cpu.js
index 8cbdb15..ba77b96 100644
--- a/ambari-web/app/views/main/host/metrics/cpu.js
+++ b/ambari-web/app/views/main/host/metrics/cpu.js
@@ -29,7 +29,7 @@ var App = require('app');
App.ChartHostMetricsCPU = App.ChartLinearTimeView.extend({
id: "host-metrics-cpu",
title: Em.I18n.t('hosts.host.metrics.cpu'),
- yAxisFormatter: App.ChartLinearTimeView.PercentageFormatter,
+ displayUnit: '%',
ajaxIndex: 'host.metrics.cpu',
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb80cfc/ambari-web/app/views/main/host/metrics/disk.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/host/metrics/disk.js b/ambari-web/app/views/main/host/metrics/disk.js
index d05b65f..fce239d 100644
--- a/ambari-web/app/views/main/host/metrics/disk.js
+++ b/ambari-web/app/views/main/host/metrics/disk.js
@@ -29,7 +29,7 @@ var App = require('app');
App.ChartHostMetricsDisk = App.ChartLinearTimeView.extend({
id: "host-metrics-disk",
title: Em.I18n.t('hosts.host.metrics.disk'),
- yAxisFormatter: App.ChartLinearTimeView.BytesFormatter,
+ displayUnit: 'B',
renderer: 'line',
ajaxIndex: 'host.metrics.disk',
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb80cfc/ambari-web/app/views/main/host/metrics/memory.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/host/metrics/memory.js b/ambari-web/app/views/main/host/metrics/memory.js
index 93e6be9..36e51fb 100644
--- a/ambari-web/app/views/main/host/metrics/memory.js
+++ b/ambari-web/app/views/main/host/metrics/memory.js
@@ -29,7 +29,7 @@ var App = require('app');
App.ChartHostMetricsMemory = App.ChartLinearTimeView.extend({
id: "host-metrics-memory",
title: Em.I18n.t('hosts.host.metrics.memory'),
- yAxisFormatter: App.ChartLinearTimeView.BytesFormatter,
+ displayUnit: 'B',
renderer: 'line',
ajaxIndex: 'host.metrics.memory',
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb80cfc/ambari-web/app/views/main/host/metrics/network.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/host/metrics/network.js b/ambari-web/app/views/main/host/metrics/network.js
index 7b22481..50f04d8 100644
--- a/ambari-web/app/views/main/host/metrics/network.js
+++ b/ambari-web/app/views/main/host/metrics/network.js
@@ -29,7 +29,7 @@ var App = require('app');
App.ChartHostMetricsNetwork = App.ChartLinearTimeView.extend({
id: "host-metrics-network",
title: Em.I18n.t('hosts.host.metrics.network'),
- yAxisFormatter: App.ChartLinearTimeView.BytesFormatter,
+ displayUnit: 'B',
renderer: 'line',
ajaxIndex: 'host.metrics.network',
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb80cfc/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_block_cache_hit_percent.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_block_cache_hit_percent.js b/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_block_cache_hit_percent.js
index c9d42c1..16a8d70 100644
--- a/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_block_cache_hit_percent.js
+++ b/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_block_cache_hit_percent.js
@@ -30,7 +30,7 @@ App.ChartServiceMetricsAMS_RegionServerBlockCacheHitPercent = App.ChartServiceMe
id: "service-metrics-ambari-metrics-region-server-block-cache-hit-percent",
title: Em.I18n.t('services.service.info.metrics.ambariMetrics.regionServer.blockCacheHitPercent'),
renderer: 'line',
- yAxisFormatter: App.ChartLinearTimeView.PercentageFormatter,
+ displayUnit: '%',
ajaxIndex: 'service.metrics.ambari_metrics.region_server.block_cache_hit_percent',
loadGroup: {
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb80cfc/ambari-web/app/views/main/service/info/metrics/flume/channel_fill_pct.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/metrics/flume/channel_fill_pct.js b/ambari-web/app/views/main/service/info/metrics/flume/channel_fill_pct.js
index 524ec93..f646ddd 100644
--- a/ambari-web/app/views/main/service/info/metrics/flume/channel_fill_pct.js
+++ b/ambari-web/app/views/main/service/info/metrics/flume/channel_fill_pct.js
@@ -29,7 +29,7 @@ var App = require('app');
App.ChartServiceMetricsFlume_ChannelFillPercent = App.ChartLinearTimeView.extend({
id: "service-metrics-flume-channel-fill-percent",
title: Em.I18n.t('services.service.info.metrics.flume.channelFillPercent'),
- yAxisFormatter: App.ChartLinearTimeView.PercentageFormatter,
+ displayUnit: '%',
ajaxIndex: 'service.metrics.flume.channel_fill_percent',
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb80cfc/ambari-web/app/views/main/service/info/metrics/flume/channel_size_mma.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/metrics/flume/channel_size_mma.js b/ambari-web/app/views/main/service/info/metrics/flume/channel_size_mma.js
index a5041bb..902d2f1 100644
--- a/ambari-web/app/views/main/service/info/metrics/flume/channel_size_mma.js
+++ b/ambari-web/app/views/main/service/info/metrics/flume/channel_size_mma.js
@@ -31,8 +31,7 @@ App.ChartServiceMetricsFlume_ChannelSizeMMA = App.ChartLinearTimeView.extend({
title: Em.I18n.t('services.service.info.metrics.flume.channelSizeMMA'),
renderer: 'line',
ajaxIndex: 'service.metrics.flume.channel_size_for_all.mma',
- yAxisFormatter: App.ChartLinearTimeView.CreateRateFormatter('',
- App.ChartLinearTimeView.DefaultFormatter),
+ displayUnit: '/s',
seriesTemplate: {
path: 'metrics.flume.flume.CHANNEL.ChannelSize.rate',
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb80cfc/ambari-web/app/views/main/service/info/metrics/flume/channel_sum.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/metrics/flume/channel_sum.js b/ambari-web/app/views/main/service/info/metrics/flume/channel_sum.js
index c978132..89ff885 100644
--- a/ambari-web/app/views/main/service/info/metrics/flume/channel_sum.js
+++ b/ambari-web/app/views/main/service/info/metrics/flume/channel_sum.js
@@ -29,7 +29,7 @@ var App = require('app');
App.ChartServiceMetricsFlume_ChannelSizeSum = App.ChartLinearTimeView.extend({
id: "service-metrics-flume-channel-size-sum",
title: Em.I18n.t('services.service.info.metrics.flume.channelSizeSum'),
- yAxisFormatter: App.ChartLinearTimeView.BytesFormatter,
+ displayUnit: 'B',
ajaxIndex: 'service.metrics.flume.channel_size_for_all.sum',
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb80cfc/ambari-web/app/views/main/service/info/metrics/flume/cpu_user.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/metrics/flume/cpu_user.js b/ambari-web/app/views/main/service/info/metrics/flume/cpu_user.js
index c5c08d9..b5a86d7 100644
--- a/ambari-web/app/views/main/service/info/metrics/flume/cpu_user.js
+++ b/ambari-web/app/views/main/service/info/metrics/flume/cpu_user.js
@@ -29,7 +29,7 @@ var App = require('app');
App.ChartServiceMetricsFlume_CPUUser = App.ChartLinearTimeView.extend({
id: "service-metrics-flume-cpu-user",
title: Em.I18n.t('services.service.info.metrics.flume.cpu.user'),
- yAxisFormatter: App.ChartLinearTimeView.PercentageFormatter,
+ displayUnit: '%',
renderer: 'line',
ajaxIndex: 'service.metrics.flume.cpu_user',
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb80cfc/ambari-web/app/views/main/service/info/metrics/flume/flume_incoming_mma.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/metrics/flume/flume_incoming_mma.js b/ambari-web/app/views/main/service/info/metrics/flume/flume_incoming_mma.js
index 9d47a81..458dc46 100644
--- a/ambari-web/app/views/main/service/info/metrics/flume/flume_incoming_mma.js
+++ b/ambari-web/app/views/main/service/info/metrics/flume/flume_incoming_mma.js
@@ -31,8 +31,7 @@ App.ChartServiceMetricsFlume_IncommingMMA = App.ChartLinearTimeView.extend({
title: Em.I18n.t('services.service.info.metrics.flume.incoming.mma'),
ajaxIndex: 'service.metrics.flume.incoming_event_put_successCount.mma',
- yAxisFormatter: App.ChartLinearTimeView.CreateRateFormatter('',
- App.ChartLinearTimeView.DefaultFormatter),
+ displayUnit: '/s',
seriesTemplate: {
path: 'metrics.flume.flume.CHANNEL.EventPutSuccessCount.rate',
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb80cfc/ambari-web/app/views/main/service/info/metrics/flume/flume_outgoing_mma.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/metrics/flume/flume_outgoing_mma.js b/ambari-web/app/views/main/service/info/metrics/flume/flume_outgoing_mma.js
index 1b07536..b0b12be 100644
--- a/ambari-web/app/views/main/service/info/metrics/flume/flume_outgoing_mma.js
+++ b/ambari-web/app/views/main/service/info/metrics/flume/flume_outgoing_mma.js
@@ -31,8 +31,7 @@ App.ChartServiceMetricsFlume_OutgoingMMA = App.ChartLinearTimeView.extend({
title: Em.I18n.t('services.service.info.metrics.flume.outgoing.mma'),
ajaxIndex: 'service.metrics.flume.outgoing_event_take_success_count.mma',
- yAxisFormatter: App.ChartLinearTimeView.CreateRateFormatter('',
- App.ChartLinearTimeView.DefaultFormatter),
+ displayUnit: '/s',
seriesTemplate: {
path: 'metrics.flume.flume.CHANNEL.EventTakeSuccessCount.rate',
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb80cfc/ambari-web/app/views/main/service/info/metrics/flume/gc.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/metrics/flume/gc.js b/ambari-web/app/views/main/service/info/metrics/flume/gc.js
index ce2f035..5dae52f 100644
--- a/ambari-web/app/views/main/service/info/metrics/flume/gc.js
+++ b/ambari-web/app/views/main/service/info/metrics/flume/gc.js
@@ -29,7 +29,7 @@ var App = require('app');
App.ChartServiceMetricsFlume_GarbageCollection = App.ChartLinearTimeView.extend({
id: "service-metrics-flume-jvm-gc",
title: Em.I18n.t('services.service.info.metrics.flume.gc'),
- yAxisFormatter: App.ChartLinearTimeView.TimeElapsedFormatter,
+ displayUnit: 'ms',
ajaxIndex: 'service.metrics.flume.gc',
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb80cfc/ambari-web/app/views/main/service/info/metrics/flume/jvm_heap.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/metrics/flume/jvm_heap.js b/ambari-web/app/views/main/service/info/metrics/flume/jvm_heap.js
index 10acf19..12c2247 100644
--- a/ambari-web/app/views/main/service/info/metrics/flume/jvm_heap.js
+++ b/ambari-web/app/views/main/service/info/metrics/flume/jvm_heap.js
@@ -29,7 +29,7 @@ var App = require('app');
App.ChartServiceMetricsFlume_JVMHeapUsed = App.ChartLinearTimeView.extend({
id: "service-metrics-flume-jvm-heap-used",
title: Em.I18n.t('services.service.info.metrics.flume.jvmHeapUsed'),
- yAxisFormatter: App.ChartLinearTimeView.BytesFormatter,
+ displayUnit: 'B',
renderer: 'line',
ajaxIndex: 'service.metrics.flume.jvm_heap_used',
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb80cfc/ambari-web/test/mixins/common/widgets/export_metrics_mixin_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/mixins/common/widgets/export_metrics_mixin_test.js b/ambari-web/test/mixins/common/widgets/export_metrics_mixin_test.js
index ae27912..c08020c 100644
--- a/ambari-web/test/mixins/common/widgets/export_metrics_mixin_test.js
+++ b/ambari-web/test/mixins/common/widgets/export_metrics_mixin_test.js
@@ -237,7 +237,18 @@ describe('App.ExportMetricsMixin', function () {
describe('#prepareCSV', function () {
- var data = [
+ var cases = [
+ {
+ displayUnit: 'B',
+ result: 'Timestamp,n0 (B),n1 (B)\n1,0,4\n3,2,5\n',
+ title: 'display unit set'
+ },
+ {
+ result: 'Timestamp,n0,n1\n1,0,4\n3,2,5\n',
+ title: 'display unit not set'
+ }
+ ],
+ data = [
{
name: 'n0',
data: [[0, 1], [2, 3]]
@@ -246,12 +257,17 @@ describe('App.ExportMetricsMixin', function () {
name: 'n1',
data: [[4, 1], [5, 3]]
}
- ],
- result = 'Timestamp,n0,n1\n1,0,4\n3,2,5\n',
- title = 'should do CSV export with formatting data as table';
+ ];
- it(title, function () {
- expect(obj.prepareCSV(data)).to.equal(result);
+ cases.forEach(function (item) {
+ it(item.title, function () {
+ obj.reopen({
+ targetView: {
+ displayUnit: item.displayUnit
+ }
+ });
+ expect(obj.prepareCSV(data)).to.equal(item.result);
+ });
});
});
@@ -283,4 +299,56 @@ describe('App.ExportMetricsMixin', function () {
});
+ describe('#jsonReplacer', function () {
+
+ var cases = [
+ {
+ json: [
+ {
+ name: 'n0',
+ data: [
+ [0, 1],
+ [1, 2]
+ ]
+ }
+ ],
+ result: '[{"name":"n0","data":[[0,1],[1,2]]}]',
+ title: 'valid object'
+ },
+ {
+ json: [
+ {
+ name: 'n1',
+ data: [
+ [0, 1],
+ [1, 2]
+ ],
+ p1: 'v1'
+ }
+ ],
+ result: '[{"name":"n1","data":[[0,1],[1,2]]}]',
+ title: 'object with redundant property'
+ },
+ {
+ json: [
+ {
+ name: 'n1',
+ data: {
+ p2: 'v2'
+ }
+ }
+ ],
+ result: '[{"name":"n1","data":{}}]',
+ title: 'object with malformed data'
+ }
+ ];
+
+ cases.forEach(function (item) {
+ it(item.title, function () {
+ expect(JSON.stringify(item.json, obj.jsonReplacer())).to.equal(item.result);
+ });
+ });
+
+ });
+
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb80cfc/ambari-web/test/views/common/chart/linear_time_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/common/chart/linear_time_test.js b/ambari-web/test/views/common/chart/linear_time_test.js
index b8475e8..60d02ee 100644
--- a/ambari-web/test/views/common/chart/linear_time_test.js
+++ b/ambari-web/test/views/common/chart/linear_time_test.js
@@ -291,6 +291,60 @@ describe('App.ChartLinearTimeView', function () {
});
});
+ describe('#setYAxisFormatter', function () {
+
+ var view,
+ cases = [
+ {
+ displayUnit: '%',
+ formatter: 'PercentageFormatter'
+ },
+ {
+ displayUnit: 'B',
+ formatter: 'BytesFormatter'
+ },
+ {
+ displayUnit: 'ms',
+ formatter: 'TimeElapsedFormatter'
+ },
+ {
+ displayUnit: 'kg',
+ formatter: 'DefaultFormatter',
+ title: 'other display unit'
+ },
+ {
+ formatter: 'DefaultFormatter',
+ title: 'no display unit'
+ }
+ ],
+ methodNames = ['PercentageFormatter', 'CreateRateFormatter', 'BytesFormatter', 'TimeElapsedFormatter', 'DefaultFormatter'];
+
+ beforeEach(function () {
+ view = App.ChartLinearTimeView.create();
+ methodNames.forEach(function (name) {
+ sinon.stub(App.ChartLinearTimeView, name, Em.K);
+ });
+ });
+
+ afterEach(function () {
+ methodNames.forEach(function (name) {
+ App.ChartLinearTimeView[name].restore();
+ });
+ });
+
+ cases.forEach(function (item) {
+ it(item.title || item.displayUnit, function () {
+ view.set('displayUnit', item.displayUnit);
+ view.setYAxisFormatter();
+ view.yAxisFormatter();
+ methodNames.forEach(function (name) {
+ expect(App.ChartLinearTimeView[name].callCount).to.equal(Number(name == item.formatter));
+ });
+ });
+ });
+
+ });
+
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb80cfc/ambari-web/test/views/common/widget/graph_widget_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/common/widget/graph_widget_view_test.js b/ambari-web/test/views/common/widget/graph_widget_view_test.js
index 31cf5f0..3bb5028 100644
--- a/ambari-web/test/views/common/widget/graph_widget_view_test.js
+++ b/ambari-web/test/views/common/widget/graph_widget_view_test.js
@@ -225,4 +225,26 @@ describe('App.GraphWidgetView', function () {
});
+ describe('#exportTargetView', function () {
+
+ var childViews = [
+ {
+ p0: 'v0'
+ },
+ {
+ p1: 'v1'
+ }
+ ],
+ title = 'should take last child view';
+
+ beforeEach(function () {
+ view.get('childViews').pushObjects(childViews);
+ view.propertyDidChange('exportTargetView');
+ });
+
+ it(title, function () {
+ expect(view.get('exportTargetView')).to.eql(childViews[1]);
+ });
+ });
+
});
\ No newline at end of file