Вход Регистрация
Файл: vkolhoze.com/vendor/guzzle/guzzle/tests/Guzzle/Tests/Http/Curl/CurlMultiProxyTest.php
Строк: 131
<?php

namespace GuzzleTestsHttpCurl;

use 
GuzzleHttpClient;
use 
GuzzleHttpMessageRequest;
use 
GuzzleHttpCurlCurlMultiProxy;

/**
 * @group server
 * @covers GuzzleHttpCurlCurlMultiProxy
 */
class CurlMultiProxyTest extends GuzzleTestsGuzzleTestCase
{
    const 
SELECT_TIMEOUT 23.1;

    const 
MAX_HANDLES 2;

    
/** @var GuzzleHttpCurlCurlMultiProxy */
    
private $multi;

    protected function 
setUp()
    {
        
parent::setUp();
        
$this->multi = new CurlMultiProxy(self::MAX_HANDLESself::SELECT_TIMEOUT);
    }

    public function 
tearDown()
    {
        unset(
$this->multi);
    }

    public function 
testConstructorSetsMaxHandles()
    {
        
$m = new CurlMultiProxy(self::MAX_HANDLESself::SELECT_TIMEOUT);
        
$this->assertEquals(self::MAX_HANDLES$this->readAttribute($m'maxHandles'));
    }

    public function 
testConstructorSetsSelectTimeout()
    {
        
$m = new CurlMultiProxy(self::MAX_HANDLESself::SELECT_TIMEOUT);
        
$this->assertEquals(self::SELECT_TIMEOUT$this->readAttribute($m'selectTimeout'));
    }

    public function 
testAddingRequestsAddsToQueue()
    {
        
$r = new Request('GET''http://www.foo.com');
        
$this->assertSame($this->multi$this->multi->add($r));
        
$this->assertEquals(1count($this->multi));
        
$this->assertEquals(array($r), $this->multi->all());

        
$this->assertTrue($this->multi->remove($r));
        
$this->assertFalse($this->multi->remove($r));
        
$this->assertEquals(0count($this->multi));
    }

    public function 
testResetClearsState()
    {
        
$r = new Request('GET''http://www.foo.com');
        
$this->multi->add($r);
        
$this->multi->reset();
        
$this->assertEquals(0count($this->multi));
    }

    public function 
testSendWillSendQueuedRequestsFirst()
    {
        
$this->getServer()->flush();
        
$this->getServer()->enqueue(array(
            
"HTTP/1.1 200 OKrnContent-Length: 0rnrn",
            
"HTTP/1.1 200 OKrnContent-Length: 0rnrn"
        
));
        
$client = new Client($this->getServer()->getUrl());
        
$events = array();
        
$client->getCurlMulti()->getEventDispatcher()->addListener(
            
CurlMultiProxy::ADD_REQUEST,
            function (
$e) use (&$events) {
                
$events[] = $e;
            }
        );
        
$request $client->get();
        
$request->getEventDispatcher()->addListener('request.complete', function () use ($client) {
            
$client->get('/foo')->send();
        });
        
$request->send();
        
$received $this->getServer()->getReceivedRequests(true);
        
$this->assertEquals(2count($received));
        
$this->assertEquals($this->getServer()->getUrl(), $received[0]->getUrl());
        
$this->assertEquals($this->getServer()->getUrl() . 'foo'$received[1]->getUrl());
        
$this->assertEquals(2count($events));
    }

    public function 
testTrimsDownMaxHandleCount()
    {
        
$this->getServer()->flush();
        
$this->getServer()->enqueue(array(
            
"HTTP/1.1 307 OKrnLocation: /foornContent-Length: 0rnrn",
            
"HTTP/1.1 307 OKrnLocation: /foornContent-Length: 0rnrn",
            
"HTTP/1.1 307 OKrnLocation: /foornContent-Length: 0rnrn",
            
"HTTP/1.1 307 OKrnLocation: /foornContent-Length: 0rnrn",
            
"HTTP/1.1 200 OKrnContent-Length: 0rnrn"
        
));
        
$client = new Client($this->getServer()->getUrl());
        
$client->setCurlMulti(new CurlMultiProxy(self::MAX_HANDLESself::SELECT_TIMEOUT));
        
$request $client->get();
        
$request->send();
        
$this->assertEquals(200$request->getResponse()->getStatusCode());
        
$handles $this->readAttribute($client->getCurlMulti(), 'handles');
        
$this->assertEquals(2count($handles));
    }
}
Онлайн: 2
Реклама