Skip to content
Snippets Groups Projects
Commit a87b1905 authored by Mantas Urnieža's avatar Mantas Urnieža
Browse files

Adding timout and terminate_after parameters to Search object.

parent 913be5ff
No related branches found
No related tags found
No related merge requests found
......@@ -43,6 +43,16 @@ class Search
*/
private $from;
/**
* @var string
*/
private $timeout;
/**
* @var int
*/
private $terminateAfter;
/**
* @var string|null
*/
......@@ -400,6 +410,34 @@ class Search
return $this;
}
/**
* Sets timeout for query execution.
*
* @param $timeout
*
* @return $this
*/
public function setTimeout($timeout)
{
$this->timeout = $timeout;
return $this;
}
/**
* Sets maximum number of documents per shard.
*
* @param $terminateAfter
*
* @return $this
*/
public function setTerminateAfter($terminateAfter)
{
$this->terminateAfter = $terminateAfter;
return $this;
}
/**
* Returns results offset value.
*
......@@ -674,6 +712,8 @@ class Search
'stats' => 'stats',
'minScore' => 'min_score',
'source' => '_source',
'timeout' => 'timeout',
'terminateAfter' => 'terminate_after',
];
foreach ($params as $field => $param) {
......
......@@ -25,4 +25,83 @@ class SearchTest extends \PHPUnit_Framework_TestCase
{
$this->assertInstanceOf('ONGR\ElasticsearchDSL\Search', new Search());
}
/**
* Data provider for test testSettingParams()
*
* @return array
*/
public function getTestSettingParamsData()
{
$cases = [];
$search = new Search();
$search->setSize(3);
$cases['Only size is set'] = [
$search,
[
'size' => 3,
],
];
$search = new Search();
$search->setFrom(4);
$cases['Only from is set'] = [
$search,
[
'from' => 4,
],
];
$search = new Search();
$search->setTimeout('2s');
$cases['Only timeout is set'] = [
$search,
[
'timeout' => '2s',
],
];
$search = new Search();
$search->setTerminateAfter(100);
$cases['Only terminate_after is set'] = [
$search,
[
'terminate_after' => 100,
],
];
$search = new Search();
$search->setSize(3);
$search->setFrom(4);
$search->setTimeout('2s');
$search->setTerminateAfter(100);
$cases['Multiple parameters are set'] = [
$search,
[
'size' => 3,
'from' => 4,
'timeout' => '2s',
'terminate_after' => 100,
],
];
return $cases;
}
/**
* This test checks if parameters are correctly set into Search object.
*
* @dataProvider getTestSettingParamsData()
*
* @param Search $search
* @param array $expected
*/
public function testSettingParams($search, $expected)
{
$this->assertEquals(
$expected,
$search->toArray()
);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment