ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/t/handle/04_listen.t
(Generate patch)

Comparing AnyEvent/t/handle/04_listen.t (file contents):
Revision 1.3 by root, Fri May 2 09:04:57 2008 UTC vs.
Revision 1.11 by root, Wed May 21 14:37:55 2008 UTC

1#!/opt/perl/bin/perl 1#!/opt/perl/bin/perl
2 2
3use strict; 3use strict;
4use Test::More tests => 2; 4
5use AnyEvent::Impl::Perl; 5use AnyEvent::Impl::Perl;
6use AnyEvent::Handle;
7use AnyEvent::Util;
6use AnyEvent; 8use AnyEvent;
7use AnyEvent::Socket;
8 9
9my $lbytes; 10my $lbytes;
10my $rbytes; 11my $rbytes;
11 12
13print "1..2\n";
14
12my $cv = AnyEvent->condvar; 15my $cv = AnyEvent->condvar;
13 16
14my $lsock = 17my $hdl;
15 AnyEvent::Socket->new ( 18my $port;
16 Listen => 1,
17 LocalPort => 32391,
18 ReuseAddr => 1,
19 );
20my $ae_sock =
21 AnyEvent::Socket->new (
22 PeerAddr => "127.0.0.1:32391",
23 on_connect => sub {
24 my ($ae_sock, $error) = @_;
25 if ($error) { diag "connection failed: $!"; $cv->broadcast; return }
26 19
27 print "connected to ".$ae_sock->fh->peerhost.":".$ae_sock->fh->peerport."\n"; 20my $w = AnyEvent::Util::tcp_server undef, undef,
21 sub {
22 my ($fh, $host, $port) = @_;
28 23
29 $ae_sock->on_read (sub { 24 $hdl = AnyEvent::Handle->new (fh => $fh, on_eof => sub { $cv->broadcast });
30 my ($ae_sock) = @_;
31 $rbytes = $ae_sock->rbuf;
32 });
33 25
34 $ae_sock->write ("TEST\015\012"); 26 $hdl->push_read_chunk (6, sub {
27 my ($hdl, $data) = @_;
28
29 if ($data eq "TEST\015\012") {
30 print "ok 1 - server received client data\n";
31 } else {
32 print "not ok 1 - server received bad client data\n";
33 }
34
35 $hdl->push_write ("BLABLABLA\015\012");
36 });
37 }, sub {
38 ($port) = Socket::unpack_sockaddr_in getsockname $_[0];
39
40 0
41 };
42
43
44my $clhdl;
45my $wc = AnyEvent::Util::tcp_connect localhost => $port, sub {
46 my ($fh) = @_
47 or die "connect: $!";
48
49 $clhdl = AnyEvent::Handle->new (fh => $fh, on_eof => sub { $cv->broadcast });
50
51 $clhdl->push_write ("TEST\015\012");
52 $clhdl->push_read_line (sub {
53 my ($clhdl, $line) = @_;
54
55 if ($line eq 'BLABLABLA') {
56 print "ok 2 - client received response\n";
57 } else {
58 print "not ok 2 - client received bad response\n";
35 } 59 }
36 );
37 60
38$ae_sock->on_eof (sub { $cv->broadcast }); 61 $cv->broadcast;
39
40$lsock->on_accept (sub {
41 my ($lsock, $cl, $paddr) = @_;
42
43 unless (defined $cl) {
44 diag "accept failed: $!";
45 return;
46 }
47
48 $cl->read (6, sub {
49 my ($cl, $data) = @_;
50 $lbytes = $data;
51 $cl->write ("BLABLABLA\015\012");
52 }); 62 });
53}); 63};
54 64
55$cv->wait; 65$cv->wait;
56
57is ($lbytes, "TEST\015\012", 'listening end received data');
58is ($rbytes, "BLABLABLA\015\012", 'connecting received response');

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines