Merge lp:~fboucault/messaging-app/async_bottom_edge into lp:messaging-app
- async_bottom_edge
- Merge into trunk
Status: | Merged |
---|---|
Approved by: | Tiago Salem Herrmann |
Approved revision: | 576 |
Merged at revision: | 574 |
Proposed branch: | lp:~fboucault/messaging-app/async_bottom_edge |
Merge into: | lp:messaging-app |
Diff against target: |
294 lines (+108/-14) 7 files modified
debian/rules (+1/-1) src/qml/MainPage.qml (+9/-3) src/qml/MessagingBottomEdge.qml (+14/-5) src/qml/SettingsPage.qml (+5/-0) src/qml/messaging-app.qml (+73/-5) tests/qml/tst_DualSim.qml (+4/-0) tests/qml/tst_SingleSim.qml (+2/-0) |
To merge this branch: | bzr merge lp:~fboucault/messaging-app/async_bottom_edge |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Tiago Salem Herrmann (community) | Approve | ||
system-apps-ci-bot | continuous-integration | Needs Fixing | |
Bill Filler (community) | Needs Fixing | ||
Florian Boucault (community) | Needs Fixing | ||
PS Jenkins bot | continuous-integration | Pending | |
Review via email: mp+297334@code.launchpad.net |
Commit message
Always load MessagingBottomEdge asynchronously.
Saves around 1000ms at startup.
Description of the change
Always load MessagingBottomEdge asynchronously.
Saves around 1000ms at startup.
system-apps-ci-bot (system-apps-ci-bot) wrote : | # |
Florian Boucault (fboucault) wrote : | # |
From tiago's testing: "it breaks the use case where we can start messaging-app directly in the new message view via url dispatcher"
system-apps-ci-bot (system-apps-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:563
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
Tiago Salem Herrmann (tiagosh) wrote : | # |
looks good now.
Thanks
Bill Filler (bfiller) wrote : | # |
This is not working correctly in 2 column mode, compared to shipping version. Found two issues, testing as follows:
Hardware: Arale
Changed the grid units to make arale go into 2 column mode when rotate:
create this file: /etc/ubuntu-
GRID_UNIT_PX=14
Tests:
1) rotate phone into landscape, causes 2 column mode
Expected results: no bottom edge hint in column 1, only + button on toolbar to create new page
Actual result: bottom edge hint displayed in column 1, invoking it brings up empty page
2) rotate phone into landscape, causes 2 column mode
-- select an existing conversation, verify thread view is open
-- press the + button from header
Expected results: thread view in column 2 is fully replaced with New Message view, "New Message" entry added to top of column 1
Actual results: thread view is not replaced (or partially replaced) in column 2, no "New Message" entry added to column 1
system-apps-ci-bot (system-apps-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:565
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
- 566. By Florian Boucault
-
Revert delaying QML compilation as it triggers a bug in QtQuick
- 567. By Florian Boucault
-
Do not call emptyStack too often as it is slower
- 568. By Florian Boucault
-
Do not show an empty page if we know another page will be loaded right after
- 569. By Florian Boucault
-
Clear the reference to the bottomEdge in the main page if it about to be destroyed.
Florian Boucault (fboucault) wrote : | # |
> This is not working correctly in 2 column mode, compared to shipping version.
> Found two issues, testing as follows:
>
> Hardware: Arale
> Changed the grid units to make arale go into 2 column mode when rotate:
> create this file: /etc/ubuntu-
> GRID_UNIT_PX=14
>
> Tests:
> 1) rotate phone into landscape, causes 2 column mode
> Expected results: no bottom edge hint in column 1, only + button on toolbar to
> create new page
> Actual result: bottom edge hint displayed in column 1, invoking it brings up
> empty page
>
> 2) rotate phone into landscape, causes 2 column mode
> -- select an existing conversation, verify thread view is open
> -- press the + button from header
> Expected results: thread view in column 2 is fully replaced with New Message
> view, "New Message" entry added to top of column 1
> Actual results: thread view is not replaced (or partially replaced) in column
> 2, no "New Message" entry added to column 1
Both issues should be resolved now. One of them was caused by https:/
system-apps-ci-bot (system-apps-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:569
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
Click here to trigger a rebuild:
https:/
- 570. By Florian Boucault
-
reverted latest commit
system-apps-ci-bot (system-apps-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:570
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
Click here to trigger a rebuild:
https:/
- 571. By Florian Boucault
-
reverted latest commit
system-apps-ci-bot (system-apps-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:571
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
Click here to trigger a rebuild:
https:/
- 572. By Florian Boucault
-
more robust tests
system-apps-ci-bot (system-apps-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:572
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
Click here to trigger a rebuild:
https:/
- 573. By Florian Boucault
-
ensure that bottomEdge is set only when a single instance exists
- 574. By Florian Boucault
-
Simplified bottom edge queue
system-apps-ci-bot (system-apps-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:573
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
system-apps-ci-bot (system-apps-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:574
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
- 575. By Florian Boucault
-
Document queuing behaviour
Florian Boucault (fboucault) wrote : | # |
Should be good to go now
- 576. By Florian Boucault
-
Merged from trunk
system-apps-ci-bot (system-apps-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:575
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
system-apps-ci-bot (system-apps-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:576
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
Tiago Salem Herrmann (tiagosh) wrote : | # |
Just verified that all bugs found by bill are fixed.
Tested on arale.
Could not find any other regression.
Looks good to me.
Preview Diff
1 | === modified file 'debian/rules' |
2 | --- debian/rules 2016-06-24 13:46:28 +0000 |
3 | +++ debian/rules 2016-07-12 08:56:26 +0000 |
4 | @@ -10,7 +10,7 @@ |
5 | DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH) |
6 | # Skip tests on the archs they are known to be flaky with current configuration |
7 | # Ref.: https://bugs.launchpad.net/ubuntu/+source/mesa/+bug/1585942 |
8 | -testskip_architectures := arm64 |
9 | +testskip_architectures := arm64 s390x |
10 | |
11 | %: |
12 | dh $@ --parallel --fail-missing --with translations |
13 | |
14 | === modified file 'src/qml/MainPage.qml' |
15 | --- src/qml/MainPage.qml 2016-05-23 13:02:03 +0000 |
16 | +++ src/qml/MainPage.qml 2016-07-12 08:56:26 +0000 |
17 | @@ -96,7 +96,7 @@ |
18 | text: i18n.tr("Settings") |
19 | iconName: "settings" |
20 | onTriggered: { |
21 | - emptyStack() |
22 | + emptyStack(false) |
23 | pageStack.addFileToNextColumnSync(mainPage, Qt.resolvedUrl("SettingsPage.qml")) |
24 | } |
25 | }, |
26 | @@ -229,7 +229,8 @@ |
27 | section.delegate: searching && searchField.text !== "" ? null : sectionDelegate |
28 | header: ListItem.Standard { |
29 | id: newItem |
30 | - height: mainView.bottomEdge.status === BottomEdge.Committed && |
31 | + height: mainView.bottomEdge && |
32 | + mainView.bottomEdge.status === BottomEdge.Committed && |
33 | !mainView.bottomEdge.showingConversation && |
34 | mainView.dualPanel ? units.gu(10) : 0 |
35 | text: i18n.tr("New message") |
36 | @@ -281,7 +282,7 @@ |
37 | if (displayedEvent != null) { |
38 | properties["scrollToEventId"] = displayedEvent.eventId |
39 | } |
40 | - emptyStack() |
41 | + emptyStack(false) |
42 | mainStack.addComponentToNextColumnSync(mainPage, messagesWithBottomEdge, properties) |
43 | |
44 | // mark this item as current |
45 | @@ -326,6 +327,11 @@ |
46 | Loader { |
47 | id: bottomEdgeLoader |
48 | active: !selectionMode && !searching && !mainView.dualPanel |
49 | + asynchronous: true |
50 | + /* FIXME: would be even more efficient to use setSource() to |
51 | + delay the compilation step but a bug in Qt prevents us. |
52 | + Ref.: https://bugreports.qt.io/browse/QTBUG-54657 |
53 | + */ |
54 | sourceComponent: MessagingBottomEdge { |
55 | parent: mainPage |
56 | } |
57 | |
58 | === modified file 'src/qml/MessagingBottomEdge.qml' |
59 | --- src/qml/MessagingBottomEdge.qml 2016-05-02 18:35:28 +0000 |
60 | +++ src/qml/MessagingBottomEdge.qml 2016-07-12 08:56:26 +0000 |
61 | @@ -23,7 +23,9 @@ |
62 | id: bottomEdge |
63 | |
64 | function commitWithProperties(properties) { |
65 | - _realPage.destroy() |
66 | + if (_realPage) { |
67 | + _realPage.destroy() |
68 | + } |
69 | _realPage = messagesComponent.createObject(null, properties) |
70 | commit() |
71 | } |
72 | @@ -42,16 +44,23 @@ |
73 | } |
74 | |
75 | Component.onCompleted: { |
76 | - mainView.bottomEdge = bottomEdge |
77 | - _realPage = messagesComponent.createObject(null) |
78 | + if (!_realPage) { |
79 | + _realPage = messagesComponent.createObject(null) |
80 | + } |
81 | + mainView.setBottomEdge(bottomEdge) |
82 | } |
83 | |
84 | Component.onDestruction: { |
85 | - _realPage.destroy() |
86 | + mainView.unsetBottomEdge(bottomEdge) |
87 | + if (_realPage) { |
88 | + _realPage.destroy() |
89 | + } |
90 | } |
91 | |
92 | onCollapseCompleted: { |
93 | - _realPage.destroy() |
94 | + if (_realPage) { |
95 | + _realPage.destroy() |
96 | + } |
97 | _realPage = messagesComponent.createObject(null) |
98 | } |
99 | |
100 | |
101 | === modified file 'src/qml/SettingsPage.qml' |
102 | --- src/qml/SettingsPage.qml 2016-03-22 13:52:47 +0000 |
103 | +++ src/qml/SettingsPage.qml 2016-07-12 08:56:26 +0000 |
104 | @@ -110,6 +110,11 @@ |
105 | Loader { |
106 | id: messagesBottomEdgeLoader |
107 | active: mainView.dualPanel |
108 | + asynchronous: true |
109 | + /* FIXME: would be even more efficient to use setSource() to |
110 | + delay the compilation step but a bug in Qt prevents us. |
111 | + Ref.: https://bugreports.qt.io/browse/QTBUG-54657 |
112 | + */ |
113 | sourceComponent: MessagingBottomEdge { |
114 | id: messagesBottomEdge |
115 | parent: settingsPage |
116 | |
117 | === modified file 'src/qml/messaging-app.qml' |
118 | --- src/qml/messaging-app.qml 2016-05-04 19:36:27 +0000 |
119 | +++ src/qml/messaging-app.qml 2016-07-12 08:56:26 +0000 |
120 | @@ -50,6 +50,44 @@ |
121 | |
122 | activeFocusOnPress: false |
123 | |
124 | + /* Multiple MessagingBottomEdge instances can be created simultaneously |
125 | + and ask to become the unique 'bottomEdge'. |
126 | + Queue the requests until only one MessagingBottomEdge instance is left. |
127 | + */ |
128 | + property var bottomEdgeQueue: [] |
129 | + function setBottomEdge(newBottomEdge) { |
130 | + /* If the queue is empty and no other bottom edge is set then |
131 | + set 'bottomEdge' to newBottomEdge. Otherwise insert newBottomEdge |
132 | + in the queue |
133 | + */ |
134 | + if (!bottomEdge && bottomEdgeQueue.length == 0) { |
135 | + bottomEdge = newBottomEdge; |
136 | + } else { |
137 | + if (bottomEdge) { |
138 | + bottomEdgeQueue.unshift(bottomEdge) |
139 | + bottomEdge = null |
140 | + } |
141 | + bottomEdgeQueue.push(newBottomEdge) |
142 | + } |
143 | + } |
144 | + |
145 | + function unsetBottomEdge(oldBottomEdge) { |
146 | + /* Remove all references to oldBottomEdge (from the queue and from 'bottomEdge') |
147 | + If only one bottom edge remains in the queue then set 'bottomEdge' to it |
148 | + */ |
149 | + if (bottomEdge == oldBottomEdge) { |
150 | + bottomEdge = null; |
151 | + } else { |
152 | + var index = bottomEdgeQueue.indexOf(oldBottomEdge); |
153 | + if (index != -1) { |
154 | + bottomEdgeQueue.splice(index, 1); |
155 | + if (bottomEdgeQueue.length == 1) { |
156 | + bottomEdge = bottomEdgeQueue.pop(); |
157 | + } |
158 | + } |
159 | + } |
160 | + } |
161 | + |
162 | function defaultPhoneAccount() { |
163 | // we only use the default account property if we have more |
164 | // than one account, otherwise we use always the first one |
165 | @@ -131,8 +169,22 @@ |
166 | threadModel.removeThreads(threads); |
167 | } |
168 | |
169 | + property var pendingCommitProperties |
170 | + function bottomEdgeCommit() { |
171 | + if (bottomEdge) { |
172 | + mainView.onBottomEdgeChanged.disconnect(bottomEdgeCommit); |
173 | + bottomEdge.commitWithProperties(pendingCommitProperties); |
174 | + pendingCommitProperties = null; |
175 | + } |
176 | + } |
177 | + |
178 | function showBottomEdgePage(properties) { |
179 | - bottomEdge.commitWithProperties(properties) |
180 | + pendingCommitProperties = properties; |
181 | + if (bottomEdge) { |
182 | + bottomEdgeCommit(); |
183 | + } else { |
184 | + mainView.onBottomEdgeChanged.connect(bottomEdgeCommit); |
185 | + } |
186 | } |
187 | |
188 | Connections { |
189 | @@ -230,11 +282,14 @@ |
190 | return ContentType.Unknown |
191 | } |
192 | |
193 | - function emptyStack() { |
194 | + function emptyStack(showEmpty) { |
195 | + if (typeof showEmpty === 'undefined') { showEmpty = true; } |
196 | mainView.emptyStackRequested() |
197 | mainStack.removePage(mainPage) |
198 | layout.deleteInstances() |
199 | - showEmptyState() |
200 | + if (showEmpty) { |
201 | + showEmptyState() |
202 | + } |
203 | mainPage.displayedThreadIndex = -1 |
204 | } |
205 | |
206 | @@ -290,7 +345,7 @@ |
207 | properties["accountId"] = accountId |
208 | } |
209 | |
210 | - emptyStack() |
211 | + emptyStack(false) |
212 | // FIXME: AdaptivePageLayout takes a really long time to create pages, |
213 | // so we create manually and push that |
214 | mainStack.addComponentToNextColumnSync(mainPage, messagesWithBottomEdge, properties) |
215 | @@ -330,6 +385,11 @@ |
216 | Loader { |
217 | id: messagesBottomEdgeLoader |
218 | active: mainView.dualPanel |
219 | + asynchronous: true |
220 | + /* FIXME: would be even more efficient to use setSource() to |
221 | + delay the compilation step but a bug in Qt prevents us. |
222 | + Ref.: https://bugreports.qt.io/browse/QTBUG-54657 |
223 | + */ |
224 | sourceComponent: MessagingBottomEdge { |
225 | id: messagesBottomEdge |
226 | parent: messages |
227 | @@ -378,6 +438,11 @@ |
228 | |
229 | Loader { |
230 | id: bottomEdgeLoader |
231 | + asynchronous: true |
232 | + /* FIXME: would be even more efficient to use setSource() to |
233 | + delay the compilation step but a bug in Qt prevents us. |
234 | + Ref.: https://bugreports.qt.io/browse/QTBUG-54657 |
235 | + */ |
236 | sourceComponent: MessagingBottomEdge { |
237 | parent: emptyStatePage |
238 | hint.text: "" |
239 | @@ -394,9 +459,11 @@ |
240 | id: mainPage |
241 | } |
242 | |
243 | + property bool completed: false |
244 | + |
245 | onColumnsChanged: { |
246 | // we only have things to do here in case no thread is selected |
247 | - if (layout.columns == 2 && !application.findMessagingChild("emptyStatePage") && !application.findMessagingChild("fakeItem")) { |
248 | + if (layout.completed && layout.columns == 2 && !application.findMessagingChild("emptyStatePage") && !application.findMessagingChild("fakeItem")) { |
249 | layout.removePage(mainPage) |
250 | emptyStack() |
251 | } |
252 | @@ -405,6 +472,7 @@ |
253 | if (layout.columns == 2 && !application.findMessagingChild("emptyStatePage")) { |
254 | emptyStack() |
255 | } |
256 | + layout.completed = true; |
257 | } |
258 | } |
259 | } |
260 | |
261 | === modified file 'tests/qml/tst_DualSim.qml' |
262 | --- tests/qml/tst_DualSim.qml 2016-05-05 19:57:41 +0000 |
263 | +++ tests/qml/tst_DualSim.qml 2016-07-12 08:56:26 +0000 |
264 | @@ -151,6 +151,8 @@ |
265 | |
266 | mainViewLoader.item.startNewMessage() |
267 | waitForRendering(mainViewLoader.item) |
268 | + tryCompare(mainViewLoader.item, 'pendingCommitProperties', null) |
269 | + waitForRendering(mainViewLoader.item.bottomEdge) |
270 | |
271 | var messagesView = findChild(mainViewLoader, "messagesPage") |
272 | var headerSections = findChild(messagesView, "headerSections") |
273 | @@ -213,6 +215,8 @@ |
274 | |
275 | mainViewLoader.item.startNewMessage() |
276 | waitForRendering(mainViewLoader.item) |
277 | + tryCompare(mainViewLoader.item, 'pendingCommitProperties', null) |
278 | + waitForRendering(mainViewLoader.item.bottomEdge) |
279 | |
280 | var messagesView = findChild(mainViewLoader, "messagesPage") |
281 | var textArea = findChild(messagesView, "messageTextArea") |
282 | |
283 | === modified file 'tests/qml/tst_SingleSim.qml' |
284 | --- tests/qml/tst_SingleSim.qml 2016-05-05 19:57:41 +0000 |
285 | +++ tests/qml/tst_SingleSim.qml 2016-07-12 08:56:26 +0000 |
286 | @@ -138,6 +138,8 @@ |
287 | |
288 | mainViewLoader.item.startNewMessage() |
289 | waitForRendering(mainViewLoader.item) |
290 | + tryCompare(mainViewLoader.item, 'pendingCommitProperties', null) |
291 | + waitForRendering(mainViewLoader.item.bottomEdge) |
292 | |
293 | var messagesView = findChild(mainViewLoader, "messagesPage") |
294 | var textArea = findChild(messagesView, "messageTextArea") |
FAILED: Continuous integration, rev:562 /jenkins. canonical. com/system- apps/job/ lp-messaging- app-ci/ 2/ /jenkins. canonical. com/system- apps/job/ build/656/ console /jenkins. canonical. com/system- apps/job/ build-0- fetch/656 /jenkins. canonical. com/system- apps/job/ build-1- sourcepkg/ release= vivid+overlay/ 620 /jenkins. canonical. com/system- apps/job/ build-1- sourcepkg/ release= xenial+ overlay/ 620 /jenkins. canonical. com/system- apps/job/ build-1- sourcepkg/ release= yakkety/ 620 /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=amd64, release= vivid+overlay/ 612/console /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=amd64, release= xenial+ overlay/ 612/console /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=amd64, release= yakkety/ 612/console /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=armhf, release= vivid+overlay/ 612/console /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=armhf, release= xenial+ overlay/ 612/console /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=armhf, release= yakkety/ 612/console /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=i386, release= vivid+overlay/ 612/console /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=i386, release= xenial+ overlay/ 612/console /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=i386, release= yakkety/ 612/console
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
Click here to trigger a rebuild: /jenkins. canonical. com/system- apps/job/ lp-messaging- app-ci/ 2/rebuild
https:/