File tree Expand file tree Collapse file tree 3 files changed +61
-11
lines changed
Expand file tree Collapse file tree 3 files changed +61
-11
lines changed Original file line number Diff line number Diff line change @@ -13,20 +13,23 @@ if (getenv("SKIP_SLOW_TESTS")) {
1313
1414$ JS = <<< EOT
1515var jsfunc = function() {
16- var text = "abcdefghijklmnopqrstuvwyxz0123456789";
16+ var text = "abcdefghijklmnopqrstuvwyxz0123456789"; // 36 bytes
1717 var memory = "";
18- for (var i = 0; i < 100; ++i) {
19- for (var j = 0; j < 10000; ++j) {
18+ // should generate 360 MB
19+ for (var i = 0; i < 10_000; ++i) {
20+ for (var j = 0; j < 1000; ++j) {
2021 memory += text;
21- }
22- sleep(0);
22+ }
23+ sleep(0);
2324 }
25+
26+ return memory;
2427};
2528jsfunc;
2629EOT ;
2730
2831$ v8 = new V8Js ();
29- $ v8 ->setMemoryLimit (10000000 );
32+ $ v8 ->setMemoryLimit (10_000_000 );
3033
3134$ func = $ v8 ->executeString ($ JS );
3235var_dump ($ func );
Original file line number Diff line number Diff line change 1+ --TEST--
2+ Test V8::setMemoryLimit() : Memory limit can be set but does not trigger when not exceeded
3+ --SKIPIF--
4+ <?php
5+ require_once (dirname (__FILE__ ) . '/skipif.inc ' );
6+
7+ if (getenv ("SKIP_SLOW_TESTS " )) {
8+ die ("skip slow test " );
9+ }
10+ ?>
11+ --FILE--
12+ <?php
13+
14+ $ JS = <<< EOT
15+ var jsfunc = function() {
16+ var text = "abcdefghijklmnopqrstuvwyxz0123456789";
17+ var memory = "";
18+ // should generate ~ 800 kB
19+ for (var i = 0; i < 22; ++i) {
20+ for (var j = 0; j < 1000; ++j) {
21+ memory += text;
22+ }
23+ sleep(0);
24+ }
25+ };
26+ jsfunc;
27+ EOT ;
28+
29+ $ v8 = new V8Js ();
30+ $ v8 ->setMemoryLimit (10_000_000 );
31+
32+ $ func = $ v8 ->executeString ($ JS );
33+ var_dump ($ func );
34+
35+ try {
36+ $ func ();
37+ } catch (V8JsMemoryLimitException $ e ) {
38+ print get_class ($ e ); print PHP_EOL ;
39+ print $ e ->getMessage (); print PHP_EOL ;
40+ }
41+ ?>
42+ ===EOF===
43+ --EXPECTF--
44+ object(V8Function)#%d (0) {
45+ }
46+ ===EOF===
Original file line number Diff line number Diff line change @@ -16,11 +16,12 @@ var jsfunc = function() {
1616 PHP.imposeMemoryLimit();
1717 var text = "abcdefghijklmnopqrstuvwyxz0123456789";
1818 var memory = "";
19- for (var i = 0; i < 100; ++i) {
20- for (var j = 0; j < 10000; ++j) {
19+ // should generate 36 MB
20+ for (var i = 0; i < 1000; ++i) {
21+ for (var j = 0; j < 1000; ++j) {
2122 memory += text;
22- }
23- sleep(0);
23+ }
24+ sleep(0);
2425 }
2526};
2627jsfunc;
2930$ v8 = new V8Js ();
3031
3132$ v8 ->imposeMemoryLimit = function () use ($ v8 ) {
32- $ v8 ->setMemoryLimit (10000000 );
33+ $ v8 ->setMemoryLimit (10_000_000 );
3334};
3435
3536$ func = $ v8 ->executeString ($ JS );
You can’t perform that action at this time.
0 commit comments