Example #1
0
 /**
  * @covers React\Dns\Query\RetryExecutor
  * @test
  */
 public function queryShouldForwardNonTimeoutErrors()
 {
     $executor = $this->createExecutorMock();
     $executor->expects($this->once())->method('query')->with('8.8.8.8', $this->isInstanceOf('React\\Dns\\Query\\Query'))->will($this->returnCallback(function ($domain, $query) {
         return When::reject(new \Exception());
     }));
     $callback = $this->expectCallableNever();
     $errorback = $this->createCallableMock();
     $errorback->expects($this->once())->method('__invoke')->with($this->isInstanceOf('Exception'));
     $retryExecutor = new RetryExecutor($executor, 2);
     $query = new Query('igor.io', Message::TYPE_A, Message::CLASS_IN, 1345656451);
     $retryExecutor->query('8.8.8.8', $query)->then($callback, $errorback);
 }
Example #2
0
 /**
  * @covers React\Dns\Query\RetryExecutor
  * @test
  */
 public function queryShouldCancelQueryOnCancel()
 {
     $cancelled = 0;
     $executor = $this->createExecutorMock();
     $executor->expects($this->once())->method('query')->with('8.8.8.8', $this->isInstanceOf('React\\Dns\\Query\\Query'))->will($this->returnCallback(function ($domain, $query) use(&$cancelled) {
         $deferred = new Deferred(function ($resolve, $reject) use(&$cancelled) {
             ++$cancelled;
             $reject(new CancellationException('Cancelled'));
         });
         return $deferred->promise();
     }));
     $retryExecutor = new RetryExecutor($executor, 2);
     $query = new Query('igor.io', Message::TYPE_A, Message::CLASS_IN, 1345656451);
     $promise = $retryExecutor->query('8.8.8.8', $query);
     $promise->then($this->expectCallableNever(), $this->expectCallableOnce());
     $this->assertEquals(0, $cancelled);
     $promise->cancel();
     $this->assertEquals(1, $cancelled);
 }