Open Monograph Press  3.3.0
CurlMultiProxyTest.php
1 <?php
2 
3 namespace Guzzle\Tests\Http\Curl;
4 
8 
14 {
15  const SELECT_TIMEOUT = 23.1;
16 
17  const MAX_HANDLES = 2;
18 
20  private $multi;
21 
22  protected function setUp()
23  {
24  parent::setUp();
25  $this->multi = new CurlMultiProxy(self::MAX_HANDLES, self::SELECT_TIMEOUT);
26  }
27 
28  public function tearDown()
29  {
30  unset($this->multi);
31  }
32 
33  public function testConstructorSetsMaxHandles()
34  {
35  $m = new CurlMultiProxy(self::MAX_HANDLES, self::SELECT_TIMEOUT);
36  $this->assertEquals(self::MAX_HANDLES, $this->readAttribute($m, 'maxHandles'));
37  }
38 
39  public function testConstructorSetsSelectTimeout()
40  {
41  $m = new CurlMultiProxy(self::MAX_HANDLES, self::SELECT_TIMEOUT);
42  $this->assertEquals(self::SELECT_TIMEOUT, $this->readAttribute($m, 'selectTimeout'));
43  }
44 
45  public function testAddingRequestsAddsToQueue()
46  {
47  $r = new Request('GET', 'http://www.foo.com');
48  $this->assertSame($this->multi, $this->multi->add($r));
49  $this->assertEquals(1, count($this->multi));
50  $this->assertEquals(array($r), $this->multi->all());
51 
52  $this->assertTrue($this->multi->remove($r));
53  $this->assertFalse($this->multi->remove($r));
54  $this->assertEquals(0, count($this->multi));
55  }
56 
57  public function testResetClearsState()
58  {
59  $r = new Request('GET', 'http://www.foo.com');
60  $this->multi->add($r);
61  $this->multi->reset();
62  $this->assertEquals(0, count($this->multi));
63  }
64 
65  public function testSendWillSendQueuedRequestsFirst()
66  {
67  $this->getServer()->flush();
68  $this->getServer()->enqueue(array(
69  "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n",
70  "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"
71  ));
72  $client = new Client($this->getServer()->getUrl());
73  $events = array();
74  $client->getCurlMulti()->getEventDispatcher()->addListener(
76  function ($e) use (&$events) {
77  $events[] = $e;
78  }
79  );
80  $request = $client->get();
81  $request->getEventDispatcher()->addListener('request.complete', function () use ($client) {
82  $client->get('/foo')->send();
83  });
84  $request->send();
85  $received = $this->getServer()->getReceivedRequests(true);
86  $this->assertEquals(2, count($received));
87  $this->assertEquals($this->getServer()->getUrl(), $received[0]->getUrl());
88  $this->assertEquals($this->getServer()->getUrl() . 'foo', $received[1]->getUrl());
89  $this->assertEquals(2, count($events));
90  }
91 
92  public function testTrimsDownMaxHandleCount()
93  {
94  $this->getServer()->flush();
95  $this->getServer()->enqueue(array(
96  "HTTP/1.1 307 OK\r\nLocation: /foo\r\nContent-Length: 0\r\n\r\n",
97  "HTTP/1.1 307 OK\r\nLocation: /foo\r\nContent-Length: 0\r\n\r\n",
98  "HTTP/1.1 307 OK\r\nLocation: /foo\r\nContent-Length: 0\r\n\r\n",
99  "HTTP/1.1 307 OK\r\nLocation: /foo\r\nContent-Length: 0\r\n\r\n",
100  "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"
101  ));
102  $client = new Client($this->getServer()->getUrl());
103  $client->setCurlMulti(new CurlMultiProxy(self::MAX_HANDLES, self::SELECT_TIMEOUT));
104  $request = $client->get();
105  $request->send();
106  $this->assertEquals(200, $request->getResponse()->getStatusCode());
107  $handles = $this->readAttribute($client->getCurlMulti(), 'handles');
108  $this->assertEquals(2, count($handles));
109  }
110 }
Guzzle\Tests\Http\Curl\CurlMultiProxyTest\testConstructorSetsSelectTimeout
testConstructorSetsSelectTimeout()
Definition: CurlMultiProxyTest.php:42
Guzzle\Tests\GuzzleTestCase
Definition: GuzzleTestCase.php:22
Guzzle\Tests\Http\Curl\CurlMultiProxyTest\testSendWillSendQueuedRequestsFirst
testSendWillSendQueuedRequestsFirst()
Definition: CurlMultiProxyTest.php:68
Guzzle\Tests\Http\Curl\CurlMultiProxyTest\SELECT_TIMEOUT
const SELECT_TIMEOUT
Definition: CurlMultiProxyTest.php:15
Guzzle\Tests\Http\Curl
Definition: CurlHandleTest.php:3
Guzzle\Http\Curl\CurlMultiProxy
Definition: CurlMultiProxy.php:12
Guzzle\Tests\Http\Curl\CurlMultiProxyTest\MAX_HANDLES
const MAX_HANDLES
Definition: CurlMultiProxyTest.php:17
Guzzle\Tests\Http\Curl\CurlMultiProxyTest\testTrimsDownMaxHandleCount
testTrimsDownMaxHandleCount()
Definition: CurlMultiProxyTest.php:95
Guzzle\Tests\Http\Curl\CurlMultiProxyTest\testAddingRequestsAddsToQueue
testAddingRequestsAddsToQueue()
Definition: CurlMultiProxyTest.php:48
Guzzle\Tests\Http\Curl\CurlMultiProxyTest
Definition: CurlMultiProxyTest.php:13
Guzzle\Http\Message\Request
Definition: paymethod/paypal/lib/vendor/guzzle/guzzle/src/Guzzle/Http/Message/Request.php:25
Guzzle\Tests\Http\Curl\CurlMultiProxyTest\testConstructorSetsMaxHandles
testConstructorSetsMaxHandles()
Definition: CurlMultiProxyTest.php:36
Guzzle\Tests\Http\Curl\CurlMultiProxyTest\setUp
setUp()
Definition: CurlMultiProxyTest.php:25
Guzzle\Tests\Http\Curl\CurlMultiProxyTest\testResetClearsState
testResetClearsState()
Definition: CurlMultiProxyTest.php:60
Guzzle\Http\Client
Definition: paymethod/paypal/lib/vendor/guzzle/guzzle/src/Guzzle/Http/Client.php:24
Guzzle\Tests\GuzzleTestCase\getServer
static getServer()
Definition: GuzzleTestCase.php:36
Guzzle\Tests\Http\Curl\CurlMultiProxyTest\tearDown
tearDown()
Definition: CurlMultiProxyTest.php:31
Guzzle\Http\Curl\CurlMultiInterface\ADD_REQUEST
const ADD_REQUEST
Definition: CurlMultiInterface.php:15