forked from ratchetphp/Pawl
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrunner.php
67 lines (49 loc) · 1.98 KB
/
runner.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
use Ratchet\Client\WebSocket;
use React\Promise\Deferred;
require __DIR__ . '/../../vendor/autoload.php';
define('AGENT', 'Pawl/0.0.1');
$loop = React\EventLoop\Factory::create();
$connFactory = function() use ($loop) {
$connector = new Ratchet\Client\Factory($loop);
return function($url) use ($connector) {
return $connector('ws://127.0.0.1:9001' . $url);
};
};
$connector = $connFactory();
$connector('/getCaseCount')
->then(function(WebSocket $conn) {
$futureNum = new Deferred;
$conn->on('message', function($msg) use ($futureNum) {
$futureNum->resolve($msg);
});
return $futureNum->promise();
}, function($e) {
echo "Could not connect to test server: {$e->getMessage()}\n";
})->then(function($numOfCases) use ($connector, $loop) {
echo "Running {$numOfCases} test cases\n\n";
$allCases = new Deferred;
$i = 0;
$runNextCase = function($i) use (&$runNextCase, &$i, $numOfCases, $allCases, $connector, $loop) {
$i++;
if ($i > $numOfCases) {
$allCases->resolve();
return;
}
echo ".";
$connector("/runCase?case={$i}&agent=" . AGENT)->then(function(WebSocket $conn) use ($runNextCase) {
$conn->on('message', function($msg, $conn) {
$conn->send($msg);
});
$conn->on('close', $runNextCase);
});
};
$runNextCase(1);
return $allCases->promise();
})->then(function() use ($connector, $loop) {
$connector('/updateReports?agent=' . AGENT)->then(function(WebSocket $conn) use ($loop) {
echo "\nDone!\n";
$conn->on('close', [$loop, 'stop']);
});
});
$loop->run();