Hardcoded QuickJS directives run these tests in the default njs pass
and conflict with CI engine injection. Probe the selected engine and
skip the QuickJS-specific checks when njs is active.
Check both HTTP and stream engines for the GC test. Use an isolated
probe module for the redirect test so probing does not change the
source and destination visit counters.
http {
%%TEST_GLOBALS_HTTP%%
http {
%%TEST_GLOBALS_HTTP%%
js_context_reuse 4;
js_context_reuse_max_size 64m;
js_context_reuse 4;
js_context_reuse_max_size 64m;
listen 127.0.0.1:8080;
server_name localhost;
listen 127.0.0.1:8080;
server_name localhost;
+ location = /engine {
+ js_context_reuse 0;
+ js_import test from engine.js;
+ js_content test.engine;
+ }
+
location = /source {
js_import handler from source.js;
js_content handler.content;
location = /source {
js_import handler from source.js;
js_content handler.content;
+$t->write_file('engine.js', <<'EOF');
+ function engine(r) {
+ r.return(200, njs.engine);
+ }
+
+ export default {engine};
+EOF
+
$t->write_file('source.js', <<'EOF');
let visits = 0;
$t->write_file('source.js', <<'EOF');
let visits = 0;
-$t->try_run('no njs available')->plan(4);
+$t->try_run('no njs available');
+plan(skip_all => 'QuickJS-specific context reuse tests')
+ if http_get('/engine') =~ /njs$/m;
+$t->plan(4);
###############################################################################
###############################################################################
http {
%%TEST_GLOBALS_HTTP%%
http {
%%TEST_GLOBALS_HTTP%%
js_import test.js;
server {
listen 127.0.0.1:8080;
server_name localhost;
js_import test.js;
server {
listen 127.0.0.1:8080;
server_name localhost;
+ location /engine {
+ js_content test.engine;
+ }
+
location /reuse {
js_context_reuse 1;
js_content test.reuse;
location /reuse {
js_context_reuse 1;
js_content test.reuse;
$t->write_file('test.js', <<EOF);
var retained;
$t->write_file('test.js', <<EOF);
var retained;
+ function engine(r) {
+ r.return(200, njs.engine);
+ }
+
async function reuse(r) {
var result = 'ok';
async function reuse(r) {
var result = 'ok';
- export default {reuse, no_reuse};
+ export default {reuse, no_reuse, engine};
-$t->try_run('no QuickJS support')->plan(11);
+$t->try_run('no njs available');
+plan(skip_all => 'QuickJS-specific lifetime tests')
+ if http_get('/engine') =~ /njs$/m;
+$t->plan(11);
###############################################################################
###############################################################################
http {
%%TEST_GLOBALS_HTTP%%
http {
%%TEST_GLOBALS_HTTP%%
js_context_reuse 0;
js_import test.js;
js_context_reuse 0;
js_import test.js;
listen 127.0.0.1:8080;
server_name localhost;
listen 127.0.0.1:8080;
server_name localhost;
+ location /engine {
+ js_content test.engine;
+ }
+
location /cycle {
js_content test.http_cycle;
}
location /cycle {
js_content test.http_cycle;
}
stream {
%%TEST_GLOBALS_STREAM%%
stream {
%%TEST_GLOBALS_STREAM%%
js_context_reuse 0;
js_import test.js;
js_context_reuse 0;
js_import test.js;
js_preread test.stream_cycle;
return OK;
}
js_preread test.stream_cycle;
return OK;
}
+
+ server {
+ listen 127.0.0.1:8082;
+ js_set $engine test.engine_name;
+ return $engine;
+ }
}
EOF
$t->write_file('test.js', <<'EOF');
}
EOF
$t->write_file('test.js', <<'EOF');
+ function engine(r) {
+ r.return(200, njs.engine);
+ }
+
+ function engine_name() {
+ return njs.engine;
+ }
+
function http_cycle(r) {
r.args.request = r;
r.return(200, 'ok');
function http_cycle(r) {
r.args.request = r;
r.return(200, 'ok');
- export default {http_cycle, request_body_cycle, response_body_cycle,
+ export default {engine, engine_name, http_cycle,
+ request_body_cycle, response_body_cycle,
-$t->try_run('no QuickJS support')->plan(4);
+$t->try_run('no njs available');
+plan(skip_all => 'QuickJS-specific GC tests')
+ if http_get('/engine') =~ /njs$/m
+ || stream('127.0.0.1:' . port(8082))->read() =~ /njs$/;
+$t->plan(4);
###############################################################################
###############################################################################