Merge lp:unity-scopes-api/staging into lp:unity-scopes-api

Proposed by Marcus Tomlinson
Status: Merged
Approved by: James Henstridge
Approved revision: 332
Merged at revision: 369
Proposed branch: lp:unity-scopes-api/staging
Merge into: lp:unity-scopes-api
Diff against target: 895 lines (+200/-146)
33 files modified
CONFIGFILES (+5/-5)
HACKING (+22/-40)
RELEASE_NOTES.md (+11/-0)
STRUCTS (+2/-3)
debian/LAST_ABI_ADDITION_QT-VERSION (+1/-0)
debian/LAST_ABI_ADDITION_VERSION (+1/-0)
debian/VERSION (+1/-1)
debian/bileto_pre_release_hook (+8/-3)
debian/changelog (+19/-0)
debian/control (+5/-5)
debian/control.in (+5/-5)
debian/libunity-scopes-qt.shlibs.in (+1/-1)
debian/libunity-scopes.shlibs.in (+1/-1)
debian/source/format (+1/-1)
include/unity/scopes/SearchListenerBase.h (+9/-0)
include/unity/scopes/SearchReply.h (+8/-1)
include/unity/scopes/internal/SearchReplyImpl.h (+2/-1)
include/unity/scopes/testing/MockScope.h (+2/-0)
include/unity/scopes/testing/MockSearchReply.h (+1/-0)
include/unity/scopes/utility/internal/BufferedSearchReplyImpl.h (+1/-0)
src/scopes/SearchListenerBase.cpp (+5/-0)
src/scopes/internal/OnlineAccountClientImpl.cpp (+13/-1)
src/scopes/internal/RegistryConfig.cpp (+2/-2)
src/scopes/internal/ResultReplyObject.cpp (+5/-10)
src/scopes/internal/SearchReplyImpl.cpp (+7/-14)
src/scopes/internal/zmq_middleware/ZmqConfig.cpp (+6/-6)
src/scopes/testing/InProcessBenchmark.cpp (+5/-0)
src/scopes/utility/internal/BufferedSearchReplyImpl.cpp (+5/-0)
test/gtest/scopes/Filters/Filters_test.cpp (+21/-10)
test/gtest/scopes/Filters/TestScope.h (+19/-2)
test/gtest/scopes/ResultCache/ResultCache_test.cpp (+1/-32)
test/gtest/scopes/ResultCache/no_filter_state_cache (+0/-1)
test/gtest/scopes/internal/smartscopes/CMakeLists.txt (+5/-1)
To merge this branch: bzr merge lp:unity-scopes-api/staging
Reviewer Review Type Date Requested Status
James Henstridge Approve
Review via email: mp+305177@code.launchpad.net

Commit message

* Deprecated push(Filters const&, FilterState const&) method.
* Fixed potential login deadlock in OnlineAccountClient.
* Increased upper timeout limits to 60s to assist scope-harness testing on slow builders.
* Fixes for building with Florian Boucault's crossbuilder.
* Fixed incorrect generation of shlib files.
* Fixed Yakkety build by adding missing #includes.
* Fixed arm64 build by temporarily disabling SmartScopesClient_test.

To post a comment you must log in.
Revision history for this message
Michi Henning (michihenning) wrote :

Would be nice to get rid of this warning:

/home/michi/src/unity-scopes-api/staging/RELEASE_NOTES.md:11: warning: explicit link request to 'includes' could not be resolved

Also, could we include https://code.launchpad.net/~michihenning/unity-scopes-api/shlib-fix/+merge/305297

This will be needed for the MIR.

lp:unity-scopes-api/staging updated
331. By Marcus Tomlinson

Merged devel

332. By Marcus Tomlinson

Update RELEASE_NOTES.md

Revision history for this message
James Henstridge (jamesh) wrote :

