]> granicus.if.org Git - php/commitdiff
Add various tests for FPM
authorRemi Collet <remi@php.net>
Tue, 18 Nov 2014 07:07:45 +0000 (08:07 +0100)
committerRemi Collet <remi@php.net>
Tue, 18 Nov 2014 07:07:45 +0000 (08:07 +0100)
- covering recent bugs (68420, 68421, 68423, 68428)
- for UDS
- for ping and status URI
- for multi pool and multi mode

sapi/fpm/tests/002.phpt
sapi/fpm/tests/003.phpt
sapi/fpm/tests/005.phpt [new file with mode: 0644]
sapi/fpm/tests/006.phpt [new file with mode: 0644]
sapi/fpm/tests/007.phpt [new file with mode: 0644]
sapi/fpm/tests/008.phpt [new file with mode: 0644]
sapi/fpm/tests/009.phpt [new file with mode: 0644]
sapi/fpm/tests/010.phpt [new file with mode: 0644]
sapi/fpm/tests/011.phpt [new file with mode: 0644]

index ce878661eaf54e8ee66f2fd9fd5d08a2a7d2933a..2ef6cedc3856ac42c03635f66a634d302fa49bc6 100644 (file)
@@ -8,13 +8,12 @@ FPM: Startup and connect
 include "include.inc";
 
 $logfile = dirname(__FILE__).'/php-fpm.log.tmp';
-$port = 9000+PHP_INT_SIZE;
 
 $cfg = <<<EOT
 [global]
 error_log = $logfile
 [unconfined]
-listen = 127.0.0.1:$port
+listen = 127.0.0.1:9000
 pm = dynamic
 pm.max_children = 5
 pm.start_servers = 2
@@ -27,7 +26,7 @@ if (is_resource($fpm)) {
     var_dump(fgets($tail));
     var_dump(fgets($tail));
     $i = 0;
-    while (($i++ < 30) && !($fp = @fsockopen('127.0.0.1', $port))) {
+    while (($i++ < 30) && !($fp = @fsockopen('127.0.0.1', 9000))) {
         usleep(10000);
     }
     if ($fp) {
index 0ce1bd2828ad4560d07c41075fdef644190b623d..389cb2401ef2de7403c993193ac8451f318ca232 100644 (file)
@@ -8,13 +8,12 @@ FPM: Test IPv6 support
 include "include.inc";
 
 $logfile = dirname(__FILE__).'/php-fpm.log.tmp';
-$port = 9000+PHP_INT_SIZE;
 
 $cfg = <<<EOT
 [global]
 error_log = $logfile
 [unconfined]
-listen = [::1]:$port
+listen = [::1]:9000
 pm = dynamic
 pm.max_children = 5
 pm.start_servers = 2
@@ -27,7 +26,7 @@ if (is_resource($fpm)) {
     var_dump(fgets($tail));
     var_dump(fgets($tail));
     $i = 0;
-    while (($i++ < 30) && !($fp = fsockopen('[::1]', $port))) {
+    while (($i++ < 30) && !($fp = fsockopen('[::1]', 9000))) {
         usleep(10000);
     }
     if ($fp) {
diff --git a/sapi/fpm/tests/005.phpt b/sapi/fpm/tests/005.phpt
new file mode 100644 (file)
index 0000000..992b01f
--- /dev/null
@@ -0,0 +1,58 @@
+--TEST--
+FPM: Test IPv4 allowed clients
+--SKIPIF--
+<?php include "skipif.inc"; ?>
+--FILE--
+<?php
+
+include "include.inc";
+
+$logfile = dirname(__FILE__).'/php-fpm.log.tmp';
+$port = 9000+PHP_INT_SIZE;
+
+$cfg = <<<EOT
+[global]
+error_log = $logfile
+[unconfined]
+listen = [::]:$port
+listen.allowed_clients = 127.0.0.1
+pm = dynamic
+pm.max_children = 5
+pm.start_servers = 2
+pm.min_spare_servers = 1
+pm.max_spare_servers = 3
+EOT;
+
+$fpm = run_fpm($cfg, $tail);
+if (is_resource($fpm)) {
+    echo fgets($tail);
+    echo fgets($tail);
+    try {
+               run_request('127.0.0.1', $port);
+               echo "IPv4 ok\n";
+       } catch (Exception $e) {
+               echo "IPv4 error\n";
+       }
+    try {
+               run_request('[::1]', $port);
+               echo "IPv6 ok\n";
+       } catch (Exception $e) {
+               echo "IPv6 error\n";
+       }
+    proc_terminate($fpm);
+    stream_get_contents($tail);
+    fclose($tail);
+    proc_close($fpm);
+}
+
+?>
+--EXPECTF--
+[%d-%s-%d %d:%d:%d] NOTICE: fpm is running, pid %d
+[%d-%s-%d %d:%d:%d] NOTICE: ready to handle connections
+IPv4 ok
+IPv6 error
+--CLEAN--
+<?php
+    $logfile = dirname(__FILE__).'/php-fpm.log.tmp';
+    @unlink($logfile);
+?>
diff --git a/sapi/fpm/tests/006.phpt b/sapi/fpm/tests/006.phpt
new file mode 100644 (file)
index 0000000..d8b47ee
--- /dev/null
@@ -0,0 +1,58 @@
+--TEST--
+FPM: Test IPv6 allowed clients (bug #68428)
+--SKIPIF--
+<?php include "skipif.inc"; ?>
+--FILE--
+<?php
+
+include "include.inc";
+
+$logfile = dirname(__FILE__).'/php-fpm.log.tmp';
+$port = 9000+PHP_INT_SIZE;
+
+$cfg = <<<EOT
+[global]
+error_log = $logfile
+[unconfined]
+listen = [::]:$port
+listen.allowed_clients = ::1
+pm = dynamic
+pm.max_children = 5
+pm.start_servers = 2
+pm.min_spare_servers = 1
+pm.max_spare_servers = 3
+EOT;
+
+$fpm = run_fpm($cfg, $tail);
+if (is_resource($fpm)) {
+    echo fgets($tail);
+    echo fgets($tail);
+    try {
+               run_request('127.0.0.1', $port);
+               echo "IPv4 ok\n";
+       } catch (Exception $e) {
+               echo "IPv4 error\n";
+       }
+    try {
+               run_request('[::1]', $port);
+               echo "IPv6 ok\n";
+       } catch (Exception $e) {
+               echo "IPv6 error\n";
+       }
+    proc_terminate($fpm);
+    stream_get_contents($tail);
+    fclose($tail);
+    proc_close($fpm);
+}
+
+?>
+--EXPECTF--
+[%d-%s-%d %d:%d:%d] NOTICE: fpm is running, pid %d
+[%d-%s-%d %d:%d:%d] NOTICE: ready to handle connections
+IPv4 error
+IPv6 ok
+--CLEAN--
+<?php
+    $logfile = dirname(__FILE__).'/php-fpm.log.tmp';
+    @unlink($logfile);
+?>
diff --git a/sapi/fpm/tests/007.phpt b/sapi/fpm/tests/007.phpt
new file mode 100644 (file)
index 0000000..1889381
--- /dev/null
@@ -0,0 +1,69 @@
+--TEST--
+FPM: Test IPv6 all addresses and access_log (bug #68421)
+--SKIPIF--
+<?php include "skipif.inc"; ?>
+--FILE--
+<?php
+
+include "include.inc";
+
+$logfile = dirname(__FILE__).'/php-fpm.log.tmp';
+$accfile = dirname(__FILE__).'/php-fpm.acc.tmp';
+$port = 9000+PHP_INT_SIZE;
+
+$cfg = <<<EOT
+[global]
+error_log = $logfile
+[unconfined]
+listen = [::]:$port
+access.log = $accfile
+ping.path = /ping
+ping.response = pong
+pm = dynamic
+pm.max_children = 5
+pm.start_servers = 2
+pm.min_spare_servers = 1
+pm.max_spare_servers = 3
+EOT;
+
+$fpm = run_fpm($cfg, $tail);
+if (is_resource($fpm)) {
+    echo fgets($tail);
+    echo fgets($tail);
+    try {
+               var_dump(strpos(run_request('127.0.0.1', $port), 'pong'));
+               echo "IPv4 ok\n";
+       } catch (Exception $e) {
+               echo "IPv4 error\n";
+       }
+    try {
+               var_dump(strpos(run_request('[::1]', $port), 'pong'));
+               echo "IPv6 ok\n";
+       } catch (Exception $e) {
+               echo "IPv6 error\n";
+       }
+    proc_terminate($fpm);
+    stream_get_contents($tail);
+    fclose($tail);
+    proc_close($fpm);
+
+    echo file_get_contents($accfile);
+}
+
+?>
+--EXPECTF--
+[%d-%s-%d %d:%d:%d] NOTICE: fpm is running, pid %d
+[%d-%s-%d %d:%d:%d] NOTICE: ready to handle connections
+int(%d)
+IPv4 ok
+int(%d)
+IPv6 ok
+127.0.0.1 %s "GET /ping" 200
+::1 %s "GET /ping" 200
+--CLEAN--
+<?php
+    $logfile = dirname(__FILE__).'/php-fpm.log.tmp';
+    @unlink($logfile);
+       $accfile = dirname(__FILE__).'/php-fpm.acc.tmp';
+    @unlink($accfile);
+?>
diff --git a/sapi/fpm/tests/008.phpt b/sapi/fpm/tests/008.phpt
new file mode 100644 (file)
index 0000000..aaa7730
--- /dev/null
@@ -0,0 +1,85 @@
+--TEST--
+FPM: Test multi pool (dynamic + ondemand + static) (bug #68423)
+--SKIPIF--
+<?php include "skipif.inc"; ?>
+--FILE--
+<?php
+
+include "include.inc";
+
+$logfile = dirname(__FILE__).'/php-fpm.log.tmp';
+$port1 = 9000+PHP_INT_SIZE;
+$port2 = 9001+PHP_INT_SIZE;
+$port3 = 9002+PHP_INT_SIZE;
+
+$cfg = <<<EOT
+[global]
+error_log = $logfile
+[pool_dynamic]
+listen = 127.0.0.1:$port1
+ping.path = /ping
+ping.response = pong-dynamic
+pm = dynamic
+pm.max_children = 5
+pm.start_servers = 2
+pm.min_spare_servers = 1
+pm.max_spare_servers = 3
+[poold_ondemand]
+listen = 127.0.0.1:$port2
+ping.path = /ping
+ping.response = pong-on-demand
+pm = ondemand
+pm.max_children = 2
+pm.process_idle_timeout = 10
+[pool_static]
+listen = 127.0.0.1:$port3
+ping.path = /ping
+ping.response = pong-static
+pm = static
+pm.max_children = 2
+EOT;
+
+$fpm = run_fpm($cfg, $tail);
+if (is_resource($fpm)) {
+    echo fgets($tail);
+    echo fgets($tail);
+    try {
+               var_dump(strpos(run_request('127.0.0.1', $port1), 'pong-dynamic'));
+               echo "Dynamic ok\n";
+       } catch (Exception $e) {
+               echo "Dynamic error\n";
+       }
+    try {
+               var_dump(strpos(run_request('127.0.0.1', $port2), 'pong-on-demand'));
+               echo "OnDemand ok\n";
+       } catch (Exception $e) {
+               echo "OnDemand error\n";
+       }
+    try {
+               var_dump(strpos(run_request('127.0.0.1', $port3), 'pong-static'));
+               echo "Static ok\n";
+       } catch (Exception $e) {
+               echo "Static error\n";
+       }
+
+       proc_terminate($fpm);
+    stream_get_contents($tail);
+    fclose($tail);
+    proc_close($fpm);
+}
+
+?>
+--EXPECTF--
+[%d-%s-%d %d:%d:%d] NOTICE: fpm is running, pid %d
+[%d-%s-%d %d:%d:%d] NOTICE: ready to handle connections
+int(%d)
+Dynamic ok
+int(%d)
+OnDemand ok
+int(%d)
+Static ok
+--CLEAN--
+<?php
+    $logfile = dirname(__FILE__).'/php-fpm.log.tmp';
+    @unlink($logfile);
+?>
diff --git a/sapi/fpm/tests/009.phpt b/sapi/fpm/tests/009.phpt
new file mode 100644 (file)
index 0000000..836fb19
--- /dev/null
@@ -0,0 +1,54 @@
+--TEST--
+FPM: Test Unix Domain Socket
+--SKIPIF--
+<?php include "skipif.inc"; ?>
+--FILE--
+<?php
+
+include "include.inc";
+
+$logfile = dirname(__FILE__).'/php-fpm.log.tmp';
+$socket  = dirname(__FILE__).'/php-fpm.sock';
+
+$cfg = <<<EOT
+[global]
+error_log = $logfile
+[unconfined]
+listen = $socket
+ping.path = /ping
+ping.response = pong
+pm = dynamic
+pm.max_children = 5
+pm.start_servers = 2
+pm.min_spare_servers = 1
+pm.max_spare_servers = 3
+EOT;
+
+$fpm = run_fpm($cfg, $tail);
+if (is_resource($fpm)) {
+    echo fgets($tail);
+    echo fgets($tail);
+    try {
+               var_dump(strpos(run_request('unix://'.$socket, -1), 'pong'));
+               echo "UDS ok\n";
+       } catch (Exception $e) {
+               echo "UDS error\n";
+       }
+
+       proc_terminate($fpm);
+    stream_get_contents($tail);
+    fclose($tail);
+    proc_close($fpm);
+}
+
+?>
+--EXPECTF--
+[%d-%s-%d %d:%d:%d] NOTICE: fpm is running, pid %d
+[%d-%s-%d %d:%d:%d] NOTICE: ready to handle connections
+int(%d)
+UDS ok
+--CLEAN--
+<?php
+    $logfile = dirname(__FILE__).'/php-fpm.log.tmp';
+    @unlink($logfile);
+?>
diff --git a/sapi/fpm/tests/010.phpt b/sapi/fpm/tests/010.phpt
new file mode 100644 (file)
index 0000000..dc8d5bb
--- /dev/null
@@ -0,0 +1,85 @@
+--TEST--
+FPM: Test status page
+--SKIPIF--
+<?php include "skipif.inc"; ?>
+--FILE--
+<?php
+
+include "include.inc";
+
+$logfile = dirname(__FILE__).'/php-fpm.log.tmp';
+$port = 9000+PHP_INT_SIZE;
+
+$cfg = <<<EOT
+[global]
+error_log = $logfile
+[unconfined]
+listen = 127.0.0.1:$port
+pm.status_path = /status
+pm = dynamic
+pm.max_children = 5
+pm.start_servers = 2
+pm.min_spare_servers = 1
+pm.max_spare_servers = 3
+EOT;
+
+$fpm = run_fpm($cfg, $tail);
+if (is_resource($fpm)) {
+    echo fgets($tail);
+    echo fgets($tail);
+    try {
+               echo run_request('127.0.0.1', $port, '/status');
+
+               $html = run_request('127.0.0.1', $port, '/status', 'html');
+               var_dump(strpos($html, 'text/html') && strpos($html, 'DOCTYPE') && strpos($html, 'PHP-FPM Status Page'));
+
+               $json = run_request('127.0.0.1', $port, '/status', 'json');
+               var_dump(strpos($json, 'application/json') && strpos($json, '"pool":"unconfined"'));
+
+               $xml = run_request('127.0.0.1', $port, '/status', 'xml');
+               var_dump(strpos($xml, 'text/xml') && strpos($xml, '<?xml'));
+
+               echo "IPv4 ok\n";
+       } catch (Exception $e) {
+               echo "IPv4 error\n";
+       }
+
+       proc_terminate($fpm);
+    stream_get_contents($tail);
+    fclose($tail);
+    proc_close($fpm);
+}
+
+?>
+--EXPECTF--
+[%d-%s-%d %d:%d:%d] NOTICE: fpm is running, pid %d
+[%d-%s-%d %d:%d:%d] NOTICE: ready to handle connections
+X-Powered-By: PHP/%s
+Expires: %s
+Cache-Control: %s
+Content-type: text/plain%s
+
+pool:                 unconfined
+process manager:      dynamic
+start time:           %s
+start since:          %d
+accepted conn:        1
+listen queue:         0
+max listen queue:     0
+listen queue len:     %d
+idle processes:       1
+active processes:     1
+total processes:      2
+max active processes: 1
+max children reached: 0
+slow requests:        0
+
+bool(true)
+bool(true)
+bool(true)
+IPv4 ok
+--CLEAN--
+<?php
+    $logfile = dirname(__FILE__).'/php-fpm.log.tmp';
+    @unlink($logfile);
+?>
diff --git a/sapi/fpm/tests/011.phpt b/sapi/fpm/tests/011.phpt
new file mode 100644 (file)
index 0000000..ddcf67f
--- /dev/null
@@ -0,0 +1,54 @@
+--TEST--
+FPM: Test IPv4 all addresses (bug #68420)
+--SKIPIF--
+<?php include "skipif.inc"; ?>
+--FILE--
+<?php
+
+include "include.inc";
+
+$logfile = dirname(__FILE__).'/php-fpm.log.tmp';
+$port = 9000+PHP_INT_SIZE;
+
+$cfg = <<<EOT
+[global]
+error_log = $logfile
+[unconfined]
+listen = $port
+ping.path = /ping
+ping.response = pong
+pm = dynamic
+pm.max_children = 5
+pm.start_servers = 2
+pm.min_spare_servers = 1
+pm.max_spare_servers = 3
+EOT;
+
+$fpm = run_fpm($cfg, $tail);
+if (is_resource($fpm)) {
+    echo fgets($tail);
+    echo fgets($tail);
+    try {
+               var_dump(strpos(run_request('127.0.0.1', $port), 'pong'));
+               echo "IPv4 ok\n";
+       } catch (Exception $e) {
+               echo "IPv4 error\n";
+       }
+
+       proc_terminate($fpm);
+    stream_get_contents($tail);
+    fclose($tail);
+    proc_close($fpm);
+}
+
+?>
+--EXPECTF--
+[%d-%s-%d %d:%d:%d] NOTICE: fpm is running, pid %d
+[%d-%s-%d %d:%d:%d] NOTICE: ready to handle connections
+int(%d)
+IPv4 ok
+--CLEAN--
+<?php
+    $logfile = dirname(__FILE__).'/php-fpm.log.tmp';
+    @unlink($logfile);
+?>