Merge lp:~michihenning/storage-framework/add-trace into lp:storage-framework/devel
- add-trace
- Merge into devel
Status: | Merged |
---|---|
Approved by: | James Henstridge |
Approved revision: | 56 |
Merged at revision: | 54 |
Proposed branch: | lp:~michihenning/storage-framework/add-trace |
Merge into: | lp:storage-framework/devel |
Diff against target: |
361 lines (+197/-10) 10 files modified
CMakeLists.txt (+1/-0) include/unity/storage/internal/TraceMessageHandler.h (+46/-0) include/unity/storage/provider/internal/ServerImpl.h (+2/-0) include/unity/storage/qt/client/internal/remote_client/Handler.h (+16/-1) src/internal/CMakeLists.txt (+1/-0) src/internal/TraceMessageHandler.cpp (+96/-0) src/provider/internal/Handler.cpp (+29/-5) src/provider/internal/ServerImpl.cpp (+4/-1) src/qt/client/internal/remote_client/RuntimeImpl.cpp (+0/-1) tests/provider-ProviderInterface/ProviderInterface_test.cpp (+2/-2) |
To merge this branch: | bzr merge lp:~michihenning/storage-framework/add-trace |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
James Henstridge | Approve | ||
unity-api-1-bot | continuous-integration | Approve | |
Review via email: mp+302767@code.launchpad.net |
Commit message
Added trace for surprising exceptions to server side and remote client.
Description of the change
Added trace for surprising exceptions to server side and remote client.
unity-api-1-bot (unity-api-1-bot) wrote : | # |
unity-api-1-bot (unity-api-1-bot) wrote : | # |
PASSED: Continuous integration, rev:55
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
- 56. By Michi Henning
-
Logging surprising exceptions with qCritical() now.
unity-api-1-bot (unity-api-1-bot) wrote : | # |
FAILED: Continuous integration, rev:56
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
unity-api-1-bot (unity-api-1-bot) wrote : | # |
PASSED: Continuous integration, rev:56
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
Preview Diff
1 | === modified file 'CMakeLists.txt' | |||
2 | --- CMakeLists.txt 2016-08-11 02:03:32 +0000 | |||
3 | +++ CMakeLists.txt 2016-08-17 02:55:56 +0000 | |||
4 | @@ -130,6 +130,7 @@ | |||
5 | 130 | enable_coverage_report( | 130 | enable_coverage_report( |
6 | 131 | TARGETS | 131 | TARGETS |
7 | 132 | qt-client-lib-common | 132 | qt-client-lib-common |
8 | 133 | storage-framework-common-internal | ||
9 | 133 | storage-framework-qt-client | 134 | storage-framework-qt-client |
10 | 134 | storage-framework-qt-local-client | 135 | storage-framework-qt-local-client |
11 | 135 | sf-provider-objects | 136 | sf-provider-objects |
12 | 136 | 137 | ||
13 | === added file 'include/unity/storage/internal/TraceMessageHandler.h' | |||
14 | --- include/unity/storage/internal/TraceMessageHandler.h 1970-01-01 00:00:00 +0000 | |||
15 | +++ include/unity/storage/internal/TraceMessageHandler.h 2016-08-17 02:55:56 +0000 | |||
16 | @@ -0,0 +1,46 @@ | |||
17 | 1 | /* | ||
18 | 2 | * Copyright (C) 2015 Canonical Ltd | ||
19 | 3 | * | ||
20 | 4 | * This program is free software: you can redistribute it and/or modify | ||
21 | 5 | * it under the terms of the GNU Lesser General Public License version 3 as | ||
22 | 6 | * published by the Free Software Foundation. | ||
23 | 7 | * | ||
24 | 8 | * This program is distributed in the hope that it will be useful, | ||
25 | 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
26 | 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
27 | 11 | * GNU Lesser General Public License for more details. | ||
28 | 12 | * | ||
29 | 13 | * You should have received a copy of the GNU Lesser General Public License | ||
30 | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
31 | 15 | * | ||
32 | 16 | * Authors: Michi Henning <michi.henning@canonical.com> | ||
33 | 17 | */ | ||
34 | 18 | |||
35 | 19 | #pragma once | ||
36 | 20 | |||
37 | 21 | #pragma GCC diagnostic push | ||
38 | 22 | #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" | ||
39 | 23 | #pragma GCC diagnostic ignored "-Wswitch-default" | ||
40 | 24 | #include <QDebug> | ||
41 | 25 | #pragma GCC diagnostic pop | ||
42 | 26 | |||
43 | 27 | namespace unity | ||
44 | 28 | { | ||
45 | 29 | namespace storage | ||
46 | 30 | { | ||
47 | 31 | namespace internal | ||
48 | 32 | { | ||
49 | 33 | |||
50 | 34 | class TraceMessageHandler final | ||
51 | 35 | { | ||
52 | 36 | public: | ||
53 | 37 | TraceMessageHandler(std::string const& prog_name); | ||
54 | 38 | ~TraceMessageHandler(); | ||
55 | 39 | |||
56 | 40 | private: | ||
57 | 41 | QtMessageHandler old_message_handler_; | ||
58 | 42 | }; | ||
59 | 43 | |||
60 | 44 | } // namespace internal | ||
61 | 45 | } // namespace storage | ||
62 | 46 | } // namespace unity | ||
63 | 0 | 47 | ||
64 | === modified file 'include/unity/storage/provider/internal/ServerImpl.h' | |||
65 | --- include/unity/storage/provider/internal/ServerImpl.h 2016-07-12 02:22:05 +0000 | |||
66 | +++ include/unity/storage/provider/internal/ServerImpl.h 2016-08-17 02:55:56 +0000 | |||
67 | @@ -19,6 +19,7 @@ | |||
68 | 19 | #pragma once | 19 | #pragma once |
69 | 20 | 20 | ||
70 | 21 | #include <unity/storage/provider/Server.h> | 21 | #include <unity/storage/provider/Server.h> |
71 | 22 | #include <unity/storage/internal/TraceMessageHandler.h> | ||
72 | 22 | #include <unity/storage/provider/internal/DBusPeerCache.h> | 23 | #include <unity/storage/provider/internal/DBusPeerCache.h> |
73 | 23 | #include <unity/storage/provider/internal/ProviderInterface.h> | 24 | #include <unity/storage/provider/internal/ProviderInterface.h> |
74 | 24 | 25 | ||
75 | @@ -58,6 +59,7 @@ | |||
76 | 58 | ServerBase* const server_; | 59 | ServerBase* const server_; |
77 | 59 | std::string const bus_name_; | 60 | std::string const bus_name_; |
78 | 60 | std::string const service_id_; | 61 | std::string const service_id_; |
79 | 62 | unity::storage::internal::TraceMessageHandler trace_message_handler_; | ||
80 | 61 | 63 | ||
81 | 62 | std::unique_ptr<QCoreApplication> app_; | 64 | std::unique_ptr<QCoreApplication> app_; |
82 | 63 | std::unique_ptr<OnlineAccounts::Manager> manager_; | 65 | std::unique_ptr<OnlineAccounts::Manager> manager_; |
83 | 64 | 66 | ||
84 | === modified file 'include/unity/storage/qt/client/internal/remote_client/Handler.h' | |||
85 | --- include/unity/storage/qt/client/internal/remote_client/Handler.h 2016-08-11 01:39:44 +0000 | |||
86 | +++ include/unity/storage/qt/client/internal/remote_client/Handler.h 2016-08-17 02:55:56 +0000 | |||
87 | @@ -80,10 +80,25 @@ | |||
88 | 80 | auto ep = unmarshal_exception(call); | 80 | auto ep = unmarshal_exception(call); |
89 | 81 | std::rethrow_exception(ep); | 81 | std::rethrow_exception(ep); |
90 | 82 | } | 82 | } |
91 | 83 | // We catch some exceptions that are "surprising" so we can log those. | ||
92 | 84 | catch (LocalCommsException const& e) | ||
93 | 85 | { | ||
94 | 86 | qCritical() << "provider exception:" << e.what(); | ||
95 | 87 | make_exceptional_future<T>(qf_, e); | ||
96 | 88 | } | ||
97 | 89 | catch (RemoteCommsException const& e) | ||
98 | 90 | { | ||
99 | 91 | qCritical() << "provider exception:" << e.what(); | ||
100 | 92 | make_exceptional_future<T>(qf_, e); | ||
101 | 93 | } | ||
102 | 94 | catch (ResourceException const& e) | ||
103 | 95 | { | ||
104 | 96 | qCritical() << "provider exception:" << e.what(); | ||
105 | 97 | make_exceptional_future<T>(qf_, e); | ||
106 | 98 | } | ||
107 | 83 | catch (StorageException const& e) | 99 | catch (StorageException const& e) |
108 | 84 | { | 100 | { |
109 | 85 | make_exceptional_future<T>(qf_, e); | 101 | make_exceptional_future<T>(qf_, e); |
110 | 86 | return; | ||
111 | 87 | } | 102 | } |
112 | 88 | // LCOV_EXCL_START | 103 | // LCOV_EXCL_START |
113 | 89 | catch (...) | 104 | catch (...) |
114 | 90 | 105 | ||
115 | === modified file 'src/internal/CMakeLists.txt' | |||
116 | --- src/internal/CMakeLists.txt 2016-08-11 06:53:25 +0000 | |||
117 | +++ src/internal/CMakeLists.txt 2016-08-17 02:55:56 +0000 | |||
118 | @@ -1,6 +1,7 @@ | |||
119 | 1 | set(src | 1 | set(src |
120 | 2 | dbusmarshal.cpp | 2 | dbusmarshal.cpp |
121 | 3 | safe_strerror.cpp | 3 | safe_strerror.cpp |
122 | 4 | TraceMessageHandler.cpp | ||
123 | 4 | ) | 5 | ) |
124 | 5 | 6 | ||
125 | 6 | add_library(storage-framework-common-internal STATIC ${src}) | 7 | add_library(storage-framework-common-internal STATIC ${src}) |
126 | 7 | 8 | ||
127 | === added file 'src/internal/TraceMessageHandler.cpp' | |||
128 | --- src/internal/TraceMessageHandler.cpp 1970-01-01 00:00:00 +0000 | |||
129 | +++ src/internal/TraceMessageHandler.cpp 2016-08-17 02:55:56 +0000 | |||
130 | @@ -0,0 +1,96 @@ | |||
131 | 1 | /* | ||
132 | 2 | * Copyright (C) 2015 Canonical Ltd | ||
133 | 3 | * | ||
134 | 4 | * This program is free software: you can redistribute it and/or modify | ||
135 | 5 | * it under the terms of the GNU Lesser General Public License version 3 as | ||
136 | 6 | * published by the Free Software Foundation. | ||
137 | 7 | * | ||
138 | 8 | * This program is distributed in the hope that it will be useful, | ||
139 | 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
140 | 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
141 | 11 | * GNU Lesser General Public License for more details. | ||
142 | 12 | * | ||
143 | 13 | * You should have received a copy of the GNU Lesser General Public License | ||
144 | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
145 | 15 | * | ||
146 | 16 | * Authors: Michi Henning <michi.henning@canonical.com> | ||
147 | 17 | */ | ||
148 | 18 | |||
149 | 19 | #include <unity/storage/internal/TraceMessageHandler.h> | ||
150 | 20 | |||
151 | 21 | #include <chrono> | ||
152 | 22 | #include <mutex> | ||
153 | 23 | |||
154 | 24 | using namespace std; | ||
155 | 25 | |||
156 | 26 | namespace unity | ||
157 | 27 | { | ||
158 | 28 | namespace storage | ||
159 | 29 | { | ||
160 | 30 | namespace internal | ||
161 | 31 | { | ||
162 | 32 | namespace | ||
163 | 33 | { | ||
164 | 34 | |||
165 | 35 | string prefix; | ||
166 | 36 | |||
167 | 37 | void trace_message_handler(QtMsgType type, const QMessageLogContext& /*context*/, const QString& msg) | ||
168 | 38 | { | ||
169 | 39 | using namespace std; | ||
170 | 40 | using namespace std::chrono; | ||
171 | 41 | |||
172 | 42 | static recursive_mutex mutex; | ||
173 | 43 | lock_guard<decltype(mutex)> lock(mutex); | ||
174 | 44 | |||
175 | 45 | auto now = system_clock::now(); | ||
176 | 46 | auto sys_time = system_clock::to_time_t(now); | ||
177 | 47 | struct tm local_time; | ||
178 | 48 | localtime_r(&sys_time, &local_time); | ||
179 | 49 | int msecs = duration_cast<milliseconds>(now.time_since_epoch()).count() % 1000; | ||
180 | 50 | |||
181 | 51 | if (!prefix.empty()) | ||
182 | 52 | { | ||
183 | 53 | fprintf(stderr, "%s: ", prefix.c_str()); | ||
184 | 54 | } | ||
185 | 55 | char buf[100]; | ||
186 | 56 | strftime(buf, sizeof(buf), "%T", &local_time); | ||
187 | 57 | fprintf(stderr, "[%s.%03d]", buf, msecs); | ||
188 | 58 | switch (type) | ||
189 | 59 | { | ||
190 | 60 | case QtWarningMsg: | ||
191 | 61 | fputs(" Warning:", stderr); | ||
192 | 62 | break; | ||
193 | 63 | case QtCriticalMsg: | ||
194 | 64 | fputs(" Critical:", stderr); | ||
195 | 65 | break; | ||
196 | 66 | // LCOV_EXCL_START | ||
197 | 67 | case QtFatalMsg: | ||
198 | 68 | fputs(" Fatal:", stderr); | ||
199 | 69 | break; | ||
200 | 70 | // LCOV_EXCL_STOP | ||
201 | 71 | default: | ||
202 | 72 | break; // No label for debug messages. | ||
203 | 73 | } | ||
204 | 74 | fprintf(stderr, " %s\n", msg.toLocal8Bit().constData()); | ||
205 | 75 | if (type == QtFatalMsg) | ||
206 | 76 | { | ||
207 | 77 | abort(); // LCOV_EXCL_LINE | ||
208 | 78 | } | ||
209 | 79 | } | ||
210 | 80 | |||
211 | 81 | } // namespace | ||
212 | 82 | |||
213 | 83 | TraceMessageHandler::TraceMessageHandler(string const& prog_name) | ||
214 | 84 | { | ||
215 | 85 | prefix = prog_name; | ||
216 | 86 | old_message_handler_ = qInstallMessageHandler(trace_message_handler); | ||
217 | 87 | } | ||
218 | 88 | |||
219 | 89 | TraceMessageHandler::~TraceMessageHandler() | ||
220 | 90 | { | ||
221 | 91 | qInstallMessageHandler(old_message_handler_); | ||
222 | 92 | } | ||
223 | 93 | |||
224 | 94 | } // namespace internal | ||
225 | 95 | } // namespace storage | ||
226 | 96 | } // namespace unity | ||
227 | 0 | 97 | ||
228 | === modified file 'src/provider/internal/Handler.cpp' | |||
229 | --- src/provider/internal/Handler.cpp 2016-08-11 01:39:44 +0000 | |||
230 | +++ src/provider/internal/Handler.cpp 2016-08-17 02:55:56 +0000 | |||
231 | @@ -26,6 +26,12 @@ | |||
232 | 26 | #include <unity/storage/provider/ProviderBase.h> | 26 | #include <unity/storage/provider/ProviderBase.h> |
233 | 27 | #include <unity/storage/provider/Exceptions.h> | 27 | #include <unity/storage/provider/Exceptions.h> |
234 | 28 | 28 | ||
235 | 29 | #pragma GCC diagnostic push | ||
236 | 30 | #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" | ||
237 | 31 | #pragma GCC diagnostic ignored "-Wswitch-default" | ||
238 | 32 | #include <QDebug> | ||
239 | 33 | #pragma GCC diagnostic pop | ||
240 | 34 | |||
241 | 29 | #include <stdexcept> | 35 | #include <stdexcept> |
242 | 30 | 36 | ||
243 | 31 | using namespace unity::storage::internal; | 37 | using namespace unity::storage::internal; |
244 | @@ -65,7 +71,9 @@ | |||
245 | 65 | } | 71 | } |
246 | 66 | else | 72 | else |
247 | 67 | { | 73 | { |
249 | 68 | auto ep = make_exception_ptr(PermissionException("Handler::begin(): could not retrieve credentials")); | 74 | string msg = "Handler::begin(): could not retrieve credentials"; |
250 | 75 | qDebug() << QString::fromStdString(msg); | ||
251 | 76 | auto ep = make_exception_ptr(PermissionException(msg)); | ||
252 | 69 | marshal_exception(ep); | 77 | marshal_exception(ep); |
253 | 70 | QMetaObject::invokeMethod(this, "send_reply", | 78 | QMetaObject::invokeMethod(this, "send_reply", |
254 | 71 | Qt::QueuedConnection); | 79 | Qt::QueuedConnection); |
255 | @@ -82,6 +90,7 @@ | |||
256 | 82 | } | 90 | } |
257 | 83 | catch (std::exception const& e) | 91 | catch (std::exception const& e) |
258 | 84 | { | 92 | { |
259 | 93 | qDebug() << "provider method threw an exception:" << e.what(); | ||
260 | 85 | marshal_exception(current_exception()); | 94 | marshal_exception(current_exception()); |
261 | 86 | QMetaObject::invokeMethod(this, "send_reply", Qt::QueuedConnection); | 95 | QMetaObject::invokeMethod(this, "send_reply", Qt::QueuedConnection); |
262 | 87 | return; | 96 | return; |
263 | @@ -94,8 +103,9 @@ | |||
264 | 94 | { | 103 | { |
265 | 95 | reply_ = f.get(); | 104 | reply_ = f.get(); |
266 | 96 | } | 105 | } |
268 | 97 | catch (std::exception const&) | 106 | catch (std::exception const& e) |
269 | 98 | { | 107 | { |
270 | 108 | qDebug() << e.what(); | ||
271 | 99 | marshal_exception(current_exception()); | 109 | marshal_exception(current_exception()); |
272 | 100 | } | 110 | } |
273 | 101 | QMetaObject::invokeMethod(this, "send_reply", Qt::QueuedConnection); | 111 | QMetaObject::invokeMethod(this, "send_reply", Qt::QueuedConnection); |
274 | @@ -133,20 +143,34 @@ | |||
275 | 133 | } | 143 | } |
276 | 134 | catch (ResourceException const& e) | 144 | catch (ResourceException const& e) |
277 | 135 | { | 145 | { |
278 | 146 | qDebug() << e.what(); | ||
279 | 136 | reply_ << QVariant(e.error_code()); | 147 | reply_ << QVariant(e.error_code()); |
280 | 137 | } | 148 | } |
281 | 149 | catch (RemoteCommsException const& e) | ||
282 | 150 | { | ||
283 | 151 | qDebug() << e.what(); | ||
284 | 152 | } | ||
285 | 153 | catch (UnknownException const& e) | ||
286 | 154 | { | ||
287 | 155 | qDebug() << e.what(); | ||
288 | 156 | } | ||
289 | 138 | catch (StorageException const&) | 157 | catch (StorageException const&) |
290 | 139 | { | 158 | { |
292 | 140 | // Some other sub-type of StorageException without additional data members. | 159 | // Some other sub-type of StorageException without additional data members, |
293 | 160 | // and we don't want to log this (not surprising) exception. | ||
294 | 141 | } | 161 | } |
295 | 142 | } | 162 | } |
296 | 143 | catch (std::exception const& e) | 163 | catch (std::exception const& e) |
297 | 144 | { | 164 | { |
299 | 145 | reply_ = message_.createErrorReply(QString(DBUS_ERROR_PREFIX) + "UnknownException", e.what()); | 165 | QString msg = QString("unknown exception thrown by provider: ") + e.what(); |
300 | 166 | qDebug() << msg; | ||
301 | 167 | reply_ = message_.createErrorReply(QString(DBUS_ERROR_PREFIX) + "UnknownException", msg); | ||
302 | 146 | } | 168 | } |
303 | 147 | catch (...) | 169 | catch (...) |
304 | 148 | { | 170 | { |
306 | 149 | reply_ = message_.createErrorReply(QString(DBUS_ERROR_PREFIX) + "UnknownException", "unknown exception type"); | 171 | QString msg = "unknown exception thrown by provider"; |
307 | 172 | qDebug() << msg; | ||
308 | 173 | reply_ = message_.createErrorReply(QString(DBUS_ERROR_PREFIX) + "UnknownException", msg); | ||
309 | 150 | } | 174 | } |
310 | 151 | } | 175 | } |
311 | 152 | 176 | ||
312 | 153 | 177 | ||
313 | === modified file 'src/provider/internal/ServerImpl.cpp' | |||
314 | --- src/provider/internal/ServerImpl.cpp 2016-08-12 01:34:34 +0000 | |||
315 | +++ src/provider/internal/ServerImpl.cpp 2016-08-17 02:55:56 +0000 | |||
316 | @@ -38,7 +38,10 @@ | |||
317 | 38 | { | 38 | { |
318 | 39 | 39 | ||
319 | 40 | ServerImpl::ServerImpl(ServerBase* server, string const& bus_name, string const& account_service_id) | 40 | ServerImpl::ServerImpl(ServerBase* server, string const& bus_name, string const& account_service_id) |
321 | 41 | : server_(server), bus_name_(bus_name), service_id_(account_service_id) | 41 | : server_(server) |
322 | 42 | , bus_name_(bus_name) | ||
323 | 43 | , service_id_(account_service_id) | ||
324 | 44 | , trace_message_handler_("storage_provider") | ||
325 | 42 | { | 45 | { |
326 | 43 | qDBusRegisterMetaType<Item>(); | 46 | qDBusRegisterMetaType<Item>(); |
327 | 44 | qDBusRegisterMetaType<std::vector<Item>>(); | 47 | qDBusRegisterMetaType<std::vector<Item>>(); |
328 | 45 | 48 | ||
329 | === modified file 'src/qt/client/internal/remote_client/RuntimeImpl.cpp' | |||
330 | --- src/qt/client/internal/remote_client/RuntimeImpl.cpp 2016-08-12 00:01:19 +0000 | |||
331 | +++ src/qt/client/internal/remote_client/RuntimeImpl.cpp 2016-08-17 02:55:56 +0000 | |||
332 | @@ -139,7 +139,6 @@ | |||
333 | 139 | { | 139 | { |
334 | 140 | for (auto const& a : manager_->availableAccounts(service_id)) | 140 | for (auto const& a : manager_->availableAccounts(service_id)) |
335 | 141 | { | 141 | { |
336 | 142 | qDebug() << "got account:" << a->displayName() << a->serviceId() << a->id(); | ||
337 | 143 | auto object_path = QStringLiteral("/provider/%1").arg(a->id()); | 142 | auto object_path = QStringLiteral("/provider/%1").arg(a->id()); |
338 | 144 | accounts.append(make_account(BUS_NAME, object_path, | 143 | accounts.append(make_account(BUS_NAME, object_path, |
339 | 145 | "", a->serviceId(), a->displayName())); | 144 | "", a->serviceId(), a->displayName())); |
340 | 146 | 145 | ||
341 | === modified file 'tests/provider-ProviderInterface/ProviderInterface_test.cpp' | |||
342 | --- tests/provider-ProviderInterface/ProviderInterface_test.cpp 2016-08-12 01:34:34 +0000 | |||
343 | +++ tests/provider-ProviderInterface/ProviderInterface_test.cpp 2016-08-17 02:55:56 +0000 | |||
344 | @@ -398,7 +398,7 @@ | |||
345 | 398 | wait_for(reply); | 398 | wait_for(reply); |
346 | 399 | ASSERT_TRUE(reply.isError()); | 399 | ASSERT_TRUE(reply.isError()); |
347 | 400 | EXPECT_EQ(PROVIDER_ERROR + "UnknownException", reply.error().name()); | 400 | EXPECT_EQ(PROVIDER_ERROR + "UnknownException", reply.error().name()); |
349 | 401 | EXPECT_EQ("map::at", reply.error().message()); | 401 | EXPECT_EQ("unknown exception thrown by provider: map::at", reply.error().message()); |
350 | 402 | } | 402 | } |
351 | 403 | 403 | ||
352 | 404 | TEST_F(ProviderInterfaceTest, download) | 404 | TEST_F(ProviderInterfaceTest, download) |
353 | @@ -472,7 +472,7 @@ | |||
354 | 472 | wait_for(reply); | 472 | wait_for(reply); |
355 | 473 | ASSERT_TRUE(reply.isError()); | 473 | ASSERT_TRUE(reply.isError()); |
356 | 474 | EXPECT_EQ(PROVIDER_ERROR + "UnknownException", reply.error().name()); | 474 | EXPECT_EQ(PROVIDER_ERROR + "UnknownException", reply.error().name()); |
358 | 475 | EXPECT_EQ("map::at", reply.error().message()); | 475 | EXPECT_EQ("unknown exception thrown by provider: map::at", reply.error().message()); |
359 | 476 | } | 476 | } |
360 | 477 | 477 | ||
361 | 478 | TEST_F(ProviderInterfaceTest, delete_) | 478 | TEST_F(ProviderInterfaceTest, delete_) |
FAILED: Continuous integration, rev:55 /jenkins. canonical. com/unity- api-1/job/ lp-storage- framework- ci/76/ /jenkins. canonical. com/unity- api-1/job/ build/374/ console /jenkins. canonical. com/unity- api-1/job/ build-0- fetch/380 /jenkins. canonical. com/unity- api-1/job/ build-1- sourcepkg/ release= vivid+overlay/ 297 /jenkins. canonical. com/unity- api-1/job/ build-1- sourcepkg/ release= xenial+ overlay/ 297 /jenkins. canonical. com/unity- api-1/job/ build-1- sourcepkg/ release= yakkety/ 297 /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=amd64, release= vivid+overlay/ 227 /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=amd64, release= vivid+overlay/ 227/artifact/ output/ *zip*/output. zip /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=amd64, release= xenial+ overlay/ 227 /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=amd64, release= xenial+ overlay/ 227/artifact/ output/ *zip*/output. zip /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=amd64, release= yakkety/ 227 /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=amd64, release= yakkety/ 227/artifact/ output/ *zip*/output. zip /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=armhf, release= vivid+overlay/ 227 /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=armhf, release= vivid+overlay/ 227/artifact/ output/ *zip*/output. zip /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=armhf, release= xenial+ overlay/ 227 /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=armhf, release= xenial+ overlay/ 227/artifact/ output/ *zip*/output. zip /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=armhf, release= yakkety/ 227 /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=armhf, release= yakkety/ 227/artifact/ output/ *zip*/output. zip /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=i386, release= vivid+overlay/ 227 /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=i386, release= vivid+overlay/ 227/artifact/ output/ *zip*/output. zip /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=i386, release= xenial+ overlay/ 227 /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=i386, release= xenial+ overlay/ 227/artifact/ output/ *zip*/output. zip /jenkins. canonical. com/unity- api-1/job/ build-2- binpkg/ arch=i386, release= yakkety/ 227/console
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
Click here to trigger a rebuild: /jenkins. canonical. com/unity- api-1/job/ lp-storage- framework- ci/76/rebuild
https:/