2 # common code for forked socket tests
12 use Test::More tests => 7 ;
21 my ( $ssl_client_args, $ssl_server_args ) = @_ ;
23 my ( @ssl_client_args, @ssl_server_args ) ;
25 if ( @{$ssl_client_args} ) {
27 @ssl_client_args = ( 'ssl_args' => $ssl_client_args ) ;
28 @ssl_server_args = ( 'ssl_args' => $ssl_server_args ) ;
32 if ( $pid = fork() ) {
36 $self->{'pid'} = $pid ;
40 #print "SSL @ssl_client_args\n" ;
42 my $connect_sock = Stem::Socket->new(
49 die $connect_sock unless ref $connect_sock ;
51 ok( 1, 'created connect event' ) ;
52 $self->{'connect_sock'} = $connect_sock ;
56 my $listen_sock = Stem::Socket->new(
60 'method' => 'accepted',
64 die $listen_sock unless ref $listen_sock ;
65 $self->{'listen_sock'} = $listen_sock ;
68 Stem::Event::start_loop() ;
70 ok( 1, 'event loop exit' ) ;
75 my( $self, $client_sock ) = @_ ;
77 #print "CLIENT [$client_sock]\n" ;
79 ok( 1, 'connected' ) ;
81 $self->{'client_sock'} = $client_sock ;
83 my $wcnt = $client_sock->syswrite( $data ) ;
85 #print "WCNT [$wcnt] $!\n" ;
87 my $client_read_event = Stem::Event::Read->new(
90 'method' => 'client_readable',
93 ok( $client_read_event, 'created client read event' ) ;
95 $self->{'client_read_event'} = $client_read_event ;
102 ok( 1, 'client readable' ) ;
106 my $client_sock = $self->{'client_sock'} ;
108 my $cnt = $client_sock->sysread( $buf, 100 ) ;
110 is( $buf, "[$data]", 'client read data' ) ;
112 #print "CLIENT READ $cnt [$buf]\n" ;
114 $self->{'connect_sock'}->shut_down() ;
115 $self->{'client_read_event'}->cancel() ;
120 my( $self, $accepted_sock ) = @_ ;
122 $self->{'accepted_sock'} = $accepted_sock ;
124 $self->{'listen_sock'}->shut_down() ;
126 my $server_read_event = Stem::Event::Read->new(
128 'fh' => $accepted_sock,
129 'method' => 'server_readable',
132 $self->{'server_read_event'} = $server_read_event ;
135 sub server_readable {
139 my $accepted_sock = $self->{'accepted_sock'} ;
141 my $cnt = $accepted_sock->sysread( my $buf, 100 ) ;
143 $accepted_sock->syswrite( "[$buf]" ) ;