|
1 | 1 | use common::sense; |
2 | 2 |
|
3 | | -use Test::More tests => 49; |
| 3 | +use Test::More tests => 5; |
4 | 4 | use IPC::Run qw(start); |
5 | 5 |
|
6 | | -my $tor2web = |
7 | | - start( [ '/bin/sh', 't/bin/tor2web', '-c', 't/etc/conf/test.conf' ], undef, |
8 | | - '>&2' ); |
| 6 | +my $tor2web = start( [ '/bin/bash', 't/bin/tor2web', |
| 7 | + '-c', 't/etc/conf/test.conf' ], undef, '>&2' ); |
9 | 8 |
|
10 | 9 | use IO::Socket::SSL; |
11 | 10 |
|
12 | 11 | # create a connecting socket |
13 | | -my @sockets; |
14 | | -for ( 1 .. 3 ) { |
| 12 | +my $socket; |
15 | 13 | my $ctr = 0; |
16 | 14 | do { |
17 | | - diag "Connection $_ try $ctr: $!" |
| 15 | + diag "Connection attempt $ctr: $!" |
18 | 16 | if ( $ctr != 0 ); |
19 | | - sleep( ( $_ == 1 && $ctr == 0 ) * 20 + $ctr ); |
20 | | - $sockets[$_] = new IO::Socket::SSL( |
| 17 | + sleep( ( $ctr == 0 ) * 2 + $ctr ); |
| 18 | + $socket = new IO::Socket::SSL( |
21 | 19 | PeerHost => '127.0.0.1', |
22 | 20 | PeerPort => '8444', |
23 | 21 | Proto => 'tcp', |
24 | 22 | SSL_hostname => 'test.onion.test', |
25 | 23 | SSL_fingerprint => 'sha256$D3:F7:0F:F4:57:B5:24:E2:0C:95:2E:17:A8:39:6E:A2:24:FB:F0:8A:A9:4A:7B:48:E6:AE:C3:3A:05:A0:61:55', |
26 | 24 | ); |
27 | | - } while ( !$sockets[$_] |
28 | | - && $_ == 1 |
| 25 | + } while ( !$socket |
29 | 26 | && $! == $!{ECONNREFUSED} |
30 | 27 | && $ctr++ < 4 ); |
31 | | - unless ( $sockets[$_] ) { |
32 | | - fail "$_: $ctr: cannot connect to the server $!\n"; |
| 28 | + unless ( $socket ) { |
| 29 | + fail "Cannot connect to the server $!"; |
33 | 30 | $tor2web->kill_kill; |
34 | 31 | die; |
35 | 32 | } |
36 | | - pass "$_: connected to the server"; |
37 | | -} |
| 33 | + pass 'Connected to the server'; |
38 | 34 |
|
39 | 35 | my $response = ""; |
40 | 36 | sleep 3; |
41 | 37 |
|
42 | | -$sockets[2]->autoflush(1); |
43 | | -is $sockets[2]->send("wall Hello World!"), 17, 'wall msg began'; |
| 38 | +$socket->autoflush(1); |
44 | 39 |
|
45 | | -# data to send to a server |
46 | | -$sockets[1]->autoflush(1); |
47 | | -is $sockets[1]->send("wall Hello World!\n"), 18, 'wall msg sent'; |
48 | | -$sockets[2]->recv( $response, 28 ); |
49 | | -is $response, "211 wall: Hello World!\r\n", 'wall msg recv'; |
50 | | -$sockets[3]->recv( $response, 28 ); |
51 | | -is $response, "211 wall: Hello World!\r\n", 'wall msg recv again'; |
52 | | - |
53 | | -$sockets[3]->autoflush(1); |
54 | | -is $sockets[3]->send("next Hello World!\n"), 18, 'next msg sent'; |
55 | | -$sockets[1]->recv( $response, 28 ); |
56 | | -is $response, "211 prev: Hello World!\r\n", 'next msg recv'; |
57 | | - |
58 | | -is $sockets[1]->send("prev Hello World!\n"), 18, 'prev msg sent'; |
59 | | -$sockets[3]->recv( $response, 28 ); |
60 | | -is $response, "211 next: Hello World!\r\n", 'prev msg recv'; |
61 | | - |
62 | | -is $sockets[3]->send("ping Hello World!\n"), 18, 'echo msg sent'; |
63 | | -$sockets[3]->recv( $response, 28 ); |
| 40 | +is $socket->send("get ping HTTP/1.0\r\n\r\n"), 18, 'echo msg sent'; |
| 41 | +$socket->recv( $response, 28 ); |
64 | 42 | is $response, "211 pong: Hello World!\r\n", 'echo msg recv'; |
65 | 43 |
|
66 | | -is $sockets[1]->send("bad Hello World!\n"), 17, 'bad msg sent'; |
67 | | -$sockets[1]->recv( $response, 53 ); |
68 | | -is $response, "502 Bad command or it is not implemented here.\r\n", |
69 | | - 'bad msg recv'; |
70 | | - |
71 | | -$sockets[1]->blocking(0); |
72 | | -$sockets[1]->recv( $response, 28 ); |
73 | | -$sockets[1]->blocking(1); |
74 | | -cmp_ok $!, '==', $!{EWOULDBLOCK}, 'recv would block'; |
75 | | -is $response, "", 'recv string empty'; |
76 | | -$sockets[3]->blocking(0); |
77 | | -$sockets[3]->recv( $response, 28 ); |
78 | | -$sockets[3]->blocking(1); |
79 | | -cmp_ok $!, '==', $!{EWOULDBLOCK}, 'recv would block again'; |
80 | | -is $response, "", 'recv string empty again'; |
81 | | - |
82 | | -is $sockets[2]->send("\n"), 1, 'wall msg sent'; |
83 | | -$sockets[1]->recv( $response, 28 ); |
84 | | -is $response, "211 wall: Hello World!\r\n", 'wall msg recv'; |
85 | | -$sockets[3]->recv( $response, 28 ); |
86 | | -is $response, "211 wall: Hello World!\r\n", 'wall msg recv'; |
87 | | - |
88 | | -is $sockets[1]->send("listen 8AAAA\n"), 13, 'listen 0xF0 sent'; |
89 | | -$sockets[1]->recv( $response, 128 ); |
90 | | -warn $response; |
91 | | -is $sockets[3]->send("send 8AAAA test12\n"), 18, 'send msg to 0xF0'; |
92 | | -$sockets[1]->recv( $response, 28 ); |
93 | | -is $response, "211 send: 8AAAA test12\r\n", 'channel 0xF0 msg recv'; |
94 | | - |
95 | | -is $sockets[2]->send("listen 8AAADw\n"), 14, 'listen 0xF000000F sent'; |
96 | | -$sockets[2]->recv( $response, 128 ); |
97 | | -warn $response; |
98 | | -is $sockets[1]->send("send 8AAADw test1\n"), 18, 'send msg to 0xF000000F'; |
99 | | -$sockets[2]->recv( $response, 28 ); |
100 | | -is $response, "211 send: 8AAADw test1\r\n", 'channel 0xF000000F msg recv'; |
101 | | - |
102 | | -# 1483250400 Sun Jan 1 00:00:00 CST 2017 |
103 | | -# 1485962931 - 1483250400 = 2712531 |
104 | | -is $sockets[1]->send("store ok 3 2712531 ::1 4458 dat hi\n"), 35, 'store long msg sent'; |
105 | | -$sockets[1]->recv( $response, 4096 ); |
106 | | -is $response, "504 Too many parameters.\r\n", 'store ok msg recv'; |
107 | | - |
108 | | -is $sockets[1]->send("store ok 3 2712531 ::1\n"), 23, 'store short msg sent'; |
109 | | -$sockets[1]->recv( $response, 4096 ); |
110 | | -is $response, "501 Too few parameters.\r\n", 'store ok msg recv'; |
111 | | - |
112 | | -is $sockets[1]->send("store ok hi 2712531 ::1 4458\n"), 29, 'store rating msg sent'; |
113 | | -$sockets[1]->recv( $response, 4096 ); |
114 | | -is $response, "501 Invalid rating.\r\n", 'store rating msg recv'; |
115 | | - |
116 | | -is $sockets[1]->send("store ok 3 hi ::1 4458\n"), 23, 'store time msg sent'; |
117 | | -$sockets[1]->recv( $response, 4096 ); |
118 | | -is $response, "501 Invalid time.\r\n", 'store time msg recv'; |
119 | | - |
120 | | -is $sockets[1]->send("store ok 3 2712531 hi 4458\n"), 27, 'store address msg sent'; |
121 | | -$sockets[1]->recv( $response, 4096 ); |
122 | | -is $response, "501 Invalid network address.\r\n", 'store address msg recv'; |
123 | | - |
124 | | -is $sockets[1]->send("store ok 3 2712531 ::1 hi\n"), 26, 'store port msg sent'; |
125 | | -$sockets[1]->recv( $response, 4096 ); |
126 | | -is $response, "501 Invalid port.\r\n", 'store port msg recv'; |
127 | | - |
128 | | -is $sockets[1]->send("store ok 3 2712531 ::1 4458 word\n"), 33, 'store good msg sent'; |
129 | | -$sockets[1]->recv( $response, 4096 ); |
130 | | -is $response, "220 Saved word\r\n", 'store good msg recv'; |
131 | | - |
132 | | -is $sockets[1]->send("load ok\n"), 8, 'load msg sent'; |
133 | | -$sockets[1]->recv( $response, 4096 ); |
134 | | -is $response, "220 ok is 3 2712531 ::1 4458 word\r\n", 'load msg recv'; |
135 | | - |
136 | | -is $sockets[2]->send("quit\r\n"), 6, 'sent quit'; |
137 | | - |
138 | | -ok $sockets[$_]->close(), "$_: closed" for ( 1 .. 3 ); |
| 44 | +ok $socket->close(), 'closed'; |
139 | 45 |
|
140 | 46 | $tor2web->finish(); |
141 | 47 | is $tor2web->result(0), 0, 'valgrind ok'; |
|
0 commit comments