AbstractConsumerTest.php
2 years ago
CurlConsumerTest.php
2 years ago
FileConsumerTest.php
2 years ago
SocketConsumerTest.php
2 years ago
index.php
2 years ago
CurlConsumerTest.php
115 lines
| 1 | <?php |
| 2 | if (!defined('ABSPATH')) exit; |
| 3 | class ConsumerStrategies_CurlConsumerTest extends PHPUnit_Framework_TestCase { |
| 4 | public function testSettings() { |
| 5 | $consumer = new CurlConsumer(array( |
| 6 | "host" => "localhost", |
| 7 | "endpoint" => "/endpoint", |
| 8 | "timeout" => 2, |
| 9 | "use_ssl" => false, |
| 10 | "fork" => false |
| 11 | )); |
| 12 | $this->assertEquals("localhost", $consumer->getHost()); |
| 13 | $this->assertEquals("/endpoint", $consumer->getEndpoint()); |
| 14 | $this->assertEquals(2, $consumer->getTimeout()); |
| 15 | $this->assertEquals("http", $consumer->getProtocol()); |
| 16 | $this->assertEquals(false, $consumer->getFork()); |
| 17 | } |
| 18 | public function testBlocking() { |
| 19 | $consumer = new CurlConsumer(array( |
| 20 | "host" => "localhost", |
| 21 | "endpoint" => "/endpoint", |
| 22 | "timeout" => 2, |
| 23 | "use_ssl" => true, |
| 24 | "fork" => false |
| 25 | )); |
| 26 | $consumer->persist(array("msg")); |
| 27 | $this->assertEquals(1, $consumer->blockingCalls); |
| 28 | } |
| 29 | public function testForked() { |
| 30 | $consumer = new CurlConsumer(array( |
| 31 | "host" => "localhost", |
| 32 | "endpoint" => "/endpoint", |
| 33 | "timeout" => 2, |
| 34 | "use_ssl" => true, |
| 35 | "fork" => true |
| 36 | )); |
| 37 | $consumer->persist(array("msg")); |
| 38 | $this->assertEquals(1, $consumer->forkedCalls); |
| 39 | } |
| 40 | public function testExecuteCurlFailure() { |
| 41 | $error_handler = new ErrorHandler(); |
| 42 | $consumer = new ConsumerStrategies_CurlConsumer(array( |
| 43 | "host" => "some.domain.that.should.not.ever.exist.tld", |
| 44 | "endpoint" => "/endpoint", |
| 45 | "timeout" => 2, |
| 46 | "use_ssl" => false, |
| 47 | "fork" => false, |
| 48 | "error_callback" => array($error_handler, 'handle_error') |
| 49 | )); |
| 50 | $resp = $consumer->persist(array("msg")); |
| 51 | $this->assertFalse($resp); |
| 52 | $this->assertEquals($error_handler->last_code, CURLE_COULDNT_RESOLVE_HOST); |
| 53 | } |
| 54 | public function testOptions() { |
| 55 | function callback() { } |
| 56 | $consumer = new ConsumerStrategies_CurlConsumer(array( |
| 57 | "host" => "localhost", |
| 58 | "endpoint" => "/endpoint", |
| 59 | "timeout" => 2, |
| 60 | "connect_timeout" => 1, |
| 61 | "use_ssl" => true, |
| 62 | "fork" => false, |
| 63 | "num_threads" => 5, |
| 64 | "error_callback" => 'callback' |
| 65 | )); |
| 66 | $this->assertEquals($consumer->getHost(), "localhost"); |
| 67 | $this->assertEquals($consumer->getEndpoint(), "/endpoint"); |
| 68 | $this->assertEquals($consumer->getTimeout(), 2); |
| 69 | $this->assertEquals($consumer->getConnectTimeout(), 1); |
| 70 | $this->assertEquals($consumer->getProtocol(), "https"); |
| 71 | $this->assertEquals($consumer->getNumThreads(), 5); |
| 72 | } |
| 73 | } |
| 74 | class ErrorHandler { |
| 75 | public $last_code = -1; |
| 76 | public $last_msg = ""; |
| 77 | public function handle_error($code, $msg) { |
| 78 | $this->last_code = $code; |
| 79 | $this->last_msg = $msg; |
| 80 | } |
| 81 | } |
| 82 | class CurlConsumer extends ConsumerStrategies_CurlConsumer { |
| 83 | public $forkedCalls = 0; |
| 84 | public $blockingCalls = 0; |
| 85 | public function getEndpoint() |
| 86 | { |
| 87 | return $this->_endpoint; |
| 88 | } |
| 89 | public function getFork() |
| 90 | { |
| 91 | return $this->_fork; |
| 92 | } |
| 93 | public function getHost() |
| 94 | { |
| 95 | return $this->_host; |
| 96 | } |
| 97 | public function getProtocol() |
| 98 | { |
| 99 | return $this->_protocol; |
| 100 | } |
| 101 | public function getTimeout() |
| 102 | { |
| 103 | return $this->_timeout; |
| 104 | } |
| 105 | protected function _execute($url, $data) |
| 106 | { |
| 107 | $this->blockingCalls++; |
| 108 | return parent::_execute($url, $data); |
| 109 | } |
| 110 | protected function _execute_forked($url, $data) |
| 111 | { |
| 112 | $this->forkedCalls++; |
| 113 | return parent::_execute_forked($url, $data); |
| 114 | } |
| 115 | } |