sebastien пре 7 година
родитељ
комит
aadcbddf3a
1 измењених фајлова са 44 додато и 23 уклоњено
  1. 44 23
      tests/validation/validation.js

+ 44 - 23
tests/validation/validation.js

@@ -229,33 +229,54 @@ function runTest(index, done) {
 
         var snippetUrl = "//babylonjs-api2.azurewebsites.net/snippets";
         var pgRoot = "/Playground"
-        var xmlHttp = new XMLHttpRequest();
-        xmlHttp.onreadystatechange = function () {
-            if (xmlHttp.readyState === 4) {
-                try {
-                    xmlHttp.onreadystatechange = null;
-                    var snippet = JSON.parse(xmlHttp.responseText)[0];
-                    var code = JSON.parse(snippet.jsonPayload).code.toString();
-                    code = code.replace(/\/textures\//g, pgRoot + "/textures/");
-                    code = code.replace(/"textures\//g, "\"" + pgRoot + "/textures/");
-                    code = code.replace(/\/scenes\//g, pgRoot + "/scenes/");
-                    code = code.replace(/"scenes\//g, "\"" + pgRoot + "/scenes/");
-                    currentScene = eval(code + "\r\ncreateScene(engine)");
-                    processCurrentScene(test, resultCanvas, result, renderImage, index, waitRing, done);
-                }
-                catch (e) {
-                    console.error(e);
-                    done(false);
-                }
+
+        var retryTime = 30*1000;
+        var maxRetry = 3;
+        var retry = 0;
+
+        var onError = function() {
+            retry++;
+            if (retry < maxRetry) {
+                setTimeout(function() {
+                    loadPG();
+                }, retryTime);
+            }
+            else {
+                done(false);
             }
         }
-        xmlHttp.onerror = function () {
-            console.error("Network error during test load.");
-            done(false);
+
+        var loadPG = function() {
+            var xmlHttp = new XMLHttpRequest();
+            xmlHttp.onreadystatechange = function () {
+                if (xmlHttp.readyState === 4) {
+                    try {
+                        xmlHttp.onreadystatechange = null;
+                        var snippet = JSON.parse(xmlHttp.responseText)[0];
+                        var code = JSON.parse(snippet.jsonPayload).code.toString();
+                        code = code.replace(/\/textures\//g, pgRoot + "/textures/");
+                        code = code.replace(/"textures\//g, "\"" + pgRoot + "/textures/");
+                        code = code.replace(/\/scenes\//g, pgRoot + "/scenes/");
+                        code = code.replace(/"scenes\//g, "\"" + pgRoot + "/scenes/");
+                        currentScene = eval(code + "\r\ncreateScene(engine)");
+                        processCurrentScene(test, resultCanvas, result, renderImage, index, waitRing, done);
+                    }
+                    catch (e) {
+                        console.error(e);
+                        onError();
+                    }
+                }
+            }
+            xmlHttp.onerror = function () {
+                console.error("Network error during test load.");
+                onError();
+            }
+
+            xmlHttp.open("GET", snippetUrl + test.playgroundId.replace(/#/g, "/"));
+            xmlHttp.send();
         }
 
-        xmlHttp.open("GET", snippetUrl + test.playgroundId.replace(/#/g, "/"));
-        xmlHttp.send();
+        loadPG();
     } else {
         // Fix references
         if (test.specificRoot) {