summaryrefslogtreecommitdiff
path: root/tests/it_url_slow.t
diff options
context:
space:
mode:
Diffstat (limited to 'tests/it_url_slow.t')
-rwxr-xr-xtests/it_url_slow.t67
1 files changed, 67 insertions, 0 deletions
diff --git a/tests/it_url_slow.t b/tests/it_url_slow.t
new file mode 100755
index 0000000..9474ef8
--- /dev/null
+++ b/tests/it_url_slow.t
@@ -0,0 +1,67 @@
+#!/www/server/bin/php -qC
+<?php
+
+# slow tests for url.class
+
+# TESTFLAGS SLOW
+
+$server = proc_open(
+ 'php -S localhost:8000 ' . dirname($_SERVER['PHP_SELF']) . '/it_url.testserver.php',
+ array(0 => fopen('/dev/null', 'r'), 1 => fopen('/dev/null', 'w'), 2 => array('pipe', 'w')),
+ $pipes
+);
+usleep(100000);
+stream_set_blocking($pipes[2], 0);
+function server_output() {
+ $result = array();
+ while (($result[] = trim(fgets($GLOBALS['pipes'][2])))) {};
+ return array_filter($result);
+}
+
+$res = is(
+ it_url::get('http://localhost:8000/short_sleep'),
+ "Testserver output after short sleep",
+ 'it_url::get() waits for 4 seconds',
+);
+$output = server_output();
+if (!$res)
+ diag($output);
+
+$start = microtime(true);
+$res = ok(
+ !it_url::get(array('url' => 'http://localhost:8000/long_sleep', 'timeout' => 5, 'retries' => 0)),
+ 'it_url::get() fails after timeout seconds with no output',
+);
+$res2 = is(
+ floor(microtime(true) - $start), 5,
+ '... and fails as soon as timeout is surpassed',
+);
+sleep(1); # wait for testserver
+$output = server_output();
+if (!$res || !$res2)
+ diag($output);
+
+$res = is(
+ it_url::get('http://localhost:8000/slow_response'),
+ join('', it::map('"Testserver slow output $v\n"', range(0, 5))),
+ 'it_url::get() waits for slow response with continuous output',
+);
+$output = server_output();
+if (!$res)
+ diag($output);
+
+$start = microtime(true);
+$res = ok(
+ !it_url::get(array('url' => 'http://localhost:8000/slow_response', 'totaltimeout' => 5, 'retries' => 0)),
+ 'it_url::get() fails for response slower than totaltimeout',
+);
+$res2 = is(
+ floor(microtime(true) - $start), 5,
+ '... and fails as soon as totaltimeout is surpassed'
+);
+$output = server_output();
+if (!$res || !$res2)
+ diag($output);
+
+proc_terminate($server);
+