public function testWithNoValidConnection() { $connections = array(new \Elastica\Connection(array('host' => '255.255.255.0', 'timeout' => 2)), new \Elastica\Connection(array('host' => '45.45.45.45', 'port' => '80', 'timeout' => 2)), new \Elastica\Connection(array('host' => '10.123.213.123', 'timeout' => 2))); $count = 0; $client = new Client(array(), function () use(&$count) { ++$count; }); $client->setConnections($connections); try { $client->request('/_aliases'); $this->fail('Should throw exception as no connection valid'); } catch (\Elastica\Exception\ConnectionException $e) { $this->assertEquals(count($connections), $count); } }
/** * Tests if the callback works in case a connection is down */ public function testCallback() { $count = 0; $object = $this; // Callback function which verifies that disabled connection objects are returned $callback = function ($connection, $exception, $client) use(&$object, &$count) { $object->assertInstanceOf('Elastica\\Connection', $connection); $object->assertInstanceOf('Elastica\\Exception\\ConnectionException', $exception); $object->assertInstanceOf('Elastica\\Client', $client); $object->assertFalse($connection->isEnabled()); $count++; }; $client = new Client(array(), $callback); // First connection work, second should not work $connection1 = new Connection(array('port' => '9101', 'timeout' => 2)); $connection2 = new Connection(array('port' => '9102', 'timeout' => 2)); $client->setConnections(array($connection1, $connection2)); $this->assertEquals(0, $count); try { $client->request('_status', Request::GET); $this->fail('Should throw exception as no connection valid'); } catch (HttpException $e) { $this->assertTrue(true); } // Two disabled connections (from closure call) $this->assertEquals(2, $count); }