瀏覽代碼

Fine-tuning SauceLabs.

Andy Li 10 年之前
父節點
當前提交
40b1dd6bf9
共有 2 個文件被更改,包括 25 次插入9 次删除
  1. 16 4
      tests/RunCi.hx
  2. 9 5
      tests/unit/src/RunSauceLabs.hx

+ 16 - 4
tests/RunCi.hx

@@ -550,16 +550,28 @@ class RunCi {
 					}
 
 					if (Sys.getEnv("TRAVIS_SECURE_ENV_VARS") == "true" && systemName == "Linux") {
-						//https://saucelabs.com/opensource/travis
+						var scVersion = "sc-4.3-linux";
+						runCommand("wget", ['https://saucelabs.com/downloads/${scVersion}.tar.gz'], true);
+						runCommand("tar", ["-xf", '${scVersion}.tar.gz']);
+						
+						//start sauce-connect
+						var scReadyFile = "sauce-connect-ready-" + Std.random(100);
+						var sc = new Process('${scVersion}/bin/sc', [
+							"-i", Sys.getEnv("TRAVIS_JOB_NUMBER"),
+							"-f", scReadyFile
+						]);
+						while(!FileSystem.exists(scReadyFile)) {
+							Sys.sleep(0.5);
+						}
+
 						runCommand("npm", ["install", "wd", "q"], true);
-						runCommand("wget", ["-nv", "https://gist.github.com/santiycr/5139565/raw/sauce_connect_setup.sh"], true);
-						runCommand("chmod", ["a+x", "sauce_connect_setup.sh"]);
-						runCommand("./sauce_connect_setup.sh", []);
 						haxelibInstallGit("dionjwa", "nodejs-std", "master", null, true, "nodejs");
 						runCommand("haxe", ["compile-saucelabs-runner.hxml"]);
 						var server = new Process("nekotools", ["server"]);
 						runCommand("node", ["bin/RunSauceLabs.js", "unit-js.html"]);
+						
 						server.close();
+						sc.close();
 					}
 
 					infoMsg("Test optimization:");

+ 9 - 5
tests/unit/src/RunSauceLabs.hx

@@ -162,7 +162,8 @@ class RunSauceLabs {
 		if (Sys.getEnv("TRAVIS") != null)
 			tags.push("TravisCI");
 
-		var timeout = 30000; //30s
+		var maxDuration = 60 * 5; //5 min
+		var commandTimeout = 30;  //30s
 
 		function testBrowser(caps:Dynamic, trials = 3):Dynamic {
 			console.log('========================================================');
@@ -171,6 +172,9 @@ class RunSauceLabs {
 
 			caps.setField("name", Sys.getEnv("TRAVIS") != null ? Sys.getEnv("TRAVIS_REPO_SLUG") : "haxe");
 			caps.setField("tags", tags);
+			caps.setField("maxDuration", maxDuration);
+			caps.setField("commandTimeout", commandTimeout);
+			caps.setField("avoidProxy", true);
 			if (Sys.getEnv("TRAVIS") != null) {
 				caps.setField("tunnel-identifier", Sys.getEnv("TRAVIS_JOB_NUMBER"));
 				caps.setField("build", Sys.getEnv("TRAVIS_BUILD_NUMBER"));
@@ -185,7 +189,7 @@ class RunSauceLabs {
 					return browser
 						.sauceJobUpdate({ passed: true, tags: tags.concat(["errored"]) })
 						.then(function() return browser.quit())
-						.timeout(timeout)
+						.timeout(commandTimeout * 1000)
 						.fail(onErrored)
 						.then(function() return testBrowser(caps, trials));
 				} else {
@@ -218,7 +222,7 @@ class RunSauceLabs {
 						});
 				})
 				.then(function()
-					return browser.setAsyncScriptTimeout(timeout))
+					return browser.setAsyncScriptTimeout(commandTimeout * 1000))
 				.then(function(){
 					return urls.fold(function(url:String, promise:Promise):Promise {
 						return promise.then(function(){
@@ -229,7 +233,7 @@ class RunSauceLabs {
 									console.log("[debug] waiting for test to exit");
 									return 
 										until("return (typeof window.success === 'boolean');")
-										.timeout(timeout);
+										.timeout(commandTimeout * 1000);
 								})
 								.then(function() {
 									console.log("[debug] test exited");
@@ -252,7 +256,7 @@ class RunSauceLabs {
 											}
 										});
 								})
-								.timeout(60000 * 5); //5 min
+								.timeout(maxDuration * 1000);
 						});
 					}, q());
 				})