Changeset 1239:4a825ec85c8d in nginx-tests


Ignore:
Timestamp:
11/14/17 18:37:22 (3 days ago)
Author:
Andrey Zelenkov <zelenkov@…>
Branch:
default
rebase_source:
8aeafd7a7cce458616928c6e7a8ccff5502847f3
Message:

Tests: added tests for js_access, js_preread, and js_filter.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • stream_js.t

    r1237 r1239  
    7272        return  $js_addr;
    7373    }
     74
     75    server {
     76        listen      127.0.0.1:8086;
     77        js_access   js_access_allow;
     78        return      'OK';
     79    }
     80
     81    server {
     82        listen      127.0.0.1:8087;
     83        js_access   js_access_deny;
     84        return      'OK';
     85    }
     86
     87    server {
     88        listen      127.0.0.1:8088;
     89        js_preread  js_preread;
     90        proxy_pass  127.0.0.1:8090;
     91    }
     92
     93    server {
     94        listen      127.0.0.1:8089;
     95        js_filter   js_filter;
     96        proxy_pass  127.0.0.1:8090;
     97    }
     98
     99    server {
     100        listen      127.0.0.1:8091;
     101        js_access   js_access_step;
     102        js_preread  js_preread_step;
     103        js_filter   js_filter_step;
     104        proxy_pass  127.0.0.1:8090;
     105    }
    74106}
    75107
     
    92124        sess.log("SEE-THIS");
    93125    }
     126
     127    function js_access_allow(sess) {
     128        if (sess.remoteAddress.match('127.0.0.1')) {
     129            return sess.OK;
     130        }
     131    }
     132
     133    function js_access_deny(sess) {
     134        if (sess.remoteAddress.match('127.0.0.1')) {
     135            return sess.ABORT;
     136        }
     137    }
     138
     139    function js_preread(sess) {
     140        var n = sess.buffer.indexOf('z');
     141        if (n == -1) {
     142            return sess.AGAIN;
     143        }
     144    }
     145
     146    function js_filter(sess) {
     147        if (sess.fromUpstream) {
     148            var n = sess.buffer.search('y');
     149            if (n != -1) {
     150                sess.buffer = 'z';
     151            }
     152            return;
     153        }
     154
     155        n = sess.buffer.search('x');
     156        if (n != -1) {
     157            sess.buffer = 'y';
     158        }
     159    }
     160
     161    var res = '';
     162    function js_access_step(sess) {
     163        res += '1';
     164    }
     165
     166    function js_preread_step(sess) {
     167        res += '2';
     168    }
     169
     170    function js_filter_step(sess) {
     171        if (sess.eof) {
     172            sess.buffer = res;
     173            return;
     174        }
     175        res += '3';
     176    }
    94177EOF
    95178
    96 $t->try_run('no stream njs available')->plan(7);
     179$t->run_daemon(\&stream_daemon, port(8090));
     180$t->try_run('no stream njs available')->plan(12);
     181$t->waitforsocket('127.0.0.1:' . port(8090));
    97182
    98183###############################################################################
     
    107192is(stream('127.0.0.1:' . port(8083))->read(), '', 'stream js unknown function');
    108193is(stream('127.0.0.1:' . port(8084))->read(), 'sess_unk=undefined', 'sess.unk');
     194is(stream('127.0.0.1:' . port(8086))->read(), 'OK', 'js_access allow');
     195is(stream('127.0.0.1:' . port(8087))->read(), '', 'js_access deny');
     196is(stream('127.0.0.1:' . port(8088))->io('xyz'), 'xyz', 'js_preread');
     197is(stream('127.0.0.1:' . port(8089))->io('x'), 'z', 'js_filter');
     198is(stream('127.0.0.1:' . port(8091))->io('0'), '01233', 'handlers order');
    109199
    110200$t->stop();
     
    113203
    114204###############################################################################
     205
     206sub stream_daemon {
     207        my $server = IO::Socket::INET->new(
     208                Proto => 'tcp',
     209                LocalAddr => '127.0.0.1:' . port(8090),
     210                Listen => 5,
     211                Reuse => 1
     212        )
     213                or die "Can't create listening socket: $!\n";
     214
     215        local $SIG{PIPE} = 'IGNORE';
     216
     217        while (my $client = $server->accept()) {
     218                $client->autoflush(1);
     219
     220                log2c("(new connection $client)");
     221
     222                $client->sysread(my $buffer, 65536) or next;
     223
     224                log2i("$client $buffer");
     225
     226                log2o("$client $buffer");
     227
     228                $client->syswrite($buffer);
     229
     230                close $client;
     231        }
     232}
     233
     234sub log2i { Test::Nginx::log_core('|| <<', @_); }
     235sub log2o { Test::Nginx::log_core('|| >>', @_); }
     236sub log2c { Test::Nginx::log_core('||', @_); }
     237
     238###############################################################################
Note: See TracChangeset for help on using the changeset viewer.