瀏覽代碼

AMBARI-5159. Storm config page not available. (onechiporenko)

Oleg Nechiporenko 11 年之前
父節點
當前提交
c2cfab3acb

+ 8 - 5
ambari-web/app/utils/configs/validators/service_configs_validator.js

@@ -62,27 +62,30 @@ App.ServiceConfigsValidator = Em.Object.extend({
     }
     defaultValue = parseInt(defaultValue.toString().replace( /\D+/g, ''));
     if (defaultValue && currentValue &&  currentValue < defaultValue) {
-      return "Value is less than the recommended default of "+defaultValue;
+      return "Value is less than the recommended default of " + defaultValue;
     }
     return null;
   },
 
   /**
-   * Check if provided <code>config.value</code> is less than <code>recommendedDefaults</code>
+   * Check if provided <code>config.value</code> is less than <code>recommendedDefaults</code> or <code>config.defaultValue</code>
    * Value looks like "-Xmx****m"
    * @param {object} config
    * @return {string|null}
    */
   validateXmxValue: function(config) {
-    var defaultValueRaw = this.get('recommendedDefaults')[config.get('name')];
+    var recomendedDefault = this.get('recommendedDefaults')[config.get('name')];
+    var defaultValueRaw = Em.isNone(recomendedDefault) ? config.get('defaultValue') : recomendedDefault;
+    Em.assert('validateXmxValue: Config\'s default value can\'t be null or undefined', !Em.isNone(defaultValueRaw));
     var currentValueRaw = config.get('value');
     if (!this._checkXmxValueFormat(currentValueRaw)) {
       return 'Invalid value format';
     }
     var currentValue = this._formatXmxSizeToBytes(this._getXmxSize(currentValueRaw));
-    var defaultValue = this._formatXmxSizeToBytes(this._getXmxSize(defaultValueRaw));
+    var defaultValueXmx = this._getXmxSize(defaultValueRaw);
+    var defaultValue = this._formatXmxSizeToBytes(defaultValueXmx);
     if (currentValue < defaultValue) {
-      return "Value is less than the recommended default of " + defaultValueRaw;
+      return "Value is less than the recommended default of -Xmx" + defaultValueXmx;
     }
     return null;
   },

+ 25 - 0
ambari-web/test/utils/configs/validators/service_configs_validator_test.js

@@ -262,6 +262,24 @@ describe('App.ServiceConfigsValidator', function() {
           name: 'property1'
         }),
         e: 'string'
+      },
+      {
+        recommendedDefaults: {},
+        config: Em.Object.create({
+          defaultValue: '-Xmx123',
+          value: '-Xmx123',
+          name: 'name'
+        }),
+        e: null
+      },
+      {
+        recommendedDefaults: {},
+        config: Em.Object.create({
+          defaultValue: '-Xmx124',
+          value: '-Xmx123',
+          name: 'name'
+        }),
+        e: 'string'
       }
     ]);
     tests.forEach(function(test) {
@@ -277,6 +295,13 @@ describe('App.ServiceConfigsValidator', function() {
         }
       });
     });
+
+    it('Error should be thrown', function() {
+      var v = App.ServiceConfigsValidator.create({});
+      v.set('recommendedDefaults', {});
+      expect(function() {v.validateXmxValue(Em.Object.create({value:''}));}).to.throw(Error);
+    });
+
   });
 
 });