-
Notifications
You must be signed in to change notification settings - Fork 166
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Tests: splitting js_periodic tests into multiple files.
- Loading branch information
Showing
6 changed files
with
582 additions
and
187 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,138 @@ | ||
#!/usr/bin/perl | ||
|
||
# (C) Dmitry Volyntsev | ||
# (C) Nginx, Inc. | ||
|
||
# Tests for js_periodic directive. | ||
|
||
############################################################################### | ||
|
||
use warnings; | ||
use strict; | ||
|
||
use Test::More; | ||
use Socket qw/ CRLF /; | ||
|
||
BEGIN { use FindBin; chdir($FindBin::Bin); } | ||
|
||
use lib 'lib'; | ||
use Test::Nginx; | ||
|
||
############################################################################### | ||
|
||
select STDERR; $| = 1; | ||
select STDOUT; $| = 1; | ||
|
||
my $t = Test::Nginx->new()->has(qw/http rewrite/) | ||
->write_file_expand('nginx.conf', <<'EOF'); | ||
%%TEST_GLOBALS%% | ||
daemon off; | ||
worker_processes 4; | ||
events { | ||
} | ||
worker_shutdown_timeout 100ms; | ||
http { | ||
%%TEST_GLOBALS_HTTP%% | ||
js_import test.js; | ||
js_shared_dict_zone zone=strings:32k; | ||
server { | ||
listen 127.0.0.1:8080; | ||
server_name localhost; | ||
location @periodic { | ||
js_periodic test.fetch interval=40ms; | ||
js_periodic test.multiple_fetches interval=1s; | ||
js_periodic test.fetch_exception interval=1s; | ||
} | ||
location /engine { | ||
js_content test.engine; | ||
} | ||
location /fetch_ok { | ||
return 200 'ok'; | ||
} | ||
location /fetch_foo { | ||
return 200 'foo'; | ||
} | ||
location /test_fetch { | ||
js_content test.test_fetch; | ||
} | ||
location /test_multiple_fetches { | ||
js_content test.test_multiple_fetches; | ||
} | ||
} | ||
} | ||
EOF | ||
|
||
my $p0 = port(8080); | ||
|
||
$t->write_file('test.js', <<EOF); | ||
function engine(r) { | ||
r.return(200, njs.engine); | ||
} | ||
async function fetch() { | ||
let reply = await ngx.fetch('http://127.0.0.1:$p0/fetch_ok'); | ||
let body = await reply.text(); | ||
let v = ngx.shared.strings.get('fetch') || ''; | ||
ngx.shared.strings.set('fetch', v + body); | ||
} | ||
async function multiple_fetches() { | ||
let reply = await ngx.fetch('http://127.0.0.1:$p0/fetch_ok'); | ||
let reply2 = await ngx.fetch('http://127.0.0.1:$p0/fetch_foo'); | ||
let body = await reply.text(); | ||
let body2 = await reply2.text(); | ||
ngx.shared.strings.set('multiple_fetches', body + '\@' + body2); | ||
} | ||
async function fetch_exception() { | ||
let reply = await ngx.fetch('garbage'); | ||
} | ||
function test_fetch(r) { | ||
r.return(200, ngx.shared.strings.get('fetch').startsWith('okok')); | ||
} | ||
function test_multiple_fetches(r) { | ||
r.return(200, ngx.shared.strings.get('multiple_fetches') | ||
.startsWith('ok\@foo')); | ||
} | ||
export default { fetch, fetch_exception, multiple_fetches, test_fetch, | ||
test_multiple_fetches, engine }; | ||
EOF | ||
|
||
$t->try_run('no js_periodic with fetch'); | ||
|
||
plan(skip_all => 'not yet') if http_get('/engine') =~ /QuickJS$/m; | ||
|
||
$t->plan(3); | ||
|
||
############################################################################### | ||
|
||
select undef, undef, undef, 0.1; | ||
|
||
like(http_get('/test_fetch'), qr/true/, 'periodic fetch test'); | ||
like(http_get('/test_multiple_fetches'), qr/true/, 'multiple fetch test'); | ||
|
||
$t->stop(); | ||
|
||
unlike($t->read_file('error.log'), qr/\[error\].*should not be seen/, | ||
'check for not discadred events'); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
#!/usr/bin/perl | ||
|
||
# (C) Dmitry Volyntsev | ||
# (C) Nginx, Inc. | ||
|
||
# Tests for js_periodic directive. | ||
|
||
############################################################################### | ||
|
||
use warnings; | ||
use strict; | ||
|
||
use Test::More; | ||
use Socket qw/ CRLF /; | ||
|
||
BEGIN { use FindBin; chdir($FindBin::Bin); } | ||
|
||
use lib 'lib'; | ||
use Test::Nginx; | ||
|
||
############################################################################### | ||
|
||
select STDERR; $| = 1; | ||
select STDOUT; $| = 1; | ||
|
||
my $t = Test::Nginx->new()->has(qw/http rewrite/) | ||
->write_file_expand('nginx.conf', <<'EOF'); | ||
%%TEST_GLOBALS%% | ||
daemon off; | ||
worker_processes 4; | ||
events { | ||
} | ||
worker_shutdown_timeout 100ms; | ||
http { | ||
%%TEST_GLOBALS_HTTP%% | ||
js_import test.js; | ||
server { | ||
listen 127.0.0.1:8080; | ||
server_name localhost; | ||
location @periodic { | ||
js_periodic test.file interval=1s; | ||
} | ||
location /test_file { | ||
js_content test.test_file; | ||
} | ||
} | ||
} | ||
EOF | ||
|
||
$t->write_file('test.js', <<EOF); | ||
import fs from 'fs'; | ||
async function file() { | ||
let fh = await fs.promises.open(ngx.conf_prefix + 'file', 'a+'); | ||
await fh.write('abc'); | ||
await fh.close(); | ||
} | ||
function test_file(r) { | ||
r.return(200, | ||
fs.readFileSync(ngx.conf_prefix + 'file').toString() == 'abc'); | ||
} | ||
export default { file, test_file }; | ||
EOF | ||
|
||
$t->try_run('no js_periodic with fs support'); | ||
|
||
$t->plan(2); | ||
|
||
############################################################################### | ||
|
||
select undef, undef, undef, 0.1; | ||
|
||
like(http_get('/test_file'), qr/true/, 'file test'); | ||
|
||
$t->stop(); | ||
|
||
unlike($t->read_file('error.log'), qr/\[error\].*should not be seen/, | ||
'check for not discadred events'); |
Oops, something went wrong.