ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/t/80_ssltest.t
Revision: 1.10
Committed: Thu Apr 5 06:14:10 2012 UTC (12 years, 3 months ago) by root
Content type: application/x-troff
Branch: MAIN
CVS Tags: rel-7_0, rel-7_04, rel-7_05, rel-7_07, rel-7_01, rel-7_02, rel-7_03, rel-7_08, rel-7_09, rel-7_16, rel-7_15, rel-7_14, rel-7_13, rel-7_12, rel-7_11, HEAD
Changes since 1.9: +45 -29 lines
Log Message:
*** empty log message ***

File Contents

# Content
1 #!/usr/bin/perl
2
3 BEGIN { eval "use Net::SSLeay 1.33 (); 1" or ((print "1..0 # SKIP no usable Net::SSLeay\n"), exit 0) }
4
5 use Test::More tests => 415;
6
7 no warnings;
8 use strict qw(vars subs);
9
10 use AnyEvent::Socket;
11 use AnyEvent::Handle;
12 use AnyEvent::TLS;
13
14 my $ctx = new AnyEvent::TLS cert_file => $0;
15
16 for my $mode (1..5) {
17 ok (1, "mode $mode");
18
19 my $server_done = AnyEvent->condvar;
20 my $client_done = AnyEvent->condvar;
21
22 my $server_port = AnyEvent->condvar;
23
24 tcp_server "127.0.0.1", undef, sub {
25 my ($fh, $host, $port) = @_;
26
27 die unless $host eq "127.0.0.1";
28
29 ok (1, "server_connect $mode");
30
31 my $hd; $hd = new AnyEvent::Handle
32 tls => "accept",
33 tls_ctx => $ctx,
34 fh => $fh,
35 timeout => 8,
36 on_error => sub {
37 ok (0, "server_error <$_[2]>");
38 $server_done->send; undef $hd;
39 },
40 on_eof => sub {
41 ok (1, "server_eof");
42 $server_done->send; undef $hd;
43 };
44
45 if ($mode == 1) {
46 $hd->push_read (line => sub {
47 ok ($_[1] eq "1", "line 1 <$_[1]>");
48 });
49 } elsif ($mode == 2) {
50 $hd->push_write ("2\n");
51 $hd->on_drain (sub {
52 ok (1, "server_drain");
53 $server_done->send; undef $hd;
54 });
55 } elsif ($mode == 3) {
56 $hd->push_read (line => sub {
57 ok ($_[1] eq "3", "line 3 <$_[1]>");
58 $hd->push_write ("4\n");
59 $hd->on_drain (sub {
60 ok (1, "server_drain");
61 $server_done->send; undef $hd;
62 });
63 });
64 } elsif ($mode == 4) {
65 $hd->push_write ("5\n");
66 $hd->push_read (line => sub {
67 ok ($_[1] eq "6", "line 6 <$_[1]>");
68 });
69 } elsif ($mode == 5) {
70 $hd->on_read (sub {
71 ok (1, "on_read");
72 $hd->push_read (line => sub {
73 my $len = $_[1];
74 ok (1, "push_read $len");
75 $hd->push_read (packstring => "N", sub {
76 ok ($len == length $_[1], "block server $len");
77 $hd->push_write ("$len\n");
78 $hd->push_write (packstring => "N", $_[1]);
79 });
80 });
81 });
82 }
83
84 }, sub {
85 $server_port->send ($_[2]);
86 };
87
88 my $hd; $hd = new AnyEvent::Handle
89 connect => ["127.0.0.1", $server_port->recv],
90 tls => "connect",
91 tls_ctx => $ctx,
92 timeout => 8,
93 on_connect => sub {
94 ok (1, "client_connect $mode");
95 },
96 on_error => sub {
97 ok (0, "client_error <$_[2]>");
98 $client_done->send; undef $hd;
99 },
100 on_eof => sub {
101 ok (1, "client_eof");
102 $client_done->send; undef $hd;
103 };
104
105 if ($mode == 1) {
106 $hd->push_write ("1\n");
107 $hd->on_drain (sub {
108 ok (1, "client_drain");
109 $client_done->send; undef $hd;
110 });
111 } elsif ($mode == 2) {
112 $hd->push_read (line => sub {
113 ok ($_[1] eq "2", "line 2 <$_[1]>");
114 });
115 } elsif ($mode == 3) {
116 $hd->push_write ("3\n");
117 $hd->push_read (line => sub {
118 ok ($_[1] eq "4", "line 4 <$_[1]>");
119 });
120 } elsif ($mode == 4) {
121 $hd->push_read (line => sub {
122 ok ($_[1] eq "5", "line 5 <$_[1]>");
123 $hd->push_write ("6\n");
124 $hd->on_drain (sub {
125 ok (1, "client_drain");
126 $client_done->send; undef $hd;
127 });
128 });
129 } elsif ($mode == 5) {
130 # some randomly-sized blocks
131 srand 0;
132 my $cnt = 64;
133 my $block; $block = sub {
134 my $len = (16 << int rand 14) - 16 + int rand 32;
135 ok (1, "write $len");
136 $hd->push_write ("$len\n");
137 $hd->push_write (packstring => "N", "\x00" x $len);
138 };
139
140 for my $i (1..$cnt) {
141 $hd->push_read (line => sub {
142 my ($i, $cnt, $block) = ($i, $cnt, $block); # 5.8.9. bug workaround
143 my $len = $_[1];
144 ok (1, "client block $len/1");
145 $hd->unshift_read (packstring => "N", sub {
146 ok ($len == length $_[1], "client block $len/2");
147
148 if ($i != $cnt) {
149 $block->();
150 } else {
151 ok (1, "client_drain 5");
152 $client_done->send; undef $hd;
153 }
154 });
155 });
156 }
157
158 $block->();
159 }
160
161 $server_done->recv;
162 $client_done->recv;
163 }
164
165 __END__
166 -----BEGIN RSA PRIVATE KEY-----
167 MIIEpAIBAAKCAQEA02VwAqlQzCrPenkxUjawHcXzJreJ9LDhX7Bkg3E/RB6Ilm4D
168 LBeilCmzkY7avp57+WCiVw2qkg+kH4Ef2sd+r10UCGPh/1diLehRAzp3Ho1bixyg
169 w+zkDm79OnN3uHxuKigkAxx3GGz9HhQA83U+RUns+39/OnFh0RY6/f5rV2ziA9jD
170 6HK3Mnsuxocd46YbVdiqlQK430CgiGj8dV44JG6+R6x3r5qXDbbRtGubC29kQOUq
171 kYslbpTo7ml8ShyqAP6qa8BpeSIaNG1CQQ/7JkAdxSWyFHqMQ0HR3BUiaEfUElZt
172 DFgXcCkKB5F8jx+wYoLzlPHHZaUvfP2nueYjcwIDAQABAoIBAQCtRDMuu0ByV5R/
173 Od5nGFP500mcrkrwuBnBqH56DdRhLPWe9sS62xRyhEuePoykOJo8qCvnVlg8J33K
174 JLfLRkBb09qbleKiuyjJn+Tm1IDWFd62gtxyOjQicG41/nZeS/6vpv79XdNvvcUp
175 ZhPxeGN1v0XyTWomqNAX5DSuAl5Q5HxkaRYNeuLZaPYkqmEVTgYqNSes/wRLKUb6
176 MaVrZ9AA/oHJMmmV4evf06s7l7ICjxAWeas7CI6UGkEz8ZFoVRJsLk5xtTsnZLgf
177 f24/pqHz1vApPs7CsJhK2HsLZcxMPD+hmTNI/Njl51WoH8zGhkv+p88vDzybpNSF
178 Hpkl+ZlBAoGBAOyfjVLD0OznJKSFksoCZKS4dlPHgXUb47Qb/XchIySQ/DNO6ff9
179 AA6r6doDFp51A8N1GRtGQN4LKujFPOdZ5ah7zbc2PfuOJGHku0Oby+ydgHJ19eW4
180 s3CIM20TuzLndFPrEGFgOrt+i5qKisti2OOZhjsDwfd48vsBm9U20lUpAoGBAOS1
181 Chm+vA7JevPzl+acbDSiyELaNRAXZ73CX4NIxJURjsgDeOurnBtLQEQyagZbNHcx
182 W4pc59Ql5KDLzu/Sne8oC3pxhaWeIPhc2d3cd/8UyGtQLtN2QnilwkjHgi3x1JGb
183 RPRsgAV6nwn10qUrze1XLkHsTCRI4QYD/k0uXcs7AoGBAMStJaFag2i2Ax4ArG7e
184 KFtFu4yNckwtv0kwTrBbScOWAxp+iDiJASgwunJsSLuylUs8JH8oGLi23ZaWgrXl
185 Yd918BpNqp1Rm2oG3aQndguZKm95Hscvi26Itv39/YYlHeq2omndu1OmrlDowM6m
186 vZIIRKr+x5Vz4brCro09QPxpAoGARJAdghBTEl/Gc2HgdOsJ6VGvlZMS+0r498NQ
187 nOvwuvuzgTTBSG1+9BPAJXGzpUosVVs/pSArA8eEXcwbsnvCixLHNiLYPQlFuw8i
188 5UcV1iul1b4I+63lSYPv1Z+x4BIydqBEsL3iN0JGcVb3mjqilndfT7YGMY6DnykN
189 UJgI2EcCgYAMfZHnD06XFM8ny+NsFILItpGqjCmAhkEPGwl1Zhy5Hx16CFDPDwGt
190 CmIbxNSLsDyiiK+i5tuSUFhV2Bw/iT539979INTIdNL1ughfhATR8MVNiOKCvZBa
191 uoEeE19szmG7Mj2eV2IDH0e8iaikjRFcfN89s39tNn1AjBNmEccUJA==
192 -----END RSA PRIVATE KEY-----
193 -----
194 -----BEGIN CERTIFICATE-----
195 MIIDHTCCAgWgAwIBAgIJAPASTbY2HCx0MA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV
196 BAMTCEFueUV2ZW50MB4XDTEyMDQwNTA1NTk1MFoXDTM3MDQwNTA1NTk1MFowEzER
197 MA8GA1UEAxMIQW55RXZlbnQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
198 AQDTZXACqVDMKs96eTFSNrAdxfMmt4n0sOFfsGSDcT9EHoiWbgMsF6KUKbORjtq+
199 nnv5YKJXDaqSD6QfgR/ax36vXRQIY+H/V2It6FEDOncejVuLHKDD7OQObv06c3e4
200 fG4qKCQDHHcYbP0eFADzdT5FSez7f386cWHRFjr9/mtXbOID2MPocrcyey7Ghx3j
201 phtV2KqVArjfQKCIaPx1Xjgkbr5HrHevmpcNttG0a5sLb2RA5SqRiyVulOjuaXxK
202 HKoA/qprwGl5Iho0bUJBD/smQB3FJbIUeoxDQdHcFSJoR9QSVm0MWBdwKQoHkXyP
203 H7BigvOU8cdlpS98/ae55iNzAgMBAAGjdDByMB0GA1UdDgQWBBTHphJ9Il0PtIWD
204 DI9aueToXo9DYzBDBgNVHSMEPDA6gBTHphJ9Il0PtIWDDI9aueToXo9DY6EXpBUw
205 EzERMA8GA1UEAxMIQW55RXZlbnSCCQDwEk22NhwsdDAMBgNVHRMEBTADAQH/MA0G
206 CSqGSIb3DQEBBQUAA4IBAQA/vY+qg2xjNeOuDySW/VOsStEwcaiAm/t24z3TYoZG
207 2ZzyKuvFXolhXsalCahNPcyUxZqDAekODPRaq+geFaZrOn41cq/LABTKv5Theukv
208 H7IruIFARBo1pTPFCKMnDqESBdHvV1xTOcKGxGH5I9iMgiUrd/NnlAaloT/cCNFI
209 OwhEPsF9kBsZwJBGWrjjVttU2lzMzizS7vaSIWLBuEDObWbSXiU+IdG+nODOe2Dv
210 W7PL43yd4fz4HQvN4IaZrtwkd7XiKodRR1gWjLjW/3y5kuXL+DA/jkTjrRgiH8K7
211 lVjm7gvkULRV2POQqtc2DUVXLubQmmGSjmQmxSwFX65t
212 -----END CERTIFICATE-----