Merge lp:~phablet-team/messaging-framework/include-message-when-group-cancelled into lp:messaging-framework
- include-message-when-group-cancelled
- Merge into trunk
Status: | Merged |
---|---|
Approved by: | Tiago Salem Herrmann |
Approved revision: | 61 |
Merged at revision: | 59 |
Proposed branch: | lp:~phablet-team/messaging-framework/include-message-when-group-cancelled |
Merge into: | lp:messaging-framework |
Diff against target: |
304 lines (+63/-89) 6 files modified
debian/changelog (+7/-0) include/messaging/group_manager.h (+8/-11) include/messaging/qt/tp/text_channel.h (+9/-14) src/CMakeLists.txt (+1/-0) src/messaging/group_manager.cpp (+4/-17) src/messaging/qt/tp/text_channel.cpp (+34/-47) |
To merge this branch: | bzr merge lp:~phablet-team/messaging-framework/include-message-when-group-cancelled |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Tiago Salem Herrmann (community) | Approve | ||
system-apps-ci-bot | continuous-integration | Approve | |
Review via email: mp+304000@code.launchpad.net |
Commit message
Simplified Api for having only one callback for all possible group cancelled cases
added more enum cases as cancel reason
NOTE: this branch should be landed along with https:/
Description of the change
Simplified Api for having only one callback for all possible group cancelled cases
added more enum cases as cancel reason
NOTE: this branch should be landed along with https:/
system-apps-ci-bot (system-apps-ci-bot) wrote : | # |
- 61. By Roberto Mier Escandon
-
delay the close to let the events get to the client before the channel is closed
system-apps-ci-bot (system-apps-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:61
https:/
Executed test runs:
SUCCESS: https:/
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:/
Tiago Salem Herrmann (tiagosh) wrote : | # |
tested and works fine.
code looks good too.
Preview Diff
1 | === modified file 'debian/changelog' | |||
2 | --- debian/changelog 2016-08-16 20:11:02 +0000 | |||
3 | +++ debian/changelog 2016-08-26 14:12:00 +0000 | |||
4 | @@ -1,3 +1,10 @@ | |||
5 | 1 | messaging-framework (0.1-1ubuntu25) vivid; urgency=medium | ||
6 | 2 | |||
7 | 3 | * Fixed self handle included in members | ||
8 | 4 | * Simplified group cancelled api callbacks reducing them to only one | ||
9 | 5 | |||
10 | 6 | -- Roberto Mier Escandon <roberto.escandon@canonical.com> Thu, 25 Aug 2016 22:06:07 +0200 | ||
11 | 7 | |||
12 | 1 | messaging-framework (0.1-1ubuntu24) vivid; urgency=medium | 8 | messaging-framework (0.1-1ubuntu24) vivid; urgency=medium |
13 | 2 | 9 | ||
14 | 3 | * Implemented code to update group member roles in client | 10 | * Implemented code to update group member roles in client |
15 | 4 | 11 | ||
16 | === modified file 'include/messaging/group_manager.h' | |||
17 | --- include/messaging/group_manager.h 2016-08-23 22:33:39 +0000 | |||
18 | +++ include/messaging/group_manager.h 2016-08-26 14:12:00 +0000 | |||
19 | @@ -42,10 +42,12 @@ | |||
20 | 42 | 42 | ||
21 | 43 | enum class CancelGroupReason | 43 | enum class CancelGroupReason |
22 | 44 | { | 44 | { |
27 | 45 | None, | 45 | None, ///< No or unknown reason |
28 | 46 | Kicked, | 46 | Error, ///< Generic error makes this group temporally or permanent unavaliable for us |
29 | 47 | Gone, | 47 | Rejected, ///< Group creation or rejoin was rejected |
30 | 48 | Error | 48 | Kicked, ///< We were expelled from group |
31 | 49 | Gone, ///< Group is gone in server side and is not available anymore | ||
32 | 50 | Leave ///< We leave the group | ||
33 | 49 | }; | 51 | }; |
34 | 50 | 52 | ||
35 | 51 | /// @brief GroupManager models a textual group conversation. | 53 | /// @brief GroupManager models a textual group conversation. |
36 | @@ -59,9 +61,7 @@ | |||
37 | 59 | virtual ~Observer() = default; | 61 | virtual ~Observer() = default; |
38 | 60 | 62 | ||
39 | 61 | virtual void on_group_created() = 0; | 63 | virtual void on_group_created() = 0; |
43 | 62 | virtual void on_group_creation_rejected() = 0; | 64 | virtual void on_group_cancelled(CancelGroupReason reason, const std::string &message) = 0; |
41 | 63 | virtual void on_group_cancelled(CancelGroupReason reason) = 0; | ||
42 | 64 | virtual void on_group_quit() = 0; | ||
44 | 65 | virtual void on_group_title_changed(const std::string& new_title, | 65 | virtual void on_group_title_changed(const std::string& new_title, |
45 | 66 | const Member& actor, | 66 | const Member& actor, |
46 | 67 | const std::chrono::system_clock::time_point& when) = 0; | 67 | const std::chrono::system_clock::time_point& when) = 0; |
47 | @@ -116,10 +116,7 @@ | |||
48 | 116 | void validate_observer(); | 116 | void validate_observer(); |
49 | 117 | 117 | ||
50 | 118 | void announce_group_created(); | 118 | void announce_group_created(); |
55 | 119 | //TODO TRACE maybe a reason as parameter for knowing the rejected cause? | 119 | void announce_group_cancelled(CancelGroupReason reason, const std::string& message); |
52 | 120 | void announce_group_creation_rejected(); | ||
53 | 121 | void announce_group_cancelled(CancelGroupReason reason); | ||
54 | 122 | void announce_group_quit(); | ||
56 | 123 | void announce_group_title_changed(const std::string& new_title, | 120 | void announce_group_title_changed(const std::string& new_title, |
57 | 124 | const Member& actor = Member{std::string{}}, | 121 | const Member& actor = Member{std::string{}}, |
58 | 125 | const std::chrono::system_clock::time_point& when = std::chrono::system_clock::now()); | 122 | const std::chrono::system_clock::time_point& when = std::chrono::system_clock::now()); |
59 | 126 | 123 | ||
60 | === modified file 'include/messaging/qt/tp/text_channel.h' | |||
61 | --- include/messaging/qt/tp/text_channel.h 2016-08-16 16:31:31 +0000 | |||
62 | +++ include/messaging/qt/tp/text_channel.h 2016-08-26 14:12:00 +0000 | |||
63 | @@ -20,7 +20,11 @@ | |||
64 | 20 | #include <messaging/chat.h> | 20 | #include <messaging/chat.h> |
65 | 21 | #include <messaging/messenger.h> | 21 | #include <messaging/messenger.h> |
66 | 22 | #include <messaging/qt/runtime.h> | 22 | #include <messaging/qt/runtime.h> |
67 | 23 | |||
68 | 24 | #include <messaging/qt/tp/interfaces/base_channel_destroyable.h> | ||
69 | 25 | #include <messaging/qt/tp/interfaces/base_channel_roles.h> | ||
70 | 23 | #include <messaging/qt/tp/interfaces/types.h> | 26 | #include <messaging/qt/tp/interfaces/types.h> |
71 | 27 | #include <messaging/qt/tp/interfaces/constants.h> | ||
72 | 24 | 28 | ||
73 | 25 | #include <TelepathyQt/BaseChannel> | 29 | #include <TelepathyQt/BaseChannel> |
74 | 26 | #include <TelepathyQt/Types> | 30 | #include <TelepathyQt/Types> |
75 | @@ -45,6 +49,7 @@ | |||
76 | 45 | , public messaging::Chat::Observer | 49 | , public messaging::Chat::Observer |
77 | 46 | , public messaging::GroupManager::Observer | 50 | , public messaging::GroupManager::Observer |
78 | 47 | { | 51 | { |
79 | 52 | Q_OBJECT | ||
80 | 48 | public: | 53 | public: |
81 | 49 | /// @brief Safes us some typing. | 54 | /// @brief Safes us some typing. |
82 | 50 | typedef Tp::SharedPtr<TextChannel> Ptr; | 55 | typedef Tp::SharedPtr<TextChannel> Ptr; |
83 | @@ -72,14 +77,8 @@ | |||
84 | 72 | /// @brief on_group_created when the group has been created ok in the server | 77 | /// @brief on_group_created when the group has been created ok in the server |
85 | 73 | void on_group_created() override; | 78 | void on_group_created() override; |
86 | 74 | 79 | ||
87 | 75 | /// @brief on_group_creation_rejected when the group creation has been rejected by the server | ||
88 | 76 | void on_group_creation_rejected() override; | ||
89 | 77 | |||
90 | 78 | /// @brief on_group_cancelled when the group is no longer valid | 80 | /// @brief on_group_cancelled when the group is no longer valid |
95 | 79 | void on_group_cancelled(CancelGroupReason reason) override; | 81 | void on_group_cancelled(CancelGroupReason reason, const std::string &message) override; |
92 | 80 | |||
93 | 81 | /// @brief on_group_quit when confirmed leaving a group | ||
94 | 82 | void on_group_quit() override; | ||
96 | 83 | 82 | ||
97 | 84 | /// @brief on_group_title_changed when group title has changed in the server | 83 | /// @brief on_group_title_changed when group title has changed in the server |
98 | 85 | void on_group_title_changed(const std::string& new_title, | 84 | void on_group_title_changed(const std::string& new_title, |
99 | @@ -107,6 +106,8 @@ | |||
100 | 107 | /// @brief on_participant_ends_typing is invoked when a participant in this chat ends composing a message | 106 | /// @brief on_participant_ends_typing is invoked when a participant in this chat ends composing a message |
101 | 108 | void on_participant_ends_typing(const std::shared_ptr<User> &user) override; | 107 | void on_participant_ends_typing(const std::shared_ptr<User> &user) override; |
102 | 109 | 108 | ||
103 | 109 | public Q_SLOTS: | ||
104 | 110 | void delay_close(); | ||
105 | 110 | 111 | ||
106 | 111 | private: | 112 | private: |
107 | 112 | TextChannel(Connection* tp_connection, | 113 | TextChannel(Connection* tp_connection, |
108 | @@ -143,14 +144,8 @@ | |||
109 | 143 | /// @brief on_group_created when the group has been created ok in the server | 144 | /// @brief on_group_created when the group has been created ok in the server |
110 | 144 | void on_group_created() override; | 145 | void on_group_created() override; |
111 | 145 | 146 | ||
112 | 146 | /// @brief on_group_creation_rejected when the group creation has been rejected by the server | ||
113 | 147 | void on_group_creation_rejected() override; | ||
114 | 148 | |||
115 | 149 | /// @brief on_group_cancelled when the group is no longer valid | 147 | /// @brief on_group_cancelled when the group is no longer valid |
120 | 150 | void on_group_cancelled(CancelGroupReason reason) override; | 148 | void on_group_cancelled(CancelGroupReason reason, const std::string &message) override; |
117 | 151 | |||
118 | 152 | /// @brief on_group_quit when confirmed leaving a group | ||
119 | 153 | void on_group_quit() override; | ||
121 | 154 | 149 | ||
122 | 155 | /// @brief on_group_title_changed when group title has changed in the server | 150 | /// @brief on_group_title_changed when group title has changed in the server |
123 | 156 | void on_group_title_changed(const std::string& new_title, | 151 | void on_group_title_changed(const std::string& new_title, |
124 | 157 | 152 | ||
125 | === modified file 'src/CMakeLists.txt' | |||
126 | --- src/CMakeLists.txt 2016-08-11 21:39:57 +0000 | |||
127 | +++ src/CMakeLists.txt 2016-08-26 14:12:00 +0000 | |||
128 | @@ -4,6 +4,7 @@ | |||
129 | 4 | qt5_wrap_cpp(MESSAGING_FW_MOCS ${CMAKE_SOURCE_DIR}/include/messaging/qt/network_monitor.h | 4 | qt5_wrap_cpp(MESSAGING_FW_MOCS ${CMAKE_SOURCE_DIR}/include/messaging/qt/network_monitor.h |
130 | 5 | ${CMAKE_SOURCE_DIR}/include/messaging/qt/tp/protocol.h | 5 | ${CMAKE_SOURCE_DIR}/include/messaging/qt/tp/protocol.h |
131 | 6 | ${CMAKE_SOURCE_DIR}/include/messaging/qt/tp/connection.h | 6 | ${CMAKE_SOURCE_DIR}/include/messaging/qt/tp/connection.h |
132 | 7 | ${CMAKE_SOURCE_DIR}/include/messaging/qt/tp/text_channel.h | ||
133 | 7 | ${CMAKE_SOURCE_DIR}/include/messaging/qt/tp/interfaces/base_channel_destroyable.h | 8 | ${CMAKE_SOURCE_DIR}/include/messaging/qt/tp/interfaces/base_channel_destroyable.h |
134 | 8 | ${CMAKE_SOURCE_DIR}/include/messaging/qt/tp/interfaces/base_channel_destroyable_internal.h | 9 | ${CMAKE_SOURCE_DIR}/include/messaging/qt/tp/interfaces/base_channel_destroyable_internal.h |
135 | 9 | ${CMAKE_SOURCE_DIR}/include/messaging/qt/tp/interfaces/base_channel_roles.h | 10 | ${CMAKE_SOURCE_DIR}/include/messaging/qt/tp/interfaces/base_channel_roles.h |
136 | 10 | 11 | ||
137 | === modified file 'src/messaging/group_manager.cpp' | |||
138 | --- src/messaging/group_manager.cpp 2016-08-16 14:47:42 +0000 | |||
139 | +++ src/messaging/group_manager.cpp 2016-08-26 14:12:00 +0000 | |||
140 | @@ -58,23 +58,10 @@ | |||
141 | 58 | impl->observer->on_group_created(); | 58 | impl->observer->on_group_created(); |
142 | 59 | } | 59 | } |
143 | 60 | 60 | ||
161 | 61 | void messaging::GroupManager::announce_group_creation_rejected() | 61 | void messaging::GroupManager::announce_group_cancelled(CancelGroupReason reason, const std::string &message) |
162 | 62 | { | 62 | { |
163 | 63 | validate_observer(); | 63 | validate_observer(); |
164 | 64 | impl->observer->on_group_creation_rejected(); | 64 | impl->observer->on_group_cancelled(reason, message); |
148 | 65 | } | ||
149 | 66 | |||
150 | 67 | |||
151 | 68 | void messaging::GroupManager::announce_group_cancelled(CancelGroupReason reason) | ||
152 | 69 | { | ||
153 | 70 | validate_observer(); | ||
154 | 71 | impl->observer->on_group_cancelled(reason); | ||
155 | 72 | } | ||
156 | 73 | |||
157 | 74 | void messaging::GroupManager::announce_group_quit() | ||
158 | 75 | { | ||
159 | 76 | validate_observer(); | ||
160 | 77 | impl->observer->on_group_quit(); | ||
165 | 78 | } | 65 | } |
166 | 79 | 66 | ||
167 | 80 | void messaging::GroupManager::announce_group_title_changed(const std::string &new_title, | 67 | void messaging::GroupManager::announce_group_title_changed(const std::string &new_title, |
168 | 81 | 68 | ||
169 | === modified file 'src/messaging/qt/tp/text_channel.cpp' | |||
170 | --- src/messaging/qt/tp/text_channel.cpp 2016-08-24 20:10:27 +0000 | |||
171 | +++ src/messaging/qt/tp/text_channel.cpp 2016-08-26 14:12:00 +0000 | |||
172 | @@ -19,11 +19,6 @@ | |||
173 | 19 | #include <messaging/qt/tp/connection.h> | 19 | #include <messaging/qt/tp/connection.h> |
174 | 20 | #include <messaging/qt/tp/message.h> | 20 | #include <messaging/qt/tp/message.h> |
175 | 21 | 21 | ||
176 | 22 | #include <messaging/qt/tp/interfaces/base_channel_destroyable.h> | ||
177 | 23 | #include <messaging/qt/tp/interfaces/base_channel_roles.h> | ||
178 | 24 | #include <messaging/qt/tp/interfaces/types.h> | ||
179 | 25 | #include <messaging/qt/tp/interfaces/constants.h> | ||
180 | 26 | |||
181 | 27 | #include <messaging/qt/variant.h> | 22 | #include <messaging/qt/variant.h> |
182 | 28 | 23 | ||
183 | 29 | #include <messaging/connection.h> | 24 | #include <messaging/connection.h> |
184 | @@ -178,27 +173,11 @@ | |||
185 | 178 | }); | 173 | }); |
186 | 179 | } | 174 | } |
187 | 180 | 175 | ||
209 | 181 | void mqt::tp::TextChannel::Observer::on_group_creation_rejected() | 176 | void mqt::tp::TextChannel::Observer::on_group_cancelled(CancelGroupReason reason, const std::string &message) |
210 | 182 | { | 177 | { |
211 | 183 | auto sp = shared_from_this(); | 178 | auto thiz = shared_from_this(); |
212 | 184 | runtime->enter_with_task([sp](){ | 179 | runtime->enter_with_task([thiz, reason, message]() { |
213 | 185 | sp->tc->on_group_creation_rejected(); | 180 | thiz->tc->on_group_cancelled(reason, message); |
193 | 186 | }); | ||
194 | 187 | } | ||
195 | 188 | |||
196 | 189 | void mqt::tp::TextChannel::Observer::on_group_cancelled(CancelGroupReason reason) | ||
197 | 190 | { | ||
198 | 191 | auto thiz = shared_from_this(); | ||
199 | 192 | runtime->enter_with_task([thiz, reason]() { | ||
200 | 193 | thiz->tc->on_group_cancelled(reason); | ||
201 | 194 | }); | ||
202 | 195 | } | ||
203 | 196 | |||
204 | 197 | void mqt::tp::TextChannel::Observer::on_group_quit() | ||
205 | 198 | { | ||
206 | 199 | auto thiz = shared_from_this(); | ||
207 | 200 | runtime->enter_with_task([thiz]() { | ||
208 | 201 | thiz->tc->on_group_quit(); | ||
214 | 202 | }); | 181 | }); |
215 | 203 | } | 182 | } |
216 | 204 | 183 | ||
217 | @@ -612,12 +591,6 @@ | |||
218 | 612 | 591 | ||
219 | 613 | } | 592 | } |
220 | 614 | 593 | ||
221 | 615 | void mqt::tp::TextChannel::on_group_creation_rejected() | ||
222 | 616 | { | ||
223 | 617 | LOG(INFO) << __PRETTY_FUNCTION__ ; | ||
224 | 618 | close_channel_with_reason(Tp::ChannelGroupChangeReasonError, "Group creation rejected"); | ||
225 | 619 | } | ||
226 | 620 | |||
227 | 621 | void mqt::tp::TextChannel::close_channel_with_reason(uint reason, const QString &message) | 594 | void mqt::tp::TextChannel::close_channel_with_reason(uint reason, const QString &message) |
228 | 622 | { | 595 | { |
229 | 623 | // At this point, self handle should be removed from the group members, providing one of the reasons | 596 | // At this point, self handle should be removed from the group members, providing one of the reasons |
230 | @@ -637,11 +610,18 @@ | |||
231 | 637 | 610 | ||
232 | 638 | group_interface->setMembers(members, details); | 611 | group_interface->setMembers(members, details); |
233 | 639 | 612 | ||
234 | 613 | // It is needed to delay the close channel action to be sure the events related with previous action of removing | ||
235 | 614 | // self handle from members are sent to clients and processed before the channel expires. | ||
236 | 615 | QTimer::singleShot(2000, this, SLOT(delay_close())); | ||
237 | 616 | |||
238 | 617 | } | ||
239 | 618 | |||
240 | 619 | void mqt::tp::TextChannel::delay_close() | ||
241 | 620 | { | ||
242 | 640 | close(); | 621 | close(); |
243 | 641 | } | 622 | } |
244 | 642 | 623 | ||
247 | 643 | 624 | void mqt::tp::TextChannel::on_group_cancelled(CancelGroupReason cancel_reason, const std::string &cancel_message) | |
246 | 644 | void mqt::tp::TextChannel::on_group_cancelled(CancelGroupReason cancel_reason) | ||
248 | 645 | { | 625 | { |
249 | 646 | LOG(INFO) << __PRETTY_FUNCTION__; | 626 | LOG(INFO) << __PRETTY_FUNCTION__; |
250 | 647 | 627 | ||
251 | @@ -649,18 +629,25 @@ | |||
252 | 649 | QString message; | 629 | QString message; |
253 | 650 | switch (cancel_reason) | 630 | switch (cancel_reason) |
254 | 651 | { | 631 | { |
255 | 632 | case CancelGroupReason::Error: | ||
256 | 633 | reason = Tp::ChannelGroupChangeReasonError; | ||
257 | 634 | message = "Group is closed due to an error"; | ||
258 | 635 | break; | ||
259 | 636 | case CancelGroupReason::Rejected: | ||
260 | 637 | reason = Tp::ChannelGroupChangeReasonError; | ||
261 | 638 | message = "Group creation rejected"; | ||
262 | 639 | break; | ||
263 | 640 | case CancelGroupReason::Kicked: | ||
264 | 641 | reason = Tp::ChannelGroupChangeReasonKicked; | ||
265 | 642 | message = "You were expelled from group"; | ||
266 | 643 | break; | ||
267 | 652 | case CancelGroupReason::Gone: | 644 | case CancelGroupReason::Gone: |
268 | 653 | reason = Tp::ChannelGroupChangeReasonBanned; | 645 | reason = Tp::ChannelGroupChangeReasonBanned; |
269 | 654 | message = "Group not available anymore"; | 646 | message = "Group not available anymore"; |
270 | 655 | break; | 647 | break; |
279 | 656 | case CancelGroupReason::Kicked: | 648 | case CancelGroupReason::Leave: |
280 | 657 | reason = Tp::ChannelGroupChangeReasonKicked; | 649 | reason = Tp::ChannelGroupChangeReasonNone; |
281 | 658 | message = "You were expelled from group"; | 650 | message = "Quit group"; |
274 | 659 | break; | ||
275 | 660 | case CancelGroupReason::Error: | ||
276 | 661 | reason = Tp::ChannelGroupChangeReasonError; | ||
277 | 662 | message = "Group is closed due to an error"; | ||
278 | 663 | break; | ||
282 | 664 | case CancelGroupReason::None: | 651 | case CancelGroupReason::None: |
283 | 665 | default: | 652 | default: |
284 | 666 | reason = Tp::ChannelGroupChangeReasonNone; | 653 | reason = Tp::ChannelGroupChangeReasonNone; |
285 | @@ -668,14 +655,14 @@ | |||
286 | 668 | break; | 655 | break; |
287 | 669 | } | 656 | } |
288 | 670 | 657 | ||
289 | 658 | // cancel message overwrites default one in case it is not empty | ||
290 | 659 | if (not cancel_message.empty()) { | ||
291 | 660 | message = QString::fromStdString(cancel_message); | ||
292 | 661 | } | ||
293 | 662 | |||
294 | 671 | close_channel_with_reason(reason, message); | 663 | close_channel_with_reason(reason, message); |
295 | 672 | } | 664 | } |
296 | 673 | 665 | ||
297 | 674 | void mqt::tp::TextChannel::on_group_quit() | ||
298 | 675 | { | ||
299 | 676 | close_channel_with_reason(Tp::ChannelGroupChangeReasonNone, "Quit group"); | ||
300 | 677 | } | ||
301 | 678 | |||
302 | 679 | void mqt::tp::TextChannel::on_group_title_changed(const std::string &new_title, | 666 | void mqt::tp::TextChannel::on_group_title_changed(const std::string &new_title, |
303 | 680 | const Member& actor, | 667 | const Member& actor, |
304 | 681 | const std::chrono::system_clock::time_point& when) | 668 | const std::chrono::system_clock::time_point& when) |
PASSED: Continuous integration, rev:60 /jenkins. canonical. com/system- apps/job/ lp-messaging- framework- ci/45/ /jenkins. canonical. com/system- apps/job/ build/1321 /jenkins. canonical. com/system- apps/job/ test-0- autopkgtest/ label=phone- armhf,release= vivid+overlay, testname= default/ 298 /jenkins. canonical. com/system- apps/job/ build-0- fetch/1321 /jenkins. canonical. com/system- apps/job/ build-1- sourcepkg/ release= vivid+overlay/ 1185 /jenkins. canonical. com/system- apps/job/ build-1- sourcepkg/ release= xenial+ overlay/ 1185 /jenkins. canonical. com/system- apps/job/ build-1- sourcepkg/ release= yakkety/ 1185 /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=amd64, release= vivid+overlay/ 1165 /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=amd64, release= vivid+overlay/ 1165/artifact/ output/ *zip*/output. zip /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=amd64, release= xenial+ overlay/ 1165 /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=amd64, release= xenial+ overlay/ 1165/artifact/ output/ *zip*/output. zip /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=amd64, release= yakkety/ 1165 /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=amd64, release= yakkety/ 1165/artifact/ output/ *zip*/output. zip /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=armhf, release= vivid+overlay/ 1165 /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=armhf, release= vivid+overlay/ 1165/artifact/ output/ *zip*/output. zip /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=armhf, release= xenial+ overlay/ 1165 /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=armhf, release= xenial+ overlay/ 1165/artifact/ output/ *zip*/output. zip /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=armhf, release= yakkety/ 1165 /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=armhf, release= yakkety/ 1165/artifact/ output/ *zip*/output. zip /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=i386, release= vivid+overlay/ 1165 /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=i386, release= vivid+overlay/ 1165/artifact/ output/ *zip*/output. zip /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=i386, release= xenial+ overlay/ 1165 /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=i386, release= xenial+ overlay/ 1165/artifact/ output/ *zip*/output. zip /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=i386, release= yakkety/ 1165 /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=i386, release= yakkety/ 1165/artifact/ output/ *zip*/output. zip
https:/
Executed test runs:
SUCCESS: https:/
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: /jenkins. canonical. com/system- apps/job/ lp-messaging- framework- ci/45/rebuild
https:/