From a87b190515c253dfed3e24e7d658bcde1cf49461 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mantas=20Urnie=C5=BEa?= <mantas.urnieza@nfq.lt> Date: Tue, 8 Dec 2015 11:19:36 +0200 Subject: [PATCH] Adding timout and terminate_after parameters to Search object. --- src/Search.php | 40 ++++++++++++++++++++++ tests/SearchTest.php | 79 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 119 insertions(+) diff --git a/src/Search.php b/src/Search.php index eab145f..fc91a90 100644 --- a/src/Search.php +++ b/src/Search.php @@ -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) { diff --git a/tests/SearchTest.php b/tests/SearchTest.php index e5a84d2..4646edb 100644 --- a/tests/SearchTest.php +++ b/tests/SearchTest.php @@ -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() + ); + } } -- GitLab