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 2014/04/03 13:00:56 UTC
git commit: AMBARI-5337 Add unit tests to Confirm Hosts and Deploy
step. (atkach)
Repository: ambari
Updated Branches:
refs/heads/trunk 28ae1edd3 -> 2e7cb594f
AMBARI-5337 Add unit tests to Confirm Hosts and Deploy step. (atkach)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/2e7cb594
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/2e7cb594
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/2e7cb594
Branch: refs/heads/trunk
Commit: 2e7cb594f7bedd350a10d3d0ccdd899371d1e509
Parents: 28ae1ed
Author: atkach <at...@hortonworks.com>
Authored: Thu Apr 3 13:57:15 2014 +0300
Committer: atkach <at...@hortonworks.com>
Committed: Thu Apr 3 13:57:15 2014 +0300
----------------------------------------------------------------------
ambari-web/app/assets/test/tests.js | 1 +
ambari-web/app/controllers/wizard.js | 1 +
ambari-web/app/data/HDP2/site_properties.js | 6 +-
ambari-web/test/views/wizard/step3_view_test.js | 271 +++++++++++++++++++
ambari-web/test/views/wizard/step9_view_test.js | 195 +++++++++++++
5 files changed, 471 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/2e7cb594/ambari-web/app/assets/test/tests.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/test/tests.js b/ambari-web/app/assets/test/tests.js
index d4436d9..98ba280 100644
--- a/ambari-web/app/assets/test/tests.js
+++ b/ambari-web/app/assets/test/tests.js
@@ -108,6 +108,7 @@ require('test/views/main/host/details/host_component_view_test');
require('test/views/main/host/details/host_component_views/decommissionable_test');
require('test/views/main/jobs/hive_job_details_tez_dag_view_test');
require('test/views/common/configs/services_config_test');
+require('test/views/wizard/step3_view_test');
require('test/views/wizard/step9_view_test');
require('test/models/host_test');
require('test/models/host_component_test');
http://git-wip-us.apache.org/repos/asf/ambari/blob/2e7cb594/ambari-web/app/controllers/wizard.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard.js b/ambari-web/app/controllers/wizard.js
index 8cd9f09..848a416 100644
--- a/ambari-web/app/controllers/wizard.js
+++ b/ambari-web/app/controllers/wizard.js
@@ -18,6 +18,7 @@
var App = require('app');
+require('models/host');
App.WizardController = Em.Controller.extend({
http://git-wip-us.apache.org/repos/asf/ambari/blob/2e7cb594/ambari-web/app/data/HDP2/site_properties.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/HDP2/site_properties.js b/ambari-web/app/data/HDP2/site_properties.js
index 135a70d..8ee207a 100644
--- a/ambari-web/app/data/HDP2/site_properties.js
+++ b/ambari-web/app/data/HDP2/site_properties.js
@@ -258,7 +258,7 @@ module.exports =
"displayType": "integer",
"category": "AppTimelineServer",
"desription": "Length of time to wait between deletion cycles of leveldb timeline store in milliseconds.",
- "value": 300000,
+ //"value": 300000,
"serviceName": "YARN"
},
{
@@ -275,7 +275,7 @@ module.exports =
"displayType": "checkbox",
"category": "AppTimelineServer",
"desription": "Enable age off of timeline store data.",
- "value": true,
+ //"value": true,
"serviceName": "YARN"
},
{
@@ -285,7 +285,7 @@ module.exports =
"displayType": "integer",
"category": "AppTimelineServer",
"desription": "Time to live for timeline store data in milliseconds.",
- "value": 2678400000,
+ //"value": 2678400000,
"serviceName": "YARN"
},
{
http://git-wip-us.apache.org/repos/asf/ambari/blob/2e7cb594/ambari-web/test/views/wizard/step3_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/wizard/step3_view_test.js b/ambari-web/test/views/wizard/step3_view_test.js
new file mode 100644
index 0000000..b38068a
--- /dev/null
+++ b/ambari-web/test/views/wizard/step3_view_test.js
@@ -0,0 +1,271 @@
+/**
+ * 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/wizard/step3_view');
+
+describe('App.WizardStep3View', function () {
+ Em.run.next = function(callback){
+ callback()
+ };
+ var view = App.WizardStep3View.create({
+ monitorStatuses: function () {
+ },
+ content: [
+ Em.Object.create({
+ name: 'host1',
+ bootStatus: 'PENDING',
+ isChecked: false
+ }),
+ Em.Object.create({
+ name: 'host2',
+ bootStatus: 'PENDING',
+ isChecked: true
+ }),
+ Em.Object.create({
+ name: 'host3',
+ bootStatus: 'PENDING',
+ isChecked: true
+ })
+ ],
+ pageContent: function () {
+ return this.get('content');
+ }.property('content')
+ });
+
+ describe('watchSelection', function () {
+ it('2 of 3 hosts selected', function () {
+ view.watchSelection();
+ expect(view.get('noHostsSelected')).to.equal(false);
+ expect(view.get('selectedHostsCount')).to.equal(2);
+ });
+ it('all hosts selected', function () {
+ view.selectAll();
+ view.watchSelection();
+ expect(view.get('noHostsSelected')).to.equal(false);
+ expect(view.get('selectedHostsCount')).to.equal(3);
+ });
+ it('none hosts selected', function () {
+ view.unSelectAll();
+ view.watchSelection();
+ expect(view.get('noHostsSelected')).to.equal(true);
+ expect(view.get('selectedHostsCount')).to.equal(0);
+ });
+ });
+
+
+ describe('selectAll', function () {
+ it('select all hosts', function () {
+ view.selectAll();
+ expect(view.get('content').everyProperty('isChecked', true)).to.equal(true);
+ });
+ });
+
+ describe('unSelectAll', function () {
+ it('unselect all hosts', function () {
+ view.unSelectAll();
+ expect(view.get('content').everyProperty('isChecked', false)).to.equal(true);
+ });
+ });
+
+ var testCases = [
+ {
+ title: 'none hosts',
+ content: [],
+ result: {
+ "ALL": 0,
+ "RUNNING": 0,
+ "REGISTERING": 0,
+ "REGISTERED": 0,
+ "FAILED": 0
+ }
+ },
+ {
+ title: 'all hosts RUNNING',
+ content: [
+ Em.Object.create({
+ name: 'host1',
+ bootStatus: 'RUNNING'
+ }),
+ Em.Object.create({
+ name: 'host2',
+ bootStatus: 'RUNNING'
+ }),
+ Em.Object.create({
+ name: 'host3',
+ bootStatus: 'RUNNING'
+ })
+ ],
+ result: {
+ "ALL": 3,
+ "RUNNING": 3,
+ "REGISTERING": 0,
+ "REGISTERED": 0,
+ "FAILED": 0
+ }
+ },
+ {
+ title: 'all hosts REGISTERING',
+ content: [
+ Em.Object.create({
+ name: 'host1',
+ bootStatus: 'REGISTERING'
+ }),
+ Em.Object.create({
+ name: 'host2',
+ bootStatus: 'REGISTERING'
+ }),
+ Em.Object.create({
+ name: 'host3',
+ bootStatus: 'REGISTERING'
+ })
+ ],
+ result: {
+ "ALL": 3,
+ "RUNNING": 0,
+ "REGISTERING": 3,
+ "REGISTERED": 0,
+ "FAILED": 0
+ }
+ },
+ {
+ title: 'all hosts REGISTERED',
+ content: [
+ Em.Object.create({
+ name: 'host1',
+ bootStatus: 'REGISTERED'
+ }),
+ Em.Object.create({
+ name: 'host2',
+ bootStatus: 'REGISTERED'
+ }),
+ Em.Object.create({
+ name: 'host3',
+ bootStatus: 'REGISTERED'
+ })
+ ],
+ result: {
+ "ALL": 3,
+ "RUNNING": 0,
+ "REGISTERING": 0,
+ "REGISTERED": 3,
+ "FAILED": 0
+ }
+ },
+ {
+ title: 'all hosts FAILED',
+ content: [
+ Em.Object.create({
+ name: 'host1',
+ bootStatus: 'FAILED'
+ }),
+ Em.Object.create({
+ name: 'host2',
+ bootStatus: 'FAILED'
+ }),
+ Em.Object.create({
+ name: 'host3',
+ bootStatus: 'FAILED'
+ })
+ ],
+ result: {
+ "ALL": 3,
+ "RUNNING": 0,
+ "REGISTERING": 0,
+ "REGISTERED": 0,
+ "FAILED": 3
+ }
+ },
+ {
+ title: 'first host is FAILED, second is RUNNING, third is REGISTERED',
+ content: [
+ Em.Object.create({
+ name: 'host1',
+ bootStatus: 'FAILED'
+ }),
+ Em.Object.create({
+ name: 'host2',
+ bootStatus: 'RUNNING'
+ }),
+ Em.Object.create({
+ name: 'host3',
+ bootStatus: 'REGISTERED'
+ })
+ ],
+ result: {
+ "ALL": 3,
+ "RUNNING": 1,
+ "REGISTERING": 0,
+ "REGISTERED": 1,
+ "FAILED": 1
+ }
+ },
+ {
+ title: 'two hosts is REGISTERING, one is REGISTERED',
+ content: [
+ Em.Object.create({
+ name: 'host1',
+ bootStatus: 'REGISTERING'
+ }),
+ Em.Object.create({
+ name: 'host2',
+ bootStatus: 'REGISTERING'
+ }),
+ Em.Object.create({
+ name: 'host3',
+ bootStatus: 'REGISTERED'
+ })
+ ],
+ result: {
+ "ALL": 3,
+ "RUNNING": 0,
+ "REGISTERING": 2,
+ "REGISTERED": 1,
+ "FAILED": 0
+ }
+ }
+ ];
+
+ describe('countCategoryHosts', function () {
+ testCases.forEach(function (test) {
+ it(test.title, function () {
+ view.set('content', test.content);
+ view.countCategoryHosts();
+ view.get('categories').forEach(function (category) {
+ expect(category.get('hostsCount')).to.equal(test.result[category.get('hostsBootStatus')])
+ })
+ });
+ }, this);
+ });
+
+ describe('filter', function () {
+ testCases.forEach(function (test) {
+ describe(test.title, function () {
+ view.get('categories').forEach(function (category) {
+ it('. Selected category - ' + category.get('hostsBootStatus'), function () {
+ view.set('content', test.content);
+ view.selectCategory({context: category});
+ view.filter();
+ expect(view.get('filteredContent').length).to.equal(test.result[category.get('hostsBootStatus')])
+ });
+ })
+ });
+ }, this);
+ });
+
+});
http://git-wip-us.apache.org/repos/asf/ambari/blob/2e7cb594/ambari-web/test/views/wizard/step9_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/wizard/step9_view_test.js b/ambari-web/test/views/wizard/step9_view_test.js
index abd6595..9b98019 100644
--- a/ambari-web/test/views/wizard/step9_view_test.js
+++ b/ambari-web/test/views/wizard/step9_view_test.js
@@ -19,6 +19,201 @@
var App = require('app');
require('views/wizard/step9_view');
+
+describe('App.WizardStep9View', function () {
+ var view = App.WizardStep9View.create({
+ onStatus: function () {},
+ content: [],
+ pageContent: function () {
+ return this.get('content');
+ }.property('content')
+ });
+ var testCases = [
+ {
+ title: 'none hosts',
+ content: [],
+ result: {
+ "all": 0,
+ "inProgress": 0,
+ "warning": 0,
+ "success": 0,
+ "failed": 0
+ }
+ },
+ {
+ title: 'all hosts inProgress',
+ content: [
+ Em.Object.create({
+ name: 'host1',
+ status: 'in_progress'
+ }),
+ Em.Object.create({
+ name: 'host2',
+ status: 'info'
+ }),
+ Em.Object.create({
+ name: 'host3',
+ status: 'pending'
+ })
+ ],
+ result: {
+ "all": 3,
+ "inProgress": 3,
+ "warning": 0,
+ "success": 0,
+ "failed": 0
+ }
+ },
+ {
+ title: 'all hosts warning',
+ content: [
+ Em.Object.create({
+ name: 'host1',
+ status: 'warning'
+ }),
+ Em.Object.create({
+ name: 'host2',
+ status: 'warning'
+ }),
+ Em.Object.create({
+ name: 'host3',
+ status: 'warning'
+ })
+ ],
+ result: {
+ "all": 3,
+ "inProgress": 0,
+ "warning": 3,
+ "success": 0,
+ "failed": 0
+ }
+ },
+ {
+ title: 'all hosts success',
+ content: [
+ Em.Object.create({
+ name: 'host1',
+ status: 'success'
+ }),
+ Em.Object.create({
+ name: 'host2',
+ status: 'success'
+ }),
+ Em.Object.create({
+ name: 'host3',
+ status: 'success'
+ })
+ ],
+ result: {
+ "all": 3,
+ "inProgress": 0,
+ "warning": 0,
+ "success": 3,
+ "failed": 0
+ }
+ },
+ {
+ title: 'all hosts failed',
+ content: [
+ Em.Object.create({
+ name: 'host1',
+ status: 'failed'
+ }),
+ Em.Object.create({
+ name: 'host2',
+ status: 'failed'
+ }),
+ Em.Object.create({
+ name: 'host3',
+ status: 'heartbeat_lost'
+ })
+ ],
+ result: {
+ "all": 3,
+ "inProgress": 0,
+ "warning": 0,
+ "success": 0,
+ "failed": 3
+ }
+ },
+ {
+ title: 'first host is failed, second is warning, third is success',
+ content: [
+ Em.Object.create({
+ name: 'host1',
+ status: 'failed'
+ }),
+ Em.Object.create({
+ name: 'host2',
+ status: 'success'
+ }),
+ Em.Object.create({
+ name: 'host3',
+ status: 'warning'
+ })
+ ],
+ result: {
+ "all": 3,
+ "inProgress": 0,
+ "warning": 1,
+ "success": 1,
+ "failed": 1
+ }
+ },
+ {
+ title: 'two hosts is inProgress, one is success',
+ content: [
+ Em.Object.create({
+ name: 'host1',
+ status: 'pending'
+ }),
+ Em.Object.create({
+ name: 'host2',
+ status: 'in_progress'
+ }),
+ Em.Object.create({
+ name: 'host3',
+ status: 'success'
+ })
+ ],
+ result: {
+ "all": 3,
+ "inProgress": 2,
+ "warning": 0,
+ "success": 1,
+ "failed": 0
+ }
+ }
+ ];
+
+ describe('countCategoryHosts', function () {
+ testCases.forEach(function (test) {
+ it(test.title, function () {
+ view.set('content', test.content);
+ view.countCategoryHosts();
+ view.get('categories').forEach(function (category) {
+ expect(category.get('hostsCount')).to.equal(test.result[category.get('hostStatus')])
+ })
+ });
+ }, this);
+ });
+
+ describe('filter', function () {
+ testCases.forEach(function (test) {
+ describe(test.title, function () {
+ view.get('categories').forEach(function (category) {
+ it('. Selected category - ' + category.get('hostStatus'), function () {
+ view.set('content', test.content);
+ view.selectCategory({context: category});
+ view.filter();
+ expect(view.get('filteredContent').length).to.equal(test.result[category.get('hostStatus')])
+ });
+ })
+ });
+ }, this);
+ });
+});
+
describe('App.HostStatusView', function () {
var tests = [
{