Procházet zdrojové kódy

AMBARI-4916 'Start All' button is enabled if all services are started. (ababiichuk)

aBabiichuk před 11 roky
rodič
revize
c7640d0db5

+ 1 - 0
ambari-web/app/assets/test/tests.js

@@ -42,6 +42,7 @@ require('test/controllers/main/service/reassign_controller_test');
 require('test/controllers/main/dashboard_test');
 require('test/controllers/main/host_test');
 require('test/controllers/main/item_test');
+require('test/controllers/main/service_test');
 require('test/controllers/wizard/stack_upgrade/step3_controller_test');
 require('test/controllers/installer_test');
 require('test/controllers/wizard_test');

+ 3 - 9
ambari-web/app/controllers/main/service.js

@@ -75,21 +75,15 @@ App.MainServiceController = Em.ArrayController.extend({
     if(this.get('isStartStopAllClicked') == true) {
       return true;
     }
-    var stoppedServiceLength = this.get('content').filterProperty('healthStatus','red').length;
+    var stoppedServiceLength = this.get('content').filterProperty('healthStatus','red').filterProperty('isClientsOnly', false).length;
     return (stoppedServiceLength === 0); // all green status
   }.property('isStartStopAllClicked', 'content.@each.healthStatus'),
   isStopAllDisabled: function(){
     if(this.get('isStartStopAllClicked') == true) {
       return true;
     }
-    var startedService = this.get('content').filterProperty('healthStatus','green');
-    var flag = true;
-    startedService.forEach(function(item){
-      if(!['HCATALOG', 'PIG', 'SQOOP'].contains(item.get('serviceName'))){
-        flag = false;
-      }
-    });
-    return flag;
+    var startedServiceLength = this.get('content').filterProperty('healthStatus','green').length;
+    return (startedServiceLength === 0);
   }.property('isStartStopAllClicked', 'content.@each.healthStatus'),
   isStartStopAllClicked: function(){
     return (App.router.get('backgroundOperationsController').get('allOperationsCount') !== 0);

+ 124 - 0
ambari-web/test/controllers/main/service_test.js

@@ -0,0 +1,124 @@
+/**
+ * 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('controllers/main/service');
+
+var mainServiceController;
+
+describe('App.MainServiceController', function () {
+
+  var tests = Em.A([
+    {
+      isStartStopAllClicked: false,
+      content: Em.A([
+        Em.Object.create({
+          healthStatus: 'green',
+          serviceName: 'HIVE',
+          isClientsOnly: false
+        }),
+        Em.Object.create({
+          healthStatus: 'green',
+          serviceName: 'HDFS',
+          isClientsOnly: false
+        }),
+        Em.Object.create({
+          healthStatus: 'red',
+          serviceName: 'TEZ',
+          isClientsOnly: true
+        })
+      ]),
+      eStart: true,
+      eStop: false,
+      mStart: 'mainServiceController StartAll is Disabled 1',
+      mStop: 'mainServiceController StopAll is Enabled 1'
+    },
+    {
+      isStartStopAllClicked: true,
+      content: Em.A([
+        Em.Object.create({
+          healthStatus: 'red',
+          serviceName: 'HIVE',
+          isClientsOnly: false
+        }),
+        Em.Object.create({
+          healthStatus: 'red',
+          serviceName: 'HDFS',
+          isClientsOnly: false
+        }),
+        Em.Object.create({
+          healthStatus: 'red',
+          serviceName: 'TEZ',
+          isClientsOnly: true
+        })
+      ]),
+      eStart: true,
+      eStop: true,
+      mStart: 'mainServiceController StartAll is Disabled 2',
+      mStop: 'mainServiceController StopAll is Disabled 2'
+    },
+    {
+      isStartStopAllClicked: false,
+      content: Em.A([
+        Em.Object.create({
+          healthStatus: 'green',
+          serviceName: 'HIVE',
+          isClientsOnly: false
+        }),
+        Em.Object.create({
+          healthStatus: 'red',
+          serviceName: 'HDFS',
+          isClientsOnly: false
+        }),
+        Em.Object.create({
+          healthStatus: 'red',
+          serviceName: 'TEZ',
+          isClientsOnly: true
+        })
+      ]),
+      eStart: false,
+      eStop: false,
+      mStart: 'mainServiceController StartAll is Enabled 3',
+      mStop: 'mainServiceController StopAll is Enabled 3'
+    }
+
+  ]);
+  describe('#isStartAllDisabled', function () {
+    tests.forEach(function (test) {
+      it(test.mStart, function () {
+        mainServiceController = App.MainServiceController.create({
+          content: test.content,
+          isStartStopAllClicked: test.isStartStopAllClicked
+        });
+        expect(mainServiceController.get('isStartAllDisabled')).to.equals(test.eStart);
+      });
+    });
+  });
+
+  describe('#isStopAllDisabled', function () {
+    tests.forEach(function (test) {
+      it(test.mStop, function () {
+        mainServiceController = App.MainServiceController.create({
+          content: test.content,
+          isStartStopAllClicked: test.isStartStopAllClicked
+        });
+        expect(mainServiceController.get('isStopAllDisabled')).to.equals(test.eStop);
+      });
+    });
+  });
+});