404

[ Avaa Bypassed ]




Upload:

Command:

botdev@3.139.60.67: ~ $
<?php

namespace React\Tests\Dns\Query;

use React\Tests\Dns\TestCase;
use React\Dns\Query\CachedExecutor;
use React\Dns\Query\Query;
use React\Dns\Model\Message;
use React\Dns\Model\Record;
use React\Promise;

class CachedExecutorTest extends TestCase
{
    /**
     * @covers React\Dns\Query\CachedExecutor
     * @test
     */
    public function queryShouldDelegateToDecoratedExecutor()
    {
        $executor = $this->createExecutorMock();
        $executor
            ->expects($this->once())
            ->method('query')
            ->with('8.8.8.8', $this->isInstanceOf('React\Dns\Query\Query'))
            ->will($this->returnValue($this->createPromiseMock()));

        $cache = $this->getMockBuilder('React\Dns\Query\RecordCache')
            ->disableOriginalConstructor()
            ->getMock();
        $cache
            ->expects($this->once())
            ->method('lookup')
            ->will($this->returnValue(Promise\reject()));
        $cachedExecutor = new CachedExecutor($executor, $cache);

        $query = new Query('igor.io', Message::TYPE_A, Message::CLASS_IN, 1345656451);
        $cachedExecutor->query('8.8.8.8', $query);
    }

    /**
     * @covers React\Dns\Query\CachedExecutor
     * @test
     */
    public function callingQueryTwiceShouldUseCachedResult()
    {
        $cachedRecords = array(new Record('igor.io', Message::TYPE_A, Message::CLASS_IN));

        $executor = $this->createExecutorMock();
        $executor
            ->expects($this->once())
            ->method('query')
            ->will($this->callQueryCallbackWithAddress('178.79.169.131'));

        $cache = $this->getMockBuilder('React\Dns\Query\RecordCache')
            ->disableOriginalConstructor()
            ->getMock();
        $cache
            ->expects($this->at(0))
            ->method('lookup')
            ->with($this->isInstanceOf('React\Dns\Query\Query'))
            ->will($this->returnValue(Promise\reject()));
        $cache
            ->expects($this->at(1))
            ->method('storeResponseMessage')
            ->with($this->isType('integer'), $this->isInstanceOf('React\Dns\Model\Message'));
        $cache
            ->expects($this->at(2))
            ->method('lookup')
            ->with($this->isInstanceOf('React\Dns\Query\Query'))
            ->will($this->returnValue(Promise\resolve($cachedRecords)));

        $cachedExecutor = new CachedExecutor($executor, $cache);

        $query = new Query('igor.io', Message::TYPE_A, Message::CLASS_IN, 1345656451);
        $cachedExecutor->query('8.8.8.8', $query, function () {}, function () {});
        $cachedExecutor->query('8.8.8.8', $query, function () {}, function () {});
    }

    private function callQueryCallbackWithAddress($address)
    {
        return $this->returnCallback(function ($nameserver, $query) use ($address) {
            $response = new Message();
            $response->header->set('qr', 1);
            $response->questions[] = new Record($query->name, $query->type, $query->class);
            $response->answers[] = new Record($query->name, $query->type, $query->class, 3600, $address);

            return Promise\resolve($response);
        });
    }

    private function createExecutorMock()
    {
        return $this->getMockBuilder('React\Dns\Query\ExecutorInterface')->getMock();
    }

    private function createPromiseMock()
    {
        return $this->getMockBuilder('React\Promise\PromiseInterface')->getMock();
    }
}

Filemanager

Name Type Size Permission Actions
CachedExecutorTest.php File 3.39 KB 0644
ExecutorTest.php File 9.73 KB 0644
HostsFileExecutorTest.php File 5.06 KB 0644
RecordBagTest.php File 1.96 KB 0644
RecordCacheTest.php File 4.13 KB 0644
RetryExecutorTest.php File 6.17 KB 0644
TimeoutExecutorTest.php File 3.69 KB 0644