You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sr...@apache.org on 2013/04/09 23:59:21 UTC

svn commit: r1466260 - in /incubator/ambari/trunk: ./ ambari-web/ ambari-web/app/ ambari-web/app/assets/test/ ambari-web/app/controllers/global/ ambari-web/test/ ambari-web/test/controllers/global/ ambari-web/test/utils/

Author: srimanth
Date: Tue Apr  9 21:59:21 2013
New Revision: 1466260

URL: http://svn.apache.org/r1466260
Log:
AMBARI-1850. Update unit tests. (srimanth)

Added:
    incubator/ambari/trunk/ambari-web/app/assets/test/
    incubator/ambari/trunk/ambari-web/app/assets/test/test.html
    incubator/ambari/trunk/ambari-web/app/assets/test/tests.js
Removed:
    incubator/ambari/trunk/ambari-web/test/test-helpers.coffee
Modified:
    incubator/ambari/trunk/CHANGES.txt
    incubator/ambari/trunk/ambari-web/app/config.js
    incubator/ambari/trunk/ambari-web/app/controllers/global/background_operations_controller.js
    incubator/ambari/trunk/ambari-web/config.coffee
    incubator/ambari/trunk/ambari-web/package.json
    incubator/ambari/trunk/ambari-web/test/controllers/global/background_operations_test.js
    incubator/ambari/trunk/ambari-web/test/utils/ajax_test.js
    incubator/ambari/trunk/ambari-web/test/utils/validator_test.js

Modified: incubator/ambari/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/CHANGES.txt?rev=1466260&r1=1466259&r2=1466260&view=diff
==============================================================================
--- incubator/ambari/trunk/CHANGES.txt (original)
+++ incubator/ambari/trunk/CHANGES.txt Tue Apr  9 21:59:21 2013
@@ -11,6 +11,8 @@ Trunk (unreleased changes):
  INCOMPATIBLE CHANGES 
 
  NEW FEATURES
+ 
+ AMBARI-1850. Update unit tests. (srimanth)
 
  AMBARI-1829. HDFS Mirroring: Display Status and handle maintenance operations 
  like Stop, Suspend, Activate etc. (Arun Kandregula via srimanth)

Added: incubator/ambari/trunk/ambari-web/app/assets/test/test.html
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/assets/test/test.html?rev=1466260&view=auto
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/assets/test/test.html (added)
+++ incubator/ambari/trunk/ambari-web/app/assets/test/test.html Tue Apr  9 21:59:21 2013
@@ -0,0 +1,50 @@
+<!--
+* 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.
+-->
+
+<html>
+<head>
+    <meta charset="utf-8">
+    <script src="../javascripts/vendor.js"></script>
+    <script src="../javascripts/app.js"></script>
+    <link rel="stylesheet" href="../../node_modules/mocha/mocha.css" />
+</head>
+<body>
+<div id="mocha"></div>
+<div id="wrapper">
+    <!-- ApplicationView -->
+</div>
+<script src="../../node_modules/mocha/mocha.js"></script>
+<script src="../../node_modules/chai/chai.js"></script>
+<script src="../../node_modules/sinon/lib/sinon.js"></script>
+<script src="../../node_modules/sinon/lib/sinon/spy.js"></script>
+<script src="../../node_modules/sinon/lib/sinon/stub.js"></script>
+<script>
+    $.mocho = true;
+    $.hostName = 'localhost:3333';
+    mocha.ui('bdd');
+    mocha.reporter('html');
+    expect = chai.expect;
+</script>
+<script src="./javascripts/test.js"></script>
+<script src="./tests.js"></script>
+<script>
+    if (window.mochaPhantomJS) { mochaPhantomJS.run(); }
+    else { mocha.run(); }
+</script>
+</body>
+</html>
\ No newline at end of file

