Skip to content

Commit b96d107

Browse files
committed
Move example client into a test case
1 parent 6f3ae51 commit b96d107

File tree

2 files changed

+89
-53
lines changed

2 files changed

+89
-53
lines changed

examples/ssl.php

Lines changed: 0 additions & 53 deletions
This file was deleted.

tests/SecureConnectorTest.php

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
<?php
2+
3+
namespace React\Tests\SocketClient;
4+
5+
use React\EventLoop\Factory as LoopFactory;
6+
use React\Socket\Server;
7+
use React\Dns\Resolver\Factory as DnsFactory;
8+
use React\SocketClient\Connector;
9+
use React\SocketClient\SecureConnector;
10+
use React\Stream\Stream;
11+
use React\EventLoop\LoopInterface;
12+
use React\Promise\PromiseInterface;
13+
14+
class SecureConnectorTest extends TestCase
15+
{
16+
public function testA()
17+
{
18+
$loop = LoopFactory::create();
19+
20+
$receivedServer = '';
21+
$receivedClient = '';
22+
$connected = 0;
23+
24+
$server = new Server($loop);
25+
$server->on('connection', function (Stream $stream) use (&$receivedServer, &$connected) {
26+
$connected++;
27+
28+
// $stream->pipe($stream);
29+
$stream->on('data', function ($data) use ($stream, &$receivedServer) {
30+
$receivedServer .= $data;
31+
$stream->write($data);
32+
});
33+
});
34+
$server->listen(6000);
35+
36+
$dnsResolverFactory = new DnsFactory();
37+
$resolver = $dnsResolverFactory->createCached('8.8.8.8', $loop);
38+
39+
$connector = new Connector($loop, $resolver);
40+
$secureConnector = new SecureConnector($connector, $loop);
41+
42+
$promise = $secureConnector->create('127.0.0.1', 6001);
43+
//$promise = $connector->create('127.0.0.1', 6000);
44+
$client = $this->waitFor($promise, $loop);
45+
/* @var $client Stream */
46+
47+
while (!$connected) {
48+
$loop->tick();
49+
}
50+
51+
$client->on('data', function ($data) use (&$receivedClient) {
52+
$receivedClient .= $data;
53+
});
54+
55+
$this->assertEquals('', $receivedServer);
56+
$this->assertEquals('', $receivedClient);
57+
58+
$echo = function ($str) use (&$receivedClient, &$receivedClient, $loop, $client) {
59+
$receivedClient = $receivedServer = '';
60+
$client->write($str);
61+
while ($receivedClient !== $str) {
62+
$loop->tick();
63+
}
64+
};
65+
66+
$echo('hello');
67+
68+
$echo('world');
69+
70+
// send a 10k message once to fill buffer (failing!)
71+
//$echo(str_repeat('1234567890', 10000));
72+
73+
$echo('again');
74+
}
75+
76+
private function waitFor(PromiseInterface $promise, LoopInterface $loop)
77+
{
78+
$ret = null;
79+
$promise->then(function ($value) use (&$ret) {
80+
$ret = $value;
81+
});
82+
83+
while ($ret === null) {
84+
$loop->tick();
85+
}
86+
87+
return $ret;
88+
}
89+
}

0 commit comments

Comments
 (0)