From d7075b437d8b4726e9117ae09c866c51fd340cef Mon Sep 17 00:00:00 2001 From: Maxim Pimenov Date: Fri, 19 Aug 2016 18:41:15 +0300 Subject: [PATCH] [search] Followup fixes to TestSearchRequest. --- .../search_quality_tool.cpp | 4 +-- .../test_search_request.cpp | 34 +++++++++---------- .../test_search_request.hpp | 19 +++++------ 3 files changed, 27 insertions(+), 30 deletions(-) diff --git a/search/search_quality/search_quality_tool/search_quality_tool.cpp b/search/search_quality/search_quality_tool/search_quality_tool.cpp index 5be0d527ea..05f3b26a8f 100644 --- a/search/search_quality/search_quality_tool/search_quality_tool.cpp +++ b/search/search_quality/search_quality_tool/search_quality_tool.cpp @@ -317,7 +317,7 @@ void CheckCompleteness(string const & path, m2::RectD const & viewport, TestSear for (auto & q : queries) { - q.m_request->Wait(); + q.m_request->Run(); LOG(LDEBUG, (q.m_query, q.m_request->Results())); int pos = @@ -459,7 +459,7 @@ int main(int argc, char * argv[]) vector responseTimes(queries.size()); for (size_t i = 0; i < queries.size(); ++i) { - requests[i]->Wait(); + requests[i]->Run(); auto rt = duration_cast(requests[i]->ResponseTime()).count(); responseTimes[i] = static_cast(rt) / 1000; PrintTopResults(MakePrefixFree(queries[i]), requests[i]->Results(), FLAGS_top, diff --git a/search/search_tests_support/test_search_request.cpp b/search/search_tests_support/test_search_request.cpp index be57dd16a3..be2cb101b1 100644 --- a/search/search_tests_support/test_search_request.cpp +++ b/search/search_tests_support/test_search_request.cpp @@ -41,16 +41,6 @@ TestSearchRequest::TestSearchRequest(TestSearchEngine & engine, string const & q m_params.m_onResults = move(onResults); } -void TestSearchRequest::Start() { m_engine.Search(m_params, m_viewport); } -void TestSearchRequest::Wait() -{ - unique_lock lock(m_mu); - m_cv.wait(lock, [this]() - { - return m_done; - }); -} - void TestSearchRequest::Run() { Start(); @@ -71,20 +61,23 @@ vector const & TestSearchRequest::Results() const return m_results; } +void TestSearchRequest::Start() +{ + m_engine.Search(m_params, m_viewport); +} + +void TestSearchRequest::Wait() +{ + unique_lock lock(m_mu); + m_cv.wait(lock, [this]() { return m_done; }); +} + void TestSearchRequest::SetUpCallbacks() { m_params.m_onStarted = bind(&TestSearchRequest::OnStarted, this); m_params.m_onResults = bind(&TestSearchRequest::OnResults, this, _1); } -void TestSearchRequest::SetCustomOnResults(SearchParams::TOnResults const & customOnResults) -{ - m_params.m_onResults = [this, customOnResults](search::Results const & results) { - OnResults(results); - customOnResults(results); - }; -} - void TestSearchRequest::OnStarted() { lock_guard lock(m_mu); @@ -105,5 +98,10 @@ void TestSearchRequest::OnResults(search::Results const & results) m_results.assign(results.begin(), results.end()); } } + +void TestSearchRequest::SetCustomOnResults(SearchParams::TOnResults const & onResults) +{ + m_params.m_onResults = onResults; +} } // namespace tests_support } // namespace search diff --git a/search/search_tests_support/test_search_request.hpp b/search/search_tests_support/test_search_request.hpp index 11c8785a1e..39f40ae9e0 100644 --- a/search/search_tests_support/test_search_request.hpp +++ b/search/search_tests_support/test_search_request.hpp @@ -28,19 +28,9 @@ public: Mode mode, m2::RectD const & viewport); TestSearchRequest(TestSearchEngine & engine, SearchParams params, m2::RectD const & viewport); - // Initiates the search. - void Start(); - - // Waits for the search to finish. - void Wait(); - // Initiates the search and waits for it to finish. void Run(); - // Sets the onResults callback without breaking the synchronization - // introduced by OnResults(). - void SetCustomOnResults(SearchParams::TOnResults const & customOnResults); - // Call these functions only after call to Wait(). steady_clock::duration ResponseTime() const; vector const & Results() const; @@ -50,11 +40,20 @@ protected: Mode mode, m2::RectD const & viewport, SearchParams::TOnStarted onStarted, SearchParams::TOnResults onResults); + // Initiates the search. + void Start(); + + // Waits for the search to finish. + void Wait(); + void SetUpCallbacks(); void OnStarted(); void OnResults(search::Results const & results); + // Overrides the default onResults callback. + void SetCustomOnResults(SearchParams::TOnResults const & onResults); + condition_variable m_cv; mutable mutex m_mu;