Эх сурвалжийг харах

Udp and websocket server code stubs moved out to Stub directory

Anton 2 жил өмнө
parent
commit
a144894b74

+ 2 - 3
tests/Feature/HttpConnectionTest.php

@@ -7,10 +7,9 @@ use Symfony\Component\Process\PhpProcess;
 
 $process = null;
 beforeAll(function () use (&$process) {
-    $code = file_get_contents(__DIR__ . '/Stub/HttpServer.php');
-    $process = new PhpProcess($code);
+    $process = new PhpProcess(file_get_contents(__DIR__ . '/Stub/HttpServer.php'));
     $process->start();
-    sleep(1);
+    usleep(250000);
 });
 
 afterAll(function () use (&$process) {

+ 3 - 1
tests/Feature/Stub/HttpServer.php

@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 use Workerman\Connection\TcpConnection;
 use Workerman\Protocols\Http\Request;
 use Workerman\Protocols\Http\Response;
@@ -49,4 +51,4 @@ $worker->onMessage = function (TcpConnection $connection, Request $request) {
 };
 
 Worker::$command = 'start';
-Worker::runAll();
+Worker::runAll();

+ 20 - 0
tests/Feature/Stub/UdpServer.php

@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+
+use Workerman\Worker;
+
+require './vendor/autoload.php';
+
+if(!defined('STDIN')) define('STDIN', fopen('php://stdin', 'r'));
+if(!defined('STDOUT')) define('STDOUT', fopen('php://stdout', 'w'));
+if(!defined('STDERR')) define('STDERR', fopen('php://stderr', 'w'));
+
+$server = new Worker('udp://127.0.0.1:8083');
+
+$server->onMessage = function ($connection, $data) {
+    $connection->send('received: ' . $data);
+};
+
+Worker::$command = 'start';
+Worker::runAll();

+ 23 - 0
tests/Feature/Stub/WebsocketClient.php

@@ -0,0 +1,23 @@
+<?php
+
+declare(strict_types=1);
+
+use Workerman\Connection\AsyncTcpConnection;
+use Workerman\Worker;
+
+require_once __DIR__ . '/vendor/autoload.php';
+
+if (!defined('STDIN')) define('STDIN', fopen('php://stdin', 'r'));
+if (!defined('STDOUT')) define('STDOUT', fopen('php://stdout', 'w'));
+if (!defined('STDERR')) define('STDERR', fopen('php://stderr', 'w'));
+
+$worker = new Worker();
+$worker->onWorkerStart = function($worker) {
+    $con = new AsyncTcpConnection('ws://127.0.0.1:8081');
+    //%action%
+    $con->connect();
+};
+
+Worker::$pidFile = sprintf('%s/test-websocket-client.pid', sys_get_temp_dir());
+Worker::$command = 'start';
+Worker::runAll();

+ 20 - 0
tests/Feature/Stub/WebsocketServer.php

@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+
+use Workerman\Connection\TcpConnection;
+use Workerman\Protocols\Http\Request;
+use Workerman\Worker;
+
+require_once __DIR__ . '/vendor/autoload.php';
+
+if (!defined('STDIN')) define('STDIN', fopen('php://stdin', 'r'));
+if (!defined('STDOUT')) define('STDOUT', fopen('php://stdout', 'w'));
+if (!defined('STDERR')) define('STDERR', fopen('php://stderr', 'w'));
+
+$worker = new Worker("websocket://127.0.0.1:8081");
+//%action%
+
+Worker::$pidFile = sprintf('%s/test-websocket-server.pid', sys_get_temp_dir());
+Worker::$command = 'start';
+Worker::runAll();

+ 5 - 22
tests/Feature/UdpConnectionTest.php

@@ -1,29 +1,12 @@
 <?php
 
 use Symfony\Component\Process\PhpProcess;
-use Workerman\Worker;
 
-$serverAddress = 'udp://127.0.0.1:6789';
 $process = null;
-beforeAll(function () use ($serverAddress, &$process) {
-    $process = new PhpProcess(<<<PHP
-        <?php    
-        if(!defined('STDIN')) define('STDIN', fopen('php://stdin', 'r'));
-        if(!defined('STDOUT')) define('STDOUT', fopen('php://stdout', 'w'));
-        if(!defined('STDERR')) define('STDERR', fopen('php://stderr', 'w'));
-        require './vendor/autoload.php';
-        use Workerman\Worker;
-        
-        \$server = new Worker('$serverAddress');
-        \$server->onMessage = function (\$connection, \$data) {
-            \$connection->send('received: '.\$data);
-        };
-        Worker::\$command = 'start';
-        Worker::runAll();
-    PHP
-    );
+beforeAll(function () use (&$process) {
+    $process = new PhpProcess(file_get_contents(__DIR__ . '/Stub/UdpServer.php'));
     $process->start();
-    sleep(1);
+    usleep(250000);
 });
 
 afterAll(function () use (&$process) {
@@ -31,8 +14,8 @@ afterAll(function () use (&$process) {
     $process->stop();
 });
 
-it('tests udp connection', function () use ($serverAddress) {
-    $socket = stream_socket_client($serverAddress, $errno, $errstr, 1);
+it('tests udp connection', function () {
+    $socket = stream_socket_client('udp://127.0.0.1:8083', $errno, $errstr, 1);
     expect($errno)->toBeInt()->toBe(0);
     fwrite($socket, 'xiami');
     $data = fread($socket, 1024);

+ 26 - 66
tests/Feature/WebsocketServiceTest.php

@@ -2,60 +2,26 @@
 
 use Symfony\Component\Process\PhpProcess;
 
-$serverCode = <<<PHP
-<?php
-use Workerman\Connection\TcpConnection;
-use Workerman\Protocols\Http\Request;
-use Workerman\Worker;
-require_once __DIR__ . '/vendor/autoload.php';
-if (!defined('STDIN')) define('STDIN', fopen('php://stdin', 'r'));
-if (!defined('STDOUT')) define('STDOUT', fopen('php://stdout', 'w'));
-if (!defined('STDERR')) define('STDERR', fopen('php://stderr', 'w'));
-\$worker = new Worker("websocket://127.0.0.1:8081");
-%s
-Worker::\$pidFile = __DIR__ . '/WebsocketServer.pid';
-Worker::\$command = 'start';
-Worker::runAll();
-PHP;
-
-$clientCode = <<<PHP
-<?php
-use Workerman\Connection\AsyncTcpConnection;
-use Workerman\Worker;
-require_once __DIR__ . '/vendor/autoload.php';
-if (!defined('STDIN')) define('STDIN', fopen('php://stdin', 'r'));
-if (!defined('STDOUT')) define('STDOUT', fopen('php://stdout', 'w'));
-if (!defined('STDERR')) define('STDERR', fopen('php://stderr', 'w'));
-\$worker = new Worker();
-\$worker->onWorkerStart = function(\$worker){
-    \$con = new AsyncTcpConnection('ws://127.0.0.1:8081');
-    %s
-    \$con->connect();
-};
-Worker::\$pidFile = __DIR__ . '/WebsocketClient.pid';
-Worker::\$command = 'start';
-Worker::runAll();
-PHP;
+$serverCode = file_get_contents(__DIR__ . '/Stub/WebsocketServer.php');
+$clientCode = file_get_contents(__DIR__ . '/Stub/WebsocketClient.php');
 
 it('tests websocket connection', function () use ($serverCode, $clientCode) {
-    $serverProcess = new PhpProcess(sprintf($serverCode, <<<PHP
+    $serverProcess = new PhpProcess(str_replace(subject: $serverCode, search: '//%action%', replace: <<<PHP
         \$worker->onWebSocketConnect = function () {
             echo "connected";
         };
         \$worker->onMessage = function () {};
-    PHP
-    ));
+    PHP));
     $serverProcess->start();
-    sleep(1);
+    usleep(250000);
 
-    $clientProcess = new PhpProcess(sprintf($clientCode, <<<PHP
+    $clientProcess = new PhpProcess(str_replace(subject: $clientCode, search: '//%action%', replace: <<<PHP
         \$con->onWebSocketConnect = function(AsyncTcpConnection \$con) {
             \$con->send('connect');
         };
-    PHP
-    ));
+    PHP));
     $clientProcess->start();
-    sleep(1);
+    usleep(250000);
 
     expect(getNonFrameOutput($serverProcess->getOutput()))->toBe('connected')
         ->and(getNonFrameOutput($clientProcess->getOutput()))->toBe('');
@@ -65,27 +31,25 @@ it('tests websocket connection', function () use ($serverCode, $clientCode) {
 });
 
 it('tests server and client sending and receiving messages', function () use ($serverCode, $clientCode) {
-    $serverProcess = new PhpProcess(sprintf($serverCode, <<<PHP
+    $serverProcess = new PhpProcess(str_replace(subject: $serverCode, search: '//%action%', replace: <<<PHP
         \$worker->onMessage = function (TcpConnection \$connection, \$data) {
             echo \$data;
             \$connection->send('Hi');
         };
-    PHP
-    ));
+    PHP));
     $serverProcess->start();
-    sleep(1);
+    usleep(250000);
 
-    $clientProcess = new PhpProcess(sprintf($clientCode, <<<PHP
+    $clientProcess = new PhpProcess(str_replace(subject: $clientCode, search: '//%action%', replace: <<<PHP
         \$con->onWebSocketConnect = function(AsyncTcpConnection \$con) {
             \$con->send('Hello Chance');
         };
         \$con->onMessage = function(\$con, \$data) {
             echo \$data;
         };
-    PHP
-    ));
+    PHP));
     $clientProcess->start();
-    sleep(1);
+    usleep(250000);
 
     expect(getNonFrameOutput($serverProcess->getOutput()))->toBe('Hello Chance')
         ->and(getNonFrameOutput($clientProcess->getOutput()))->toBe('Hi');
@@ -95,28 +59,26 @@ it('tests server and client sending and receiving messages', function () use ($s
 });
 
 it('tests server close connection', function () use ($serverCode, $clientCode) {
-    $serverProcess = new PhpProcess(sprintf($serverCode, <<<PHP
+    $serverProcess = new PhpProcess(str_replace(subject: $serverCode, search: '//%action%', replace: <<<PHP
         \$worker->onWebSocketConnect = function (TcpConnection \$connection) {
             echo 'close connection';
             \$connection->close();
         };
         \$worker->onMessage = function () {};
-    PHP
-    ));
+    PHP));
     $serverProcess->start();
-    sleep(1);
+    usleep(250000);
 
-    $clientProcess = new PhpProcess(sprintf($clientCode, <<<PHP
+    $clientProcess = new PhpProcess(str_replace(subject: $clientCode, search: '//%action%', replace: <<<PHP
         \$con->onWebSocketConnect = function(AsyncTcpConnection \$con) {
             \$con->send('connect');
         };
         \$con->onClose = function () {
             echo 'closed';
         };
-    PHP
-    ));
+    PHP));
     $clientProcess->start();
-    sleep(1);
+    usleep(250000);
 
     expect(getNonFrameOutput($serverProcess->getOutput()))->toBe('close connection')
         ->and(getNonFrameOutput($clientProcess->getOutput()))->toBe('closed');
@@ -126,26 +88,24 @@ it('tests server close connection', function () use ($serverCode, $clientCode) {
 });
 
 it('tests client close connection', function () use ($serverCode, $clientCode) {
-    $serverProcess = new PhpProcess(sprintf($serverCode, <<<PHP
+    $serverProcess = new PhpProcess(str_replace(subject: $serverCode, search: '//%action%', replace: <<<PHP
         \$worker->onMessage = function () {};
         \$worker->onClose = function () {
             echo 'closed';
         };
-    PHP
-    ));
+    PHP));
     $serverProcess->start();
-    sleep(1);
+    usleep(250000);
 
-    $clientProcess = new PhpProcess(sprintf($clientCode, <<<PHP
+    $clientProcess = new PhpProcess(str_replace(subject: $clientCode, search: '//%action%', replace: <<<PHP
         \$con->onWebSocketConnect = function(AsyncTcpConnection \$con) {
             \$con->send('connect');
             echo 'close connection';
             \$con->close();
         };
-    PHP
-    ));
+    PHP));
     $clientProcess->start();
-    sleep(1);
+    usleep(250000);
 
     expect(getNonFrameOutput($serverProcess->getOutput()))->toBe('closed')
         ->and(getNonFrameOutput($clientProcess->getOutput()))->toBe('close connection');

+ 1 - 1
tests/Unit/Connection/UdpConnectionTest.php

@@ -16,7 +16,7 @@ beforeAll(function () use ($remoteAddress, &$process) {
     PHP
     );
     $process->start();
-    sleep(1);
+    usleep(250000);
 });
 
 afterAll(function () use (&$process) {