1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
<?php
namespace Elastica\Test\Connection\Strategy;
use Elastica\Connection;
use Elastica\Exception\ConnectionException;
use Elastica\Test\Base;
/**
* Description of SimplyTest.
*
* @author chabior
*/
class SimpleTest extends Base
{
/**
* @var int Number of seconds to wait before timeout is called. Is set low for tests to have fast tests.
*/
protected $_timeout = 1;
/**
* @group functional
*/
public function testConnection()
{
$client = $this->_getClient();
$response = $client->request('/_aliases');
/* @var $response \Elastica\Response */
$this->_checkResponse($response);
$this->_checkStrategy($client);
}
/**
* @group functional
* @expectedException \Elastica\Exception\ConnectionException
*/
public function testFailConnection()
{
$config = array('host' => '255.255.255.0', 'timeout' => $this->_timeout);
$client = $this->_getClient($config);
$this->_checkStrategy($client);
$client->request('/_aliases');
}
/**
* @group functional
*/
public function testWithOneFailConnection()
{
$connections = array(
new Connection(array('host' => '255.255.255.0', 'timeout' => $this->_timeout)),
new Connection(array('host' => $this->_getHost(), 'timeout' => $this->_timeout)),
);
$count = 0;
$callback = function ($connection, $exception, $client) use (&$count) {
++$count;
};
$client = $this->_getClient(array(), $callback);
$client->setConnections($connections);
$response = $client->request('/_aliases');
/* @var $response Response */
$this->_checkResponse($response);
$this->_checkStrategy($client);
$this->assertLessThan(count($connections), $count);
}
/**
* @group functional
*/
public function testWithNoValidConnection()
{
$connections = array(
new Connection(array('host' => '255.255.255.0', 'timeout' => $this->_timeout)),
new Connection(array('host' => '45.45.45.45', 'port' => '80', 'timeout' => $this->_timeout)),
new Connection(array('host' => '10.123.213.123', 'timeout' => $this->_timeout)),
);
$count = 0;
$client = $this->_getClient(array(), function () use (&$count) {
++$count;
});
$client->setConnections($connections);
try {
$client->request('/_aliases');
$this->fail('Should throw exception as no connection valid');
} catch (ConnectionException $e) {
$this->assertEquals(count($connections), $count);
}
}
protected function _checkStrategy($client)
{
$strategy = $client->getConnectionStrategy();
$this->assertInstanceOf('Elastica\Connection\Strategy\Simple', $strategy);
}
protected function _checkResponse($response)
{
$this->assertTrue($response->isOk());
}
}
|