/** * Tests whether 'complete' event on individual Request has been fired * when using RequestsQueue */ public function testRequestCompleteEvent() { $eventFired = 0; $req = new cURL\Request(); $req->getOptions()->set(CURLOPT_URL, $this->createRequestUrl())->set(CURLOPT_RETURNTRANSFER, true); $req->addListener('complete', function ($event) use(&$eventFired) { $this->validateSuccesfulResponse($event->response); $eventFired++; }); $queue = new cURL\RequestsQueue(); $queue->attach($req); $queue->send(); $this->assertEquals(1, $eventFired); }
/** * Requests which fail very quickly might cause infinite loop and return no response. * http://curl.haxx.se/libcurl/c/curl_multi_perform.html * "If an added handle fails very quickly, it may never be counted as a running_handle." * This test ensures that it won't loop and will return properly error code. */ public function testErrorCode() { $request = new cURL\Request(''); $request->addListener('complete', function (cURL\Event $e) { $this->assertEquals('<url> malformed', $e->response->getError()->getMessage()); }); $queue = new cURL\RequestsQueue(); $queue->attach($request); $queue->send(); }
/** * Test requests attaching on run time * * @return void */ public function testAttachNewOnRuntime() { $total = 10; $test = $this; $queue = new cURL\RequestsQueue(); $queue->getDefaultOptions()->set(CURLOPT_RETURNTRANSFER, true)->set(CURLOPT_ENCODING, ''); $n = 0; $attachNew = function () use($queue, &$n, $total) { if ($n < $total) { $n++; $request = new cURL\Request(); $request->_path = '/' . $n; $request->getOptions()->set(CURLOPT_URL, $this->okTestUrl . $n); $queue->attach($request); } }; $attachNew(); $queue->addListener('complete', function (cURL\Event $event) use(&$requests, $test, $attachNew) { $test->validateSuccesfulResponse($event->request->_path, $event->response); $attachNew(); }); $queue->send(); $this->assertEquals($total, $n); }