瀏覽代碼

Make time limit tests pass more safely

Stefan Siegl 10 年之前
父節點
當前提交
0004626015
共有 2 個文件被更改,包括 16 次插入5 次删除
  1. 7 2
      tests/set_time_limit_002.phpt
  2. 9 3
      tests/set_time_limit_004.phpt

+ 7 - 2
tests/set_time_limit_002.phpt

@@ -8,8 +8,12 @@ Test V8::setTimeLimit() : Time limit can be changed
 $JS = <<< EOT
 var jsfunc = function() {
     PHP.incrTimeLimit();
+    var start = (new Date()).getTime();
+
     var text = "abcdefghijklmnopqrstuvwyxz0123456789";
-    for (var i = 0; i < 10000000; ++i) {
+    while ((new Date()).getTime() - start < 150) {
+        /* pass at least 150ms in the loop so the timer loop has plenty of
+         * time to trigger. */
 	var encoded = encodeURI(text);
     }
 };
@@ -17,7 +21,8 @@ jsfunc;
 EOT;
 
 $v8 = new V8Js();
-$v8->setTimeLimit(10);
+/* Set very short time limit, but enough so v8 can start up safely. */
+$v8->setTimeLimit(20);
 
 $v8->incrTimeLimit = function() use ($v8) {
     $v8->setTimeLimit(100);

+ 9 - 3
tests/set_time_limit_004.phpt

@@ -7,10 +7,16 @@ Test V8::setTimeLimit() : Time limit can be prolonged
 
 $JS = <<< EOT
 var text = "abcdefghijklmnopqrstuvwyxz0123456789";
-for (var j = 0; j < 100; ++j) {
+/* Spend 20 * >10ms in the loop, i.e. at least 200ms; hence
+ * it should be killed if prolonging doesn't work. */
+for (var j = 0; j < 20; ++j) {
     PHP.prolongTimeLimit();
-    for (var i = 0; i < 3000; ++i) {
-	var encoded = encodeURI(text);
+    var start = (new Date()).getTime();
+    var encoded = encodeURI(text);
+
+    while ((new Date()).getTime() - start < 10) {
+        /* pass about 10ms in the loop, then prolong */
+        var encoded = encodeURI(text);
     }
 }
 EOT;