31 $this->retried =
false;
41 $this->retried = $event;
52 $this->assertInstanceOf(
'Guzzle\Plugin\Backoff\BackoffPlugin', $plugin);
53 $strategy = $this->readAttribute($plugin,
'strategy');
54 $this->assertInstanceOf(
'Guzzle\Plugin\Backoff\TruncatedBackoffStrategy', $strategy);
55 $this->assertEquals(3, $this->readAttribute($strategy,
'max'));
56 $strategy = $this->readAttribute($strategy,
'next');
57 $this->assertInstanceOf(
'Guzzle\Plugin\Backoff\HttpBackoffStrategy', $strategy);
58 $this->assertEquals(array(204 =>
true), $this->readAttribute($strategy,
'errorCodes'));
59 $strategy = $this->readAttribute($strategy,
'next');
60 $this->assertInstanceOf(
'Guzzle\Plugin\Backoff\CurlBackoffStrategy', $strategy);
61 $this->assertEquals(array(10 =>
true), $this->readAttribute($strategy,
'errorCodes'));
62 $strategy = $this->readAttribute($strategy,
'next');
63 $this->assertInstanceOf(
'Guzzle\Plugin\Backoff\ExponentialBackoffStrategy', $strategy);
68 $request =
new Request(
'GET',
'http://www.example.com');
69 $request->setState(
'transfer');
71 $mock = $this->getMockBuilder(
'Guzzle\Plugin\Backoff\BackoffStrategyInterface')
72 ->setMethods(array(
'getBackoffPeriod'))
73 ->getMockForAbstractClass();
75 $mock->expects($this->once())
76 ->method(
'getBackoffPeriod')
77 ->will($this->returnValue(
false));
80 $plugin->addSubscriber($this);
81 $plugin->onRequestSent(
new Event(array(
'request' => $request)));
82 $this->assertFalse($this->retried);
87 $request =
new Request(
'GET',
'http://www.example.com');
88 $request->setState(
'transfer');
90 $handle = $this->getMockBuilder(
'Guzzle\Http\Curl\CurlHandle')->disableOriginalConstructor()->getMock();
92 $e->setCurlHandle($handle);
95 $plugin->addSubscriber($this);
97 $event =
new Event(array(
98 'request' => $request,
99 'response' => $response,
103 $plugin->onRequestSent($event);
104 $this->assertEquals(array(
105 'request' => $request,
106 'response' => $response,
110 ), $this->readAttribute($this->retried,
'context'));
112 $plugin->onRequestSent($event);
113 $this->assertEquals(array(
114 'request' => $request,
115 'response' => $response,
119 ), $this->readAttribute($this->retried,
'context'));
124 $request =
new Request(
'GET',
'http://www.foo.com');
126 $plugin->onRequestPoll(
new Event(array(
'request' => $request)));
134 "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
135 "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
136 "HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ndata"
150 $client->getEventDispatcher()->addSubscriber($plugin);
151 $request = $client->get();
155 $this->assertEquals(200, $request->getResponse()->getStatusCode());
156 $this->assertEquals(
'data', $request->getResponse()->getBody(
true));
159 $this->assertEquals(3, count($this->
getServer()->getReceivedRequests(
false)));
170 "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
171 "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n"
183 $client->addSubscriber($plugin);
184 $client->get()->send();
192 "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
193 "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
194 "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
195 "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
196 "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
197 "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
198 "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
199 "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
200 "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
201 "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
202 "HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ndata",
203 "HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ndata",
204 "HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ndata",
205 "HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ndata",
206 "HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ndata"
219 $client->getEventDispatcher()->addSubscriber($plugin);
221 for ($i = 0; $i < 5; $i++) {
222 $requests[] = $client->get();
224 $client->send($requests);
226 $this->assertEquals(15, count($this->
getServer()->getReceivedRequests(
false)));
237 "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
238 "HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ndata"
246 $client->getEventDispatcher()->addSubscriber($plugin);
247 $request = $client->get();
250 $this->assertEquals(
'data', $request->getResponse()->getBody(
true));
252 $this->assertEquals(2, count($this->
getServer()->getReceivedRequests(
false)));
259 $request->setBody(
'abc');
263 $request->getBody()->seek(3);
264 $this->assertEquals(
'', $request->getBody()->read(1));
269 $this->assertEquals(
'a', $request->getBody()->read(1));
284 $multi = $this->getMockBuilder(
'Guzzle\Http\Curl\CurlMulti')
285 ->setMethods(array(
'remove',
'add'))
289 $event =
new Event(array(
290 'request' => $request,
291 'curl_multi' => $multi