Added: incubator/ambari/trunk/ambari-web/app/assets/test/tests.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/assets/test/tests.js?rev=1466260&view=auto
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/assets/test/tests.js (added)
+++ incubator/ambari/trunk/ambari-web/app/assets/test/tests.js Tue Apr  9 21:59:21 2013
@@ -0,0 +1,40 @@
+/**
+ * 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.
+ */
+
+require('test/utils/ajax_test');
+require('test/controllers/global/background_operations_test');
+require('test/controllers/main/app_contoller_test');
+require('test/controllers/main/charts/heatmap_metrics/heatmap_metric_test');
+require('test/installer/step1_test');
+require('test/installer/step2_test');
+require('test/installer/step3_test');
+require('test/installer/step4_test');
+require('test/installer/step5_test');
+require('test/installer/step6_test');
+require('test/installer/step7_test');
+require('test/installer/step9_test');
+require('test/login_test');
+require('test/main/app/app_contoller_test');
+require('test/main/dashboard_test');
+require('test/main/host/details_test');
+require('test/main/host_test');
+require('test/main/item_test');
+require('test/utils/form_field_test');
+require('test/utils/misc_test');
+require('test/utils/validator_test');
+require('test/views/common/chart/linear_time_test');
\ No newline at end of file

Modified: incubator/ambari/trunk/ambari-web/app/config.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/config.js?rev=1466260&r1=1466259&r2=1466260&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/config.js (original)
+++ incubator/ambari/trunk/ambari-web/app/config.js Tue Apr  9 21:59:21 2013
@@ -19,6 +19,9 @@
 var App = require('app');
 
 App.testMode = false;
+if(location.port == '3333'){
+  App.testMode = true;
+}
 App.testModeDelayForActions = 10000;
 App.skipBootstrap = false;
 App.alwaysGoToInstaller = false;

Modified: incubator/ambari/trunk/ambari-web/app/controllers/global/background_operations_controller.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/controllers/global/background_operations_controller.js?rev=1466260&r1=1466259&r2=1466260&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/controllers/global/background_operations_controller.js (original)
+++ incubator/ambari/trunk/ambari-web/app/controllers/global/background_operations_controller.js Tue Apr  9 21:59:21 2013
@@ -109,12 +109,10 @@ App.BackgroundOperationsController = Em.
    * @return PopupObject For testing purposes
    */
   showPopup: function(){
-    if(App.testMode){
-      App.HostPopup.initPopup("", this, true);
-    }else{
+    if(!App.testMode){
       App.updater.immediateRun('requestMostRecent');
-      App.HostPopup.initPopup("", this, true);
     }
+    return App.HostPopup.initPopup("", this, true);
   }
 
 });

Modified: incubator/ambari/trunk/ambari-web/config.coffee
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/config.coffee?rev=1466260&r1=1466259&r2=1466260&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/config.coffee (original)
+++ incubator/ambari/trunk/ambari-web/config.coffee Tue Apr  9 21:59:21 2013
@@ -55,8 +55,7 @@ exports.config =
           'vendor/scripts/workflow_visualization.js',
           'vendor/scripts/rickshaw.js',
           'vendor/scripts/spin.js',
-          'vendor/scripts/jquery.flexibleArea.js',
-          'test/utils/ajax_test.js'
+          'vendor/scripts/jquery.flexibleArea.js'
           ]
 
     stylesheets:

Modified: incubator/ambari/trunk/ambari-web/package.json
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/package.json?rev=1466260&r1=1466259&r2=1466260&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/package.json (original)
+++ incubator/ambari/trunk/ambari-web/package.json Tue Apr  9 21:59:21 2013
@@ -22,11 +22,11 @@
     "less-brunch":">= 1.0 < 1.5"
   },
   "devDependencies":{
-    "mocha":"0.14.0",
-    "chai":"1.2.0",
-    "sinon":"1.4.2",
-    "sinon-chai":"2.1.2",
+    "mocha":"*",
+    "chai":"*",
+    "sinon":"*",
+    "sinon-chai":"*",
     "express":"2.5.8",
-    "xmlhttprequest":"1.5.0"
+    "mocha-phantomjs": "*"
   }
 }

Modified: incubator/ambari/trunk/ambari-web/test/controllers/global/background_operations_test.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/test/controllers/global/background_operations_test.js?rev=1466260&r1=1466259&r2=1466260&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/test/controllers/global/background_operations_test.js (original)
+++ incubator/ambari/trunk/ambari-web/test/controllers/global/background_operations_test.js Tue Apr  9 21:59:21 2013
@@ -25,6 +25,7 @@ require('utils/ajax');
 
 require('controllers/global/background_operations_controller');
 require('views/common/modal_popup');
+require('utils/host_progress_popup');
 
 /*window.console.log = function(text){
   console.log(text);
@@ -45,43 +46,6 @@ describe('App.BackgroundOperationsContro
    */
   var controller = App.BackgroundOperationsController.create();
 