Looks good.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CONFIGFILES'
2--- CONFIGFILES 2016-02-22 01:29:01 +0000
3+++ CONFIGFILES 2016-09-09 12:41:03 +0000
4@@ -189,11 +189,11 @@
5 in Registry.ini, otherwise invocations on a scope that needs to be activated
6 first can fail, even though the activation succeeded.
7
8- Only values in the range 10 to 15000 milliseconds are accepted. (Values outside
9+ Only values in the range 10 to 60000 milliseconds are accepted. (Values outside
10 this range would either cause locate() to falsely conclude that a scope
11 could not be started, or cause an unacceptably long wait time.)
12
13- Only values in the range 10 to 15000 milliseconds are accepted.
14+ Only values in the range 10 to 60000 milliseconds are accepted.
15
16 The default value is 5000 milliseconds.
17
18@@ -202,7 +202,7 @@
19 The timeout to be used when invoking a twoway operation on the registry other
20 than locate().
21
22- Only values in the range 10 to 15000 milliseconds are accepted.
23+ Only values in the range 10 to 60000 milliseconds are accepted.
24
25 The default value is 5000 milliseconds.
26
27@@ -212,7 +212,7 @@
28 on a scope. These methods require more time to execute than other scope methods
29 as they read from and write to disk.
30
31- Only values in the range 10 to 15000 milliseconds are accepted.
32+ Only values in the range 10 to 60000 milliseconds are accepted.
33
34 The default value is 2000 milliseconds.
35
36@@ -269,7 +269,7 @@
37 or terminate correctly. If a scope does not respond
38 within the allotted time, it is killed with SIGKILL.
39
40- Only values in the range 10 to 15000 milliseconds are accepted.
41+ Only values in the range 10 to 60000 milliseconds are accepted.
42
43 The default value is 4000 milliseconds.
44
45
46=== modified file 'HACKING'
47--- HACKING 2016-03-31 23:48:56 +0000
48+++ HACKING 2016-09-09 12:41:03 +0000
49@@ -182,41 +182,6 @@
50 #endif
51 #endif
52
53-Updating symbols files (only for Vivid)
54----------------------------------------
55-
56-On Vivid only, we maintain symbols files, using the gcc 4.9 ABI names.
57-On Wily, there is no symbols file because we don't care whether we
58-use the gcc 4.9 or 5.x ABI. (The code is the same either way.) Instead,
59-we use a shlibs file.
60-
61-For Vivid, the symbols files are generated from debian/libunity-scopes.symbols.in
62-and debian/libunity-scopes-qt.symbols.in. (The soversion is substituted
63-automatically into the files.)
64-
65-To easily spot new/removed/changed symbols in the library, the debian
66-package maintains a .symbols file that lists all exported symbols
67-present in a library .so. If you add new public symbols to the library,
68-it's necessary to refresh the symbols file, otherwise the package will
69-fail to build. The easiest way to do that is using bzr-builddeb:
70-
71- $ bzr bd -- -us -uc -j8 # Don't sign source package or changes file, 8 compiles in parallel
72- $ # this will exit with an error if symbols file isn't up-to-date
73- $ cd ../build-area/unity-scopes-api-[version]
74- $ ./obj-[arch]/tools/symbol_diff
75-
76-This creates a diff of the symbols in /tmp/symbols.diff.
77-(The demangled symbols from the debian build are in ./new_symbols.)
78-
79-Review any changes in /tmp/symbols.diff. If they are OK:
80-
81- $ cd -
82- $ patch -p0 debian/libunity-scopes.symbols.in < /tmp/symbols.diff
83-
84-For changes in the qt library symbols file, use
85-
86- $ patch -p0 debian/libunity-scopes-qt.symbols.in < /tmp/symbols.diff
87-
88 ABI compatibility
89 -----------------
90
91@@ -251,15 +216,25 @@
92 if the soname of the Qt library changes, in which case
93 bileto_pre_release_hook needs a corresponding update.
94
95-The version files have the format
96+ - LAST_ABI_ADDITION_VERSION
97+
98+ The micro version at which we last added something
99+ new to the libunity-scopes ABI (without breaking anything).
100+
101+ - LAST_ABI_ADDITION_QT-VERSION
102+
103+ The micro version at which we last added something
104+ new to the libunity-scopes-qt ABI (without breaking anything).
105+
106+ The version files have the format
107
108 <major>.<minor>.<micro>
109
110-All three numbers must be present.
111+ All three numbers must be present.
112
113-The soversion for each library is derived from the corresponding
114-version file so, unless the soversion changes, you don't need to
115-do anything special.
116+ The soversion for each library is derived from the corresponding
117+ version file so, unless the soversion changes, you don't need to
118+ do anything special.
119
120 Versioning rules:
121
122@@ -269,6 +244,13 @@
123 is in this build or not.) The best time to update the micro
124 version is when creating a silo for landing in the archives.
125
126+For changes in behavior that do *not* add anything new to the ABI, you must
127+increment the micro version in VERSION or QT-VERSION, but *not* the
128+version in LAST_ABI_ADDITION_VERSION or LAST_ABI_ADDITION_QT-VERSION.
129+For changes that add something to the ABI (without breaking it), you *must*
130+increment *both* VERSION and LAST_ABI_ADDITION_VERSION (or
131+QT-VERSION and LAST_ABI_ADDITION_QT-VERSION).
132+
133 For ABI incompatible changes, either minor or major must be
134 incremented, and the lower-order version numbers must be reset to zero.
135
136
137=== modified file 'RELEASE_NOTES.md'
138--- RELEASE_NOTES.md 2016-05-23 07:55:39 +0000
139+++ RELEASE_NOTES.md 2016-09-09 12:41:03 +0000
140@@ -1,6 +1,17 @@
141 Release notes
142 =============
143
144+Changes in version 1.0.7
145+========================
146+ - Fixed potential login deadlock in OnlineAccountClient.
147+ - Increased upper timeout limits to 60s to assist scope-harness testing on slow builders.
148+ - Fixes for building with Florian Boucault's crossbuilder.
149+ - Fixed incorrect generation of shlib files.
150+ - Marked the push(Filters const&, FilterState const&) method of SearchReply and SearchListenerBase
151+ as deprecated and provided push methods which take the Filters argument only.
152+ - Fixed Yakkety build by adding missing #includes
153+ - Fixed arm64 build by temporarily disabling SmartScopesClient_test
154+
155 Changes in version 1.0.6
156 ========================
157 - Got rid of category header background, as per design (Bug #1446216).
158
159=== modified file 'STRUCTS'
160--- STRUCTS 2016-02-25 16:26:09 +0000
161+++ STRUCTS 2016-09-09 12:41:03 +0000
162@@ -142,10 +142,9 @@
163 'central_label' : string
164 'filter_group' : string, optional
165
166-Filters + FilterState
167-=====================
168+Filters
169+=======
170 'filter' : array of filters (implementations of FilterBase)
171- 'filter_state' : FilterState
172
173 PreviewResult (returned by serialize())
174 =======================================
175
176=== added file 'debian/LAST_ABI_ADDITION_QT-VERSION'
177--- debian/LAST_ABI_ADDITION_QT-VERSION 1970-01-01 00:00:00 +0000
178+++ debian/LAST_ABI_ADDITION_QT-VERSION 2016-09-09 12:41:03 +0000
179@@ -0,0 +1,1 @@
180+0.6.15
181
182=== added file 'debian/LAST_ABI_ADDITION_VERSION'
183--- debian/LAST_ABI_ADDITION_VERSION 1970-01-01 00:00:00 +0000
184+++ debian/LAST_ABI_ADDITION_VERSION 2016-09-09 12:41:03 +0000
185@@ -0,0 +1,1 @@
186+1.0.7
187
188=== modified file 'debian/VERSION'
189--- debian/VERSION 2016-05-23 07:56:41 +0000
190+++ debian/VERSION 2016-09-09 12:41:03 +0000
191@@ -1,1 +1,1 @@
192-1.0.6
193+1.0.7
194
195=== modified file 'debian/bileto_pre_release_hook'
196--- debian/bileto_pre_release_hook 2016-03-31 23:48:56 +0000
197+++ debian/bileto_pre_release_hook 2016-09-09 12:41:03 +0000
198@@ -80,6 +80,10 @@
199 [ -n "$UNITY_SCOPES_SOVERSION" ]
200 [ -n "$UNITY_SCOPES_QT_SOVERSION" ]
201
202+export LAST_ABI_ADDITION_VERSION=$(cat "$dir/LAST_ABI_ADDITION_VERSION")
203+export LAST_ABI_ADDITION_QT_VERSION=$(cat "$dir/LAST_ABI_ADDITION_QT-VERSION")
204+[ -n "$LAST_ABI_ADDITION_VERSION" ]
205+[ -n "$LAST_ABI_ADDITION_QT_VERSION" ]
206
207 process()
208 {
209@@ -106,7 +110,7 @@
210 "$dir/control"
211 }
212
213-# Generate the install files, naming them according to the soversion.
214+# Generate the install files.
215
216 # Install file for binary package
217 process "$dir/libunity-scopes.install.in" \
218@@ -118,10 +122,11 @@
219
220 # Shlibs file
221 process "$dir/libunity-scopes.shlibs.in" \
222- >"$dir/libunity-scopes-${UNITY_SCOPES_FULL_VERSION}.shlibs"
223+ >"$dir/libunity-scopes-${UNITY_SCOPES_MAJOR_MINOR}.shlibs"
224
225+# Shlibs file for qt
226 process "$dir/libunity-scopes-qt.shlibs.in" \
227- >"$dir/libunity-scopes-qt${UNITY_SCOPES_QT_FULL_VERSION}.shlibs"
228+ >"$dir/libunity-scopes-qt${UNITY_SCOPES_QT_MAJOR_MINOR}.shlibs"
229
230 # Install file for qt binary package
231 process "$dir/libunity-scopes-qt.install.in" \
232
233=== modified file 'debian/changelog'
234--- debian/changelog 2016-06-17 07:27:25 +0000
235+++ debian/changelog 2016-09-09 12:41:03 +0000
236@@ -1,3 +1,22 @@
237+unity-scopes-api (1.0.7-0ubuntu1) UNRELEASED; urgency=medium
238+
239+ [ Marcus Tomlinson ]
240+ * Fixed potential login deadlock in OnlineAccountClient.
241+ * Increased upper timeout limits to 60s to assist scope-harness testing on slow builders.
242+
243+ [ Michi Henning ]
244+ * Fixes for building with Florian Boucault's crossbuilder.
245+ * Fix for bug #1548718: Need to update micro version in shlibs file when symbols are added
246+
247+ [ Pawel Stolowski ]
248+ * Marked the push(Filters const&, FilterState const&) method of SearchReply
249+ and SearchListenerBase as deprecated and provided push methods which take
250+ the Filters argument only.
251+ * Fixed Yakkety build by adding missing #includes
252+ * Fixed arm64 build by temporarily disabling SmartScopesClient_test
253+
254+ -- Pawel Stolowski <pawel.stolowski@canonical.com> Tue, 28 Jun 2016 10:11:22 +0200
255+
256 unity-scopes-api (1.0.6+16.10.20160617-0ubuntu1) yakkety; urgency=medium
257
258 [ Marcus Tomlinson ]
259
260=== modified file 'debian/control'
261--- debian/control 2016-06-17 07:27:25 +0000
262+++ debian/control 2016-09-09 12:41:03 +0000
263@@ -6,8 +6,8 @@
264 Source: unity-scopes-api
265 Priority: optional
266 Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
267-Build-Depends: abigail-tools | libabigail-tools,
268- binutils,
269+Build-Depends: abigail-tools <!nocheck> | libabigail-tools <!nocheck>,
270+ binutils:native,
271 capnproto,
272 click-dev (>= 0.2.2),
273 cmake,
274@@ -37,9 +37,9 @@
275 lsb-release,
276 lttng-tools,
277 pkg-config,
278- python3:any,
279- python3-dbusmock,
280- python-tornado,
281+ python3 <!nocheck>,
282+ python3-dbusmock <!nocheck>,
283+ python-tornado <!nocheck>,
284 valgrind,
285 Standards-Version: 3.9.6
286 XS-Testsuite: autopkgtest
287
288=== modified file 'debian/control.in'
289--- debian/control.in 2016-04-06 23:27:51 +0000
290+++ debian/control.in 2016-09-09 12:41:03 +0000
291@@ -1,8 +1,8 @@
292 Source: unity-scopes-api
293 Priority: optional
294 Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
295-Build-Depends: abigail-tools | libabigail-tools,
296- binutils,
297+Build-Depends: abigail-tools <!nocheck> | libabigail-tools <!nocheck>,
298+ binutils:native,
299 capnproto,
300 click-dev (>= 0.2.2),
301 cmake,
302@@ -32,9 +32,9 @@
303 lsb-release,
304 lttng-tools,
305 pkg-config,
306- python3:any,
307- python3-dbusmock,
308- python-tornado,
309+ python3 <!nocheck>,
310+ python3-dbusmock <!nocheck>,
311+ python-tornado <!nocheck>,
312 valgrind,
313 Standards-Version: 3.9.6
314 XS-Testsuite: autopkgtest
315
316=== modified file 'debian/libunity-scopes-qt.shlibs.in'
317--- debian/libunity-scopes-qt.shlibs.in 2015-09-23 05:44:42 +0000
318+++ debian/libunity-scopes-qt.shlibs.in 2016-09-09 12:41:03 +0000
319@@ -1,1 +1,1 @@
320-libunity-scopes-qt @UNITY_SCOPES_QT_SOVERSION@ libunity-scopes-qt@UNITY_SCOPES_QT_SOVERSION@ (>= @UNITY_SCOPES_QT_MAJOR_MINOR@)
321+libunity-scopes-qt @UNITY_SCOPES_QT_SOVERSION@ libunity-scopes-qt@UNITY_SCOPES_QT_SOVERSION@ (>= @LAST_ABI_ADDITION_QT_VERSION@)
322
323=== modified file 'debian/libunity-scopes.shlibs.in'
324--- debian/libunity-scopes.shlibs.in 2015-09-23 05:44:42 +0000
325+++ debian/libunity-scopes.shlibs.in 2016-09-09 12:41:03 +0000
326@@ -1,1 +1,1 @@
327-libunity-scopes @UNITY_SCOPES_SOVERSION@ libunity-scopes@UNITY_SCOPES_SOVERSION@ (>= @UNITY_SCOPES_MAJOR_MINOR@)
328+libunity-scopes @UNITY_SCOPES_SOVERSION@ libunity-scopes@UNITY_SCOPES_SOVERSION@ (>= @LAST_ABI_ADDITION_VERSION@)
329
330=== modified file 'debian/source/format'
331--- debian/source/format 2015-09-08 02:29:27 +0000
332+++ debian/source/format 2016-09-09 12:41:03 +0000
333@@ -1,1 +1,1 @@
334-3.0 (quilt)
335+3.0 (native)
336
337=== modified file 'include/unity/scopes/SearchListenerBase.h'
338--- include/unity/scopes/SearchListenerBase.h 2015-09-01 22:19:45 +0000
339+++ include/unity/scopes/SearchListenerBase.h 2016-09-09 12:41:03 +0000
340@@ -96,10 +96,19 @@
341 /**
342 \brief Called once by the scopes to send all the filters and their state.
343
344+ \deprecated Please override the push(Filters& const) method instead. This method will be removed from future releases.
345+
346 The default implementation does nothing.
347 */
348 virtual void push(Filters const& filters, FilterState const& filter_state);
349
350+ /**
351+ \brief Called once by the scope to send all filters and their states.
352+
353+ The default implementation does nothing.
354+ */
355+ virtual void push(Filters const& filters);
356+
357 protected:
358 /// @cond
359 SearchListenerBase();
360
361=== modified file 'include/unity/scopes/SearchReply.h'
362--- include/unity/scopes/SearchReply.h 2015-10-29 02:35:50 +0000
363+++ include/unity/scopes/SearchReply.h 2016-09-09 12:41:03 +0000
364@@ -139,7 +139,8 @@
365 virtual bool push(experimental::Annotation const& annotation) = 0;
366
367 /**
368- \brief Sends all filters and their state to the source of a query.
369+ \brief Sends all filters and their states to the source of a query.
370+ \deprecated Sending filter state back to the UI is deprecated and will be removed from future releases. Please use the push(Filters const&) method instead.
371 \return True if the filters were accepted, false otherwise.
372 */
373 virtual bool push(Filters const& filters, FilterState const& filter_state) = 0;
374@@ -190,6 +191,12 @@
375 */
376 virtual void push_surfacing_results_from_cache() = 0;
377
378+ /**
379+ \brief Sends all filter definitions to the source of a query.
380+ \return True if the filters were accepted, false otherwise.
381+ */
382+ virtual bool push(Filters const& filters) = 0;
383+
384 protected:
385 /// @cond
386 SearchReply();
387
388=== modified file 'include/unity/scopes/internal/SearchReplyImpl.h'
389--- include/unity/scopes/internal/SearchReplyImpl.h 2015-02-27 05:28:09 +0000
390+++ include/unity/scopes/internal/SearchReplyImpl.h 2016-09-09 12:41:03 +0000
391@@ -80,6 +80,8 @@
392
393 virtual void push_surfacing_results_from_cache() noexcept override;
394
395+ virtual bool push(unity::scopes::Filters const& filters) override;
396+
397 private:
398 bool push(Category::SCPtr category);
399 void write_cached_results() noexcept;
400@@ -94,7 +96,6 @@
401
402 Department::SCPtr cached_departments_;
403 unity::scopes::Filters cached_filters_;
404- unity::scopes::FilterState cached_filter_state_;
405 std::vector<unity::scopes::CategorisedResult> cached_results_;
406 std::mutex mutex_;
407 };
408
409=== modified file 'include/unity/scopes/testing/MockScope.h'
410--- include/unity/scopes/testing/MockScope.h 2015-05-29 10:17:42 +0000
411+++ include/unity/scopes/testing/MockScope.h 2016-09-09 12:41:03 +0000
412@@ -19,6 +19,8 @@
413 #pragma once
414
415 #include <unity/scopes/Scope.h>
416+#include <unity/scopes/SearchMetadata.h>
417+#include <unity/scopes/ActionMetadata.h>
418
419 #include <unity/scopes/testing/MockObject.h>
420
421
422=== modified file 'include/unity/scopes/testing/MockSearchReply.h'
423--- include/unity/scopes/testing/MockSearchReply.h 2015-04-10 10:10:06 +0000
424+++ include/unity/scopes/testing/MockSearchReply.h 2016-09-09 12:41:03 +0000
425@@ -66,6 +66,7 @@
426 MOCK_METHOD1(lookup_category, Category::SCPtr(std::string const&));
427 MOCK_METHOD1(push, bool(CategorisedResult const&));
428 MOCK_METHOD2(push, bool(Filters const&, FilterState const&));
429+ MOCK_METHOD1(push, bool(Filters const&));
430 MOCK_METHOD1(push, bool(experimental::Annotation const& annotation));
431 MOCK_METHOD0(push_surfacing_results_from_cache, void());
432
433
434=== modified file 'include/unity/scopes/utility/internal/BufferedSearchReplyImpl.h'
435--- include/unity/scopes/utility/internal/BufferedSearchReplyImpl.h 2015-02-27 05:28:09 +0000
436+++ include/unity/scopes/utility/internal/BufferedSearchReplyImpl.h 2016-09-09 12:41:03 +0000
437@@ -78,6 +78,7 @@
438 std::string to_string() override;
439
440 void flush();
441+ bool push(unity::scopes::Filters const& filters) override;
442
443 private:
444 std::mutex mutex_;
445
446=== modified file 'src/scopes/SearchListenerBase.cpp'
447--- src/scopes/SearchListenerBase.cpp 2014-06-17 15:07:13 +0000
448+++ src/scopes/SearchListenerBase.cpp 2016-09-09 12:41:03 +0000
449@@ -44,6 +44,11 @@
450 // Intentionally empty: "do nothing" default implementation.
451 }
452
453+void SearchListenerBase::push(Filters const& /* filters */)
454+{
455+ // Intentionally empty: "do nothing" default implementation.
456+}
457+
458 void SearchListenerBase::push(Category::SCPtr const& /* category */)
459 {
460 // Intentionally empty: "do nothing" default implementation.
461
462=== modified file 'src/scopes/internal/OnlineAccountClientImpl.cpp'
463--- src/scopes/internal/OnlineAccountClientImpl.cpp 2016-03-16 12:08:16 +0000
464+++ src/scopes/internal/OnlineAccountClientImpl.cpp 2016-09-09 12:41:03 +0000
465@@ -545,12 +545,15 @@
466 // (ensures that accounts_ is up to date)
467 std::shared_ptr<GMainLoop> event_loop;
468 event_loop.reset(g_main_loop_new(main_loop_context_.get(), true), g_main_loop_unref);
469- while(info->session)
470+
471+ int ms_elapsed = 0;
472+ while (info->session && ms_elapsed < 5000)
473 {
474 // We need to wait inside an event loop to allow for the main application loop to
475 // process its pending events
476 std::shared_ptr<GSource> source;
477 source.reset(g_timeout_source_new(10), g_source_unref);
478+ ms_elapsed += 10;
479 g_source_set_callback(source.get(), wake_up_event_loop_cb, event_loop.get(), NULL);
480 g_source_attach(source.get(), main_loop_context_.get());
481
482@@ -560,6 +563,15 @@
483 lock.lock();
484 info_lock.lock();
485 }
486+
487+ // If the login session is still not responding, we cancel it
488+ if (info->session)
489+ {
490+ std::cerr << "OnlineAccountClientImpl::flush_pending_session(): login for account: "
491+ << info->account_id << " is not responding. Canceling session." << std::endl;
492+ signon_auth_session_cancel(info->session.get());
493+ info->session = nullptr;
494+ }
495 }
496
497 void OnlineAccountClientImpl::main_loop_state_notify(bool is_running)
498
499=== modified file 'src/scopes/internal/RegistryConfig.cpp'
500--- src/scopes/internal/RegistryConfig.cpp 2015-08-04 04:56:01 +0000
501+++ src/scopes/internal/RegistryConfig.cpp 2016-09-09 12:41:03 +0000
502@@ -71,9 +71,9 @@
503 throw ConfigException(configfile + ": " + scoperunner_path_key + " must be an absolute path");
504 }
505 process_timeout_ = get_optional_int(registry_config_group, process_timeout_key, DFLT_PROCESS_TIMEOUT);
506- if (process_timeout_ < 10 || process_timeout_ > 15000)
507+ if (process_timeout_ < 10 || process_timeout_ > 60000)
508 {
509- throw_ex("Illegal value (" + to_string(process_timeout_) + ") for " + process_timeout_key + ": value must be 10-15000 ms");
510+ throw_ex("Illegal value (" + to_string(process_timeout_) + ") for " + process_timeout_key + ": value must be 10-60000 ms");
511 }
512
513 KnownEntries const known_entries = {
514
515=== modified file 'src/scopes/internal/ResultReplyObject.cpp'
516--- src/scopes/internal/ResultReplyObject.cpp 2016-02-24 16:49:34 +0000
517+++ src/scopes/internal/ResultReplyObject.cpp 2016-09-09 12:41:03 +0000
518@@ -74,16 +74,11 @@
519 }
520
521 Filters const filters = FilterBaseImpl::deserialize_filters(it->second.get_array(), groups);
522- it = data.find("filter_state");
523- if (it != data.end())
524- {
525- auto filter_state = FilterStateImpl::deserialize(it->second.get_dict());
526- receiver_->push(filters, filter_state);
527- }
528- else
529- {
530- throw InvalidArgumentException("ResultReplyObject::push(): filters present but missing filter_state data");
531- }
532+
533+ // temporarily support both variants of push until the one supporting filter state gets dropped.
534+ FilterState filter_state;
535+ receiver_->push(filters, filter_state);
536+ receiver_->push(filters);
537 }
538
539 it = data.find("category");
540
541=== modified file 'src/scopes/internal/SearchReplyImpl.cpp'
542--- src/scopes/internal/SearchReplyImpl.cpp 2016-02-25 16:08:01 +0000
543+++ src/scopes/internal/SearchReplyImpl.cpp 2016-09-09 12:41:03 +0000
544@@ -170,7 +170,12 @@
545 return true;
546 }
547
548-bool SearchReplyImpl::push(unity::scopes::Filters const& filters, unity::scopes::FilterState const& filter_state)
549+bool SearchReplyImpl::push(unity::scopes::Filters const& filters, unity::scopes::FilterState const&)
550+{
551+ return push(filters);
552+}
553+
554+bool SearchReplyImpl::push(unity::scopes::Filters const& filters)
555 {
556 // basic consistency check
557 try
558@@ -186,7 +191,6 @@
559 {
560 lock_guard<mutex> lock(mutex_);
561 cached_filters_ = filters;
562- cached_filter_state_ = filter_state;
563 }
564
565 VariantMap var;
566@@ -196,7 +200,6 @@
567 var["filter_groups"] = filter_groups;
568 }
569 var["filters"] = internal::FilterBaseImpl::serialize_filters(filters);
570- var["filter_state"] = filter_state.serialize();
571 return ReplyImpl::push(var);
572 }
573
574@@ -260,7 +263,6 @@
575 departments = cached_departments_->serialize();
576 }
577 auto filters = internal::FilterBaseImpl::serialize_filters(cached_filters_);
578- auto filter_state = cached_filter_state_.serialize();
579 VariantArray categories = cat_registry_->serialize();
580 VariantArray results;
581 for (auto const& r : cached_results_)
582@@ -279,7 +281,6 @@
583 }
584
585 vm["filters"] = move(filters);
586- vm["filter_state"] = move(filter_state);
587
588 vm["results"] = move(results);
589 string const json = Variant(move(vm)).serialize_json();
590@@ -371,13 +372,6 @@
591 }
592 auto filter_array = it->second.get_array();
593
594- it = vm.find("filter_state");
595- if (it == vm.end())
596- {
597- throw unity::scopes::NotFoundException("malformed cache file", "filter_state");
598- }
599- auto filter_state_dict = it->second.get_dict();
600-
601 it = vm.find("results");
602 if (it == vm.end())
603 {
604@@ -408,8 +402,7 @@
605 }
606
607 auto filters = FilterBaseImpl::deserialize_filters(move(filter_array), groups);
608- auto filter_state = FilterStateImpl::deserialize(move(filter_state_dict));
609- push(filters, filter_state);
610+ push(filters);
611
612 for (auto const& r : result_array)
613 {
614
615=== modified file 'src/scopes/internal/zmq_middleware/ZmqConfig.cpp'
616--- src/scopes/internal/zmq_middleware/ZmqConfig.cpp 2015-07-01 10:59:49 +0000
617+++ src/scopes/internal/zmq_middleware/ZmqConfig.cpp 2016-09-09 12:41:03 +0000
618@@ -80,21 +80,21 @@
619 }
620
621 registry_timeout_ = get_optional_int(zmq_config_group, registry_timeout_key, DFLT_ZMQ_REGISTRY_TIMEOUT);
622- if (registry_timeout_ < 10 || registry_timeout_ > 15000)
623+ if (registry_timeout_ < 10 || registry_timeout_ > 60000)
624 {
625- throw_ex("Illegal value (" + to_string(registry_timeout_) + ") for " + registry_timeout_key + ": value must be 10-15000");
626+ throw_ex("Illegal value (" + to_string(registry_timeout_) + ") for " + registry_timeout_key + ": value must be 10-60000");
627 }
628
629 locate_timeout_ = get_optional_int(zmq_config_group, locate_timeout_key, DFLT_ZMQ_LOCATE_TIMEOUT);
630- if (locate_timeout_ < 10 || locate_timeout_ > 15000)
631+ if (locate_timeout_ < 10 || locate_timeout_ > 60000)
632 {
633- throw_ex("Illegal value (" + to_string(locate_timeout_) + ") for " + locate_timeout_key + ": value must be 10-15000");
634+ throw_ex("Illegal value (" + to_string(locate_timeout_) + ") for " + locate_timeout_key + ": value must be 10-60000");
635 }
636
637 child_scopes_timeout_ = get_optional_int(zmq_config_group, child_scopes_timeout_key, DFLT_ZMQ_CHILDSCOPES_TIMEOUT);
638- if (child_scopes_timeout_ < 10 || child_scopes_timeout_ > 15000)
639+ if (child_scopes_timeout_ < 10 || child_scopes_timeout_ > 60000)
640 {
641- throw_ex("Illegal value (" + to_string(child_scopes_timeout_) + ") for " + child_scopes_timeout_key + ": value must be 10-15000");
642+ throw_ex("Illegal value (" + to_string(child_scopes_timeout_) + ") for " + child_scopes_timeout_key + ": value must be 10-60000");
643 }
644
645 registry_endpoint_dir_ = get_optional_string(zmq_config_group, registry_endpoint_dir_key);
646
647=== modified file 'src/scopes/testing/InProcessBenchmark.cpp'
648--- src/scopes/testing/InProcessBenchmark.cpp 2015-01-09 07:10:07 +0000
649+++ src/scopes/testing/InProcessBenchmark.cpp 2016-09-09 12:41:03 +0000
650@@ -204,6 +204,11 @@
651 return true;
652 }
653
654+ bool push(unity::scopes::Filters const&) override
655+ {
656+ return true;
657+ }
658+
659 bool push(unity::scopes::experimental::Annotation const&) override
660 {
661 return true;
662
663=== modified file 'src/scopes/utility/internal/BufferedSearchReplyImpl.cpp'
664--- src/scopes/utility/internal/BufferedSearchReplyImpl.cpp 2015-02-27 05:28:09 +0000
665+++ src/scopes/utility/internal/BufferedSearchReplyImpl.cpp 2016-09-09 12:41:03 +0000
666@@ -92,6 +92,11 @@
667 return upstream_->push(filters, filter_state);
668 }
669
670+bool BufferedSearchReplyImpl::push(unity::scopes::Filters const& filters)
671+{
672+ return upstream_->push(filters);
673+}
674+
675 void BufferedSearchReplyImpl::push_surfacing_results_from_cache() noexcept
676 {
677 upstream_->push_surfacing_results_from_cache();
678
679=== modified file 'test/gtest/scopes/Filters/Filters_test.cpp'
680--- test/gtest/scopes/Filters/Filters_test.cpp 2016-03-03 11:46:25 +0000
681+++ test/gtest/scopes/Filters/Filters_test.cpp 2016-09-09 12:41:03 +0000
682@@ -66,12 +66,19 @@
683 class SearchReceiver : public SearchListenerBase, public WaitUntilFinished
684 {
685 public:
686- virtual void push(CategorisedResult /* result */) override {}
687-
688- virtual void push(Filters const& filters, FilterState const& filter_state) override
689+ virtual void push(CategorisedResult result) override
690+ {
691+ result_uri = result.uri();
692+ }
693+
694+ virtual void push(Filters const& filters, FilterState const&) override
695+ {
696+ this->filters2 = filters;
697+ }
698+
699+ virtual void push(Filters const& filters) override
700 {
701 this->filters = filters;
702- this->filter_state = filter_state;
703 }
704
705 virtual void finished(CompletionDetails const& details) override
706@@ -81,7 +88,8 @@
707 }
708
709 Filters filters;
710- FilterState filter_state;
711+ Filters filters2;
712+ std::string result_uri;
713 };
714
715 template <typename ScopeType>
716@@ -135,8 +143,13 @@
717 auto ctrl = scope->search("test", hints, receiver);
718 receiver->wait_until_finished();
719
720- auto filter_state = receiver->filter_state; // copy filter state, it will be sent with 2nd query
721+ EXPECT_EQ("no options active", receiver->result_uri);
722+
723+ FilterState filter_state;
724 {
725+ // make sure the deprecated API push method for filters still works
726+ ASSERT_EQ(1u, receiver->filters2.size());
727+
728 auto filters = receiver->filters;
729 ASSERT_EQ(1u, filters.size());
730 EXPECT_EQ("f1", filters.front()->id());
731@@ -159,11 +172,9 @@
732 receiver->wait_until_finished();
733 {
734 auto filters = receiver->filters;
735- auto filter_state2 = receiver->filter_state;
736+ ASSERT_EQ(1u, filters.size());
737 auto selector = std::dynamic_pointer_cast<const OptionSelectorFilter>(filters.front());
738- ASSERT_EQ(1u, selector->active_options(filter_state2).size());
739- auto option1 = *(selector->active_options(filter_state2).begin());
740- EXPECT_EQ("o1", option1->id());
741+ EXPECT_EQ("option o1 active", receiver->result_uri);
742 }
743 }
744
745
746=== modified file 'test/gtest/scopes/Filters/TestScope.h'
747--- test/gtest/scopes/Filters/TestScope.h 2016-02-25 16:08:01 +0000
748+++ test/gtest/scopes/Filters/TestScope.h 2016-09-09 12:41:03 +0000
749@@ -21,6 +21,7 @@
750 #include <unity/scopes/CategorisedResult.h>
751 #include <unity/scopes/Category.h>
752 #include <unity/scopes/FilterGroup.h>
753+#include <unity/scopes/FilterOption.h>
754 #include <unity/scopes/OptionSelectorFilter.h>
755 #include <unity/scopes/ScopeBase.h>
756 #include <unity/scopes/SearchReply.h>
757@@ -49,11 +50,27 @@
758 filter->add_option("o2", "Option 2");
759 filters.push_back(filter);
760 auto active_opts = filter->active_options(query().filter_state());
761- reply->push(filters, query().filter_state()); // send unmodified state back
762+
763+ if (query().query_string() == "test")
764+ {
765+ reply->push(filters);
766+ }
767+ else
768+ {
769+ // use the deprecated push call
770+ reply->push(filters, query().filter_state());
771+ }
772
773 auto cat = reply->register_category("cat1", "Category 1", "");
774 CategorisedResult res(cat);
775- res.set_uri("uri");
776+ if (active_opts.size() == 1)
777+ {
778+ res.set_uri("option " + (*(active_opts.begin()))->id() + " active");
779+ }
780+ else
781+ {
782+ res.set_uri("no options active");
783+ }
784 res.set_dnd_uri("dnd_uri");
785 reply->push(res);
786 }
787
788=== modified file 'test/gtest/scopes/ResultCache/ResultCache_test.cpp'
789--- test/gtest/scopes/ResultCache/ResultCache_test.cpp 2016-02-25 17:28:22 +0000
790+++ test/gtest/scopes/ResultCache/ResultCache_test.cpp 2016-09-09 12:41:03 +0000
791@@ -46,11 +46,10 @@
792 dept_ = parent;
793 }
794
795- virtual void push(Filters const& filters, FilterState const& filter_state) override
796+ virtual void push(Filters const& filters) override
797 {
798 lock_guard<mutex> lock(mutex_);
799 filters_ = filters;
800- filter_state_ = filter_state;
801 }
802
803 virtual void push(CategorisedResult result) override
804@@ -86,12 +85,6 @@
805 return filters_;
806 }
807
808- FilterState filter_state() const
809- {
810- lock_guard<mutex> lock(mutex_);
811- return filter_state_;
812- }
813-
814 CategorisedResult::SCPtr result() const
815 {
816 lock_guard<mutex> lock(mutex_);
817@@ -101,7 +94,6 @@
818 private:
819 Department::SCPtr dept_;
820 Filters filters_;
821- FilterState filter_state_;
822 CategorisedResult::SCPtr result_;
823 bool query_complete_;
824 mutable mutex mutex_;
825@@ -248,9 +240,6 @@
826 auto osf = dynamic_pointer_cast<OptionSelectorFilter const>(f);
827 ASSERT_TRUE(osf != nullptr);
828 EXPECT_EQ("Choose an option", osf->label());
829- auto fs = receiver->filter_state();
830- EXPECT_TRUE(fs.has_filter("f1"));
831- EXPECT_TRUE(osf->has_active_option(fs));
832
833 // Cache file must still be there.
834 boost::system::error_code ec;
835@@ -290,9 +279,6 @@
836 auto osf = dynamic_pointer_cast<OptionSelectorFilter const>(f);
837 ASSERT_TRUE(osf != nullptr);
838 EXPECT_EQ("Choose an option", osf->label());
839- auto fs = receiver->filter_state();
840- EXPECT_TRUE(fs.has_filter("f1"));
841- EXPECT_TRUE(osf->has_active_option(fs));
842
843 // Cache file must still be there.
844 boost::system::error_code ec;
845@@ -344,9 +330,6 @@
846 auto osf = dynamic_pointer_cast<OptionSelectorFilter const>(f);
847 ASSERT_TRUE(osf != nullptr);
848 EXPECT_EQ("Choose an option", osf->label());
849- auto fs = receiver->filter_state();
850- EXPECT_TRUE(fs.has_filter("f1"));
851- EXPECT_TRUE(osf->has_active_option(fs));
852
853 // New cache file must have been created
854 boost::system::error_code ec;
855@@ -414,20 +397,6 @@
856 EXPECT_TRUE(boost::filesystem::exists(TEST_RUNTIME_PATH "/unconfined/CacheScope/.surfacing_cache", ec));
857 }
858
859-TEST_F(CacheScopeTest, missing_filter_state)
860-{
861- // Get coverage on missing filters_state entry
862- system("cp " TEST_SOURCE_PATH "/no_filter_state_cache " TEST_RUNTIME_PATH "/unconfined/CacheScope/.surfacing_cache");
863- auto receiver = make_shared<Receiver>();
864- scope()->search("", SearchMetadata("unused", "unused"), receiver);
865- receiver->wait_until_finished();
866- EXPECT_EQ(receiver->result(), nullptr);
867-
868- // Cache file must still be there, but decode will have failed.
869- boost::system::error_code ec;
870- EXPECT_TRUE(boost::filesystem::exists(TEST_RUNTIME_PATH "/unconfined/CacheScope/.surfacing_cache", ec));
871-}
872-
873 TEST_F(CacheScopeTest, missing_results)
874 {
875 // Get coverage on missing results entry
876
877=== removed file 'test/gtest/scopes/ResultCache/no_filter_state_cache'
878--- test/gtest/scopes/ResultCache/no_filter_state_cache 2015-02-05 09:35:42 +0000
879+++ test/gtest/scopes/ResultCache/no_filter_state_cache 1970-01-01 00:00:00 +0000
880@@ -1,1 +0,0 @@
881-{"categories":[{"icon":"","id":"CacheScope","renderer_template":"\n {\n \"schema-version\":1,\n \"template\":\n {\n \"category-layout\":\"grid\"\n },\n \"components\":\n {\n \"title\":\"title\",\n \"art\":\"art\"\n }\n }\n ","title":""}],"departments":{"departments":[{"label":"Sub","query":{"department_id":"sub","filter_state":{},"query_string":"","scope":"CacheScope"}}],"label":"Top","query":{"department_id":"","filter_state":{},"query_string":"","scope":"CacheScope"}},"filters":[{"filter_type":"option_selector","id":"f1","label":"Choose an option","multi_select":false,"options":[{"id":"o1","label":"Option 1"},{"id":"o2","label":"Option 2"}]}],"results":[{"attrs":{"title":"","uri":"uri"},"internal":{"cat_id":"CacheScope"}}]}
882
883=== modified file 'test/gtest/scopes/internal/smartscopes/CMakeLists.txt'
884--- test/gtest/scopes/internal/smartscopes/CMakeLists.txt 2014-08-28 11:18:44 +0000
885+++ test/gtest/scopes/internal/smartscopes/CMakeLists.txt 2016-09-09 12:41:03 +0000
886@@ -1,4 +1,8 @@
887 add_subdirectory(HttpClient)
888-add_subdirectory(SmartScopesClient)
889+if (NOT ${CMAKE_LIBRARY_ARCHITECTURE} MATCHES "aarch64")
890+ add_subdirectory(SmartScopesClient)
891+else()
892+ message("Skipping SmartScopesClient test on aarch64 - see LP #1615004")
893+endif()
894 add_subdirectory(smartscopesproxy)
895 add_subdirectory(SSConfig)

Subscribers

People subscribed via source and target branches

to all changes: