Closed Bug 1139987 Opened 10 years ago Closed 10 years ago

Flame: when running marionette test, some icons on the top header is missing

Categories

(Remote Protocol :: Marionette, defect)

ARM
Gonk (Firefox OS)
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: njpark, Assigned: alive)

References

Details

(Keywords: qablocker)

Attachments

(2 files, 1 obsolete file)

Attached file missingheader.log
Note: this is not a marionette bug, because it does not occur with older builds from March 1st. Need to be triaged to correct component. STR: run python marionette on-device test with the latest marionette (0.9). IN my case, ran functional/email/test_setup_and_send_imap_email.py WHen the phone restarts to run the test, observe the top portion of the the phone. Clock/wifi/mobile icons are missing. This only happens when the phone reboots to run gaiatest. IF the phone is rebooted manually, this does not occur. Version Info: Gaia-Rev eff3321ab4e65da3f906688ebb55ddf1e93d9452 Gecko-Rev https://hg.mozilla.org/mozilla-central/rev/56492f7244a9 Build-ID 20150305010212 Version 39.0a1 Device-Name flame FW-Release 4.4.2 FW-Incremental eng.cltbld.20150305.043221 FW-Date Thu Mar 5 04:32:30 EST 2015 Bootloader L1TC000118D0
logcat up to the point where gaiatest exits FTE to enter homescreen is attached
(In reply to No-Jun Park [:njpark] from comment #2) > in 50% of the time, the email app also crashes: > https://crash-stats.mozilla.com/report/index/c046cf8a-de73-4887-979f- > 5590f2150305 It looks like when the test takes more than a few minutes, it is more likely for the phone to crash with the failure in Comment 2
Comment 2 and Comment 3 discussions should be at Bug 1137653
Update: this seem to be caused by skipping FTU. when test_ftu_skip_tour.py is executed, the icons all appeared normally.
Blocks: 1142132
No longer blocks: 1142132
Blocks: 1141654
Could you determine a regression range? This will help to narrow down the commits that may have caused this and help us to find out who to ask for help. A workaround might be to complete the FTU at the start of the test, however this will add a delay and fragility.
Flags: needinfo?(npark)
To QAnalysts, could you work on finding the regression range on this, if you have access to the python marionette on device setup? If not, please let me know.
Flags: needinfo?(npark)
Flags: needinfo?(onelson)
Bug 1141654 started to fail since March 10th, so I guess we can bisect starting from last week's build?
That gives us the following pushlog: http://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=44bcd21e59fe&tochange=c5b90c003be8 From that pushlog, bug 1132418 jumps out at me. Let's see if we can narrow that down on b2g-inbound.
Doesn't look like that's the cause, but that does give us a datapoint in that the failure existed in 5a94300d91f7 on b2g-inbound.
Another datapoint: The test_settings_change_time_format test fails in d4b2a0b65ea3 but because of bug 1136156 - the status bar looks fine.
Regression range narrowed to: http://hg.mozilla.org/integration/b2g-inbound/pushloghtml?fromchange=97c49ccbdfbf&tochange=11a4ffbd9ee9 This points to: Bug 1098168 - [Statusbar] Instantiatable icons per modules Alive: Any thoughts on why this change would cause the status bar to be missing items when we kill the FTU application?
Flags: needinfo?(alive)
Keywords: qablocker
Flags: needinfo?(onelson)
Could you elaborate more how do you kill FTU? I think we don't expect FTU will be terminated anyway.
Flags: needinfo?(alive)
We call appWindowManager.kill as shown here: https://github.com/mozilla-b2g/gaia/blob/ac82d6c5ce759c2fa47ca3cc8c261b67f4b2b49b/tests/atoms/gaia_apps.js#L229 We need to have a way to kill the FTU or prevent it from being present on reset/restart in engineering builds. Completing the FTU for every functional test is fragile and time intensive.
Flags: needinfo?(alive)
(In reply to Dave Hunt (:davehunt) from comment #17) > We call appWindowManager.kill as shown here: > https://github.com/mozilla-b2g/gaia/blob/ > ac82d6c5ce759c2fa47ca3cc8c261b67f4b2b49b/tests/atoms/gaia_apps.js#L229 > > We need to have a way to kill the FTU or prevent it from being present on > reset/restart in engineering builds. Completing the FTU for every functional > test is fragile and time intensive. Hmm...so why not specify NOFTU=1 when making the build to test, or set FTU.manifestURL to be null?
Flags: needinfo?(alive)
(In reply to Dave Hunt (:davehunt) from comment #17) > We call appWindowManager.kill as shown here: > https://github.com/mozilla-b2g/gaia/blob/ > ac82d6c5ce759c2fa47ca3cc8c261b67f4b2b49b/tests/atoms/gaia_apps.js#L229 > > We need to have a way to kill the FTU or prevent it from being present on > reset/restart in engineering builds. Completing the FTU for every functional > test is fragile and time intensive. marionette js(In reply to Alive Kuo [:alive][NEEDINFO!] from comment #18) > (In reply to Dave Hunt (:davehunt) from comment #17) > > We call appWindowManager.kill as shown here: > > https://github.com/mozilla-b2g/gaia/blob/ > > ac82d6c5ce759c2fa47ca3cc8c261b67f4b2b49b/tests/atoms/gaia_apps.js#L229 > > > > We need to have a way to kill the FTU or prevent it from being present on > > reset/restart in engineering builds. Completing the FTU for every functional > > test is fragile and time intensive. > > Hmm...so why not specify NOFTU=1 when making the build to test, or set > FTU.manifestURL to be null? marionette-js has a functionality to specify settings in test before running each test. I am not sure if marionette-python has this or not. BTW, killing FTU is not a normal user behavior to me. We are waiting FTU to close/be skipped normally to show the icons, but there's no spec about what should happen if it's terminated abnormally. I even think we should re-open FTU immediately if it's killed while accepting a phone call when FTU is running, and the OOM killer kills the background FTU.
(In reply to Alive Kuo [:alive][NEEDINFO!] from comment #18) > Hmm...so why not specify NOFTU=1 when making the build to test, or set > FTU.manifestURL to be null? We use the engineering builds provided by release engineering - we do not build them ourselves. Would setting the FTU.manifestURL to null still allow us to test the FTU? Can we simulate closing/skipping 'normally' without completing all FTU steps via interactions?
(In reply to Alive Kuo [:alive][NEEDINFO!] from comment #19) > BTW, killing FTU is not a normal user behavior to me. We are waiting FTU to > close/be skipped normally to show the icons, but there's no spec about what > should happen if it's terminated abnormally. I even think we should re-open > FTU immediately if it's killed while accepting a phone call when FTU is > running, and the OOM killer kills the background FTU. That is to say, I don't think we should kill FTU actively to achieve your requirement. If you are not able to change FTU settings while running individual test, let's figure out a better way to skip FTU programmatically.
(In reply to Dave Hunt (:davehunt) from comment #20) > (In reply to Alive Kuo [:alive][NEEDINFO!] from comment #18) > > Hmm...so why not specify NOFTU=1 when making the build to test, or set > > FTU.manifestURL to be null? > > We use the engineering builds provided by release engineering - we do not > build them ourselves. Would setting the FTU.manifestURL to null still allow > us to test the FTU? The key point is the ability to change the settings by the need of individual tests: To test a normal app, set it to null; To test FTU, leave it to the original value. From what you said I guess you guys can't change the settings. Or you cant change the settings but cannot apply the change to single test? > Can we simulate closing/skipping 'normally' without > completing all FTU steps via interactions? We could do something in system app to receive the request to skip FTU programmatically as my last comment. For example: |Service.request('skipftu');|
(In reply to Alive Kuo [:alive][NEEDINFO!] from comment #22) > (In reply to Dave Hunt (:davehunt) from comment #20) > > (In reply to Alive Kuo [:alive][NEEDINFO!] from comment #18) > > > Hmm...so why not specify NOFTU=1 when making the build to test, or set > > > FTU.manifestURL to be null? > > > > We use the engineering builds provided by release engineering - we do not > > build them ourselves. Would setting the FTU.manifestURL to null still allow > > us to test the FTU? > > The key point is the ability to change the settings by the need of > individual tests: > To test a normal app, set it to null; > To test FTU, leave it to the original value. > > From what you said I guess you guys can't change the settings. Or you cant > change the settings but cannot apply the change to single test? We can change the settings, however I'm not sure we'd be able to change this one early enough to influence booting into the FTU. We reset as much as possible between tests. Is there something we can change in a file on the device while B2G is stopped to affect whether FTU is launched? > > Can we simulate closing/skipping 'normally' without > > completing all FTU steps via interactions? > > We could do something in system app to receive the request to skip FTU > programmatically as my last comment. > For example: |Service.request('skipftu');| That could work for us, assuming that we could call this even if the FTU is already running?
(In reply to Dave Hunt (:davehunt) from comment #23) > (In reply to Alive Kuo [:alive][NEEDINFO!] from comment #22) > > (In reply to Dave Hunt (:davehunt) from comment #20) > > > (In reply to Alive Kuo [:alive][NEEDINFO!] from comment #18) > > > > Hmm...so why not specify NOFTU=1 when making the build to test, or set > > > > FTU.manifestURL to be null? > > > > > > We use the engineering builds provided by release engineering - we do not > > > build them ourselves. Would setting the FTU.manifestURL to null still allow > > > us to test the FTU? > > > > The key point is the ability to change the settings by the need of > > individual tests: > > To test a normal app, set it to null; > > To test FTU, leave it to the original value. > > > > From what you said I guess you guys can't change the settings. Or you cant > > change the settings but cannot apply the change to single test? > > We can change the settings, however I'm not sure we'd be able to change this > one early enough to influence booting into the FTU. We reset as much as What do you mean by early enough and how do you reset? > possible between tests. Is there something we can change in a file on the > device while B2G is stopped to affect whether FTU is launched? Maybe but I am not familiar with change settings at runtime.. > > > > Can we simulate closing/skipping 'normally' without > > > completing all FTU steps via interactions? > > > > We could do something in system app to receive the request to skip FTU > > programmatically as my last comment. > > For example: |Service.request('skipftu');| > > That could work for us, assuming that we could call this even if the FTU is > already running? Yes, but this needs additional work in system app. If there's no other ways, I will do this tomorrow.
(In reply to Alive Kuo [:alive][NEEDINFO!] from comment #24) > > We can change the settings, however I'm not sure we'd be able to change this > > one early enough to influence booting into the FTU. We reset as much as > > What do you mean by early enough and how do you reset? We stop b2g, reset the device, and start b2g again. If changing the settings to prevent the FTU from launching needs to be done via Marionette via JavaScript (for example) then we might not be able to execute it between starting b2g and the FTU launching. When we reset we delete a bunch of directories from the device: https://github.com/mozilla-b2g/gaia/blob/ac82d6c5ce759c2fa47ca3cc8c261b67f4b2b49b/tests/python/gaia-ui-tests/gaiatest/gaia_test.py#L811 > > Is there something we can change in a file on the > > device while B2G is stopped to affect whether FTU is launched? > > Maybe but I am not familiar with change settings at runtime.. Do you know who might be able to help answer this? > > That could work for us, assuming that we could call this even if the FTU is > > already running? > > Yes, but this needs additional work in system app. > > If there's no other ways, I will do this tomorrow. Thanks.
Comment on attachment 8578406 [details] [review] [gaia] alivedise:bugzilla/1139987/skip-ftu-service > mozilla-b2g:master I finally decided not to implement a test-only service but fix the problem that we do not finish all steps when ftu is closed (by mozbrowsererror). I still think the test framework should provide the functionality to easily change settings at each run, but it's impossible to be implemented right now; I'd talked to Al Tsai and he is investigating how marionette-js does that.
Attachment #8578406 - Flags: review?(etienne)
Attachment #8578418 - Attachment is obsolete: true
Assignee: nobody → alive
Comment on attachment 8578406 [details] [review] [gaia] alivedise:bugzilla/1139987/skip-ftu-service > mozilla-b2g:master looking good :)
Attachment #8578406 - Flags: review?(etienne) → review+
https://github.com/mozilla-b2g/gaia/commit/70bac3afc266da3aee0622d49a0c78fee7112e12 BTW Al Tsai told me he is able to change ftu.manifestURL settings before the test... Al could you confirm?
Status: NEW → RESOLVED
Closed: 10 years ago
Flags: needinfo?(atsai)
Resolution: --- → FIXED
Yes. I use GaiaData to set ftu.manifestURL to 'null' ,restart the device, and won't see the FTU anymore. Once I set the ftu.manifestURL back to it's value "app://ftu.gaiamobile.org/manifest.webapp", I will see the FTU and won't be able to skip unless I go through every detail. This should be a proper approach then simply kill all apps. I can provide a patch for it if you'd like to. I'd like to have your opinion, Dave.
Flags: needinfo?(atsai) → needinfo?(dave.hunt)
When we restart devices we reset all settings, so we'd lose the change. The reset is to ensure the device is in a consistent known state. We'd need to influence the FTU startup outside of Marionette.
Flags: needinfo?(dave.hunt)
Blocks: 1144686
No longer blocks: 1144686
(In reply to Al Tsai [:atsai] from comment #33) > A script like this one might help? > https://github.com/altsai/dev-tools/blob/master/b2g/scripts/skip_ftu.py No, as I explained we reset the device between tests and restarting the device twice per test would add an unacceptable overhead. I have found a solution where we can modify the default settings on the device though, see bug 1145243 for details.
Product: Testing → Remote Protocol
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: