summaryrefslogtreecommitdiff
path: root/ext/pcntl/tests
diff options
context:
space:
mode:
Diffstat (limited to 'ext/pcntl/tests')
-rw-r--r--ext/pcntl/tests/001.phpt82
-rw-r--r--ext/pcntl/tests/002.phpt96
-rw-r--r--ext/pcntl/tests/async_signals_2.phpt29
-rw-r--r--ext/pcntl/tests/pcntl_alarm.phpt5
-rw-r--r--ext/pcntl/tests/pcntl_exec_2.phpt10
-rw-r--r--ext/pcntl/tests/pcntl_exec_3.phpt4
-rw-r--r--ext/pcntl/tests/pcntl_fork_basic.phpt6
-rw-r--r--ext/pcntl/tests/pcntl_signal.phpt8
-rw-r--r--ext/pcntl/tests/pcntl_wait.phpt59
-rw-r--r--ext/pcntl/tests/pcntl_wait_rusage1.phpt42
-rw-r--r--ext/pcntl/tests/pcntl_waitpid_rusage1.phpt42
11 files changed, 184 insertions, 199 deletions
diff --git a/ext/pcntl/tests/001.phpt b/ext/pcntl/tests/001.phpt
index b9587e1325..cdfdb0733f 100644
--- a/ext/pcntl/tests/001.phpt
+++ b/ext/pcntl/tests/001.phpt
@@ -11,60 +11,60 @@ Test pcntl wait functionality
--FILE--
<?php
function test_exit_waits(){
- print "\n\nTesting pcntl_wifexited and wexitstatus....";
+ print "\n\nTesting pcntl_wifexited and wexitstatus....";
- $pid=pcntl_fork();
- if ($pid==0) {
- sleep(1);
- exit(-1);
- } else {
- $options=0;
- pcntl_waitpid($pid, $status, $options);
- if ( pcntl_wifexited($status) ) print "\nExited With: ". pcntl_wexitstatus($status);
- }
+ $pid=pcntl_fork();
+ if ($pid==0) {
+ sleep(1);
+ exit(-1);
+ } else {
+ $options=0;
+ pcntl_waitpid($pid, $status, $options);
+ if ( pcntl_wifexited($status) ) print "\nExited With: ". pcntl_wexitstatus($status);
+ }
}
function test_exit_signal(){
- print "\n\nTesting pcntl_wifsignaled....";
+ print "\n\nTesting pcntl_wifsignaled....";
- $pid=pcntl_fork();
+ $pid=pcntl_fork();
- if ($pid==0) {
+ if ($pid==0) {
while(1);
- exit;
- } else {
- $options=0;
- posix_kill($pid, SIGTERM);
- pcntl_waitpid($pid, $status, $options);
- if ( pcntl_wifsignaled($status) ) {
- $signal_print=pcntl_wtermsig($status);
- if ($signal_print==SIGTERM) $signal_print="SIGTERM";
- print "\nProcess was terminated by signal : ". $signal_print;
- }
+ exit;
+ } else {
+ $options=0;
+ posix_kill($pid, SIGTERM);
+ pcntl_waitpid($pid, $status, $options);
+ if ( pcntl_wifsignaled($status) ) {
+ $signal_print=pcntl_wtermsig($status);
+ if ($signal_print==SIGTERM) $signal_print="SIGTERM";
+ print "\nProcess was terminated by signal : ". $signal_print;
+ }
- }
+ }
}
function test_stop_signal(){
- print "\n\nTesting pcntl_wifstopped and pcntl_wstopsig....";
+ print "\n\nTesting pcntl_wifstopped and pcntl_wstopsig....";
- $pid=pcntl_fork();
+ $pid=pcntl_fork();
- if ($pid==0) {
- sleep(1);
- exit;
- } else {
- $options=WUNTRACED;
- posix_kill($pid, SIGSTOP);
- pcntl_waitpid($pid, $status, $options);
- if ( pcntl_wifstopped($status) ) {
- $signal_print=pcntl_wstopsig($status);
- if ($signal_print==SIGSTOP) $signal_print="SIGSTOP";
- print "\nProcess was stoped by signal : ". $signal_print;
- }
- posix_kill($pid, SIGCONT);
- }
+ if ($pid==0) {
+ sleep(1);
+ exit;
+ } else {
+ $options=WUNTRACED;
+ posix_kill($pid, SIGSTOP);
+ pcntl_waitpid($pid, $status, $options);
+ if ( pcntl_wifstopped($status) ) {
+ $signal_print=pcntl_wstopsig($status);
+ if ($signal_print==SIGSTOP) $signal_print="SIGSTOP";
+ print "\nProcess was stopped by signal : ". $signal_print;
+ }
+ posix_kill($pid, SIGCONT);
+ }
}
print "Staring wait.h tests....";
@@ -82,4 +82,4 @@ Testing pcntl_wifsignaled....
Process was terminated by signal : SIGTERM
Testing pcntl_wifstopped and pcntl_wstopsig....
-Process was stoped by signal : SIGSTOP
+Process was stopped by signal : SIGSTOP
diff --git a/ext/pcntl/tests/002.phpt b/ext/pcntl/tests/002.phpt
index 7d40735ae5..f93039f412 100644
--- a/ext/pcntl/tests/002.phpt
+++ b/ext/pcntl/tests/002.phpt
@@ -13,64 +13,64 @@ pcntl: pcntl_sigprocmask(), pcntl_sigwaitinfo(), pcntl_sigtimedwait()
$pid = pcntl_fork();
if ($pid == -1) {
- die('failed');
+ die('failed');
} else if ($pid) {
- pcntl_sigprocmask(SIG_BLOCK, array(SIGCHLD,(string)SIGTERM));
- $oldset = array();
- pcntl_sigprocmask(SIG_BLOCK, array(), $oldset);
- var_dump(in_array(SIGCHLD, $oldset));
- var_dump(in_array(SIGTERM, $oldset));
+ pcntl_sigprocmask(SIG_BLOCK, array(SIGCHLD,(string)SIGTERM));
+ $oldset = array();
+ pcntl_sigprocmask(SIG_BLOCK, array(), $oldset);
+ var_dump(in_array(SIGCHLD, $oldset));
+ var_dump(in_array(SIGTERM, $oldset));
- posix_kill(posix_getpid(), SIGTERM);
- $signo = pcntl_sigwaitinfo(array(SIGTERM), $siginfo);
- echo "signo == SIGTERM\n";
- var_dump($signo === SIGTERM && $signo === $siginfo['signo']);
- echo "code === SI_USER || SI_NOINFO\n";
- if (defined('SI_NOINFO')) {
- var_dump(($siginfo['code'] === SI_USER) || ($siginfo['code'] === SI_NOINFO));
- } else {
- var_dump($siginfo['code'] === SI_USER);
- }
+ posix_kill(posix_getpid(), SIGTERM);
+ $signo = pcntl_sigwaitinfo(array(SIGTERM), $siginfo);
+ echo "signo == SIGTERM\n";
+ var_dump($signo === SIGTERM && $signo === $siginfo['signo']);
+ echo "code === SI_USER || SI_NOINFO\n";
+ if (defined('SI_NOINFO')) {
+ var_dump(($siginfo['code'] === SI_USER) || ($siginfo['code'] === SI_NOINFO));
+ } else {
+ var_dump($siginfo['code'] === SI_USER);
+ }
- pcntl_signal(SIGCHLD, function($signo){});
- posix_kill($pid, SIGTERM);
- $signo = pcntl_sigwaitinfo(array((string)SIGCHLD), $siginfo);
- echo "signo == SIGCHLD\n";
- var_dump($signo === SIGCHLD && $signo === $siginfo['signo']);
- echo "code === CLD_KILLED\n";
- var_dump($siginfo['code'] === CLD_KILLED);
- echo "signo === SIGCHLD\n";
- var_dump($siginfo['signo'] === SIGCHLD);
- echo "signo === uid\n";
- var_dump($siginfo['uid'] === posix_getuid());
- echo "signo === pid\n";
- var_dump($siginfo['pid'] === $pid);
- pcntl_waitpid($pid, $status);
+ pcntl_signal(SIGCHLD, function($signo){});
+ posix_kill($pid, SIGTERM);
+ $signo = pcntl_sigwaitinfo(array((string)SIGCHLD), $siginfo);
+ echo "signo == SIGCHLD\n";
+ var_dump($signo === SIGCHLD && $signo === $siginfo['signo']);
+ echo "code === CLD_KILLED\n";
+ var_dump($siginfo['code'] === CLD_KILLED);
+ echo "signo === SIGCHLD\n";
+ var_dump($siginfo['signo'] === SIGCHLD);
+ echo "signo === uid\n";
+ var_dump($siginfo['uid'] === posix_getuid());
+ echo "signo === pid\n";
+ var_dump($siginfo['pid'] === $pid);
+ pcntl_waitpid($pid, $status);
- set_error_handler(function($errno, $errstr) { echo "Error triggered\n"; }, E_WARNING);
+ set_error_handler(function($errno, $errstr) { echo "Error triggered\n"; }, E_WARNING);
- echo "sigprocmask with invalid arguments\n";
+ echo "sigprocmask with invalid arguments\n";
- /* Valgrind expectedly complains about this:
+ /* Valgrind expectedly complains about this:
* "sigprocmask: unknown 'how' field 2147483647"
- * Skip */
- if (getenv("USE_ZEND_ALLOC") !== '0') {
- var_dump(pcntl_sigprocmask(PHP_INT_MAX, array(SIGTERM)));
- } else {
- echo "Error triggered\n";
- echo "bool(false)\n";
- }
- var_dump(pcntl_sigprocmask(SIG_SETMASK, array(0)));
+ * Skip */
+ if (getenv("USE_ZEND_ALLOC") !== '0') {
+ var_dump(pcntl_sigprocmask(PHP_INT_MAX, array(SIGTERM)));
+ } else {
+ echo "Error triggered\n";
+ echo "bool(false)\n";
+ }
+ var_dump(pcntl_sigprocmask(SIG_SETMASK, array(0)));
- echo "sigwaitinfo with invalid arguments\n";
- var_dump(pcntl_sigwaitinfo(array(0)));
+ echo "sigwaitinfo with invalid arguments\n";
+ var_dump(pcntl_sigwaitinfo(array(0)));
- echo "sigtimedwait with invalid arguments\n";
- var_dump(pcntl_sigtimedwait(array(SIGTERM), $signo, PHP_INT_MAX, PHP_INT_MAX));
+ echo "sigtimedwait with invalid arguments\n";
+ var_dump(pcntl_sigtimedwait(array(SIGTERM), $signo, PHP_INT_MAX, PHP_INT_MAX));
} else {
- $siginfo = NULL;
- pcntl_sigtimedwait(array(SIGINT), $siginfo, 3600, 0);
- exit;
+ $siginfo = NULL;
+ pcntl_sigtimedwait(array(SIGINT), $siginfo, 3600, 0);
+ exit;
}
?>
diff --git a/ext/pcntl/tests/async_signals_2.phpt b/ext/pcntl/tests/async_signals_2.phpt
new file mode 100644
index 0000000000..be631bab5e
--- /dev/null
+++ b/ext/pcntl/tests/async_signals_2.phpt
@@ -0,0 +1,29 @@
+--TEST--
+Async signals in zend_call_function
+--SKIPIF--
+<?php
+if (!extension_loaded("pcntl")) print "skip";
+if (getenv("SKIP_SLOW_TESTS")) print "skip slow test";
+?>
+--FILE--
+<?php
+
+pcntl_async_signals(1);
+pcntl_signal(SIGALRM, function($signo) {
+ throw new Exception("Alarm!");
+});
+
+pcntl_alarm(1);
+try {
+ array_map(
+ 'time_nanosleep',
+ array_fill(0, 360, 1),
+ array_fill(0, 360, 0)
+ );
+} catch (Exception $e) {
+ echo $e->getMessage(), "\n";
+}
+
+?>
+--EXPECT--
+Alarm!
diff --git a/ext/pcntl/tests/pcntl_alarm.phpt b/ext/pcntl/tests/pcntl_alarm.phpt
index a9cae1616b..d0164f856b 100644
--- a/ext/pcntl/tests/pcntl_alarm.phpt
+++ b/ext/pcntl/tests/pcntl_alarm.phpt
@@ -8,16 +8,13 @@ max_execution_time=0
<?php
pcntl_signal(SIGALRM, function(){});
-var_dump(pcntl_alarm());
pcntl_alarm(0);
var_dump(pcntl_alarm(60));
var_dump(pcntl_alarm(1) > 0);
$siginfo = array();
var_dump(pcntl_sigtimedwait(array(SIGALRM),$siginfo,2) === SIGALRM);
?>
---EXPECTF--
-Warning: pcntl_alarm() expects exactly 1 parameter, 0 given in %s
-NULL
+--EXPECT--
int(0)
bool(true)
bool(true)
diff --git a/ext/pcntl/tests/pcntl_exec_2.phpt b/ext/pcntl/tests/pcntl_exec_2.phpt
index 72274ede5f..18a3a6bc24 100644
--- a/ext/pcntl/tests/pcntl_exec_2.phpt
+++ b/ext/pcntl/tests/pcntl_exec_2.phpt
@@ -10,14 +10,14 @@ if (!getenv("TEST_PHP_EXECUTABLE") || !is_executable(getenv("TEST_PHP_EXECUTABLE
--FILE--
<?php
if (getenv("PCNTL_EXEC_TEST_IS_CHILD")) {
- var_dump(getenv("FOO"));
- exit;
+ var_dump(getenv("FOO"));
+ exit;
}
echo "ok\n";
pcntl_exec(getenv("TEST_PHP_EXECUTABLE"), array('-n', __FILE__), array(
- "PCNTL_EXEC_TEST_IS_CHILD" => "1",
- "FOO" => "BAR",
- 1 => "long")
+ "PCNTL_EXEC_TEST_IS_CHILD" => "1",
+ "FOO" => "BAR",
+ 1 => "long")
);
echo "nok\n";
diff --git a/ext/pcntl/tests/pcntl_exec_3.phpt b/ext/pcntl/tests/pcntl_exec_3.phpt
index 5349381d92..7d7f6b5271 100644
--- a/ext/pcntl/tests/pcntl_exec_3.phpt
+++ b/ext/pcntl/tests/pcntl_exec_3.phpt
@@ -4,14 +4,10 @@ pcntl_exec() 3
<?php if (!extension_loaded("pcntl")) print "skip"; ?>
--FILE--
<?php
-var_dump(pcntl_exec());
$file = tempnam(sys_get_temp_dir(),"php");
var_dump(pcntl_exec($file, array("foo","bar"), array("foo" => "bar")));
unlink($file);
?>
--EXPECTF--
-Warning: pcntl_exec() expects at least 1 parameter, 0 given %s
-NULL
-
Warning: pcntl_exec(): Error has occurred: (errno %d) %s
bool(false)
diff --git a/ext/pcntl/tests/pcntl_fork_basic.phpt b/ext/pcntl/tests/pcntl_fork_basic.phpt
index 59931df850..3509e14a7f 100644
--- a/ext/pcntl/tests/pcntl_fork_basic.phpt
+++ b/ext/pcntl/tests/pcntl_fork_basic.phpt
@@ -15,10 +15,10 @@ echo "*** Test by calling method or function with its expected arguments, first
$pid = pcntl_fork();
if ($pid > 0) {
- pcntl_wait($status);
- var_dump($pid);
+ pcntl_wait($status);
+ var_dump($pid);
} else {
- var_dump($pid);
+ var_dump($pid);
}
?>
--EXPECTF--
diff --git a/ext/pcntl/tests/pcntl_signal.phpt b/ext/pcntl/tests/pcntl_signal.phpt
index 953ff54eef..cd55d9ad96 100644
--- a/ext/pcntl/tests/pcntl_signal.phpt
+++ b/ext/pcntl/tests/pcntl_signal.phpt
@@ -6,18 +6,17 @@ pcntl_signal()
--FILE--
<?php
pcntl_signal(SIGTERM, function($signo){
- echo "signal dispatched\n";
+ echo "signal dispatched\n";
});
posix_kill(posix_getpid(), SIGTERM);
pcntl_signal_dispatch();
pcntl_signal(SIGUSR1, function($signo, $siginfo){
- printf("got signal from %s\n", $siginfo['pid'] ?? 'nobody');
+ printf("got signal from %s\n", $siginfo['pid'] ?? 'nobody');
});
posix_kill(posix_getpid(), SIGUSR1);
pcntl_signal_dispatch();
-var_dump(pcntl_signal());
var_dump(pcntl_signal(SIGALRM, SIG_IGN));
var_dump(pcntl_signal(-1, -1));
var_dump(pcntl_signal(-1, function(){}));
@@ -31,9 +30,6 @@ echo "ok\n";
--EXPECTF--
signal dispatched
got signal from %r\d+|nobody%r
-
-Warning: pcntl_signal() expects at least 2 parameters, 0 given in %s
-NULL
bool(true)
Warning: pcntl_signal(): Invalid signal %s
diff --git a/ext/pcntl/tests/pcntl_wait.phpt b/ext/pcntl/tests/pcntl_wait.phpt
index d5ab709b76..5616d5b9c0 100644
--- a/ext/pcntl/tests/pcntl_wait.phpt
+++ b/ext/pcntl/tests/pcntl_wait.phpt
@@ -7,60 +7,27 @@ pcntl_wait()
<?php
$pid = pcntl_fork();
if ($pid == -1) {
- die("failed");
+ die("failed");
} else if ($pid) {
- $status = 0;
- pcntl_wait($status, WUNTRACED);
- var_dump(pcntl_wifexited($status));
- posix_kill($pid, SIGCONT);
+ $status = 0;
+ pcntl_wait($status, WUNTRACED);
+ var_dump(pcntl_wifexited($status));
+ posix_kill($pid, SIGCONT);
- pcntl_wait($status);
- var_dump(pcntl_wifsignaled($status));
- var_dump(pcntl_wifstopped($status));
- var_dump(pcntl_wexitstatus($status));
+ pcntl_wait($status);
+ var_dump(pcntl_wifsignaled($status));
+ var_dump(pcntl_wifstopped($status));
+ var_dump(pcntl_wexitstatus($status));
- var_dump(pcntl_wait($status, WNOHANG | WUNTRACED));
- var_dump(pcntl_wait());
- var_dump(pcntl_waitpid());
-
- var_dump(pcntl_wifexited());
- var_dump(pcntl_wifstopped());
- var_dump(pcntl_wifsignaled());
- var_dump(pcntl_wexitstatus());
- var_dump(pcntl_wtermsig());
- var_dump(pcntl_wstopsig());
+ var_dump(pcntl_wait($status, WNOHANG | WUNTRACED));
} else {
- posix_kill(posix_getpid(), SIGSTOP);
- exit(42);
+ posix_kill(posix_getpid(), SIGSTOP);
+ exit(42);
}
?>
---EXPECTF--
+--EXPECT--
bool(false)
bool(false)
bool(false)
int(42)
int(-1)
-
-Warning: pcntl_wait() expects at least 1 parameter, 0 given in %s
-NULL
-
-Warning: pcntl_waitpid() expects at least 2 parameters, 0 given in %s
-NULL
-
-Warning: pcntl_wifexited() expects exactly 1 parameter, 0 given in %s
-NULL
-
-Warning: pcntl_wifstopped() expects exactly 1 parameter, 0 given in %s
-NULL
-
-Warning: pcntl_wifsignaled() expects exactly 1 parameter, 0 given in %s
-NULL
-
-Warning: pcntl_wexitstatus() expects exactly 1 parameter, 0 given in %s
-NULL
-
-Warning: pcntl_wtermsig() expects exactly 1 parameter, 0 given in %s
-NULL
-
-Warning: pcntl_wstopsig() expects exactly 1 parameter, 0 given in %s
-NULL
diff --git a/ext/pcntl/tests/pcntl_wait_rusage1.phpt b/ext/pcntl/tests/pcntl_wait_rusage1.phpt
index b23195f914..106c7088b8 100644
--- a/ext/pcntl/tests/pcntl_wait_rusage1.phpt
+++ b/ext/pcntl/tests/pcntl_wait_rusage1.phpt
@@ -7,34 +7,34 @@ pcntl_wait() and rusage
<?php
$pid = pcntl_fork();
if ($pid == -1) {
- die("failed");
+ die("failed");
} else if ($pid) {
- $status = 0;
- var_dump(pcntl_wait($status, WUNTRACED, $rusage));
- var_dump($rusage['ru_utime.tv_sec']);
- var_dump($rusage['ru_utime.tv_usec']);
+ $status = 0;
+ var_dump(pcntl_wait($status, WUNTRACED, $rusage));
+ var_dump($rusage['ru_utime.tv_sec']);
+ var_dump($rusage['ru_utime.tv_usec']);
- posix_kill($pid, SIGCONT);
+ posix_kill($pid, SIGCONT);
- $rusage = array(1,2,3);
- pcntl_wait($status, WUNTRACED, $rusage);
- var_dump($rusage['ru_utime.tv_sec']);
- var_dump($rusage['ru_utime.tv_usec']);
+ $rusage = array(1,2,3);
+ pcntl_wait($status, WUNTRACED, $rusage);
+ var_dump($rusage['ru_utime.tv_sec']);
+ var_dump($rusage['ru_utime.tv_usec']);
- $rusage = "string";
- pcntl_wait($status, 0, $rusage);
- var_dump(gettype($rusage));
- var_dump(count($rusage));
+ $rusage = "string";
+ pcntl_wait($status, 0, $rusage);
+ var_dump(gettype($rusage));
+ var_dump(count($rusage));
- $rusage = new stdClass;
- pcntl_wait($status, 0, $rusage);
- var_dump(gettype($rusage));
- var_dump(count($rusage));
+ $rusage = new stdClass;
+ pcntl_wait($status, 0, $rusage);
+ var_dump(gettype($rusage));
+ var_dump(count($rusage));
- echo "END\n";
+ echo "END\n";
} else {
- posix_kill(posix_getpid(), SIGSTOP);
- exit(42);
+ posix_kill(posix_getpid(), SIGSTOP);
+ exit(42);
}
?>
--EXPECTF--
diff --git a/ext/pcntl/tests/pcntl_waitpid_rusage1.phpt b/ext/pcntl/tests/pcntl_waitpid_rusage1.phpt
index 393dd59b9c..d9776676a1 100644
--- a/ext/pcntl/tests/pcntl_waitpid_rusage1.phpt
+++ b/ext/pcntl/tests/pcntl_waitpid_rusage1.phpt
@@ -7,34 +7,34 @@ pcntl_waitpid() and rusage
<?php
$pid = pcntl_fork();
if ($pid == -1) {
- die("failed");
+ die("failed");
} else if ($pid) {
- $status = 0;
- var_dump(pcntl_waitpid($pid, $status, WUNTRACED, $rusage));
- var_dump($rusage['ru_utime.tv_sec']);
- var_dump($rusage['ru_utime.tv_usec']);
+ $status = 0;
+ var_dump(pcntl_waitpid($pid, $status, WUNTRACED, $rusage));
+ var_dump($rusage['ru_utime.tv_sec']);
+ var_dump($rusage['ru_utime.tv_usec']);
- posix_kill($pid, SIGCONT);
+ posix_kill($pid, SIGCONT);
- $rusage = array(1,2,3);
- pcntl_waitpid($pid, $status, WUNTRACED, $rusage);
- var_dump($rusage['ru_utime.tv_sec']);
- var_dump($rusage['ru_utime.tv_usec']);
+ $rusage = array(1,2,3);
+ pcntl_waitpid($pid, $status, WUNTRACED, $rusage);
+ var_dump($rusage['ru_utime.tv_sec']);
+ var_dump($rusage['ru_utime.tv_usec']);
- $rusage = "string";
- pcntl_waitpid($pid, $status, 0, $rusage);
- var_dump(gettype($rusage));
- var_dump(count($rusage));
+ $rusage = "string";
+ pcntl_waitpid($pid, $status, 0, $rusage);
+ var_dump(gettype($rusage));
+ var_dump(count($rusage));
- $rusage = new stdClass;
- pcntl_waitpid($pid, $status, 0, $rusage);
- var_dump(gettype($rusage));
- var_dump(count($rusage));
+ $rusage = new stdClass;
+ pcntl_waitpid($pid, $status, 0, $rusage);
+ var_dump(gettype($rusage));
+ var_dump(count($rusage));
- echo "END\n";
+ echo "END\n";
} else {
- posix_kill(posix_getpid(), SIGSTOP);
- exit(42);
+ posix_kill(posix_getpid(), SIGSTOP);
+ exit(42);
}
?>
--EXPECTF--