#!/www/server/bin/php -qC 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); $res = ok( it_url::get(U('http://localhost:8000/repeat', 'string' => "abc", 'num' => 1024 * 1024)) == str_repeat("abc", 1024 * 1024), 'it_url::get() handles large response', ); $output = server_output(); if (!$res) diag($output); proc_terminate($server);