-  describe('#getOperationsForRequestId', function(){
-
-    var obj = new window.Array({"exit_code":0,"stdout":"Output","status":"COMPLETED","stderr":"none","host_name":"dev.hortonworks.com","id":10,"cluster_name":"mycluster","attempt_cnt":1,"request_id":2,"command":"EXECUTE","role":"HDFS_SERVICE_CHECK","start_time":1352119106480,"stage_id":2,"display_exit_code":true},{"exit_code":0,"stdout":"Output","status":"COMPLETED","stderr":"none","host_name":"dev.hortonworks.com","id":14,"cluster_name":"mycluster","attempt_cnt":1,"request_id":2,"command":"EXECUTE","role":"MAPREDUCE_SERVICE_CHECK","start_time":1352119157294,"stage_id":3,"display_exit_code":true},{"exit_code":0,"stdout":"Output","status":"QUEUED","stderr":"none","host_name":"dev.hortonworks.com","id":16,"cluster_name":"mycluster","attempt_cnt":1,"request_id":3,"command":"STOP","role":"NAMENODE","start_time":1352125378300,"stage_id":1,"display_exit_code":true});
-    var controller = App.BackgroundOperationsController.create();
-
-
-    it('test 1 with 3 items  ', function(){
-
-      controller.set('allOperations', obj);
-      expect(controller.getOperationsForRequestId(1).length).to.be.equal(0);
-      expect(controller.getOperationsForRequestId(2).length).to.be.equal(2);
-      expect(controller.getOperationsForRequestId(3).length).to.be.equal(1);
-
-    });
-
-
-
-    it('test 2 with 0 items  ', function(){
-
-      controller.set('allOperations', new window.Array());
-      expect(controller.getOperationsForRequestId(1).length).to.be.equal(0);
-      expect(controller.getOperationsForRequestId(2).length).to.be.equal(0);
-      expect(controller.getOperationsForRequestId(3).length).to.be.equal(0);
-
-    });
-
-    it('test 3 with 9 items  ', function(){
-
-      controller.set('allOperations', obj.concat(obj, obj));
-      expect(controller.getOperationsForRequestId(1).length).to.be.equal(0);
-      expect(controller.getOperationsForRequestId(2).length).to.be.equal(6);
-      expect(controller.getOperationsForRequestId(3).length).to.be.equal(3);
-
-    });
-
-  });
-
   describe('when set isWorking to true  ', function () {
 
     it('startPolling executes App.updater.run  ', function(done){
@@ -94,31 +58,31 @@ describe('App.BackgroundOperationsContro
       controller.set('isWorking', true);
     });
 
-    it('loadOperations should be called  ', function(done){
+    it('requestMostRecent should be called  ', function(done){
       this.timeout(App.bgOperationsUpdateInterval + 500);
 
-      sinon.stub(controller, 'loadOperations', function(){
+      sinon.stub(controller, 'requestMostRecent', function(){
         controller.set('isWorking', false);
-        controller.loadOperations.restore();
+        controller.requestMostRecent.restore();
         done();
       });
 
       controller.set('isWorking', true);
     });
 
-    it('updateBackgroundOperations should be called  ', function(done){
-      this.timeout(App.bgOperationsUpdateInterval + 500);
+    it('callBackForMostRecent should be called  ', function(done){
+      this.timeout(App.bgOperationsUpdateInterval + 1500);
 
-      sinon.stub(controller, 'updateBackgroundOperations', function(){
+      sinon.stub(controller, 'callBackForMostRecent', function(){
         controller.set('isWorking', false);
-        controller.updateBackgroundOperations.restore();
+        controller.callBackForMostRecent.restore();
         done();
       });
 
       controller.set('isWorking', true);
     });
 
-    it('allOperations should be set  ', function(done){
+    /*it('allOperations should be set  ', function(done){
       this.timeout(App.bgOperationsUpdateInterval + 500);
 
       sinon.stub(controller, 'updateBackgroundOperations', function(data){
@@ -139,209 +103,15 @@ describe('App.BackgroundOperationsContro
       });
 
       controller.set('isWorking', true);
-    });
+    });*/
 
   })
 
-  describe('#showPopup', function () {
+  /*describe('#showPopup', function () {
     it('works without exceptions  ', function(){
       var popup = controller.showPopup();
       popup.onPrimary();
     });
-  });
-
-  function generateTask(time, role, status, id, command){
-    command = command || 'STOP';
-    return {
-      "Tasks" : {
-        "exit_code" : 0,
-        "stdout" : "Output",
-        "status" : status,
-        "stderr" : "none",
-        "host_name" : "dev.hortonworks.com",
-        "id" : id,
-        "cluster_name" : "mycluster",
-        "attempt_cnt" : 1,
-        "request_id" : 1,
-        "command" : command,
-        "role" : role,
-        "start_time" : time,
-        "stage_id" : 1
-      }
-    };
-  }
-
-  function generate_test_json(){
-
-    var time = new Date().getTime();
-
-    return {
-      items:[
-        {
-          "Requests" : {
-            "id" : 3,
-            "cluster_name" : "mycluster"
-          },
-          "tasks":[
-            generateTask(time, 'NAMENODE', 'QUEUED', 16),
-            generateTask(time, 'DATANODE', 'QUEUED', 15),
-            generateTask(time, 'SECONDARY_NAMENODE', 'QUEUED', 14),
-            generateTask(time, 'MAPREDUCE_SERVICE_CHECK', 'QUEUED', 13, 'EXECUTE')
-          ]
-        }
-      ]
-    };
-  }
-
-  function update_test_json(json, index, state){
-    var item = json.items[0].tasks[index].Tasks;
-    item.status = state;
-    item.finishedTime = new Date().getTime();
-  }
-
-  function add_to_test_json(json){
-    var tasks = json.items[0].tasks;
-    var item = tasks[0].Tasks;
-    tasks.push(generateTask(item.start_time, 'HBASE_MASTER', 'QUEUED', 12));
-    tasks.push(generateTask(item.start_time, 'ZOOKEEPER_SERVER', 'QUEUED', 11));
-  }
-
-  describe('#updateBackgroundOperations', function () {
-    describe('finished items are removed with delay  ', function(){
-      controller.set('allOperations', new window.Array());
-      controller.set('executeTasks', new window.Array());
-      controller.set('allOperationsCount', 0);
-
-      var json = generate_test_json();
-
-      it('on start we have 4 tasks  ', function(){
-        controller.updateBackgroundOperations(json);
-        expect(controller.get('allOperationsCount')).to.be.equal(4);
-        expect(controller.get('allOperations').length).to.be.equal(4);
-        expect(controller.get('executeTasks').length).to.be.equal(1);
-      })
-
-      it('first task is in progress  ', function(){
-        update_test_json(json, 2, 'IN_PROGRESS');
-        controller.updateBackgroundOperations(json);
-        expect(controller.get('allOperationsCount')).to.be.equal(4);
-        expect(controller.get('allOperations').length).to.be.equal(4);
-        expect(controller.get('executeTasks').length).to.be.equal(1);
-      });
-
-      it('first task finished  ', function(){
-        update_test_json(json, 2, 'COMPLETED');
-        controller.updateBackgroundOperations(json);
-        expect(controller.get('allOperationsCount')).to.be.equal(3);
-        expect(controller.get('allOperations').length).to.be.equal(3);
-        expect(controller.get('executeTasks').length).to.be.equal(1);
-      });
-
-      it('second task is in progress  ', function(){
-        update_test_json(json, 3, 'IN_PROGRESS');
-        controller.updateBackgroundOperations(json);
-        expect(controller.get('allOperationsCount')).to.be.equal(3);
-        expect(controller.get('allOperations').length).to.be.equal(3);
-        expect(controller.get('executeTasks').length).to.be.equal(1);
-      });
-
-      it('second task finished  ', function(){
-        update_test_json(json, 3, 'COMPLETED');
-        controller.updateBackgroundOperations(json);
-        expect(controller.get('allOperationsCount')).to.be.equal(2);
-        expect(controller.get('allOperations').length).to.be.equal(3);
-        expect(controller.get('executeTasks').length).to.be.equal(1);
-      });
-
-      var oldLifeTime = controller.get('taskLifeTime');
-      controller.set('taskLifeTime', 10);
-
-      it('second task removed from list  ', function(done){
-        setTimeout(function(){
-          controller.updateBackgroundOperations(json);
-          expect(controller.get('allOperationsCount')).to.be.equal(2);
-          expect(controller.get('allOperations').length).to.be.equal(2);
-          expect(controller.get('executeTasks').length).to.be.equal(0);
-
-          done();
-        }, controller.get('taskLifeTime'));
-      });
-
-      it('add new items  ', function(){
-        add_to_test_json(json);
-        controller.updateBackgroundOperations(json);
-        expect(controller.get('allOperationsCount')).to.be.equal(4);
-        expect(controller.get('allOperations').length).to.be.equal(4);
-        expect(controller.get('executeTasks').length).to.be.equal(0);
-        controller.set('taskLifeTime', oldLifeTime);
-      });
-    });
-  });
-
-  describe('#updateFinishedTask  ', function(){
-
-    var json = null;
-
-    beforeEach(function(){
-      controller.set('allOperations', new window.Array());
-      controller.set('executeTasks', new window.Array());
-      controller.set('allOperationsCount', 0);
-
-      json = generate_test_json();
-      controller.updateBackgroundOperations(json);
-    });
-
-    it('update task  ', function(){
-      update_test_json(json, 3, 'COMPLETED');
-      controller.updateFinishedTask(json.items[0].tasks[3]);
-
-      var item = controller.get('allOperations').findProperty('id', 13);
-      expect(item).to.be.an('object');
-      expect(item).to.have.property('status', 'COMPLETED');
-      expect(item.finishedTime).to.be.above(0);
-    })
-
-    it("don't update task  ", function(){
-      controller.updateFinishedTask({ Tasks: { id : 1 } });
-
-      var item = controller.get('allOperations').findProperty('id', 13);
-      expect(item).to.be.an('object');
-      expect(item).to.have.property('status', 'QUEUED');
-      expect(item.finishedTime).to.be.equal(undefined);
-    })
-
-  });
-
-  describe('#eventsArray  ', function(){
-
-    var json = null;
-
-    beforeEach(function(){
-      controller.set('allOperations', new window.Array());
-      controller.set('executeTasks', new window.Array());
-      controller.set('allOperationsCount', 0);
-
-      json = generate_test_json();
-      controller.updateBackgroundOperations(json);
-    });
-
-    it("it's working  ", function(done){
-      controller.get('eventsArray').push({
-        "when" : function(controller){
-          return controller.get('allOperationsCount') == 3;
-        },
-        "do" : done
-      });
-
-      controller.updateBackgroundOperations(json);
-      controller.updateBackgroundOperations(json);
-      controller.updateBackgroundOperations(json);
-      controller.updateBackgroundOperations(json);
-
-      update_test_json(json, 1, 'COMPLETED');
-      controller.updateBackgroundOperations(json);
-    })
-  });
-
+  });*/
 
 })

Modified: incubator/ambari/trunk/ambari-web/test/utils/ajax_test.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/test/utils/ajax_test.js?rev=1466260&r1=1466259&r2=1466260&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/test/utils/ajax_test.js (original)
+++ incubator/ambari/trunk/ambari-web/test/utils/ajax_test.js Tue Apr  9 21:59:21 2013
@@ -20,23 +20,3 @@
  * Here is fix for ajax support
  * @type {*}
  */
-var XMLHttpRequest = xmlhttprequest.XMLHttpRequest;
-var $ = window.$;
-
-$.support.cors = true;
-$.ajaxSettings.xhr = function () {
-  return new XMLHttpRequest();
-}
-
-$.mocho = true;
-$.hostName = testHost;
-
-/*sinon.stub2 = function(object, property, value){
-  var origin = object[property];
-  var count = 0;
-  var newValue = function(){
-    count++;
-    return value.call(this, arguments, origin, count);
-  }
-  sinon.stub(object, property, newValue);
-}*/

Modified: incubator/ambari/trunk/ambari-web/test/utils/validator_test.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/test/utils/validator_test.js?rev=1466260&r1=1466259&r2=1466260&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/test/utils/validator_test.js (original)
+++ incubator/ambari/trunk/ambari-web/test/utils/validator_test.js Tue Apr  9 21:59:21 2013
@@ -203,7 +203,7 @@ describe('validator', function () {
       {m:'"" - invalid',i:'',e:false},
       {m:'"abc123" - valid',i:'abc123',e:true},
       {m:'"1abc123" - invalid',i:'1abc123',e:false},
-      {m:'"abc123$" - valid',i:'abc123$',e:true},
+      {m:'"abc123$" - invalid',i:'abc123$',e:false},
       {m:'"~1abc123" - invalid',i: '~1abc123',e:false},
       {m:'"abc12345679abc1234567890abc1234567890$" - invalid',i:'abc12345679abc1234567890abc1234567890$',e:false},
       {m:'"1abc123$$" - invalid',i:'1abc123$$',e:false},