Mercurial > hg > nginx-tests
annotate stream_unix.t @ 1260:eadd24ccfda1
Tests: postponed startup in certain ssl certificate tests on win32.
At least, some win32 hosts exhibit a round-off error or some such in the
notBefore field of the certificate generated before starting nginx, such
that it can be set to the value one second ahead of the current time.
This manifests in spurious test failures due to certificate verify error
with a failure reason "certificate is not yet valid".
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Tue, 12 Dec 2017 12:53:53 +0300 |
parents | 882267679006 |
children | f3ba4c74de31 |
rev | line source |
---|---|
828
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
2 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
3 # (C) Andrey Zelenkov |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
5 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
6 # Simple tests for stream with unix socket. |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
7 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
8 ############################################################################### |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
9 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
10 use warnings; |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
11 use strict; |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
12 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
13 use Test::More; |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
14 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
16 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
17 use lib 'lib'; |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
18 use Test::Nginx; |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
19 use Test::Nginx::Stream qw/ stream /; |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
20 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
21 ############################################################################### |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
22 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
23 select STDERR; $| = 1; |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
24 select STDOUT; $| = 1; |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
25 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
26 eval { require IO::Socket::UNIX; }; |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
27 plan(skip_all => 'IO::Socket::UNIX not installed') if $@; |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
28 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
29 my $t = Test::Nginx->new()->has(qw/stream unix/)->plan(2); |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
30 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
31 $t->write_file_expand('nginx.conf', <<'EOF'); |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
32 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
33 %%TEST_GLOBALS%% |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
34 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
35 daemon off; |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
36 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
37 events { |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
38 } |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
39 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
40 stream { |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
41 upstream u { |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
42 server unix:%%TESTDIR%%/unix.sock; |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
43 } |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
44 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
45 server { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
46 listen 127.0.0.1:8080; |
828
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
47 proxy_pass unix:%%TESTDIR%%/unix.sock; |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
48 } |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
49 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
50 server { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
51 listen 127.0.0.1:8081; |
828
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
52 proxy_pass u; |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
53 } |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
54 } |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
55 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
56 EOF |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
57 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
58 my $path = $t->testdir() . '/unix.sock'; |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
59 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
60 $t->run_daemon(\&stream_daemon, $path); |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
61 $t->run(); |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
62 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
63 # wait for unix socket to appear |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
64 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
65 for (1 .. 50) { |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
66 last if -S $path; |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
67 select undef, undef, undef, 0.1; |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
68 } |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
69 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
70 ############################################################################### |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
71 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
72 my $str = 'SEE-THIS'; |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
73 |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
74 is(stream('127.0.0.1:' . port(8080))->io($str), $str, 'proxy'); |
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
75 is(stream('127.0.0.1:' . port(8081))->io($str), $str, 'upstream'); |
828
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
76 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
77 ############################################################################### |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
78 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
79 sub stream_daemon { |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
80 my $server = IO::Socket::UNIX->new( |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
81 Proto => 'tcp', |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
82 Local => shift, |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
83 Listen => 5, |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
84 Reuse => 1 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
85 ) |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
86 or die "Can't create listening socket: $!\n"; |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
87 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
88 local $SIG{PIPE} = 'IGNORE'; |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
89 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
90 while (my $client = $server->accept()) { |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
91 $client->autoflush(1); |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
92 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
93 log2c("(new connection $client)"); |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
94 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
95 $client->sysread(my $buffer, 65536) or next; |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
96 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
97 log2i("$client $buffer"); |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
98 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
99 log2o("$client $buffer"); |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
100 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
101 $client->syswrite($buffer); |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
102 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
103 close $client; |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
104 } |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
105 } |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
106 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
107 sub log2i { Test::Nginx::log_core('|| <<', @_); } |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
108 sub log2o { Test::Nginx::log_core('|| >>', @_); } |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
109 sub log2c { Test::Nginx::log_core('||', @_); } |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
110 |
68d5a68eb938
Tests: basic stream tests with unix socket.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
111 ############################################################################### |