File tree 3 files changed +64
-12
lines changed
3 files changed +64
-12
lines changed Original file line number Diff line number Diff line change @@ -13,20 +13,23 @@ if (getenv("SKIP_SLOW_TESTS")) {
13
13
14
14
$ JS = <<< EOT
15
15
var jsfunc = function() {
16
- var text = "abcdefghijklmnopqrstuvwyxz0123456789";
16
+ var text = "abcdefghijklmnopqrstuvwyxz0123456789"; // 36 bytes
17
17
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) {
20
21
memory += text;
21
- }
22
- sleep(0);
22
+ }
23
+ sleep(0);
23
24
}
25
+
26
+ return memory;
24
27
};
25
28
jsfunc;
26
29
EOT ;
27
30
28
31
$ v8 = new V8Js ();
29
- $ v8 ->setMemoryLimit (10000000 );
32
+ $ v8 ->setMemoryLimit (10_000_000 );
30
33
31
34
$ func = $ v8 ->executeString ($ JS );
32
35
var_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 @@ -14,22 +14,25 @@ if (getenv("SKIP_SLOW_TESTS")) {
14
14
$ JS = <<< EOT
15
15
var jsfunc = function() {
16
16
PHP.imposeMemoryLimit();
17
- var text = "abcdefghijklmnopqrstuvwyxz0123456789";
17
+ var text = "abcdefghijklmnopqrstuvwyxz0123456789"; // 36 bytes
18
18
var memory = "";
19
- for (var i = 0; i < 100; ++i) {
20
- for (var j = 0; j < 10000; ++j) {
19
+ // should generate 360 MB
20
+ for (var i = 0; i < 10_000; ++i) {
21
+ for (var j = 0; j < 1000; ++j) {
21
22
memory += text;
22
- }
23
- sleep(0);
23
+ }
24
+ sleep(0);
24
25
}
26
+
27
+ return memory;
25
28
};
26
29
jsfunc;
27
30
EOT ;
28
31
29
32
$ v8 = new V8Js ();
30
33
31
34
$ v8 ->imposeMemoryLimit = function () use ($ v8 ) {
32
- $ v8 ->setMemoryLimit (10000000 );
35
+ $ v8 ->setMemoryLimit (10_000_000 );
33
36
};
34
37
35
38
$ func = $ v8 ->executeString ($ JS );
You can’t perform that action at this time.
0 commit comments