mirror of
https://github.com/guzzle/guzzle.git
synced 2025-02-11 19:14:38 +01:00
Adding perf test to makefile
This commit is contained in:
parent
955a47ef33
commit
92a11623af
4
Makefile
4
Makefile
@ -34,4 +34,8 @@ docs: .FORCE
|
|||||||
view-docs:
|
view-docs:
|
||||||
open docs/_build/html/index.html
|
open docs/_build/html/index.html
|
||||||
|
|
||||||
|
perf: start-server
|
||||||
|
php tests/perf.php
|
||||||
|
$(MAKE) stop-server
|
||||||
|
|
||||||
.FORCE:
|
.FORCE:
|
||||||
|
@ -125,6 +125,18 @@ class Server
|
|||||||
self::$started = false;
|
self::$started = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function wait($maxTries = 3)
|
||||||
|
{
|
||||||
|
$tries = 0;
|
||||||
|
while (!self::isListening() && ++$tries < $maxTries) {
|
||||||
|
usleep(100000);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!self::isListening()) {
|
||||||
|
throw new \RuntimeException('Unable to contact node.js server');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static function start()
|
private static function start()
|
||||||
{
|
{
|
||||||
if (self::$started){
|
if (self::$started){
|
||||||
@ -134,13 +146,7 @@ class Server
|
|||||||
if (!self::isListening()) {
|
if (!self::isListening()) {
|
||||||
exec('node ' . __DIR__ . \DIRECTORY_SEPARATOR . 'server.js '
|
exec('node ' . __DIR__ . \DIRECTORY_SEPARATOR . 'server.js '
|
||||||
. self::$port . ' >> /tmp/server.log 2>&1 &');
|
. self::$port . ' >> /tmp/server.log 2>&1 &');
|
||||||
$tries = 0;
|
self::wait();
|
||||||
while (!self::isListening() && ++$tries < 3) {
|
|
||||||
usleep(100000);
|
|
||||||
}
|
|
||||||
if (!self::isListening()) {
|
|
||||||
throw new \RuntimeException('Unable to contact node.js server');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
self::$started = true;
|
self::$started = true;
|
||||||
|
47
tests/perf.php
Normal file
47
tests/perf.php
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* Runs a performance test against the node.js server for both serial and
|
||||||
|
* parallel requests. Requires PHP 5.5 or greater.
|
||||||
|
*
|
||||||
|
* # Basic usage
|
||||||
|
* make perf
|
||||||
|
* # With custom options
|
||||||
|
* REQUESTS=100 PARALLEL=5000 make perf
|
||||||
|
*/
|
||||||
|
|
||||||
|
require __DIR__ . '/bootstrap.php';
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Tests\Server;
|
||||||
|
|
||||||
|
// Wait until the server is responding
|
||||||
|
Server::wait();
|
||||||
|
|
||||||
|
// Get custom make variables
|
||||||
|
$total = isset($_SERVER['REQUESTS']) ? $_SERVER['REQUESTS'] : 1000;
|
||||||
|
$parallel = isset($_SERVER['PARALLEL']) ? $_SERVER['PARALLEL'] : 25;
|
||||||
|
|
||||||
|
$client = new Client(['base_url' => Server::$url]);
|
||||||
|
|
||||||
|
$t = microtime(true);
|
||||||
|
for ($i = 0; $i < $total; $i++) {
|
||||||
|
$client->get('/guzzle-server/perf');
|
||||||
|
}
|
||||||
|
$totalTime = microtime(true) - $t;
|
||||||
|
$perRequest = ($totalTime / $total) * 1000;
|
||||||
|
printf("Serial: %f (%f ms / request) %d total\n",
|
||||||
|
$totalTime, $perRequest, $total);
|
||||||
|
|
||||||
|
// Create a generator used to yield batches of requests to sendAll
|
||||||
|
$reqs = function () use ($client, $total) {
|
||||||
|
for ($i = 0; $i < $total; $i++) {
|
||||||
|
yield $client->createRequest('GET', '/guzzle-server/perf');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
$t = microtime(true);
|
||||||
|
$client->sendAll($reqs(), ['parallel' => $parallel]);
|
||||||
|
$totalTime = microtime(true) - $t;
|
||||||
|
$perRequest = ($totalTime / $total) * 1000;
|
||||||
|
printf("Parallel: %f (%f ms / request) %d total with %d in parallel\n",
|
||||||
|
$totalTime, $perRequest, $total, $parallel);
|
Loading…
x
Reference in New Issue
Block a user