[cvp-web] Bugfix:return 500 when upload a tarball file with no results.json 91/47391/4
authorgrakiss <grakiss.wanglei@huawei.com>
Fri, 17 Nov 2017 06:34:15 +0000 (06:34 +0000)
committerLeo wang <grakiss.wanglei@huawei.com>
Mon, 20 Nov 2017 02:35:45 +0000 (02:35 +0000)
JIRA: DOVETAIL-558

The Web portal will return 500 code when upload a tarball file with no results.json
When all test cases failed or report with wrong DB url, there may be no results.json.
Check this and alert users instead of returning 500 status code.

Change-Id: Ie13d9c3c62044c525f5dbb3fca9b6123d0b5acce
Signed-off-by: grakiss <grakiss.wanglei@huawei.com>
cvp/3rd_party/static/testapi-ui/components/application/application.html
cvp/3rd_party/static/testapi-ui/components/results/resultsController.js
cvp/opnfv_testapi/resources/result_handlers.py

index acf8ea3..bb79340 100644 (file)
@@ -159,7 +159,7 @@ urpose. Once we understand more about your product or service, we can determine
         </div>
 </div>
 <div class="Actions">
-        <a class="btn btn-success cvp-btn medium accent-color regular-button" ng-click="ctrl.openConfirmModal()" />submit</a>
+    <button class="btn btn-success cvp-btn" ng-click="ctrl.openConfirmModal()">Submit</button>
 </div>
 <div  class="results-table" style="margin-top:30px;overflow:scroll">
     <table class="table table-striped table-hover">
index 4476618..0b0bbbc 100644 (file)
             $http.post(uploadUrl, fd, {
                 transformRequest: angular.identity,
                 headers: {'Content-Type': undefined}
-            })
-            .success(function(data){
+            }).then(function(data){
+
+                if(data.data.code && data.data.code != 0){
+                    alert(data.data.msg);
+                    return;
+                }
+
                 ctrl.uploadState = "";
-                data.filename = file.name;
+                data.data.filename = file.name;
                 var createTestUrl = testapiApiUrl + "/tests"
-                $http.post(createTestUrl, data)
-                .success(function(data, status){
-                  if (data.code && data.code != 0) {
-                    alert(data.msg);
-                  } else {
-                    ctrl.update();
-                  }
+
+                $http.post(createTestUrl, data.data).then(function(data){
+                    if (data.data.code && data.data.code != 0) {
+                        alert(data.data.msg);
+                    } else {
+                        ctrl.update();
+                    }
+                }, function(error){
                 });
-             })
 
-            .error(function(data, status){
-                ctrl.uploadState = "Upload failed. Error code is " + status;
+             }, function(error){
+                ctrl.uploadState = "Upload failed. Error code is " + error.status;
             });
         }
 
index 8cb9a34..2e65ba4 100644 (file)
@@ -248,7 +248,12 @@ class ResultsUploadHandler(ResultsCLHandler):
         fileinfo = self.request.files['file'][0]
         tar_in = tarfile.open(fileobj=io.BytesIO(fileinfo['body']),
                               mode="r:gz")
-        results = tar_in.extractfile('results/results.json').read()
+        try:
+            results = tar_in.extractfile('results/results.json').read()
+        except KeyError:
+            msg = 'Uploaded results must contain at least one passing test.'
+            self.finish_request({'code': 403, 'msg': msg})
+            return
         results = results.split('\n')
         result_ids = []
         for result in results: