115 lines
No EOL
3 KiB
PHP
115 lines
No EOL
3 KiB
PHP
<?php
|
|
if (!defined('ABSPATH')) exit;
|
|
class ConsumerStrategies_CurlConsumerTest extends PHPUnit_Framework_TestCase {
|
|
public function testSettings() {
|
|
$consumer = new CurlConsumer(array(
|
|
"host" => "localhost",
|
|
"endpoint" => "/endpoint",
|
|
"timeout" => 2,
|
|
"use_ssl" => false,
|
|
"fork" => false
|
|
));
|
|
$this->assertEquals("localhost", $consumer->getHost());
|
|
$this->assertEquals("/endpoint", $consumer->getEndpoint());
|
|
$this->assertEquals(2, $consumer->getTimeout());
|
|
$this->assertEquals("http", $consumer->getProtocol());
|
|
$this->assertEquals(false, $consumer->getFork());
|
|
}
|
|
public function testBlocking() {
|
|
$consumer = new CurlConsumer(array(
|
|
"host" => "localhost",
|
|
"endpoint" => "/endpoint",
|
|
"timeout" => 2,
|
|
"use_ssl" => true,
|
|
"fork" => false
|
|
));
|
|
$consumer->persist(array("msg"));
|
|
$this->assertEquals(1, $consumer->blockingCalls);
|
|
}
|
|
public function testForked() {
|
|
$consumer = new CurlConsumer(array(
|
|
"host" => "localhost",
|
|
"endpoint" => "/endpoint",
|
|
"timeout" => 2,
|
|
"use_ssl" => true,
|
|
"fork" => true
|
|
));
|
|
$consumer->persist(array("msg"));
|
|
$this->assertEquals(1, $consumer->forkedCalls);
|
|
}
|
|
public function testExecuteCurlFailure() {
|
|
$error_handler = new ErrorHandler();
|
|
$consumer = new ConsumerStrategies_CurlConsumer(array(
|
|
"host" => "some.domain.that.should.not.ever.exist.tld",
|
|
"endpoint" => "/endpoint",
|
|
"timeout" => 2,
|
|
"use_ssl" => false,
|
|
"fork" => false,
|
|
"error_callback" => array($error_handler, 'handle_error')
|
|
));
|
|
$resp = $consumer->persist(array("msg"));
|
|
$this->assertFalse($resp);
|
|
$this->assertEquals($error_handler->last_code, CURLE_COULDNT_RESOLVE_HOST);
|
|
}
|
|
public function testOptions() {
|
|
function callback() { }
|
|
$consumer = new ConsumerStrategies_CurlConsumer(array(
|
|
"host" => "localhost",
|
|
"endpoint" => "/endpoint",
|
|
"timeout" => 2,
|
|
"connect_timeout" => 1,
|
|
"use_ssl" => true,
|
|
"fork" => false,
|
|
"num_threads" => 5,
|
|
"error_callback" => 'callback'
|
|
));
|
|
$this->assertEquals($consumer->getHost(), "localhost");
|
|
$this->assertEquals($consumer->getEndpoint(), "/endpoint");
|
|
$this->assertEquals($consumer->getTimeout(), 2);
|
|
$this->assertEquals($consumer->getConnectTimeout(), 1);
|
|
$this->assertEquals($consumer->getProtocol(), "https");
|
|
$this->assertEquals($consumer->getNumThreads(), 5);
|
|
}
|
|
}
|
|
class ErrorHandler {
|
|
public $last_code = -1;
|
|
public $last_msg = "";
|
|
public function handle_error($code, $msg) {
|
|
$this->last_code = $code;
|
|
$this->last_msg = $msg;
|
|
}
|
|
}
|
|
class CurlConsumer extends ConsumerStrategies_CurlConsumer {
|
|
public $forkedCalls = 0;
|
|
public $blockingCalls = 0;
|
|
public function getEndpoint()
|
|
{
|
|
return $this->_endpoint;
|
|
}
|
|
public function getFork()
|
|
{
|
|
return $this->_fork;
|
|
}
|
|
public function getHost()
|
|
{
|
|
return $this->_host;
|
|
}
|
|
public function getProtocol()
|
|
{
|
|
return $this->_protocol;
|
|
}
|
|
public function getTimeout()
|
|
{
|
|
return $this->_timeout;
|
|
}
|
|
protected function _execute($url, $data)
|
|
{
|
|
$this->blockingCalls++;
|
|
return parent::_execute($url, $data);
|
|
}
|
|
protected function _execute_forked($url, $data)
|
|
{
|
|
$this->forkedCalls++;
|
|
return parent::_execute_forked($url, $data);
|
|
}
|
|
} |