diff options
Diffstat (limited to '')
-rw-r--r-- | testing/raptor/test/__init__.py | 0 | ||||
-rw-r--r-- | testing/raptor/test/conftest.py | 165 | ||||
-rw-r--r-- | testing/raptor/test/files/batterystats-android-7.txt | 1589 | ||||
-rw-r--r-- | testing/raptor/test/files/batterystats-android-8.txt | 1669 | ||||
-rwxr-xr-x | testing/raptor/test/files/fake_binary.exe | 0 | ||||
-rw-r--r-- | testing/raptor/test/files/top-info.txt | 41 | ||||
-rw-r--r-- | testing/raptor/test/geckoProfileTest.tar | bin | 0 -> 2048000 bytes | |||
-rw-r--r-- | testing/raptor/test/python.ini | 13 | ||||
-rw-r--r-- | testing/raptor/test/test_cmdline.py | 159 | ||||
-rw-r--r-- | testing/raptor/test/test_control_server.py | 189 | ||||
-rw-r--r-- | testing/raptor/test/test_cpu.py | 196 | ||||
-rw-r--r-- | testing/raptor/test/test_gecko_profile.py | 54 | ||||
-rw-r--r-- | testing/raptor/test/test_manifest.py | 441 | ||||
-rw-r--r-- | testing/raptor/test/test_playback.py | 65 | ||||
-rw-r--r-- | testing/raptor/test/test_power.py | 248 | ||||
-rw-r--r-- | testing/raptor/test/test_print_tests.py | 53 | ||||
-rw-r--r-- | testing/raptor/test/test_raptor.py | 386 | ||||
-rw-r--r-- | testing/raptor/test/test_utils.py | 79 |
18 files changed, 5347 insertions, 0 deletions
diff --git a/testing/raptor/test/__init__.py b/testing/raptor/test/__init__.py new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/testing/raptor/test/__init__.py diff --git a/testing/raptor/test/conftest.py b/testing/raptor/test/conftest.py new file mode 100644 index 0000000000..969270ac65 --- /dev/null +++ b/testing/raptor/test/conftest.py @@ -0,0 +1,165 @@ +import json +import os +import sys +from argparse import Namespace + +import pytest + +# need this so the raptor unit tests can find raptor/raptor classes +here = os.path.abspath(os.path.dirname(__file__)) +raptor_dir = os.path.join(os.path.dirname(here), "raptor") +sys.path.insert(0, raptor_dir) + +from browsertime import Browsertime +from perftest import Perftest +from webextension import WebExtensionFirefox + + +@pytest.fixture +def options(request): + opts = { + "app": "firefox", + "binary": "path/to/dummy/browser", + "browsertime_visualmetrics": False, + "extra_prefs": {}, + } + + if hasattr(request.module, "OPTIONS"): + opts.update(request.module.OPTIONS) + return opts + + +@pytest.fixture +def browsertime_options(options): + options["browsertime_node"] = "browsertime_node" + options["browsertime_browsertimejs"] = "browsertime_browsertimejs" + options["browsertime_ffmpeg"] = "browsertime_ffmpeg" + options["browsertime_geckodriver"] = "browsertime_geckodriver" + options["browsertime_chromedriver"] = "browsertime_chromedriver" + options["browsertime_video"] = "browsertime_video" + options["browsertime_visualmetrics"] = "browsertime_visualmetrics" + options["browsertime_no_ffwindowrecorder"] = "browsertime_no_ffwindowrecorder" + return options + + +@pytest.fixture +def raptor(options): + return WebExtensionFirefox(**options) + + +@pytest.fixture +def mock_test(): + return { + "name": "raptor-firefox-tp6", + "test_url": "/dummy/url", + "secondary_url": "/dummy/url-2", + } + + +@pytest.fixture(scope="session") +def get_prefs(): + def _inner(browser): + import raptor + + prefs_dir = os.path.join(raptor.__file__, "preferences") + with open(os.path.join(prefs_dir, "{}.json".format(browser)), "r") as fh: + return json.load(fh) + + +@pytest.fixture(scope="session") +def filedir(): + return os.path.join(here, "files") + + +@pytest.fixture +def get_binary(): + from moztest.selftest import fixtures + + def inner(app): + if app != "firefox": + pytest.xfail(reason="{} support not implemented".format(app)) + + binary = fixtures.binary() + if not binary: + pytest.skip("could not find a {} binary".format(app)) + return binary + + return inner + + +@pytest.fixture +def create_args(): + args = Namespace( + app="firefox", + test="raptor-tp6-unittest", + binary="path/to/binary", + gecko_profile=False, + extra_profiler_run=False, + debug_mode=False, + page_cycles=None, + page_timeout=None, + test_url_params=None, + host=None, + run_local=True, + browsertime=True, + cold=False, + live_sites=False, + enable_marionette_trace=False, + collect_perfstats=False, + chimera=False, + ) + + def inner(**kwargs): + for next_arg in kwargs: + print(next_arg) + print(kwargs[next_arg]) + setattr(args, next_arg, kwargs[next_arg]) + return args + + return inner + + +@pytest.fixture(scope="module") +def ConcretePerftest(): + class PerftestImplementation(Perftest): + def check_for_crashes(self): + super(PerftestImplementation, self).check_for_crashes() + + def clean_up(self): + super(PerftestImplementation, self).clean_up() + + def run_test(self, test, timeout): + super(PerftestImplementation, self).run_test(test, timeout) + + def run_test_setup(self, test): + super(PerftestImplementation, self).run_test_setup(test) + + def run_test_teardown(self, test): + super(PerftestImplementation, self).run_test_teardown(test) + + def set_browser_test_prefs(self): + super(PerftestImplementation, self).set_browser_test_prefs() + + def get_browser_meta(self): + return (), () + + def setup_chrome_args(self, test): + super(PerftestImplementation, self).setup_chrome_args(test) + + return PerftestImplementation + + +@pytest.fixture(scope="module") +def ConcreteBrowsertime(): + class BrowsertimeImplementation(Browsertime): + @property + def browsertime_args(self): + return [] + + def get_browser_meta(self): + return (), () + + def setup_chrome_args(self, test): + super(BrowsertimeImplementation, self).setup_chrome_args(test) + + return BrowsertimeImplementation diff --git a/testing/raptor/test/files/batterystats-android-7.txt b/testing/raptor/test/files/batterystats-android-7.txt new file mode 100644 index 0000000000..c23ab1b691 --- /dev/null +++ b/testing/raptor/test/files/batterystats-android-7.txt @@ -0,0 +1,1589 @@ +Battery History (2% used, 5316 used of 256KB, 81 strings using 5834): + 0 (10) RESET:TIME: 2019-07-03-23-07-19 + 0 (1) 099 status=discharging health=good plug=none temp=360 volt=4274 charge=2795 +running +wake_lock +sensor +wifi_radio +screen phone_signal_strength=poor brightness=medium +wifi_running +wifi wifi_signal_strength=4 wifi_suppl=completed + 0 (2) 099 proc=u0a13:"com.google.android.ims" + 0 (2) 099 proc=u0a65:"com.google.android.googlequicksearchbox:interactor" + 0 (2) 099 proc=1000:"com.motorola.process.system" + 0 (2) 099 proc=u0a119:"com.bitbar.testdroid.monitor:data" + 0 (2) 099 proc=1000:"WebViewLoader-armeabi-v7a" + 0 (2) 099 proc=u0a28:"com.android.externalstorage" + 0 (2) 099 proc=u0a62:"com.motorola.slpc" + 0 (2) 099 proc=u0a25:"com.android.mtp" + 0 (2) 099 proc=u0a69:"com.motorola.config.wifi" + 0 (2) 099 proc=u0a109:"com.motorola.timeweatherwidget" + 0 (2) 099 proc=u0a24:"com.android.documentsui" + 0 (2) 099 proc=u0a30:"com.google.process.gapps" + 0 (2) 099 proc=u0a119:"com.bitbar.testdroid.monitor" + 0 (2) 099 proc=u0a77:"com.android.chrome" + 0 (2) 099 proc=u0a46:"com.motorola.actions" + 0 (2) 099 proc=u0a74:"com.google.android.calendar" + 0 (2) 099 proc=u0a98:"com.google.android.inputmethod.latin" + 0 (2) 099 proc=1000:"com.fingerprints.serviceext" + 0 (2) 099 proc=u0a31:"com.google.android.ext.services" + 0 (2) 099 proc=1001:"com.qualcomm.qcrilmsgtunnel" + 0 (2) 099 proc=u0a107:"com.google.android.apps.photos" + 0 (2) 099 proc=u0a119:"com.bitbar.testdroid.monitor:monitor" + 0 (2) 099 proc=u0a30:"com.google.android.gms" + 0 (2) 099 proc=u0a30:"com.google.android.gms.persistent" + 0 (2) 099 proc=u0a102:"com.google.android.apps.messaging:rcs" + 0 (2) 099 proc=u0a47:"com.motorola.motocare" + 0 (2) 099 proc=u0a40:"com.android.launcher3" + 0 (2) 099 proc=1000:"com.motorola.modemservice" + 0 (2) 099 proc=u0a6:"com.motorola.ccc" + 0 (2) 099 proc=u0a83:"com.google.android.apps.docs" + 0 (2) 099 proc=u0a50:"com.motorola.motokey" + 0 (2) 099 proc=u0a21:"com.android.defcontainer" + 0 (2) 099 proc=u0a61:"com.motorola.frameworks.singlehand" + 0 (2) 099 proc=u0a25:"android.process.media" + 0 (2) 099 proc=1000:"com.motorola.process.slpc" + 0 (2) 099 proc=1000:".dataservices" + 0 (2) 099 proc=u0a64:"com.android.systemui" + 0 (2) 099 proc=1001:"com.android.phone" + 0 (2) 099 proc=1000:"com.qualcomm.telephony" + 0 (2) 099 proc=u0a11:"com.android.providers.calendar" + 0 (2) 099 proc=u0a54:"com.android.vending" + 0 (2) 099 proc=u0a65:"com.google.android.googlequicksearchbox:search" + 0 (2) 099 top=u0a6:"com.motorola.ccc.ota" + 0 (2) 099 user=0:"0" + 0 (2) 099 userfg=0:"0" + +7ms (2) 099 +wake_lock_in=1001:"RILJ" + +12ms (2) 099 -wake_lock_in=1001:"RILJ" + +12ms (2) 099 stats=0:"dump" + +94ms (2) 099 +proc=u0a13:"com.google.android.ims" + +94ms (2) 099 +proc=u0a65:"com.google.android.googlequicksearchbox:interactor" + +94ms (2) 099 +proc=1000:"com.motorola.process.system" + +94ms (2) 099 +proc=u0a119:"com.bitbar.testdroid.monitor:data" + +94ms (2) 099 +proc=1000:"WebViewLoader-armeabi-v7a" + +94ms (2) 099 +proc=u0a28:"com.android.externalstorage" + +94ms (2) 099 +proc=u0a62:"com.motorola.slpc" + +94ms (2) 099 +proc=u0a25:"com.android.mtp" + +94ms (2) 099 +proc=u0a69:"com.motorola.config.wifi" + +94ms (2) 099 +proc=u0a109:"com.motorola.timeweatherwidget" + +94ms (2) 099 +proc=u0a24:"com.android.documentsui" + +94ms (2) 099 +proc=u0a30:"com.google.process.gapps" + +94ms (2) 099 +proc=u0a119:"com.bitbar.testdroid.monitor" + +94ms (2) 099 +proc=u0a77:"com.android.chrome" + +94ms (2) 099 +proc=u0a46:"com.motorola.actions" + +94ms (2) 099 +proc=u0a74:"com.google.android.calendar" + +94ms (2) 099 +proc=u0a98:"com.google.android.inputmethod.latin" + +94ms (2) 099 +proc=1000:"com.fingerprints.serviceext" + +94ms (2) 099 +proc=u0a31:"com.google.android.ext.services" + +94ms (2) 099 +proc=1001:"com.qualcomm.qcrilmsgtunnel" + +94ms (2) 099 +proc=u0a107:"com.google.android.apps.photos" + +94ms (2) 099 +proc=u0a119:"com.bitbar.testdroid.monitor:monitor" + +94ms (2) 099 +proc=u0a30:"com.google.android.gms" + +94ms (2) 099 +proc=u0a30:"com.google.android.gms.persistent" + +94ms (2) 099 +proc=u0a102:"com.google.android.apps.messaging:rcs" + +94ms (2) 099 +proc=u0a47:"com.motorola.motocare" + +94ms (2) 099 +proc=u0a40:"com.android.launcher3" + +94ms (2) 099 +proc=1000:"com.motorola.modemservice" + +94ms (2) 099 +proc=u0a6:"com.motorola.ccc" + +94ms (2) 099 +proc=u0a83:"com.google.android.apps.docs" + +94ms (2) 099 +proc=u0a50:"com.motorola.motokey" + +94ms (2) 099 +proc=u0a21:"com.android.defcontainer" + +94ms (2) 099 +proc=u0a61:"com.motorola.frameworks.singlehand" + +94ms (2) 099 +proc=u0a25:"android.process.media" + +94ms (2) 099 +proc=1000:"com.motorola.process.slpc" + +94ms (2) 099 +proc=1000:".dataservices" + +94ms (2) 099 +proc=u0a64:"com.android.systemui" + +94ms (2) 099 +proc=1001:"com.android.phone" + +94ms (2) 099 +proc=1000:"com.qualcomm.telephony" + +94ms (2) 099 +proc=u0a11:"com.android.providers.calendar" + +94ms (2) 099 +proc=u0a54:"com.android.vending" + +94ms (2) 099 +proc=u0a65:"com.google.android.googlequicksearchbox:search" + +1s189ms (2) 099 +wake_lock_in=u0a30:"Wakeful StateMachine: GeofencerStateMachine" + +1s192ms (2) 099 -wake_lock_in=u0a30:"Wakeful StateMachine: GeofencerStateMachine" + +1s232ms (2) 099 +wake_lock_in=u0a30:"Icing" + +1s238ms (2) 099 +wake_lock_in=u0a118:"Icing" + +1s238ms (2) 099 -wake_lock_in=u0a30:"Icing" + +1s241ms (2) 099 -wake_lock_in=u0a118:"Icing" + +1s274ms (2) 099 +wake_lock_in=u0a30:"Icing" + +1s274ms (2) 099 +wake_lock_in=u0a118:"Icing" + +1s274ms (2) 099 -wake_lock_in=u0a118:"Icing" + +1s289ms (2) 099 -wake_lock_in=u0a30:"Icing" + +4s582ms (2) 099 +wake_lock_in=1000:"GnssLocationProvider" + +4s592ms (2) 099 -wake_lock_in=1000:"GnssLocationProvider" + +5s590ms (2) 099 +wake_lock_in=1000:"GnssLocationProvider" + +5s592ms (2) 099 -wake_lock_in=1000:"GnssLocationProvider" + +6s585ms (2) 099 +wake_lock_in=1000:"GnssLocationProvider" + +6s586ms (2) 099 -wake_lock_in=1000:"GnssLocationProvider" + +7s582ms (2) 099 +wake_lock_in=1000:"GnssLocationProvider" + +7s583ms (2) 099 -wake_lock_in=1000:"GnssLocationProvider" + +8s603ms (2) 099 +wake_lock_in=1000:"GnssLocationProvider" + +8s604ms (2) 099 -wake_lock_in=1000:"GnssLocationProvider" + +9s587ms (2) 099 +wake_lock_in=1000:"GnssLocationProvider" + +9s588ms (2) 099 -wake_lock_in=1000:"GnssLocationProvider" + +10s603ms (2) 099 +wake_lock_in=u0a118:"*launch*" + +10s624ms (2) 099 +proc=u0a118:"org.mozilla.geckoview_example" + +10s669ms (2) 099 -top=u0a6:"com.motorola.ccc.ota" + +10s669ms (2) 099 +top=u0a118:"org.mozilla.geckoview_example" + +11s026ms (2) 099 +proc=u0a118:"org.mozilla.geckoview_example:tab" + +11s355ms (2) 099 -wake_lock_in=u0a118:"*launch*" + +14s948ms (2) 099 +wake_lock_in=1001:"RILJ" + +14s951ms (2) 099 -wake_lock_in=1001:"RILJ" + +34s975ms (2) 099 +wake_lock_in=1001:"RILJ" + +34s977ms (2) 099 -wake_lock_in=1001:"RILJ" + +36s953ms (2) 099 +alarm=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +36s954ms (2) 099 +wake_lock_in=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +36s954ms (2) 099 -alarm=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +36s954ms (2) 099 -wake_lock_in=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +40s192ms (2) 099 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +40s193ms (2) 099 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +40s282ms (2) 099 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +40s282ms (2) 099 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +49s516ms (2) 099 volt=4251 charge=2790 + +54s982ms (2) 099 +wake_lock_in=1001:"RILJ" + +54s985ms (2) 099 -wake_lock_in=1001:"RILJ" + +1m11s259ms (2) 099 -proc=u0a54:"com.android.vending" + +1m15s006ms (2) 099 +wake_lock_in=1001:"RILJ" + +1m15s009ms (2) 099 -wake_lock_in=1001:"RILJ" + +1m35s030ms (2) 099 +wake_lock_in=1001:"RILJ" + +1m35s033ms (2) 099 -wake_lock_in=1001:"RILJ" + +1m40s190ms (2) 099 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +1m40s191ms (2) 099 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +1m40s267ms (2) 099 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +1m40s267ms (2) 099 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +1m49s577ms (2) 098 charge=2785 + Details: cpu=2070u+2570s + /proc/stat=7370 usr, 2540 sys, 370 io, 0 irq, 50 sirq, 524790 idle (1.9% of 1h 29m 11s 200ms), PlatformIdleStat null + +1m49s585ms (2) 098 +wake_lock_in=1001:"RILJ" + +1m49s590ms (2) 098 -wake_lock_in=1001:"RILJ" + +1m49s591ms (2) 098 charge=2783 stats=0:"battery-level" + +1m55s036ms (2) 098 +wake_lock_in=1001:"RILJ" + +1m55s038ms (2) 098 -wake_lock_in=1001:"RILJ" + +2m12s231ms (2) 098 +alarm=u0a30:"*walarm*:com.google.android.location.ALARM_WAKEUP_LOCATOR" + +2m12s232ms (2) 098 +wake_lock_in=1000:"*walarm*:com.google.android.location.ALARM_WAKEUP_LOCATOR" + +2m12s232ms (2) 098 +alarm=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +2m12s232ms (2) 098 +alarm=u0a30:"*walarm*:com.google.android.location.ALARM_WAKEUP_ACTIVITY_DETECTION" + +2m12s234ms (2) 098 -alarm=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +2m12s234ms (2) 098 +wifi_scan +wake_lock_in=u0a30:"NlpWakeLock" + +2m12s242ms (2) 098 +wifi_full_lock +wake_lock_in=u0a30:"NlpCollectorWakeLock" + +2m12s254ms (2) 098 -alarm=u0a30:"*walarm*:com.google.android.location.ALARM_WAKEUP_LOCATOR" + +2m12s258ms (2) 098 -wake_lock_in=u0a30:"NlpWakeLock" + +2m12s262ms (2) 098 +wake_lock_in=1001:"RILJ" + +2m12s269ms (2) 098 -wake_lock_in=1001:"RILJ" + +2m12s269ms (2) 098 +wake_lock_in=1001:"RILJ" + +2m12s273ms (2) 098 -wake_lock_in=1001:"RILJ" + +2m12s275ms (2) 098 +wake_lock_in=u0a30:"NlpWakeLock" + +2m12s277ms (2) 098 -wake_lock_in=u0a30:"NlpWakeLock" + +2m12s278ms (2) 098 -alarm=u0a30:"*walarm*:com.google.android.location.ALARM_WAKEUP_ACTIVITY_DETECTION" + +2m12s278ms (2) 098 -wifi_scan -wake_lock_in=1000:"*walarm*:com.google.android.location.ALARM_WAKEUP_LOCATOR" + +2m12s345ms (2) 098 +wifi_scan +wake_lock_in=u0a30:"NlpWakeLock" + +2m12s787ms (2) 098 -wake_lock_in=u0a30:"NlpWakeLock" + +2m12s788ms (2) 098 +wake_lock_in=u0a30:"NlpWakeLock" + +2m12s790ms (2) 098 -wake_lock_in=u0a30:"NlpCollectorWakeLock" + +2m12s799ms (2) 098 -wake_lock_in=u0a30:"NlpWakeLock" + +2m12s803ms (2) 098 +wake_lock_in=u0a30:"NlpWakeLock" + +2m12s806ms (2) 098 -wake_lock_in=u0a30:"NlpWakeLock" + +2m12s807ms (2) 098 +wake_lock_in=u0a30:"GCoreFlp" + +2m12s809ms (2) 098 -wake_lock_in=u0a30:"GCoreFlp" + +2m12s809ms (2) 098 +wake_lock_in=u0a30:"GCoreFlp" + +2m12s812ms (2) 098 -wake_lock_in=u0a30:"GCoreFlp" + +2m14s035ms (2) 098 -wifi_scan +wake_lock_in=u0a30:"NlpWakeLock" + +2m14s116ms (2) 098 +wake_lock_in=1000:"LocationManagerService" + +2m14s116ms (2) 098 -wake_lock_in=1000:"LocationManagerService" + +2m14s118ms (2) 098 -wake_lock_in=u0a30:"NlpWakeLock" + +2m14s120ms (2) 098 +wake_lock_in=u0a30:"NlpWakeLock" + +2m14s121ms (2) 098 +wake_lock_in=1000:"LocationManagerService" + +2m14s122ms (2) 098 +wake_lock_in=u0a30:"LocationManagerService" + +2m14s122ms (2) 098 -wake_lock_in=1000:"LocationManagerService" + +2m14s122ms (2) 098 -wake_lock_in=u0a30:"LocationManagerService" + +2m14s123ms (2) 098 -wake_lock_in=u0a30:"NlpWakeLock" + +2m14s124ms (2) 098 +wake_lock_in=u0a30:"GCoreFlp" + +2m14s125ms (2) 098 -wifi_full_lock -wake_lock_in=u0a30:"GCoreFlp" + +2m14s126ms (2) 098 +wake_lock_in=u0a30:"GCoreFlp" + +2m14s146ms (2) 098 -wake_lock_in=u0a30:"GCoreFlp" + +2m15s043ms (2) 098 +wake_lock_in=1001:"RILJ" + +2m15s045ms (2) 098 -wake_lock_in=1001:"RILJ" + +2m35s052ms (2) 098 +wake_lock_in=1001:"RILJ" + +2m35s054ms (2) 098 -wake_lock_in=1001:"RILJ" + +2m40s190ms (2) 098 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +2m40s191ms (2) 098 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +2m40s267ms (2) 098 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +2m40s268ms (2) 098 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +2m49s723ms (1) 098 charge=2777 + +2m55s062ms (2) 098 +wake_lock_in=1001:"RILJ" + +2m55s064ms (2) 098 -wake_lock_in=1001:"RILJ" + +3m12s636ms (2) 098 +alarm=u0a30:"*alarm*:null" + +3m12s636ms (2) 098 +alarm=u0a65:"*alarm*:null" + +3m12s636ms (2) 098 +wake_lock_in=u0a30:"*alarm*:null" + +3m12s636ms (2) 098 +wake_lock_in=u0a65:"*alarm*:null" + +3m12s639ms (2) 098 -alarm=u0a30:"*alarm*:null" + +3m12s639ms (2) 098 -alarm=u0a65:"*alarm*:null" + +3m12s640ms (2) 098 -wake_lock_in=u0a30:"*alarm*:null" + +3m12s640ms (2) 098 -wake_lock_in=u0a65:"*alarm*:null" + +3m15s086ms (2) 098 +wake_lock_in=1001:"RILJ" + +3m15s088ms (2) 098 -wake_lock_in=1001:"RILJ" + +3m35s109ms (2) 098 +wake_lock_in=1001:"RILJ" + +3m35s112ms (2) 098 -wake_lock_in=1001:"RILJ" + +3m40s191ms (2) 098 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +3m40s192ms (2) 098 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +3m40s268ms (2) 098 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +3m40s268ms (2) 098 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +3m49s897ms (2) 098 temp=370 charge=2770 + +3m55s118ms (2) 098 +wake_lock_in=1001:"RILJ" + +3m55s120ms (2) 098 -wake_lock_in=1001:"RILJ" + +4m15s142ms (2) 098 +wake_lock_in=1001:"RILJ" + +4m15s144ms (2) 098 -wake_lock_in=1001:"RILJ" + +4m35s166ms (2) 098 +wake_lock_in=1001:"RILJ" + +4m35s168ms (2) 098 -wake_lock_in=1001:"RILJ" + +4m40s191ms (2) 098 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +4m40s192ms (2) 098 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +4m40s268ms (2) 098 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +4m40s268ms (2) 098 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +4m50s016ms (1) 098 charge=2764 + +4m55s175ms (2) 098 +wake_lock_in=1001:"RILJ" + +4m55s177ms (2) 098 -wake_lock_in=1001:"RILJ" + +4m58s368ms (2) 097 + Details: cpu=8170u+30500s + /proc/stat=36190 usr, 22680 sys, 810 io, 10 irq, 1720 sirq, 812950 idle (7.0% of 2h 25m 43s 600ms), PlatformIdleStat null + +4m58s375ms (2) 097 +wake_lock_in=1001:"RILJ" + +4m58s380ms (2) 097 -wake_lock_in=1001:"RILJ" + +4m58s381ms (2) 097 stats=0:"battery-level" + +5m12s814ms (2) 097 +alarm=u0a84:"*walarm*:*job.delay*" + +5m12s814ms (2) 097 +wake_lock_in=u0a84:"*walarm*:*job.delay*" + +5m12s816ms (2) 097 +alarm=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +5m12s816ms (2) 097 +alarm=u0a30:"*walarm*:com.google.android.location.ALARM_WAKEUP_ACTIVITY_DETECTION" + +5m12s817ms (2) 097 -alarm=u0a84:"*walarm*:*job.delay*" + +5m12s817ms (2) 097 -alarm=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +5m12s818ms (2) 097 +wake_lock_in=u0a30:"NlpWakeLock" + +5m12s822ms (2) 097 +wake_lock_in=u0a30:"NlpCollectorWakeLock" + +5m12s839ms (2) 097 +proc=u0a84:"com.google.android.apps.tachyon" + +5m12s839ms (2) 097 +wifi_scan +job=u0a84:"com.google.android.apps.tachyon/.jobs.NativeJobSchedulerJobService" + +5m12s844ms (2) 097 -wake_lock_in=u0a30:"NlpWakeLock" + +5m12s851ms (2) 097 -wake_lock_in=u0a84:"*walarm*:*job.delay*" + +5m12s851ms (2) 097 +wake_lock_in=1000:"*alarm*" + +5m12s857ms (2) 097 -alarm=u0a30:"*walarm*:com.google.android.location.ALARM_WAKEUP_ACTIVITY_DETECTION" + +5m12s857ms (2) 097 -wifi_scan -wake_lock_in=1000:"*alarm*" + +5m13s199ms (2) 097 +wake_lock_in=u0a30:"*net_scheduler*" + +5m13s222ms (2) 097 -wake_lock_in=u0a30:"*net_scheduler*" + +5m13s373ms (3) 097 -sensor +wake_lock_in=u0a30:"NlpWakeLock" + +5m13s377ms (2) 097 -wake_lock_in=u0a30:"NlpWakeLock" + +5m13s378ms (2) 097 +wake_lock_in=u0a30:"NlpWakeLock" + +5m13s381ms (2) 097 -wake_lock_in=u0a30:"NlpCollectorWakeLock" + +5m13s395ms (2) 097 -wake_lock_in=u0a30:"NlpWakeLock" + +5m13s401ms (2) 097 +wake_lock_in=u0a30:"NlpWakeLock" + +5m13s402ms (2) 097 +wake_lock_in=u0a84:"*job*/com.google.android.apps.tachyon/.jobs.NativeJobSchedulerJobService" + +5m13s405ms (2) 097 -wake_lock_in=u0a30:"NlpWakeLock" + +5m13s406ms (2) 097 +wake_lock_in=u0a30:"GCoreFlp" + +5m13s409ms (2) 097 -wake_lock_in=u0a30:"GCoreFlp" + +5m13s410ms (2) 097 +wake_lock_in=u0a30:"GCoreFlp" + +5m13s412ms (2) 097 -wake_lock_in=u0a30:"GCoreFlp" + +5m13s420ms (2) 097 -job=u0a84:"com.google.android.apps.tachyon/.jobs.NativeJobSchedulerJobService" + +5m13s420ms (2) 097 -wake_lock_in=u0a84:"*job*/com.google.android.apps.tachyon/.jobs.NativeJobSchedulerJobService" + +5m15s179ms (2) 097 +wake_lock_in=1001:"RILJ" + +5m15s182ms (2) 097 -wake_lock_in=1001:"RILJ" + +5m35s202ms (2) 097 +wake_lock_in=1001:"RILJ" + +5m35s205ms (2) 097 -wake_lock_in=1001:"RILJ" + +5m37s026ms (2) 097 +alarm=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +5m37s026ms (2) 097 +wake_lock_in=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +5m37s027ms (2) 097 -alarm=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +5m37s027ms (2) 097 -wake_lock_in=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +5m40s191ms (2) 097 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +5m40s191ms (2) 097 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +5m40s208ms (2) 097 -proc=u0a28:"com.android.externalstorage" + +5m40s271ms (2) 097 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +5m40s271ms (2) 097 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +5m50s316ms (2) 097 volt=4225 charge=2757 + +5m55s212ms (2) 097 +wake_lock_in=1001:"RILJ" + +5m55s214ms (2) 097 -wake_lock_in=1001:"RILJ" + +5m56s493ms (2) 097 +alarm=u0a100:"*walarm*:*job.delay*" + +5m56s493ms (2) 097 +wake_lock_in=u0a100:"*walarm*:*job.delay*" + +5m56s495ms (2) 097 -alarm=u0a100:"*walarm*:*job.delay*" + +5m56s500ms (2) 097 -wake_lock_in=u0a100:"*walarm*:*job.delay*" + +6m15s236ms (2) 097 +wake_lock_in=1001:"RILJ" + +6m15s238ms (2) 097 -wake_lock_in=1001:"RILJ" + +6m35s260ms (2) 097 +wake_lock_in=1001:"RILJ" + +6m35s262ms (2) 097 -wake_lock_in=1001:"RILJ" + +6m40s191ms (2) 097 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +6m40s191ms (2) 097 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +6m40s271ms (2) 097 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +6m40s271ms (2) 097 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +6m48s969ms (1) 097 charge=2752 + +6m50s476ms (1) 097 charge=2750 + +6m55s269ms (2) 097 +wake_lock_in=1001:"RILJ" + +6m55s271ms (2) 097 -wake_lock_in=1001:"RILJ" + +7m15s275ms (2) 097 +wake_lock_in=1001:"RILJ" + +7m15s277ms (2) 097 -wake_lock_in=1001:"RILJ" + +7m35s281ms (2) 097 +wake_lock_in=1001:"RILJ" + +7m35s283ms (2) 097 -wake_lock_in=1001:"RILJ" + +7m40s191ms (2) 097 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +7m40s191ms (2) 097 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +7m40s273ms (2) 097 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +7m40s273ms (2) 097 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +7m50s537ms (1) 097 charge=2744 + +7m55s290ms (2) 097 +wake_lock_in=1001:"RILJ" + +7m55s293ms (2) 097 -wake_lock_in=1001:"RILJ" + +8m13s411ms (2) 097 +alarm=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +8m13s411ms (2) 097 +wake_lock_in=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +8m13s411ms (2) 097 +alarm=u0a30:"*walarm*:com.google.android.location.ALARM_WAKEUP_ACTIVITY_DETECTION" + +8m13s413ms (2) 097 -alarm=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +8m13s413ms (2) 097 -wake_lock_in=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +8m13s413ms (2) 097 +wake_lock_in=1000:"*alarm*" + +8m13s414ms (2) 097 +wifi_scan +wake_lock_in=u0a30:"NlpWakeLock" + +8m13s419ms (3) 097 +sensor +wake_lock_in=u0a30:"NlpCollectorWakeLock" + +8m13s423ms (2) 097 -alarm=u0a30:"*walarm*:com.google.android.location.ALARM_WAKEUP_ACTIVITY_DETECTION" + +8m13s423ms (2) 097 -wake_lock_in=1000:"*alarm*" + +8m13s427ms (3) 097 -sensor -wifi_scan -wake_lock_in=u0a30:"NlpWakeLock" + +8m13s962ms (2) 097 +wake_lock_in=u0a30:"NlpWakeLock" + +8m13s965ms (2) 097 -wake_lock_in=u0a30:"NlpWakeLock" + +8m13s966ms (2) 097 +wake_lock_in=u0a30:"NlpWakeLock" + +8m13s969ms (2) 097 -wake_lock_in=u0a30:"NlpCollectorWakeLock" + +8m13s979ms (2) 097 -wake_lock_in=u0a30:"NlpWakeLock" + +8m13s981ms (2) 097 +wake_lock_in=u0a30:"NlpWakeLock" + +8m13s985ms (2) 097 -wake_lock_in=u0a30:"NlpWakeLock" + +8m13s986ms (2) 097 +wake_lock_in=u0a30:"GCoreFlp" + +8m13s988ms (2) 097 -wake_lock_in=u0a30:"GCoreFlp" + +8m13s988ms (2) 097 +wake_lock_in=u0a30:"GCoreFlp" + +8m13s991ms (2) 097 -wake_lock_in=u0a30:"GCoreFlp" + +8m15s315ms (2) 097 +wake_lock_in=1001:"RILJ" + +8m15s317ms (2) 097 -wake_lock_in=1001:"RILJ" + +8m35s328ms (2) 097 +wake_lock_in=1001:"RILJ" + +8m35s331ms (2) 097 -wake_lock_in=1001:"RILJ" + +8m40s191ms (2) 097 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +8m40s192ms (2) 097 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +8m40s272ms (2) 097 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +8m40s273ms (2) 097 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +8m50s697ms (1) 097 charge=2737 + +8m55s336ms (2) 097 +wake_lock_in=1001:"RILJ" + +8m55s339ms (2) 097 -wake_lock_in=1001:"RILJ" + +9m15s360ms (2) 097 +wake_lock_in=1001:"RILJ" + +9m15s362ms (2) 097 -wake_lock_in=1001:"RILJ" + +9m35s383ms (2) 097 +wake_lock_in=1001:"RILJ" + +9m35s388ms (2) 097 -wake_lock_in=1001:"RILJ" + +9m40s191ms (2) 097 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +9m40s192ms (2) 097 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +9m40s274ms (2) 097 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +9m40s274ms (2) 097 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +9m50s856ms (1) 097 charge=2730 + +9m55s394ms (2) 097 +wake_lock_in=1001:"RILJ" + +9m55s397ms (2) 097 -wake_lock_in=1001:"RILJ" + +10m15s417ms (2) 097 +wake_lock_in=1001:"RILJ" + +10m15s419ms (2) 097 -wake_lock_in=1001:"RILJ" + +10m35s426ms (2) 097 +wake_lock_in=1001:"RILJ" + +10m35s428ms (2) 097 -wake_lock_in=1001:"RILJ" + +10m37s050ms (2) 097 +alarm=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +10m37s050ms (2) 097 +wake_lock_in=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +10m37s050ms (2) 097 -alarm=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +10m37s050ms (2) 097 -wake_lock_in=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +10m40s191ms (2) 097 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +10m40s191ms (2) 097 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +10m40s274ms (2) 097 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +10m40s274ms (2) 097 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +10m50s973ms (2) 096 charge=2725 + Details: cpu=172160u+265060s + /proc/stat=170180 usr, 169370 sys, 1540 io, 20 irq, 12650 sirq, 3844700 idle (8.4% of 11h 39m 44s 600ms), PlatformIdleStat null + +10m50s981ms (2) 096 +wake_lock_in=1001:"RILJ" + +10m50s986ms (2) 096 -wake_lock_in=1001:"RILJ" + +10m50s986ms (2) 096 charge=2724 stats=0:"battery-level" + +10m55s435ms (2) 096 +wake_lock_in=1001:"RILJ" + +10m55s437ms (2) 096 -wake_lock_in=1001:"RILJ" + +11m13s992ms (2) 096 +alarm=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +11m13s992ms (2) 096 +wake_lock_in=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +11m13s992ms (2) 096 +alarm=u0a30:"*walarm*:com.google.android.location.ALARM_WAKEUP_ACTIVITY_DETECTION" + +11m13s994ms (2) 096 -alarm=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +11m13s994ms (2) 096 -wake_lock_in=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +11m13s994ms (2) 096 +wake_lock_in=1000:"*alarm*" + +11m13s996ms (2) 096 +wifi_scan +wake_lock_in=u0a30:"NlpWakeLock" + +11m14s001ms (2) 096 +wake_lock_in=u0a30:"NlpCollectorWakeLock" + +11m14s006ms (2) 096 -alarm=u0a30:"*walarm*:com.google.android.location.ALARM_WAKEUP_ACTIVITY_DETECTION" + +11m14s006ms (2) 096 -wake_lock_in=1000:"*alarm*" + +11m14s013ms (2) 096 -wifi_scan -wake_lock_in=u0a30:"NlpWakeLock" + +11m14s543ms (2) 096 +wake_lock_in=u0a30:"NlpWakeLock" + +11m14s546ms (2) 096 -wake_lock_in=u0a30:"NlpWakeLock" + +11m14s547ms (2) 096 +wake_lock_in=u0a30:"NlpWakeLock" + +11m14s549ms (2) 096 -wake_lock_in=u0a30:"NlpCollectorWakeLock" + +11m14s561ms (2) 096 -wake_lock_in=u0a30:"NlpWakeLock" + +11m14s564ms (2) 096 +wake_lock_in=u0a30:"NlpWakeLock" + +11m14s568ms (2) 096 -wake_lock_in=u0a30:"NlpWakeLock" + +11m14s569ms (2) 096 +wake_lock_in=u0a30:"GCoreFlp" + +11m14s570ms (2) 096 -wake_lock_in=u0a30:"GCoreFlp" + +11m14s571ms (2) 096 +wake_lock_in=u0a30:"GCoreFlp" + +11m14s574ms (2) 096 -wake_lock_in=u0a30:"GCoreFlp" + +11m15s459ms (2) 096 +wake_lock_in=1001:"RILJ" + +11m15s461ms (2) 096 -wake_lock_in=1001:"RILJ" + +11m35s464ms (2) 096 +wake_lock_in=1001:"RILJ" + +11m35s466ms (2) 096 -wake_lock_in=1001:"RILJ" + +11m40s191ms (2) 096 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +11m40s192ms (2) 096 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +11m40s275ms (2) 096 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +11m40s275ms (2) 096 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +11m51s174ms (1) 096 charge=2717 + +11m55s473ms (2) 096 +wake_lock_in=1001:"RILJ" + +11m55s475ms (2) 096 -wake_lock_in=1001:"RILJ" + +12m15s497ms (2) 096 +wake_lock_in=1001:"RILJ" + +12m15s500ms (2) 096 -wake_lock_in=1001:"RILJ" + +12m35s522ms (2) 096 +wake_lock_in=1001:"RILJ" + +12m35s524ms (2) 096 -wake_lock_in=1001:"RILJ" + +12m40s191ms (2) 096 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +12m40s192ms (2) 096 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +12m40s277ms (2) 096 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +12m40s277ms (2) 096 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +12m51s436ms (1) 096 charge=2710 + +12m55s531ms (2) 096 +wake_lock_in=1001:"RILJ" + +12m55s533ms (2) 096 -wake_lock_in=1001:"RILJ" + +13m15s555ms (2) 096 +wake_lock_in=1001:"RILJ" + +13m15s557ms (2) 096 -wake_lock_in=1001:"RILJ" + +13m35s576ms (2) 096 +wake_lock_in=1001:"RILJ" + +13m35s579ms (2) 096 -wake_lock_in=1001:"RILJ" + +13m40s191ms (2) 096 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +13m40s192ms (2) 096 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +13m40s261ms (2) 096 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +13m40s261ms (2) 096 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +13m51s480ms (2) 096 volt=4202 charge=2704 + +13m55s584ms (2) 096 +wake_lock_in=1001:"RILJ" + +13m55s587ms (2) 096 -wake_lock_in=1001:"RILJ" + +14m14s572ms (2) 096 +alarm=u0a30:"*walarm*:com.google.android.location.ALARM_WAKEUP_ACTIVITY_DETECTION" + +14m14s573ms (2) 096 +wake_lock_in=1000:"*walarm*:com.google.android.location.ALARM_WAKEUP_ACTIVITY_DETECTION" + +14m14s575ms (2) 096 +wake_lock_in=u0a30:"NlpWakeLock" + +14m14s579ms (2) 096 +wake_lock_in=u0a30:"NlpCollectorWakeLock" + +14m14s584ms (2) 096 -alarm=u0a30:"*walarm*:com.google.android.location.ALARM_WAKEUP_ACTIVITY_DETECTION" + +14m14s584ms (2) 096 -wake_lock_in=1000:"*walarm*:com.google.android.location.ALARM_WAKEUP_ACTIVITY_DETECTION" + +14m14s588ms (2) 096 -wake_lock_in=u0a30:"NlpWakeLock" + +14m15s129ms (2) 096 +wake_lock_in=u0a30:"NlpWakeLock" + +14m15s133ms (2) 096 -wake_lock_in=u0a30:"NlpWakeLock" + +14m15s134ms (2) 096 +wake_lock_in=u0a30:"NlpWakeLock" + +14m15s136ms (2) 096 -wake_lock_in=u0a30:"NlpCollectorWakeLock" + +14m15s146ms (2) 096 -wake_lock_in=u0a30:"NlpWakeLock" + +14m15s152ms (2) 096 +wake_lock_in=u0a30:"NlpWakeLock" + +14m15s156ms (2) 096 -wake_lock_in=u0a30:"NlpWakeLock" + +14m15s156ms (2) 096 +wake_lock_in=u0a30:"GCoreFlp" + +14m15s158ms (2) 096 -wake_lock_in=u0a30:"GCoreFlp" + +14m15s158ms (2) 096 +wake_lock_in=u0a30:"GCoreFlp" + +14m15s161ms (2) 096 -wake_lock_in=u0a30:"GCoreFlp" + +14m15s609ms (2) 096 +wake_lock_in=1001:"RILJ" + +14m15s614ms (2) 096 -wake_lock_in=1001:"RILJ" + +14m35s618ms (2) 096 +wake_lock_in=1001:"RILJ" + +14m35s620ms (2) 096 -wake_lock_in=1001:"RILJ" + +14m40s191ms (2) 096 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +14m40s192ms (2) 096 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +14m40s261ms (2) 096 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +14m40s261ms (2) 096 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +14m51s656ms (1) 096 charge=2697 + +14m55s626ms (2) 096 +wake_lock_in=1001:"RILJ" + +14m55s629ms (2) 096 -wake_lock_in=1001:"RILJ" + +15m15s650ms (2) 096 +wake_lock_in=1001:"RILJ" + +15m15s652ms (2) 096 -wake_lock_in=1001:"RILJ" + +15m33s350ms (2) 096 +alarm=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +15m33s350ms (2) 096 +wake_lock_in=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +15m33s350ms (2) 096 +alarm=1000:"*walarm*:WifiConnectivityManager Schedule Watchdog Timer" + +15m33s352ms (2) 096 -alarm=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +15m33s353ms (2) 096 -wake_lock_in=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +15m33s353ms (2) 096 +wake_lock_in=1000:"*alarm*" + +15m33s354ms (2) 096 -alarm=1000:"*walarm*:WifiConnectivityManager Schedule Watchdog Timer" + +15m33s354ms (2) 096 +wifi_scan -wake_lock_in=1000:"*alarm*" + +15m33s451ms (1) 096 -wifi_scan + +15m35s674ms (2) 096 +wake_lock_in=1001:"RILJ" + +15m35s676ms (2) 096 -wake_lock_in=1001:"RILJ" + +15m37s074ms (2) 096 +alarm=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +15m37s074ms (2) 096 +wake_lock_in=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +15m37s074ms (2) 096 -alarm=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +15m37s074ms (2) 096 -wake_lock_in=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +15m40s191ms (2) 096 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +15m40s192ms (2) 096 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +15m40s263ms (2) 096 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +15m40s263ms (2) 096 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +15m51s839ms (2) 095 charge=2692 + Details: cpu=5260u+8060s + /proc/stat=5220 usr, 4980 sys, 50 io, 0 irq, 410 sirq, 115250 idle (8.5% of 20m 59s 100ms), PlatformIdleStat null + +15m51s846ms (2) 095 +wake_lock_in=1001:"RILJ" + +15m51s851ms (2) 095 -wake_lock_in=1001:"RILJ" + +15m51s852ms (2) 095 charge=2690 stats=0:"battery-level" + +15m55s679ms (2) 095 +wake_lock_in=1001:"RILJ" + +15m55s681ms (2) 095 -wake_lock_in=1001:"RILJ" + +16m15s683ms (2) 095 +wake_lock_in=1001:"RILJ" + +16m15s686ms (2) 095 -wake_lock_in=1001:"RILJ" + +16m35s706ms (2) 095 +wake_lock_in=1001:"RILJ" + +16m35s709ms (2) 095 -wake_lock_in=1001:"RILJ" + +16m40s191ms (2) 095 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +16m40s192ms (2) 095 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +16m40s263ms (2) 095 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +16m40s263ms (2) 095 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +16m48s969ms (1) 095 charge=2685 + +16m52s078ms (1) 095 charge=2684 + +16m55s712ms (2) 095 +wake_lock_in=1001:"RILJ" + +16m55s715ms (2) 095 -wake_lock_in=1001:"RILJ" + +17m15s160ms (2) 095 +alarm=u0a30:"*walarm*:com.google.android.location.ALARM_WAKEUP_ACTIVITY_DETECTION" + +17m15s160ms (2) 095 +wake_lock_in=1000:"*walarm*:com.google.android.location.ALARM_WAKEUP_ACTIVITY_DETECTION" + +17m15s163ms (2) 095 +wake_lock_in=u0a30:"NlpWakeLock" + +17m15s167ms (2) 095 +wake_lock_in=u0a30:"NlpCollectorWakeLock" + +17m15s172ms (2) 095 -alarm=u0a30:"*walarm*:com.google.android.location.ALARM_WAKEUP_ACTIVITY_DETECTION" + +17m15s172ms (2) 095 -wake_lock_in=1000:"*walarm*:com.google.android.location.ALARM_WAKEUP_ACTIVITY_DETECTION" + +17m15s177ms (2) 095 -wake_lock_in=u0a30:"NlpWakeLock" + +17m15s711ms (2) 095 +wake_lock_in=u0a30:"NlpWakeLock" + +17m15s715ms (2) 095 -wake_lock_in=u0a30:"NlpWakeLock" + +17m15s716ms (2) 095 +wake_lock_in=u0a30:"NlpWakeLock" + +17m15s718ms (2) 095 -wake_lock_in=u0a30:"NlpCollectorWakeLock" + +17m15s725ms (2) 095 +wake_lock_in=1001:"RILJ" + +17m15s728ms (2) 095 -wake_lock_in=u0a30:"NlpWakeLock" + +17m15s728ms (2) 095 -wake_lock_in=1001:"RILJ" + +17m15s731ms (2) 095 +wake_lock_in=u0a30:"NlpWakeLock" + +17m15s734ms (2) 095 -wake_lock_in=u0a30:"NlpWakeLock" + +17m15s735ms (2) 095 +wake_lock_in=u0a30:"GCoreFlp" + +17m15s737ms (2) 095 -wake_lock_in=u0a30:"GCoreFlp" + +17m15s737ms (2) 095 +wake_lock_in=u0a30:"GCoreFlp" + +17m15s740ms (2) 095 -wake_lock_in=u0a30:"GCoreFlp" + +17m35s749ms (2) 095 +wake_lock_in=1001:"RILJ" + +17m35s751ms (2) 095 -wake_lock_in=1001:"RILJ" + +17m40s191ms (2) 095 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +17m40s192ms (2) 095 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +17m40s264ms (2) 095 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +17m40s264ms (2) 095 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +17m52s136ms (1) 095 charge=2677 + +17m55s757ms (2) 095 +wake_lock_in=1001:"RILJ" + +17m55s759ms (2) 095 -wake_lock_in=1001:"RILJ" + +18m15s767ms (2) 095 +wake_lock_in=1001:"RILJ" + +18m15s769ms (2) 095 -wake_lock_in=1001:"RILJ" + +18m23s412ms (2) 094 charge=2675 + Details: cpu=103510u+158550s + /proc/stat=100930 usr, 100340 sys, 1000 io, 10 irq, 7670 sirq, 2192810 idle (8.7% of 6h 40m 27s 600ms), PlatformIdleStat null + +18m23s421ms (2) 094 +wake_lock_in=1001:"RILJ" + +18m23s425ms (2) 094 -wake_lock_in=1001:"RILJ" + +18m23s425ms (2) 094 stats=0:"battery-level" + +18m35s782ms (2) 094 +wake_lock_in=1001:"RILJ" + +18m35s785ms (2) 094 -wake_lock_in=1001:"RILJ" + +18m40s190ms (2) 094 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +18m40s191ms (2) 094 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +18m40s283ms (2) 094 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +18m40s283ms (2) 094 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +18m52s396ms (1) 094 charge=2670 + +18m55s791ms (2) 094 +wake_lock_in=1001:"RILJ" + +18m55s793ms (2) 094 -wake_lock_in=1001:"RILJ" + +19m15s803ms (2) 094 +wake_lock_in=1001:"RILJ" + +19m15s805ms (2) 094 -wake_lock_in=1001:"RILJ" + +19m16s941ms (2) 094 +alarm=u0a84:"*walarm*:*job.deadline*" + +19m16s941ms (2) 094 +wake_lock_in=u0a84:"*walarm*:*job.deadline*" + +19m16s941ms (2) 094 +alarm=u0a84:"*walarm*:*job.delay*" + +19m16s942ms (2) 094 +alarm=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +19m16s943ms (2) 094 +alarm=u0a30:"*walarm*:com.google.android.gms.matchstick.register_intent_action" + +19m16s949ms (2) 094 -alarm=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +19m16s950ms (2) 094 -alarm=u0a84:"*walarm*:*job.deadline*" + +19m16s950ms (2) 094 +wifi_scan -alarm=u0a84:"*walarm*:*job.delay*" + +19m16s963ms (2) 094 +wake_lock_in=u0a30:"*alarm*" + +19m16s963ms (2) 094 -wake_lock_in=u0a84:"*walarm*:*job.deadline*" + +19m16s963ms (2) 094 -alarm=u0a30:"*walarm*:com.google.android.gms.matchstick.register_intent_action" + +19m16s963ms (2) 094 -wake_lock_in=u0a30:"*alarm*" + +19m16s972ms (2) 094 +job=u0a84:"com.google.android.apps.tachyon/.jobs.NativeJobSchedulerJobService" + +19m16s975ms (2) 094 +job=u0a65:"com.google.android.googlequicksearchbox/com.google.android.apps.gsa.tasks.BackgroundTasksJobService" + +19m16s975ms (2) 094 +wake_lock_in=u0a84:"*job*/com.google.android.apps.tachyon/.jobs.NativeJobSchedulerJobService" + +19m16s977ms (2) 094 +wake_lock_in=u0a65:"*job*/com.google.android.googlequicksearchbox/com.google.android.apps.gsa.tasks.BackgroundTasksJobService" + +19m16s979ms (2) 094 -job=u0a84:"com.google.android.apps.tachyon/.jobs.NativeJobSchedulerJobService" + +19m16s979ms (2) 094 -wifi_scan -wake_lock_in=u0a84:"*job*/com.google.android.apps.tachyon/.jobs.NativeJobSchedulerJobService" + +19m17s074ms (2) 094 -job=u0a65:"com.google.android.googlequicksearchbox/com.google.android.apps.gsa.tasks.BackgroundTasksJobService" + +19m17s074ms (2) 094 -wake_lock_in=u0a65:"*job*/com.google.android.googlequicksearchbox/com.google.android.apps.gsa.tasks.BackgroundTasksJobService" + +19m35s827ms (2) 094 +wake_lock_in=1001:"RILJ" + +19m35s830ms (2) 094 -wake_lock_in=1001:"RILJ" + +19m40s190ms (2) 094 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +19m40s190ms (2) 094 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +19m40s267ms (2) 094 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +19m40s267ms (2) 094 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +19m52s453ms (1) 094 charge=2663 + +19m55s836ms (2) 094 +wake_lock_in=1001:"RILJ" + +19m55s839ms (2) 094 -wake_lock_in=1001:"RILJ" + +20m15s740ms (2) 094 +alarm=u0a30:"*walarm*:com.google.android.location.ALARM_WAKEUP_ACTIVITY_DETECTION" + +20m15s741ms (2) 094 +wake_lock_in=1000:"*walarm*:com.google.android.location.ALARM_WAKEUP_ACTIVITY_DETECTION" + +20m15s742ms (2) 094 +wake_lock_in=u0a30:"NlpWakeLock" + +20m15s747ms (2) 094 +wake_lock_in=u0a30:"NlpCollectorWakeLock" + +20m15s751ms (2) 094 -alarm=u0a30:"*walarm*:com.google.android.location.ALARM_WAKEUP_ACTIVITY_DETECTION" + +20m15s752ms (2) 094 -wake_lock_in=1000:"*walarm*:com.google.android.location.ALARM_WAKEUP_ACTIVITY_DETECTION" + +20m15s757ms (2) 094 -wake_lock_in=u0a30:"NlpWakeLock" + +20m15s859ms (2) 094 +wake_lock_in=1001:"RILJ" + +20m15s862ms (2) 094 -wake_lock_in=1001:"RILJ" + +20m16s290ms (2) 094 +wake_lock_in=u0a30:"NlpWakeLock" + +20m16s295ms (2) 094 -wake_lock_in=u0a30:"NlpCollectorWakeLock" + +20m16s304ms (2) 094 -wake_lock_in=u0a30:"NlpWakeLock" + +20m16s308ms (2) 094 +wake_lock_in=u0a30:"NlpWakeLock" + +20m16s312ms (2) 094 -wake_lock_in=u0a30:"NlpWakeLock" + +20m16s313ms (2) 094 +wake_lock_in=u0a30:"GCoreFlp" + +20m16s314ms (2) 094 -wake_lock_in=u0a30:"GCoreFlp" + +20m16s315ms (2) 094 +wake_lock_in=u0a30:"GCoreFlp" + +20m16s318ms (2) 094 -wake_lock_in=u0a30:"GCoreFlp" + +20m35s883ms (2) 094 +wake_lock_in=1001:"RILJ" + +20m35s886ms (2) 094 -wake_lock_in=1001:"RILJ" + +20m37s105ms (2) 094 +alarm=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +20m37s105ms (2) 094 +wake_lock_in=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +20m37s105ms (2) 094 -alarm=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +20m37s105ms (2) 094 -wake_lock_in=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +20m40s191ms (2) 094 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +20m40s191ms (2) 094 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +20m40s267ms (2) 094 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +20m40s267ms (2) 094 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +20m47s522ms (2) 094 -proc=u0a118:"org.mozilla.geckoview_example" + +20m47s547ms (2) 094 -top=u0a118:"org.mozilla.geckoview_example" + +20m47s547ms (2) 094 +top=u0a6:"com.motorola.ccc.ota" + +20m47s554ms (2) 094 -proc=u0a118:"org.mozilla.geckoview_example:tab" + +20m49s613ms (3) 094 brightness=dark +wake_lock_in=1001:"RILJ" + +20m49s861ms (2) 094 -wake_lock_in=1001:"RILJ" + +20m49s861ms (2) 094 stats=0:"dump" + +20m50s057ms (2) 094 +wake_lock_in=1001:"RILJ" + +20m50s061ms (2) 094 -wake_lock_in=1001:"RILJ" + +20m50s061ms (2) 094 stats=0:"dump" + +Per-PID Stats: + PID 1544 wake time: +1s795ms + PID 2014 wake time: +203ms + PID 1544 wake time: +5ms + PID 1985 wake time: +5s434ms + PID 2366 wake time: +29ms + PID 1544 wake time: +101ms + PID 1544 wake time: +81ms + PID 1544 wake time: +7ms + PID 1544 wake time: +752ms + PID 2366 wake time: +51ms + +Discharge step durations: + #0: +2m31s573ms to 94 (screen-on, power-save-off, device-idle-off) + #1: +5m0s866ms to 95 (screen-on, power-save-off, device-idle-off) + #2: +5m52s605ms to 96 (screen-on, power-save-off, device-idle-off) + #3: +3m8s791ms to 97 (screen-on, power-save-off, device-idle-off) + Estimated discharge time remaining: +6h29m15s52ms + Estimated screen on time: 6h 54m 5s 800ms + +Daily stats: + Current start time: 2019-07-03-01-01-55 + Next min deadline: 2019-07-04-01-00-00 + Next max deadline: 2019-07-04-03-00-00 + Current daily discharge step durations: + #0: +2m31s573ms to 94 (screen-on, power-save-off, device-idle-off) + #1: +5m0s866ms to 95 (screen-on, power-save-off, device-idle-off) + #2: +5m52s605ms to 96 (screen-on, power-save-off, device-idle-off) + #3: +3m8s791ms to 97 (screen-on, power-save-off, device-idle-off) + #4: +4m0s541ms to 98 (screen-on, power-save-off, device-idle-off) + #5: +5m28s940ms to 93 (screen-on, power-save-off, device-idle-off) + #6: +3m32s400ms to 94 (screen-on, power-save-off, device-idle-off) + #7: +6m8s472ms to 96 (screen-on, power-save-off, device-idle-off) + #8: +3m51s528ms to 97 (screen-on, power-save-off, device-idle-off) + #9: +5m59s536ms to 98 (screen-on, power-save-off, device-idle-off) + #10: +3m29s129ms to 98 (screen-on, power-save-off, device-idle-off) + #11: +3m0s480ms to 98 (screen-on, power-save-off, device-idle-off) + #12: +4m49s722ms to 96 (screen-on, power-save-off, device-idle-off) + #13: +4m0s489ms to 97 (screen-on, power-save-off, device-idle-off) + #14: +3m0s579ms to 98 (screen-on, power-save-off, device-idle-off) + #15: +3m1s987ms to 98 (screen-on, power-save-off, device-idle-off) + Discharge total time: 6h 58m 30s 200ms (from 16 steps) + Discharge screen on time: 6h 58m 30s 200ms (from 16 steps) + Package changes: + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Daily from 2019-07-02-03-38-21 to 2019-07-03-01-01-55: + Discharge step durations: + #0: +4m22s262ms to 96 (screen-on, power-save-off, device-idle-off) + #1: +2m40s260ms to 97 (screen-on, power-save-off, device-idle-off) + #2: +3m59s182ms to 98 (screen-on, power-save-off, device-idle-off) + #3: +2m36s315ms to 92 (screen-on, power-save-off, device-idle-off) + #4: +5m0s800ms to 93 (screen-on, power-save-off, device-idle-off) + #5: +5m0s859ms to 94 (screen-on, power-save-off, device-idle-off) + #6: +6m0s801ms to 95 (screen-on, power-save-off, device-idle-off) + #7: +5m38s645ms to 96 (screen-on, power-save-off, device-idle-off) + #8: +3m0s593ms to 97 (screen-on, power-save-off, device-idle-off) + #9: +4m0s638ms to 98 (screen-on, power-save-off, device-idle-off) + #10: +3m11s195ms to 98 (screen-on, power-save-off, device-idle-off) + #11: +2m54s941ms to 97 (screen-on, power-save-off, device-idle-off) + #12: +3m30s455ms to 97 (screen-on, power-save-off, device-idle-off) + #13: +4m0s491ms to 98 (screen-on, power-save-off, device-idle-off) + #14: +5m0s801ms to 95 (screen-on, power-save-off, device-idle-off) + #15: +3m36s165ms to 97 (screen-on, power-save-off, device-idle-off) + #16: +5m0s681ms to 98 (screen-on, power-save-off, device-idle-off) + #17: +3m3s300ms to 97 (screen-on, power-save-off, device-idle-off) + #18: +3m19s93ms to 98 (screen-on, power-save-off, device-idle-off) + Discharge total time: 6h 39m 46s 700ms (from 19 steps) + Discharge screen on time: 6h 39m 46s 700ms (from 19 steps) + Package changes: + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Daily from 2019-07-01-03-39-30 to 2019-07-02-03-38-21: + Discharge step durations: + #0: +5m0s700ms to 95 (screen-on, power-save-off, device-idle-off) + #1: +4m43s724ms to 96 (screen-on, power-save-off, device-idle-off) + #2: +3m27s57ms to 97 (screen-on, power-save-off, device-idle-off) + #3: +3m13s450ms to 98 (screen-on, power-save-off, device-idle-off) + #4: +4m2s156ms to 94 (screen-on, power-save-off, device-idle-off) + #5: +5m51s857ms to 95 (screen-on, power-save-off, device-idle-off) + #6: +3m0s351ms to 97 (screen-on, power-save-off, device-idle-off) + #7: +3m53s414ms to 98 (screen-on, power-save-off, device-idle-off) + #8: +3m37s832ms to 97 (screen-on, power-save-off, device-idle-off) + #9: +3m0s378ms to 98 (screen-on, power-save-off, device-idle-off) + Discharge total time: 6h 38m 29s 100ms (from 10 steps) + Discharge screen on time: 6h 38m 29s 100ms (from 10 steps) + Package changes: + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update com.google.android.videos vers=41200081 + Update com.google.android.youtube vers=1425573340 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Daily from 2019-06-30-03-49-43 to 2019-07-01-03-39-30: + Discharge step durations: + #0: +5m22s623ms to 96 (screen-on, power-save-off, device-idle-off) + #1: +3m20s32ms to 97 (screen-on, power-save-off, device-idle-off) + #2: +3m38s58ms to 98 (screen-on, power-save-off, device-idle-off) + #3: +3m0s479ms to 97 (screen-on, power-save-off, device-idle-off) + #4: +5m0s92ms to 96 (screen-on, power-save-off, device-idle-off) + #5: +2m58s381ms to 97 (screen-on, power-save-off, device-idle-off) + #6: +3m0s481ms to 98 (screen-on, power-save-off, device-idle-off) + Discharge total time: 6h 16m 13s 500ms (from 7 steps) + Discharge screen on time: 6h 16m 13s 500ms (from 7 steps) + Package changes: + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update com.google.android.apps.maps vers=1019101144 + Update org.mozilla.geckoview_example vers=1 + Daily from 2019-06-29-03-53-51 to 2019-06-30-03-49-43: + Discharge step durations: + #0: +3m22s443ms to 97 (screen-on, power-save-off, device-idle-off) + #1: +3m0s480ms to 98 (screen-on, power-save-off, device-idle-off) + #2: +4m0s492ms to 97 (screen-on, power-save-off, device-idle-off) + #3: +4m22s122ms to 98 (screen-on, power-save-off, device-idle-off) + #4: +4m22s516ms to 97 (screen-on, power-save-off, device-idle-off) + #5: +3m38s784ms to 98 (screen-on, power-save-off, device-idle-off) + Discharge total time: 6h 19m 40s 600ms (from 6 steps) + Discharge screen on time: 6h 19m 40s 600ms (from 6 steps) + Package changes: + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Daily from 2019-06-28-03-18-43 to 2019-06-29-03-53-51: + Discharge step durations: + #0: +4m0s696ms to 94 (screen-on, power-save-off, device-idle-off) + #1: +5m0s780ms to 95 (screen-on, power-save-off, device-idle-off) + #2: +6m0s950ms to 96 (screen-on, power-save-off, device-idle-off) + #3: +4m0s515ms to 97 (screen-on, power-save-off, device-idle-off) + #4: +6m0s965ms to 93 (screen-on, power-save-off, device-idle-off) + #5: +4m0s630ms to 94 (screen-on, power-save-off, device-idle-off) + #6: +8m1s278ms to 95 (screen-on, power-save-off, device-idle-off) + #7: +3m41s781ms to 97 (screen-on, power-save-off, device-idle-off) + #8: +4m0s666ms to 98 (screen-on, power-save-off, device-idle-off) + #9: +5m3s804ms to 96 (screen-on, power-save-off, device-idle-off) + #10: +4m0s739ms to 97 (screen-on, power-save-off, device-idle-off) + #11: +3m0s481ms to 98 (screen-on, power-save-off, device-idle-off) + #12: +6m10s883ms to 96 (screen-on, power-save-off, device-idle-off) + #13: +3m47s465ms to 97 (screen-on, power-save-off, device-idle-off) + #14: +3m0s583ms to 98 (screen-on, power-save-off, device-idle-off) + Discharge total time: 7h 45m 48s 100ms (from 15 steps) + Discharge screen on time: 7h 45m 48s 100ms (from 15 steps) + Package changes: + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.reference.browser.raptor vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Daily from 2019-06-27-04-47-23 to 2019-06-28-03-18-43: + Discharge step durations: + #0: +5m29s877ms to 95 (screen-on, power-save-off, device-idle-off) + #1: +5m3s762ms to 96 (screen-on, power-save-off, device-idle-off) + #2: +4m2s174ms to 97 (screen-on, power-save-off, device-idle-off) + #3: +2m58s895ms to 98 (screen-on, power-save-off, device-idle-off) + #4: +5m0s585ms to 96 (screen-on, power-save-off, device-idle-off) + #5: +4m0s599ms to 97 (screen-on, power-save-off, device-idle-off) + #6: +3m0s480ms to 98 (screen-on, power-save-off, device-idle-off) + #7: +3m36s286ms to 91 (screen-on, power-save-off, device-idle-off) + #8: +4m0s698ms to 92 (screen-on, power-save-off, device-idle-off) + #9: +6m19s775ms to 93 (screen-on, power-save-off, device-idle-off) + #10: +3m41s767ms to 94 (screen-on, power-save-off, device-idle-off) + #11: +8m1s180ms to 96 (screen-on, power-save-off, device-idle-off) + #12: +3m47s800ms to 97 (screen-on, power-save-off, device-idle-off) + #13: +4m0s545ms to 98 (screen-on, power-save-off, device-idle-off) + #14: +4m17s216ms to 93 (screen-on, power-save-off, device-idle-off) + #15: +3m0s324ms to 94 (screen-on, power-save-off, device-idle-off) + #16: +5m35s824ms to 95 (screen-on, power-save-off, device-idle-off) + #17: +5m0s112ms to 96 (screen-on, power-save-off, device-idle-off) + #18: +3m26s403ms to 97 (screen-on, power-save-off, device-idle-off) + #19: +3m0s504ms to 98 (screen-on, power-save-off, device-idle-off) + Discharge total time: 7h 17m 4s 0ms (from 20 steps) + Discharge screen on time: 7h 17m 4s 0ms (from 20 steps) + Package changes: + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.reference.browser.raptor vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.reference.browser.raptor vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=0 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update com.google.android.apps.photos vers=4846836 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Daily from 2019-06-26-04-43-23 to 2019-06-27-04-47-23: + Discharge step durations: + #0: +3m50s915ms to 91 (screen-on, power-save-off, device-idle-off) + #1: +4m5s396ms to 92 (screen-on, power-save-off, device-idle-off) + #2: +4m56s85ms to 93 (screen-on, power-save-off, device-idle-off) + #3: +5m0s759ms to 94 (screen-on, power-save-off, device-idle-off) + #4: +5m0s700ms to 95 (screen-on, power-save-off, device-idle-off) + #5: +5m14s8ms to 96 (screen-on, power-save-off, device-idle-off) + #6: +3m0s480ms to 97 (screen-on, power-save-off, device-idle-off) + #7: +4m2s92ms to 98 (screen-on, power-save-off, device-idle-off) + #8: +5m6s217ms to 95 (screen-on, power-save-off, device-idle-off) + #9: +5m28s275ms to 96 (screen-on, power-save-off, device-idle-off) + #10: +3m26s946ms to 97 (screen-on, power-save-off, device-idle-off) + #11: +2m59s11ms to 98 (screen-on, power-save-off, device-idle-off) + Discharge total time: 7h 14m 50s 700ms (from 12 steps) + Discharge screen on time: 7h 14m 50s 700ms (from 12 steps) + Package changes: + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Daily from 2019-06-25-01-43-11 to 2019-06-26-04-43-23: + Discharge step durations: + #0: +6m1s66ms to 95 (screen-on, power-save-off, device-idle-off) + #1: +5m0s816ms to 96 (screen-on, power-save-off, device-idle-off) + #2: +5m0s776ms to 97 (screen-on, power-save-off, device-idle-off) + #3: +5m0s700ms to 98 (screen-on, power-save-off, device-idle-off) + #4: +4m0s745ms to 98 (screen-on, power-save-off, device-idle-off) + #5: +5m0s900ms to 97 (screen-on, power-save-off, device-idle-off) + #6: +5m0s800ms to 98 (screen-on, power-save-off, device-idle-off) + #7: +4m33s841ms to 96 (screen-on, power-save-off, device-idle-off) + #8: +4m0s700ms to 97 (screen-on, power-save-off, device-idle-off) + #9: +4m0s579ms to 98 (screen-on, power-save-off, device-idle-off) + #10: +3m0s500ms to 98 (screen-on, power-save-off, device-idle-off) + #11: +5m1s817ms to 95 (screen-on, power-save-off, device-idle-off) + #12: +5m16s527ms to 96 (screen-on, power-save-off, device-idle-off) + #13: +3m23s971ms to 97 (screen-on, power-save-off, device-idle-off) + #14: +3m0s527ms to 98 (screen-on, power-save-off, device-idle-off) + Discharge total time: 7h 29m 21s 700ms (from 15 steps) + Discharge screen on time: 7h 29m 21s 700ms (from 15 steps) + Package changes: + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Daily from 2019-06-24-04-30-21 to 2019-06-25-01-43-11: + Discharge step durations: + #0: +3m0s606ms to 61 (screen-on, power-save-off, device-idle-off) + #1: +5m2s437ms to 62 (screen-on, power-save-off, device-idle-off) + #2: +2m58s844ms to 63 (screen-on, power-save-off, device-idle-off) + #3: +5m0s809ms to 64 (screen-on, power-save-off, device-idle-off) + #4: +6m0s827ms to 65 (screen-on, power-save-off, device-idle-off) + #5: +3m38s33ms to 65 (screen-on, power-save-off, device-idle-off) + #6: +2m0s222ms to 66 (screen-on, power-save-off, device-idle-off) + #7: +4m0s639ms to 66 (screen-on, power-save-off, device-idle-off) + #8: +5m1s499ms to 67 (screen-on, power-save-off, device-idle-off) + #9: +2m59s789ms to 68 (screen-on, power-save-off, device-idle-off) + #10: +7m1s111ms to 69 (screen-on, power-save-off, device-idle-off) + #11: +3m51s135ms to 69 (screen-on, power-save-off, device-idle-off) + #12: +3m3s399ms to 68 (screen-on, power-save-off, device-idle-off) + #13: +4m57s849ms to 69 (screen-on, power-save-off, device-idle-off) + #14: +6m0s972ms to 70 (screen-on, power-save-off, device-idle-off) + #15: +4m0s607ms to 71 (screen-on, power-save-off, device-idle-off) + #16: +5m0s822ms to 72 (screen-on, power-save-off, device-idle-off) + #17: +3m50s52ms to 73 (screen-on, power-save-off, device-idle-off) + #18: +5m11s366ms to 74 (screen-on, power-save-off, device-idle-off) + #19: +4m0s694ms to 75 (screen-on, power-save-off, device-idle-off) + #20: +5m53s967ms to 76 (screen-on, power-save-off, device-idle-off) + #21: +7m1s118ms to 77 (screen-on, power-save-off, device-idle-off) + #22: +5m0s702ms to 78 (screen-on, power-save-off, device-idle-off) + #23: +3m59s265ms to 75 (screen-on, power-save-off, device-idle-off) + #24: +5m38s306ms to 76 (screen-on, power-save-off, device-idle-off) + #25: +5m23s455ms to 77 (screen-on, power-save-off, device-idle-off) + #26: +3m59s161ms to 78 (screen-on, power-save-off, device-idle-off) + #27: +5m0s772ms to 79 (screen-on, power-save-off, device-idle-off) + #28: +5m57s968ms to 79 (screen-on, power-save-off, device-idle-off) + #29: +5m0s651ms to 80 (screen-on, power-save-off, device-idle-off) + #30: +4m0s678ms to 80 (screen-on, power-save-off, device-idle-off) + #31: +7m0s984ms to 81 (screen-on, power-save-off, device-idle-off) + #32: +5m0s809ms to 80 (screen-on, power-save-off, device-idle-off) + #33: +6m1s11ms to 81 (screen-on, power-save-off, device-idle-off) + #34: +4m0s486ms to 82 (screen-on, power-save-off, device-idle-off) + #35: +4m30s253ms to 82 (screen-on, power-save-off, device-idle-off) + #36: +7m17s812ms to 83 (screen-on, power-save-off, device-idle-off) + #37: +6m0s960ms to 84 (screen-on, power-save-off, device-idle-off) + #38: +4m0s538ms to 85 (screen-on, power-save-off, device-idle-off) + #39: +3m25s548ms to 85 (screen-on, power-save-off, device-idle-off) + #40: +7m1s22ms to 86 (screen-on, power-save-off, device-idle-off) + #41: +4m59s237ms to 87 (screen-on, power-save-off, device-idle-off) + #42: +6m1s46ms to 88 (screen-on, power-save-off, device-idle-off) + #43: +7m1s33ms to 89 (screen-on, power-save-off, device-idle-off) + #44: +4m59s258ms to 90 (screen-on, power-save-off, device-idle-off) + #45: +5m0s701ms to 92 (screen-on, power-save-off, device-idle-off) + #46: +4m57s120ms to 93 (screen-on, power-save-off, device-idle-off) + #47: +4m0s693ms to 94 (screen-on, power-save-off, device-idle-off) + #48: +6m53s570ms to 96 (screen-on, power-save-off, device-idle-off) + #49: +7m1s141ms to 97 (screen-on, power-save-off, device-idle-off) + #50: +4m49s156ms to 94 (screen-on, power-save-off, device-idle-off) + #51: +9m59s602ms to 95 (screen-on, power-save-off, device-idle-off) + #52: +3m27s559ms to 92 (screen-on, power-save-off, device-idle-off) + #53: +5m0s799ms to 93 (screen-on, power-save-off, device-idle-off) + #54: +4m0s640ms to 94 (screen-on, power-save-off, device-idle-off) + #55: +6m0s981ms to 95 (screen-on, power-save-off, device-idle-off) + #56: +7m1s64ms to 96 (screen-on, power-save-off, device-idle-off) + #57: +4m0s542ms to 97 (screen-on, power-save-off, device-idle-off) + #58: +3m56s802ms to 98 (screen-on, power-save-off, device-idle-off) + #59: +2m28s39ms to 97 (screen-on, power-save-off, device-idle-off) + #60: +2m21s945ms to 98 (screen-on, power-save-off, device-idle-off) + Discharge total time: 8h 15m 1s 800ms (from 61 steps) + Discharge screen on time: 8h 15m 1s 800ms (from 61 steps) + Charge step durations: + #0: +1m46s170ms to 89 (screen-on, power-save-off, device-idle-off) + #1: +2m11s820ms to 88 (screen-on, power-save-off, device-idle-off) + #2: +2m0s318ms to 87 (screen-on, power-save-off, device-idle-off) + #3: +2m0s321ms to 86 (screen-on, power-save-off, device-idle-off) + #4: +2m0s321ms to 85 (screen-on, power-save-off, device-idle-off) + #5: +1m51s751ms to 84 (screen-on, power-save-off, device-idle-off) + #6: +1m51s261ms to 83 (screen-on, power-save-off, device-idle-off) + #7: +1m4s208ms to 82 (screen-on, power-save-off, device-idle-off) + #8: +1m13s741ms to 81 (screen-on, power-save-off, device-idle-off) + #9: +1m6s904ms to 80 (screen-on, power-save-off, device-idle-off) + #10: +1m53s574ms to 79 (screen-on, power-save-off, device-idle-off) + #11: +1m7s743ms to 78 (screen-on, power-save-off, device-idle-off) + #12: +1m26s229ms to 77 (screen-on, power-save-off, device-idle-off) + #13: +1m27s717ms to 76 (screen-on, power-save-off, device-idle-off) + #14: +44s92ms to 75 (screen-on, power-save-off, device-idle-off) + #15: +1m5s153ms to 74 (screen-on, power-save-off, device-idle-off) + #16: +1m1s741ms to 73 (screen-on, power-save-off, device-idle-off) + #17: +1m53s108ms to 72 (screen-on, power-save-off, device-idle-off) + #18: +1m5s790ms to 71 (screen-on, power-save-off, device-idle-off) + #19: +1m19s852ms to 70 (screen-on, power-save-off, device-idle-off) + #20: +1m27s758ms to 69 (screen-on, power-save-off, device-idle-off) + #21: +12s871ms to 68 (screen-on, power-save-off, device-idle-off) + #22: +2m0s321ms to 67 (screen-on, power-save-off, device-idle-off) + #23: +2m0s318ms to 66 (screen-on, power-save-off, device-idle-off) + #24: +2m0s320ms to 65 (screen-on, power-save-off, device-idle-off) + Charge total time: 2h 31m 33s 600ms (from 25 steps) + Charge screen on time: 2h 31m 33s 600ms (from 25 steps) + Package changes: + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.fenix.raptor vers=1 + Update org.mozilla.reference.browser vers=11281213 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.fennec_aurora vers=2015636401 + Update org.mozilla.fenix.raptor vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.fenix.raptor vers=1 + Update org.mozilla.fenix.raptor vers=1 + Update org.mozilla.reference.browser vers=11281213 + Update org.mozilla.reference.browser vers=11281213 + Update org.mozilla.reference.browser vers=11281213 + Update org.mozilla.fennec_aurora vers=2015636401 + Update org.mozilla.fenix.raptor vers=1 + Update org.mozilla.fennec_aurora vers=2015636401 + Update org.mozilla.fenix.raptor vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.reference.browser vers=11281213 + Update org.mozilla.fennec_aurora vers=2015636401 + Update org.mozilla.fennec_aurora vers=2015636401 + Update org.mozilla.fennec_aurora vers=2015636401 + Update org.mozilla.reference.browser.raptor vers=1 + Update org.mozilla.fennec_aurora vers=2015636441 + Update org.mozilla.fenix.raptor vers=1 + Update org.mozilla.reference.browser.raptor vers=1 + Update com.google.android.gms vers=17785018 + Update com.google.android.youtube vers=1424573340 + Update org.mozilla.fennec_aurora vers=2015636457 + Update org.mozilla.fenix.performancetest vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.fennec_aurora vers=2015636457 + Daily from 2019-06-23-04-45-16 to 2019-06-24-04-30-21: + Discharge step durations: + #0: +3m23s357ms to 92 (screen-on, power-save-off, device-idle-off) + #1: +3m37s763ms to 93 (screen-on, power-save-off, device-idle-off) + #2: +3m3s603ms to 94 (screen-on, power-save-off, device-idle-off) + #3: +5m10s816ms to 95 (screen-on, power-save-off, device-idle-off) + #4: +4m49s185ms to 96 (screen-on, power-save-off, device-idle-off) + #5: +2m58s972ms to 97 (screen-on, power-save-off, device-idle-off) + #6: +4m0s497ms to 98 (screen-on, power-save-off, device-idle-off) + #7: +3m0s632ms to 94 (screen-on, power-save-off, device-idle-off) + #8: +5m41s798ms to 95 (screen-on, power-save-off, device-idle-off) + #9: +5m19s809ms to 96 (screen-on, power-save-off, device-idle-off) + #10: +3m0s630ms to 97 (screen-on, power-save-off, device-idle-off) + #11: +4m0s490ms to 98 (screen-on, power-save-off, device-idle-off) + Discharge total time: 6h 41m 2s 900ms (from 12 steps) + Discharge screen on time: 6h 41m 2s 900ms (from 12 steps) + Package changes: + Update org.mozilla.geckoview_example vers=1 + Update com.android.chrome vers=377010107 + Update com.google.android.apps.tachyon vers=2980701 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + +Statistics since last charge: + System starts: 0, currently on battery: true + Estimated battery capacity: 2876 mAh + Time on battery: 20m 50s 94ms (100.0%) realtime, 20m 50s 94ms (100.0%) uptime + Time on battery screen off: 0ms (0.0%) realtime, 0ms (0.0%) uptime + Total run time: 20m 50s 103ms realtime, 20m 50s 103ms uptime + Battery time remaining: 6h 29m 15s 52ms + Discharge: 132 mAh + Screen off discharge: 0 mAh + Screen on discharge: 132 mAh + Start clock time: 2019-07-03-23-07-19 + Screen on: 20m 50s 94ms (100.0%) 0x, Interactive: 20m 50s 93ms (100.0%) + Screen brightnesses: + dark 481ms (0.0%) + medium 20m 49s 613ms (100.0%) + Total full wakelock time: 20m 50s 86ms + Mobile total received: 0B, sent: 0B (packets received 0, sent 0) + Phone signal levels: + poor 20m 50s 93ms (100.0%) 0x + Signal scanning time: 0ms + Radio types: + none 20m 50s 93ms (100.0%) 0x + Mobile radio active time: 0ms (0.0%) 0x + Radio Idle time: 0ms (--%) + Radio Rx time: 0ms (--%) + Radio Tx time: 0ms (--%) + [0] 0ms (--%) + [1] 0ms (--%) + [2] 0ms (--%) + [3] 0ms (--%) + [4] 0ms (--%) + Radio Power drain: 0mAh + Wi-Fi total received: 0B, sent: 0B (packets received 0, sent 0) + Wifi on: 20m 50s 93ms (100.0%), Wifi running: 20m 50s 93ms (100.0%) + Wifi states: (no activity) + Wifi supplicant states: + completed 20m 50s 93ms (100.0%) 0x + Wifi signal levels: + level(4) 20m 50s 93ms (100.0%) 0x + WiFi Idle time: 0ms (--%) + WiFi Rx time: 0ms (--%) + WiFi Tx time: 0ms (--%) + WiFi Power drain: 0mAh + Bluetooth total received: 0B, sent: 0B + Bluetooth scan time: 0ms + Bluetooth Idle time: 0ms (--%) + Bluetooth Rx time: 0ms (--%) + Bluetooth Tx time: 0ms (--%) + Bluetooth Power drain: 0mAh + + Device battery use since last full charge + Amount discharged (lower bound): 4 + Amount discharged (upper bound): 5 + Amount discharged while screen on: 5 + Amount discharged while screen off: 0 + + Estimated power use (mAh): + Capacity: 2876, Computed drain: 128, actual drain: 115-144 + Screen: 70.7 + Uid u0a118: 14.5 ( cpu=14.5 ) + Uid 2000: 13.9 ( cpu=13.9 ) + Uid 0: 9.90 ( cpu=9.90 ) + Cell standby: 6.94 ( radio=6.94 ) + Uid 1036: 5.55 ( cpu=5.55 ) + Idle: 4.97 + Uid 1000: 0.700 ( cpu=0.526 sensor=0.174 ) + Uid u0a46: 0.529 ( sensor=0.529 ) + Uid u0a84: 0.233 ( cpu=0.233 ) + Uid 1001: 0.146 ( cpu=0.0159 sensor=0.130 ) + Wifi: 0.132 ( cpu=0.0261 wifi=0.106 ) + Uid u0a30: 0.0694 ( cpu=0.0634 wifi=0.00540 sensor=0.000578 ) + Uid 9999: 0.0657 ( cpu=0.0657 ) + Uid u0a64: 0.0603 ( cpu=0.0522 sensor=0.00811 ) + Uid u0a119: 0.0349 ( cpu=0.0349 ) + Uid u0a47: 0.0241 ( cpu=0.0241 ) + Uid u0a65: 0.00967 ( cpu=0.00967 ) + Uid 1041: 0.00841 ( cpu=0.000299 sensor=0.00811 ) + Uid u0a40: 0.00766 ( cpu=0.00766 ) + Uid u0a11: 0.00642 ( cpu=0.00642 ) + Uid u0a54: 0.00501 ( cpu=0.00501 ) + Uid u0a109: 0.00355 ( cpu=0.00355 ) + Uid u0a6: 0.00257 ( cpu=0.00257 ) + Uid u0a31: 0.00158 ( cpu=0.00158 ) + Uid u0a13: 0.00103 ( cpu=0.00103 ) + Uid u0a21: 0.000984 ( cpu=0.000984 ) + Uid 1013: 0.000856 ( cpu=0.000856 ) + Uid u0a102: 0.000599 ( cpu=0.000599 ) + Uid u0a98: 0.000428 ( cpu=0.000428 ) + Uid u0a107: 0.000257 ( cpu=0.000257 ) + Uid u0a24: 0.000171 ( cpu=0.000171 ) + Uid u0a83: 0.000171 ( cpu=0.000171 ) + Uid u0a77: 0.000128 ( cpu=0.000128 ) + Uid u0a74: 0.000128 ( cpu=0.000128 ) + + 0: + Total cpu time: u=6s 670ms s=3m 44s 643ms p=0mAh + Proc VosWDThread: + CPU: 0ms usr + 30ms krn ; 0ms fg + Proc kworker/u16:7: + CPU: 0ms usr + 1s 610ms krn ; 0ms fg + Proc kworker/u16:6: + CPU: 0ms usr + 2s 340ms krn ; 0ms fg + Proc kworker/u16:2: + CPU: 0ms usr + 4s 300ms krn ; 0ms fg + Proc kworker/5:1H: + CPU: 0ms usr + 40ms krn ; 0ms fg + Proc kworker/0:1H: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc irq/45-408000.q: + CPU: 0ms usr + 40ms krn ; 0ms fg + Proc VosTXThread: + CPU: 0ms usr + 1m 31s 780ms krn ; 0ms fg + Proc wpa_supplicant: + CPU: 290ms usr + 270ms krn ; 0ms fg + Proc ksoftirqd/7: + CPU: 0ms usr + 840ms krn ; 0ms fg + Proc ksoftirqd/6: + CPU: 0ms usr + 4s 610ms krn ; 0ms fg + Proc ksoftirqd/5: + CPU: 0ms usr + 300ms krn ; 0ms fg + Proc ksoftirqd/4: + CPU: 0ms usr + 280ms krn ; 0ms fg + Proc ksoftirqd/3: + CPU: 0ms usr + 20ms krn ; 0ms fg + Proc ksoftirqd/1: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc ksoftirqd/0: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc msm_watchdog: + CPU: 0ms usr + 110ms krn ; 0ms fg + Proc rcuop/7: + CPU: 0ms usr + 100ms krn ; 0ms fg + Proc rcuop/6: + CPU: 0ms usr + 410ms krn ; 0ms fg + Proc rcuop/5: + CPU: 0ms usr + 130ms krn ; 0ms fg + Proc rcuop/4: + CPU: 0ms usr + 450ms krn ; 0ms fg + Proc rcuop/3: + CPU: 0ms usr + 20ms krn ; 0ms fg + Proc rcuop/2: + CPU: 0ms usr + 60ms krn ; 0ms fg + Proc rcuop/1: + CPU: 0ms usr + 40ms krn ; 0ms fg + Proc rcuop/0: + CPU: 0ms usr + 150ms krn ; 0ms fg + Proc VosMCThread: + CPU: 0ms usr + 610ms krn ; 0ms fg + Proc mmc-cmdqd/0: + CPU: 0ms usr + 860ms krn ; 0ms fg + Proc magiskd: + CPU: 10ms usr + 50ms krn ; 0ms fg + Proc healthd: + CPU: 10ms usr + 30ms krn ; 0ms fg + Proc kworker/7:1: + CPU: 0ms usr + 20ms krn ; 0ms fg + Proc kworker/6:1: + CPU: 0ms usr + 90ms krn ; 0ms fg + Proc kworker/5:2: + CPU: 0ms usr + 330ms krn ; 0ms fg + Proc kworker/5:1: + CPU: 0ms usr + 190ms krn ; 0ms fg + Proc kworker/4:3: + CPU: 0ms usr + 60ms krn ; 0ms fg + Proc kworker/4:1: + CPU: 0ms usr + 20ms krn ; 0ms fg + Proc kworker/4:0: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc kworker/3:1: + CPU: 0ms usr + 50ms krn ; 0ms fg + Proc kworker/2:1: + CPU: 0ms usr + 100ms krn ; 0ms fg + Proc kworker/1:0: + CPU: 0ms usr + 200ms krn ; 0ms fg + Proc kworker/0:3: + CPU: 0ms usr + 170ms krn ; 0ms fg + Proc wlan_logging_th: + CPU: 0ms usr + 130ms krn ; 0ms fg + Proc installd: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc irq/32-spdm_bw_: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc hwrng: + CPU: 0ms usr + 40ms krn ; 0ms fg + Proc rcu_preempt: + CPU: 0ms usr + 900ms krn ; 0ms fg + Proc vold: + CPU: 0ms usr + 30ms krn ; 0ms fg + Proc spi4: + CPU: 0ms usr + 180ms krn ; 0ms fg + Proc rild: + CPU: 60ms usr + 50ms krn ; 0ms fg + Proc netd: + CPU: 20ms usr + 20ms krn ; 0ms fg + Proc logd: + CPU: 33s 380ms usr + 1m 21s 40ms krn ; 0ms fg + Proc lmkd: + CPU: 10ms usr + 30ms krn ; 0ms fg + Proc adbd: + CPU: 38s 800ms usr + 3m 9s 370ms krn ; 0ms fg + Proc cnd: + CPU: 30ms usr + 10ms krn ; 0ms fg + Proc surfaceflinger: + CPU: 590ms usr + 580ms krn ; 0ms fg + Proc kswapd0: + CPU: 0ms usr + 760ms krn ; 0ms fg + Proc ueventd: + CPU: 150ms usr + 30ms krn ; 0ms fg + Proc zygote: + CPU: 30ms usr + 50ms krn ; 0ms fg + Proc msm_irqbalance: + CPU: 840ms usr + 600ms krn ; 0ms fg + Proc cnss-daemon: + CPU: 10ms usr + 100ms krn ; 0ms fg + Proc system: + CPU: 0ms usr + 30ms krn ; 0ms fg + Proc logcat: + CPU: 5s 710ms usr + 10s 470ms krn ; 0ms fg + Proc irq/57-7824900.: + CPU: 0ms usr + 40ms krn ; 0ms fg + Proc mdss_fb0: + CPU: 0ms usr + 110ms krn ; 0ms fg + Proc f2fs_gc-259:22: + CPU: 0ms usr + 20ms krn ; 0ms fg + Proc VosRXThread: + CPU: 0ms usr + 1m 15s 670ms krn ; 0ms fg + 1000: + Wake lock LocationManagerService realtime + Wake lock *alarm* realtime + Wake lock GnssLocationProvider realtime + Sensor 13: 10m 25s 46ms realtime (0 times) + Cached for: 20m 50s 91ms + Total running: 20m 50s 91ms + Total cpu time: u=6s 944ms s=5s 360ms p=0mAh + Proc .dataservices: + CPU: 10ms usr + 20ms krn ; 0ms fg + Proc servicemanager: + CPU: 30ms usr + 90ms krn ; 0ms fg + Proc com.motorola.process.system: + CPU: 10ms usr + 0ms krn ; 0ms fg + Proc com.motorola.modemservice: + CPU: 30ms usr + 10ms krn ; 0ms fg + Proc system: + CPU: 5s 880ms usr + 4s 390ms krn ; 0ms fg + Proc com.qualcomm.telephony: + CPU: 10ms usr + 10ms krn ; 0ms fg + Apk android: + Wakeup alarm *walarm*:WifiConnectivityManager Schedule Periodic Scan Timer: 6 times + Wakeup alarm *walarm*:WifiConnectivityManager Schedule Watchdog Timer: 1 times + Wakeup alarm *walarm*:DhcpClient.wlan0.RENEW: 5 times + 1001: + Wake lock RILJ realtime + Sensor 8: 10m 25s 46ms realtime (0 times) + Sensor 21: 20m 50s 91ms realtime (0 times) + Fg Service for: 20m 50s 91ms + Total running: 20m 50s 91ms + Total cpu time: u=224ms s=147ms p=0mAh + Proc com.android.phone: + CPU: 180ms usr + 110ms krn ; 0ms fg + 1010: + Wifi Running: 0ms (0.0%) + Full Wifi Lock: 0ms (0.0%) + Wifi Scan: 621ms (0.0%) 6x + Total cpu time: u=330ms s=280ms p=0mAh + (nothing executed) + 1013: + Total cpu time: u=10ms s=10ms p=0mAh + Proc mediaserver: + CPU: 10ms usr + 10ms krn ; 0ms fg + 1036: + Total cpu time: u=41s 497ms s=1m 28s 180ms p=0mAh + (nothing executed) + 1037: + Cached for: 20m 50s 90ms + Total running: 20m 50s 90ms + 1041: + Sensor 8: 10m 25s 45ms realtime (0 times) + Total cpu time: u=4ms s=3ms p=0mAh + Proc audioserver: + CPU: 0ms usr + 10ms krn ; 0ms fg + 2000: + Total cpu time: u=1m 23s 217ms s=4m 0s 700ms p=0mAh + Proc logcat: + CPU: 24s 200ms usr + 19s 540ms krn ; 0ms fg + 9999: + Total cpu time: u=890ms s=647ms p=0mAh + (nothing executed) + u0a6: + Foreground activities: 13s 139ms realtime (1 times) + Top for: 13s 963ms + Foreground for: 20m 36s 126ms + Total running: 20m 50s 89ms + Total cpu time: u=43ms s=17ms p=0mAh + Proc com.motorola.ccc: + CPU: 10ms usr + 10ms krn ; 0ms fg + Proc com.motorola.ccc.ota: + CPU: 0ms usr + 0ms krn ; 1s 490ms fg + u0a11: + Foreground for: 3m 33s 123ms + Cached for: 17m 16s 965ms + Total running: 20m 50s 88ms + Total cpu time: u=140ms s=10ms p=0mAh + Proc com.android.providers.calendar: + CPU: 170ms usr + 10ms krn ; 0ms fg + u0a13: + Background for: 20m 50s 88ms + Total running: 20m 50s 88ms + Total cpu time: u=20ms s=4ms p=0mAh + Proc com.google.android.ims: + CPU: 10ms usr + 0ms krn ; 0ms fg + u0a21: + Foreground for: 16ms + Cached for: 20m 50s 72ms + Total running: 20m 50s 88ms + Total cpu time: u=20ms s=3ms p=0mAh + Proc com.android.defcontainer: + CPU: 50ms usr + 10ms krn ; 0ms fg + Apk com.android.defcontainer: + Service com.android.defcontainer.DefaultContainerService: + Created for: 0ms uptime + Starts: 0, launches: 1 + u0a24: + Background for: 4ms + Cached for: 20m 50s 84ms + Total running: 20m 50s 88ms + Total cpu time: u=0ms s=4ms p=0mAh + Proc com.android.documentsui: + CPU: 20ms usr + 20ms krn ; 0ms fg + u0a25: + Cached for: 20m 50s 88ms + Total running: 20m 50s 88ms + Proc android.process.media: + CPU: 20ms usr + 10ms krn ; 0ms fg + Proc com.android.mtp: + CPU: 30ms usr + 0ms krn ; 0ms fg + u0a28: + Cached for: 5m 40s 202ms + Total running: 5m 40s 202ms + Proc com.android.externalstorage: + CPU: 20ms usr + 0ms krn ; 0ms fg + u0a30: + Wifi Running: 0ms (0.0%) + Full Wifi Lock: 1s 876ms (0.2%) + Wifi Scan: 1s 690ms (0.1%) 1x + Wake lock *net_scheduler* realtime + Wake lock GCoreFlp realtime + Wake lock LocationManagerService realtime + Wake lock NlpWakeLock realtime + Wake lock *alarm* realtime + Wake lock Wakeful StateMachine: GeofencerStateMachine realtime + Wake lock NlpCollectorWakeLock realtime + Wake lock Icing realtime + Sensor 1: 3s 786ms realtime (7 times) + Fg Service for: 55s 287ms + Foreground for: 19m 54s 801ms + Total running: 20m 50s 88ms + Total cpu time: u=1s 123ms s=360ms p=0mAh + Proc com.google.process.gapps: + CPU: 130ms usr + 60ms krn ; 0ms fg + Proc com.google.android.gms: + CPU: 130ms usr + 70ms krn ; 0ms fg + Proc com.google.android.gms.persistent: + CPU: 1s 110ms usr + 250ms krn ; 0ms fg + Apk com.google.android.gms: + Wakeup alarm *walarm*:com.google.android.location.ALARM_WAKEUP_LOCATOR: 1 times + Wakeup alarm *walarm*:com.google.android.location.ALARM_WAKEUP_ACTIVITY_DETECTION: 7 times + Wakeup alarm *walarm*:com.google.android.gms.matchstick.register_intent_action: 1 times + Service com.google.android.gms.ads.identifier.service.AdvertisingIdService: + Created for: 0ms uptime + Starts: 0, launches: 1 + Service com.google.android.gms.wearable.service.WearableControlService: + Created for: 18ms uptime + Starts: 1, launches: 1 + Service com.google.android.gms.config.ConfigService: + Created for: 21ms uptime + Starts: 1, launches: 1 + Service com.google.android.gms.chimera.GmsInternalBoundBrokerService: + Created for: 0ms uptime + Starts: 0, launches: 4 + Service com.google.android.gms.icing.service.IndexWorkerService: + Created for: 73ms uptime + Starts: 1, launches: 1 + Service com.google.android.gms.chimera.PersistentIntentOperationService: + Created for: 7s 17ms uptime + Starts: 1, launches: 1 + Service com.google.android.gms.chimera.GmsIntentOperationService: + Created for: 14s 223ms uptime + Starts: 2, launches: 2 + Service com.google.android.gms.chimera.GmsBoundBrokerService: + Created for: 0ms uptime + Starts: 0, launches: 1 + Service com.google.android.gms.measurement.service.MeasurementBrokerService: + Created for: 0ms uptime + Starts: 0, launches: 1 + u0a31: + Fg Service for: 20m 50s 88ms + Total running: 20m 50s 88ms + Total cpu time: u=20ms s=17ms p=0mAh + Proc com.google.android.ext.services: + CPU: 30ms usr + 10ms krn ; 0ms fg + u0a40: + Background for: 207ms + Cached for: 20m 49s 880ms + Total running: 20m 50s 87ms + Total cpu time: u=133ms s=46ms p=0mAh + Proc com.android.launcher3: + CPU: 120ms usr + 40ms krn ; 0ms fg + u0a46: + Sensor 12: 10m 25s 44ms realtime (0 times) + Sensor 13: 10m 25s 44ms realtime (0 times) + Sensor 20: 20m 50s 87ms realtime (0 times) + Fg Service for: 20m 50s 87ms + Total running: 20m 50s 87ms + u0a47: + Foreground for: 20m 50s 87ms + Total running: 20m 50s 87ms + Total cpu time: u=367ms s=197ms p=0mAh + Proc com.motorola.motocare: + CPU: 330ms usr + 160ms krn ; 0ms fg + u0a50: + Background for: 20m 50s 87ms + Total running: 20m 50s 87ms + u0a54: + Cached for: 1m 11s 252ms + Total running: 1m 11s 252ms + Total cpu time: u=100ms s=17ms p=0mAh + Proc com.android.vending: + CPU: 10ms usr + 0ms krn ; 0ms fg + u0a61: + Fg Service for: 20m 50s 87ms + Total running: 20m 50s 87ms + u0a62: + Foreground for: 20m 50s 87ms + Total running: 20m 50s 87ms + u0a64: + Sensor 12: 10m 25s 44ms realtime (0 times) + Fg Service for: 20m 50s 87ms + Total running: 20m 50s 87ms + Total cpu time: u=883ms s=337ms p=0mAh + Proc com.android.systemui: + CPU: 820ms usr + 310ms krn ; 0ms fg + u0a65: + Wake lock *alarm* realtime + Wake lock *job*/com.google.android.googlequicksearchbox/com.google.android.apps.gsa.tasks.BackgroundTasksJobService realtime + Job com.google.android.googlequicksearchbox/com.google.android.apps.gsa.tasks.BackgroundTasksJobService: 99ms realtime (1 times) + Fg Service for: 20m 50s 87ms + Total running: 20m 50s 87ms + Total cpu time: u=176ms s=50ms p=0mAh + Proc com.google.android.googlequicksearchbox:search: + CPU: 20ms usr + 20ms krn ; 0ms fg + Apk com.google.android.googlequicksearchbox: + Service com.google.android.apps.gsa.tasks.BackgroundTasksJobService: + Created for: 0ms uptime + Starts: 0, launches: 1 + Service com.google.android.apps.gsa.shared.util.keepalive.StandaloneKeepAlive$KeepAliveService: + Created for: 10s 35ms uptime + Starts: 1, launches: 1 + Service com.google.android.apps.gsa.search.core.BroadcastListenerService: + Created for: 7ms uptime + Starts: 1, launches: 1 + u0a69: + Background for: 20m 50s 87ms + Total running: 20m 50s 87ms + u0a74: + Cached for: 20m 50s 86ms + Total running: 20m 50s 86ms + Total cpu time: u=3ms s=0ms p=0mAh + Proc com.google.android.calendar: + CPU: 0ms usr + 10ms krn ; 0ms fg + u0a77: + Background for: 5ms + Cached for: 20m 50s 81ms + Total running: 20m 50s 86ms + Total cpu time: u=3ms s=0ms p=0mAh + Proc com.android.chrome: + CPU: 20ms usr + 10ms krn ; 0ms fg + u0a83: + Cached for: 20m 50s 86ms + Total running: 20m 50s 86ms + Total cpu time: u=0ms s=4ms p=0mAh + Proc com.google.android.apps.docs: + CPU: 150ms usr + 30ms krn ; 0ms fg + u0a84: + Wake lock *job*/com.google.android.apps.tachyon/.jobs.NativeJobSchedulerJobService realtime + Wake lock *alarm* realtime + Job com.google.android.apps.tachyon/.jobs.NativeJobSchedulerJobService: 588ms realtime (2 times) + Background for: 575ms + Cached for: 15m 36s 697ms + Total running: 15m 37s 272ms + Total cpu time: u=3s 623ms s=1s 833ms p=0mAh + Proc com.google.android.apps.tachyon: + CPU: 1s 260ms usr + 850ms krn ; 0ms fg + 1 starts + Apk com.google.android.apps.tachyon: + Service com.google.android.apps.tachyon.jobs.NativeJobSchedulerJobService: + Created for: 0ms uptime + Starts: 0, launches: 2 + Apk android: + Wakeup alarm *walarm*:*job.delay*: 42 times + Wakeup alarm *walarm*:*job.deadline*: 1 times + u0a98: + Background for: 20m 50s 86ms + Total running: 20m 50s 86ms + Total cpu time: u=6ms s=4ms p=0mAh + Proc com.google.android.inputmethod.latin: + CPU: 10ms usr + 0ms krn ; 0ms fg + u0a100: + Wake lock *alarm* realtime + Apk android: + Wakeup alarm *walarm*:*job.delay*: 21 times + u0a102: + Background for: 20m 50s 86ms + Total running: 20m 50s 86ms + Total cpu time: u=10ms s=4ms p=0mAh + u0a107: + Background for: 4ms + Cached for: 20m 50s 82ms + Total running: 20m 50s 86ms + Total cpu time: u=6ms s=0ms p=0mAh + u0a109: + Background for: 20m 50s 86ms + Total running: 20m 50s 86ms + Total cpu time: u=53ms s=30ms p=0mAh + Proc com.motorola.timeweatherwidget: + CPU: 50ms usr + 40ms krn ; 0ms fg + Apk com.motorola.timeweatherwidget: + Service com.motorola.commandcenter.row2.RowWidgetUpdater2: + Created for: 1s 362ms uptime + Starts: 6, launches: 6 + u0a118: + Wake lock *launch* realtime + Wake lock Icing realtime + Foreground activities: 20m 36s 840ms realtime (1 times) + Top for: 20m 36s 860ms + Background for: 5ms + Cached for: 80ms + Total running: 20m 36s 945ms + Total cpu time: u=4m 32s 276ms s=1m 7s 593ms p=0mAh + Proc org.mozilla.geckoview_example: + CPU: 3m 45s 780ms usr + 48s 840ms krn ; 0ms fg + 1 starts + Proc org.mozilla.geckoview_example:tab: + CPU: 40ms usr + 10ms krn ; 0ms fg + 1 starts + Apk org.mozilla.geckoview_example: + Service org.mozilla.gecko.process.GeckoServiceChildProcess$tab: + Created for: 0ms uptime + Starts: 0, launches: 1 + u0a119: + Wake lock TestdroidDeviceService: 20m 50s 86ms full (0 times) realtime + Background for: 20m 50s 86ms + Total running: 20m 50s 86ms + Total cpu time: u=530ms s=287ms p=0mAh + Proc com.bitbar.testdroid.monitor:monitor: + CPU: 300ms usr + 200ms krn ; 0ms fg + Proc com.bitbar.testdroid.monitor:data: + CPU: 270ms usr + 100ms krn ; 0ms fg
\ No newline at end of file diff --git a/testing/raptor/test/files/batterystats-android-8.txt b/testing/raptor/test/files/batterystats-android-8.txt new file mode 100644 index 0000000000..f4aa694bab --- /dev/null +++ b/testing/raptor/test/files/batterystats-android-8.txt @@ -0,0 +1,1669 @@ +Battery History (1% used, 3908 used of 256KB, 70 strings using 4868): + 0 (10) RESET:TIME: 2019-07-03-23-26-43 + 0 (1) 100 status=discharging health=good plug=none temp=310 volt=4298 charge=-3764 +running +wake_lock +sensor +wifi_radio +phone_scanning +screen phone_state=out +wifi_running +wifi wifi_signal_strength=4 wifi_suppl=completed + 0 (2) 100 proc=u0a9:"com.google.android.apps.turbo" + 0 (2) 100 proc=u0a130:"com.bitbar.testdroid.monitor:monitor" + 0 (2) 100 proc=1000:"WebViewLoader-arm64-v8a" + 0 (2) 100 proc=1000:"com.google.SSRestartDetector" + 0 (2) 100 proc=u0a43:"com.android.defcontainer" + 0 (2) 100 proc=u0a17:"com.google.process.gapps" + 0 (2) 100 proc=u0a104:"com.breel.wallpapers" + 0 (2) 100 proc=1001:"com.android.phone" + 0 (2) 100 proc=u0a28:"com.android.externalstorage" + 0 (2) 100 proc=u0a8:"com.android.vending" + 0 (2) 100 proc=u0a3:"android.process.media" + 0 (2) 100 proc=u0a73:"com.android.chrome" + 0 (2) 100 proc=u0a98:"com.google.android.apps.photos" + 0 (2) 100 proc=1001:"com.google.modemservice" + 0 (2) 100 proc=u0a11:"com.google.android.googlequicksearchbox:interactor" + 0 (2) 100 proc=u0a3:"com.android.mtp" + 0 (2) 100 proc=u0a5:"com.android.documentsui" + 0 (2) 100 proc=1027:"com.android.nfc" + 0 (2) 100 proc=1000:".dataservices" + 0 (2) 100 proc=u0a97:"com.google.android.apps.docs" + 0 (2) 100 proc=u0a17:"com.google.android.gms" + 0 (2) 100 proc=u0a44:"com.google.android.apps.messaging" + 0 (2) 100 proc=u0a57:"com.google.android.apps.gcs" + 0 (2) 100 proc=u0a51:"com.google.android.contacts" + 0 (2) 100 proc=u0a38:"com.android.systemui" + 0 (2) 100 proc=u0a17:"com.google.android.gms.persistent" + 0 (2) 100 proc=u0a130:"com.bitbar.testdroid.monitor:data" + 0 (2) 100 proc=u0a11:"com.google.android.googlequicksearchbox:search" + 0 (2) 100 proc=1001:"com.android.ims.rcsservice" + 0 (2) 100 proc=u0a40:"com.google.intelligence.sense" + 0 (2) 100 proc=u0a130:"com.bitbar.testdroid.monitor" + 0 (2) 100 proc=1001:"com.qualcomm.qcrilmsgtunnel" + 0 (2) 100 proc=u0a73:"com.android.chrome:webview_service" + 0 (2) 100 proc=1002:"com.android.bluetooth" + 0 (2) 100 proc=u0a32:"com.google.android.apps.nexuslauncher" + 0 (2) 100 proc=u0a91:"com.google.android.inputmethod.latin" + 0 (2) 100 proc=1000:"WebViewLoader-armeabi-v7a" + 0 (2) 100 proc=u0a55:"com.verizon.mips.services" + 0 (2) 100 proc=1001:"com.qualcomm.qti.telephonyservice" + 0 (2) 100 top=u0a130:"com.bitbar.testdroid.monitor" + 0 (2) 100 user=0:"0" + 0 (2) 100 userfg=0:"0" + +8ms (2) 100 +wake_lock_in=1002:"bluetooth_timer" + +8ms (2) 100 -wake_lock_in=1002:"bluetooth_timer" + +10ms (2) 100 +wake_lock_in=1001:"RILJ" + +11ms (2) 100 -wake_lock_in=1001:"RILJ" + +11ms (2) 100 stats=0:"dump" + +86ms (2) 100 +proc=u0a9:"com.google.android.apps.turbo" + +86ms (2) 100 +proc=u0a130:"com.bitbar.testdroid.monitor:monitor" + +86ms (2) 100 +proc=1000:"WebViewLoader-arm64-v8a" + +86ms (2) 100 +proc=1000:"com.google.SSRestartDetector" + +86ms (2) 100 +proc=u0a43:"com.android.defcontainer" + +86ms (2) 100 +proc=u0a17:"com.google.process.gapps" + +86ms (2) 100 +proc=u0a104:"com.breel.wallpapers" + +86ms (2) 100 +proc=1001:"com.android.phone" + +86ms (2) 100 +proc=u0a28:"com.android.externalstorage" + +86ms (2) 100 +proc=u0a8:"com.android.vending" + +86ms (2) 100 +proc=u0a3:"android.process.media" + +86ms (2) 100 +proc=u0a73:"com.android.chrome" + +86ms (2) 100 +proc=u0a98:"com.google.android.apps.photos" + +86ms (2) 100 +proc=1001:"com.google.modemservice" + +86ms (2) 100 +proc=u0a11:"com.google.android.googlequicksearchbox:interactor" + +86ms (2) 100 +proc=u0a3:"com.android.mtp" + +86ms (2) 100 +proc=u0a5:"com.android.documentsui" + +86ms (2) 100 +proc=1027:"com.android.nfc" + +86ms (2) 100 +proc=1000:".dataservices" + +86ms (2) 100 +proc=u0a97:"com.google.android.apps.docs" + +86ms (2) 100 +proc=u0a17:"com.google.android.gms" + +86ms (2) 100 +proc=u0a44:"com.google.android.apps.messaging" + +86ms (2) 100 +proc=u0a57:"com.google.android.apps.gcs" + +86ms (2) 100 +proc=u0a51:"com.google.android.contacts" + +86ms (2) 100 +proc=u0a38:"com.android.systemui" + +86ms (2) 100 +proc=u0a17:"com.google.android.gms.persistent" + +86ms (2) 100 +proc=u0a130:"com.bitbar.testdroid.monitor:data" + +86ms (2) 100 +proc=u0a11:"com.google.android.googlequicksearchbox:search" + +86ms (2) 100 +proc=1001:"com.android.ims.rcsservice" + +86ms (2) 100 +proc=u0a40:"com.google.intelligence.sense" + +86ms (2) 100 +proc=u0a130:"com.bitbar.testdroid.monitor" + +86ms (2) 100 +proc=1001:"com.qualcomm.qcrilmsgtunnel" + +86ms (2) 100 +proc=u0a73:"com.android.chrome:webview_service" + +86ms (2) 100 +proc=1002:"com.android.bluetooth" + +86ms (2) 100 +proc=u0a32:"com.google.android.apps.nexuslauncher" + +86ms (2) 100 +proc=u0a91:"com.google.android.inputmethod.latin" + +86ms (2) 100 +proc=1000:"WebViewLoader-armeabi-v7a" + +86ms (2) 100 +proc=u0a55:"com.verizon.mips.services" + +86ms (2) 100 +proc=1001:"com.qualcomm.qti.telephonyservice" + +550ms (2) 100 +wake_lock_in=u0a17:"Wakeful StateMachine: GeofencerStateMachine" + +551ms (2) 100 -wake_lock_in=u0a17:"Wakeful StateMachine: GeofencerStateMachine" + +573ms (2) 100 +wake_lock_in=u0a17:"Icing" + +577ms (2) 100 +wake_lock_in=u0a120:"Icing" + +577ms (2) 100 -wake_lock_in=u0a17:"Icing" + +578ms (2) 100 -wake_lock_in=u0a120:"Icing" + +599ms (2) 100 +wake_lock_in=u0a17:"Icing" + +599ms (2) 100 +wake_lock_in=u0a120:"Icing" + +599ms (2) 100 -wake_lock_in=u0a120:"Icing" + +615ms (2) 100 -wake_lock_in=u0a17:"Icing" + +1s531ms (2) 100 +wake_lock_in=1000:"GnssLocationProvider" + +1s532ms (2) 100 -wake_lock_in=1000:"GnssLocationProvider" + +1s536ms (2) 100 +wake_lock_in=u0a17:"NlpWakeLock" + +1s537ms (2) 100 -wake_lock_in=u0a17:"NlpWakeLock" + +1s537ms (2) 100 +wake_lock_in=u0a17:"NlpWakeLock" + +1s538ms (2) 100 -wake_lock_in=u0a17:"NlpWakeLock" + +1s538ms (2) 100 +wake_lock_in=u0a17:"NlpWakeLock" + +1s538ms (2) 100 -wake_lock_in=u0a17:"NlpWakeLock" + +1s539ms (2) 100 +wake_lock_in=u0a17:"GCoreFlp" + +1s539ms (2) 100 -wake_lock_in=u0a17:"GCoreFlp" + +1s539ms (2) 100 +wake_lock_in=u0a17:"GCoreFlp" + +1s540ms (2) 100 -wake_lock_in=u0a17:"GCoreFlp" + +1s821ms (2) 100 +wake_lock_in=1000:"GnssLocationProvider" + +1s822ms (2) 100 -wake_lock_in=1000:"GnssLocationProvider" + +1s824ms (2) 100 +wake_lock_in=u0a17:"NlpWakeLock" + +1s825ms (2) 100 -wake_lock_in=u0a17:"NlpWakeLock" + +1s825ms (2) 100 +wake_lock_in=u0a17:"NlpWakeLock" + +1s825ms (2) 100 -wake_lock_in=u0a17:"NlpWakeLock" + +1s825ms (2) 100 +wake_lock_in=u0a17:"NlpWakeLock" + +1s826ms (2) 100 -wake_lock_in=u0a17:"NlpWakeLock" + +1s827ms (2) 100 +wake_lock_in=u0a17:"GCoreFlp" + +1s827ms (2) 100 -wake_lock_in=u0a17:"GCoreFlp" + +1s827ms (2) 100 +wake_lock_in=u0a17:"GCoreFlp" + +1s828ms (2) 100 -wake_lock_in=u0a17:"GCoreFlp" + +2s136ms (2) 100 +wake_lock_in=1000:"GnssLocationProvider" + +2s137ms (2) 100 -wake_lock_in=1000:"GnssLocationProvider" + +2s139ms (2) 100 +wake_lock_in=u0a17:"NlpWakeLock" + +2s140ms (2) 100 -wake_lock_in=u0a17:"NlpWakeLock" + +2s140ms (2) 100 +wake_lock_in=u0a17:"NlpWakeLock" + +2s141ms (2) 100 -wake_lock_in=u0a17:"NlpWakeLock" + +2s142ms (2) 100 +wake_lock_in=u0a17:"NlpWakeLock" + +2s142ms (2) 100 -wake_lock_in=u0a17:"NlpWakeLock" + +2s143ms (2) 100 +wake_lock_in=u0a17:"GCoreFlp" + +2s144ms (2) 100 -wake_lock_in=u0a17:"GCoreFlp" + +2s144ms (2) 100 +wake_lock_in=u0a17:"GCoreFlp" + +2s144ms (2) 100 -wake_lock_in=u0a17:"GCoreFlp" + +2s144ms (2) 100 +wake_lock_in=u0a17:"GCoreFlp" + +2s145ms (2) 100 -wake_lock_in=u0a17:"GCoreFlp" + +2s145ms (2) 100 +wake_lock_in=u0a17:"GCoreFlp" + +2s145ms (2) 100 -wake_lock_in=u0a17:"GCoreFlp" + +2s428ms (2) 100 +wake_lock_in=1000:"GnssLocationProvider" + +2s428ms (2) 100 -wake_lock_in=1000:"GnssLocationProvider" + +2s430ms (2) 100 +wake_lock_in=u0a17:"NlpWakeLock" + +2s431ms (2) 100 -wake_lock_in=u0a17:"NlpWakeLock" + +2s431ms (2) 100 +wake_lock_in=u0a17:"NlpWakeLock" + +2s432ms (2) 100 -wake_lock_in=u0a17:"NlpWakeLock" + +2s432ms (2) 100 +wake_lock_in=u0a17:"NlpWakeLock" + +2s434ms (2) 100 -wake_lock_in=u0a17:"NlpWakeLock" + +2s434ms (2) 100 +wake_lock_in=u0a17:"GCoreFlp" + +2s435ms (2) 100 -wake_lock_in=u0a17:"GCoreFlp" + +2s435ms (2) 100 +wake_lock_in=u0a17:"GCoreFlp" + +2s435ms (2) 100 -wake_lock_in=u0a17:"GCoreFlp" + +2s846ms (2) 100 +wake_lock_in=1000:"GnssLocationProvider" + +2s846ms (2) 100 -wake_lock_in=1000:"GnssLocationProvider" + +2s848ms (2) 100 +wake_lock_in=u0a17:"NlpWakeLock" + +2s849ms (2) 100 -wake_lock_in=u0a17:"NlpWakeLock" + +2s850ms (2) 100 +wake_lock_in=u0a17:"NlpWakeLock" + +2s851ms (2) 100 -wake_lock_in=u0a17:"NlpWakeLock" + +2s851ms (2) 100 +wake_lock_in=u0a17:"NlpWakeLock" + +2s852ms (2) 100 -wake_lock_in=u0a17:"NlpWakeLock" + +2s853ms (2) 100 +wake_lock_in=u0a17:"GCoreFlp" + +2s853ms (2) 100 -wake_lock_in=u0a17:"GCoreFlp" + +2s853ms (2) 100 +wake_lock_in=u0a17:"GCoreFlp" + +2s854ms (2) 100 -wake_lock_in=u0a17:"GCoreFlp" + +2s854ms (2) 100 +wake_lock_in=u0a17:"GCoreFlp" + +2s854ms (2) 100 -wake_lock_in=u0a17:"GCoreFlp" + +2s855ms (2) 100 +wake_lock_in=u0a17:"GCoreFlp" + +2s855ms (2) 100 -wake_lock_in=u0a17:"GCoreFlp" + +3s130ms (2) 100 +wake_lock_in=1000:"GnssLocationProvider" + +3s131ms (2) 100 -wake_lock_in=1000:"GnssLocationProvider" + +3s133ms (2) 100 +wake_lock_in=u0a17:"NlpWakeLock" + +3s134ms (2) 100 -wake_lock_in=u0a17:"NlpWakeLock" + +3s134ms (2) 100 +wake_lock_in=u0a17:"NlpWakeLock" + +3s135ms (2) 100 -wake_lock_in=u0a17:"NlpWakeLock" + +3s135ms (2) 100 +wake_lock_in=u0a17:"NlpWakeLock" + +3s136ms (2) 100 -wake_lock_in=u0a17:"NlpWakeLock" + +3s136ms (2) 100 +wake_lock_in=u0a17:"GCoreFlp" + +3s137ms (2) 100 -wake_lock_in=u0a17:"GCoreFlp" + +3s137ms (2) 100 +wake_lock_in=u0a17:"GCoreFlp" + +3s138ms (2) 100 -wake_lock_in=u0a17:"GCoreFlp" + +3s138ms (2) 100 +wake_lock_in=u0a17:"GCoreFlp" + +3s138ms (2) 100 -wake_lock_in=u0a17:"GCoreFlp" + +3s139ms (2) 100 +wake_lock_in=u0a17:"GCoreFlp" + +3s139ms (2) 100 -wake_lock_in=u0a17:"GCoreFlp" + +3s281ms (2) 100 +wake_lock_in=u0a120:"*launch*" + +3s294ms (2) 100 +proc=u0a120:"org.mozilla.geckoview_example" + +3s296ms (2) 100 -top=u0a130:"com.bitbar.testdroid.monitor" + +3s296ms (2) 100 +top=u0a120:"org.mozilla.geckoview_example" + +3s521ms (2) 100 +proc=u0a120:"org.mozilla.geckoview_example:tab" + +3s671ms (2) 100 -wake_lock_in=u0a120:"*launch*" + +16s988ms (2) 100 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +16s988ms (2) 100 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +16s993ms (2) 100 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +16s993ms (2) 100 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +51s283ms (2) 100 temp=320 volt=4253 charge=-3769 + +1m00s378ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +1m00s394ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +1m04s070ms (2) 100 -proc=u0a130:"com.bitbar.testdroid.monitor:monitor" + +1m16s988ms (2) 100 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +1m16s988ms (2) 100 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +1m16s992ms (2) 100 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +1m16s992ms (2) 100 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +1m29s680ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +1m29s703ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +1m54s059ms (2) 100 +alarm=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +1m54s059ms (2) 100 +wake_lock_in=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +1m54s059ms (2) 100 -alarm=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +1m54s059ms (2) 100 +wifi_scan -wake_lock_in=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +1m54s422ms (1) 100 -wifi_scan + +1m56s873ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +1m56s895ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +2m16s988ms (2) 100 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +2m16s988ms (2) 100 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +2m16s995ms (2) 100 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +2m16s995ms (2) 100 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +2m17s001ms (2) 100 -proc=u0a51:"com.google.android.contacts" + +2m26s300ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +2m26s323ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +2m58s481ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +2m58s502ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +3m16s988ms (2) 100 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +3m16s988ms (2) 100 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +3m16s988ms (2) 100 +alarm=1000:"*walarm*:ScheduleConditionProvider.EVALUATE" + +3m16s992ms (2) 100 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +3m16s994ms (2) 100 -alarm=1000:"*walarm*:ScheduleConditionProvider.EVALUATE" + +3m16s994ms (2) 100 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +3m29s593ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +3m29s614ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +3m59s622ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +3m59s644ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +4m09s040ms (2) 100 +alarm=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +4m09s040ms (2) 100 +wake_lock_in=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +4m09s040ms (2) 100 -alarm=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +4m09s040ms (2) 100 -wake_lock_in=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +4m16s988ms (2) 100 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +4m16s988ms (2) 100 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +4m16s992ms (2) 100 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +4m16s992ms (2) 100 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +4m29s890ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +4m29s912ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +5m00s949ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +5m00s972ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +5m16s988ms (2) 100 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +5m16s988ms (2) 100 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +5m16s992ms (2) 100 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +5m16s992ms (2) 100 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +5m30s885ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +5m30s906ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +5m44s809ms (2) 100 +alarm=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +5m44s809ms (2) 100 +wake_lock_in=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +5m44s809ms (2) 100 +alarm=u0a11:"*walarm*:*job.delay*" + +5m44s809ms (2) 100 +alarm=u0a17:"*walarm*:com.google.android.gms.gcm.ACTION_CHECK_QUEUE" + +5m44s810ms (2) 100 -alarm=u0a11:"*walarm*:*job.delay*" + +5m44s810ms (2) 100 -wake_lock_in=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +5m44s810ms (2) 100 +wake_lock_in=1000:"*alarm*" + +5m44s810ms (2) 100 -alarm=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +5m44s810ms (2) 100 -wake_lock_in=1000:"*alarm*" + +5m44s811ms (2) 100 +wake_lock_in=u0a17:"*alarm*" + +5m44s811ms (2) 100 +wake_lock_in=u0a17:"*net_scheduler*" + +5m44s815ms (2) 100 +job=u0a11:"com.google.android.googlequicksearchbox/com.google.android.apps.gsa.tasks.BackgroundTasksJobService" + +5m44s815ms (2) 100 -alarm=u0a17:"*walarm*:com.google.android.gms.gcm.ACTION_CHECK_QUEUE" + +5m44s815ms (2) 100 +wifi_scan -wake_lock_in=u0a17:"*alarm*" + +5m44s815ms (2) 100 +wake_lock_in=u0a11:"*job*/com.google.android.googlequicksearchbox/com.google.android.apps.gsa.tasks.BackgroundTasksJobService" + +5m44s821ms (2) 100 +wake_lock_in=u0a57:"*net_scheduler*" + +5m44s829ms (2) 100 -wake_lock_in=u0a17:"*net_scheduler*" + +5m44s838ms (2) 100 -job=u0a11:"com.google.android.googlequicksearchbox/com.google.android.apps.gsa.tasks.BackgroundTasksJobService" + +5m44s838ms (2) 100 -wake_lock_in=u0a11:"*job*/com.google.android.googlequicksearchbox/com.google.android.apps.gsa.tasks.BackgroundTasksJobService" + +5m44s845ms (2) 100 -wake_lock_in=u0a57:"*net_scheduler*" + +5m44s846ms (2) 100 +wake_lock_in=u0a17:"*net_scheduler*" + +5m44s848ms (2) 100 -wake_lock_in=u0a17:"*net_scheduler*" + +5m44s849ms (2) 100 +wake_lock_in=u0a17:"*net_scheduler*" + +5m44s858ms (2) 100 +wake_lock_in=u0a17:"*gms_scheduler*/com.google.android.gms/.icing.service.IcingGcmTaskService" + +5m44s869ms (2) 100 +wake_lock_in=u0a17:"*gms_scheduler*/com.google.android.gms/.stats.PlatformStatsCollectorService" + +5m44s874ms (2) 100 +wake_lock_in=u0a17:"Icing" + +5m44s878ms (2) 100 -wake_lock_in=u0a17:"*net_scheduler*" + +5m44s878ms (2) 100 -wake_lock_in=u0a17:"*gms_scheduler*/com.google.android.gms/.icing.service.IcingGcmTaskService" + +5m44s878ms (2) 100 +wake_lock_in=u0a17:"*net_scheduler*" + +5m44s880ms (2) 100 -wake_lock_in=u0a17:"*net_scheduler*" + +5m44s905ms (2) 100 -wake_lock_in=u0a17:"Icing" + +5m44s935ms (2) 100 -wake_lock_in=u0a17:"*gms_scheduler*/com.google.android.gms/.stats.PlatformStatsCollectorService" + +5m44s935ms (2) 100 +wake_lock_in=u0a17:"*net_scheduler*" + +5m44s953ms (2) 100 -wifi_scan -wake_lock_in=u0a17:"*net_scheduler*" + +6m00s025ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +6m00s041ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +6m16s988ms (2) 100 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +6m16s988ms (2) 100 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +6m16s992ms (2) 100 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +6m16s992ms (2) 100 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +6m30s246ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +6m30s268ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +6m59s525ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +6m59s546ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +7m16s988ms (2) 100 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +7m16s988ms (2) 100 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +7m16s992ms (2) 100 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +7m16s992ms (2) 100 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +7m29s644ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +7m29s666ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +7m32s266ms (2) 100 temp=340 volt=4228 charge=-3810 + +8m00s046ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +8m00s068ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +8m16s988ms (2) 100 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +8m16s988ms (2) 100 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +8m16s992ms (2) 100 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +8m16s992ms (2) 100 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +8m30s401ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +8m30s424ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +8m59s175ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +8m59s197ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +9m09s056ms (2) 100 +alarm=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +9m09s056ms (2) 100 +wake_lock_in=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +9m09s056ms (2) 100 -alarm=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +9m09s056ms (2) 100 -wake_lock_in=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +9m16s988ms (2) 100 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +9m16s988ms (2) 100 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +9m16s992ms (2) 100 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +9m16s992ms (2) 100 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +9m18s804ms (2) 100 +alarm=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +9m18s804ms (2) 100 +wake_lock_in=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +9m18s804ms (2) 100 +alarm=u0a11:"*walarm*:*job.delay*" + +9m18s804ms (2) 100 -alarm=u0a11:"*walarm*:*job.delay*" + +9m18s804ms (2) 100 -wake_lock_in=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +9m18s804ms (2) 100 +wake_lock_in=1000:"*alarm*" + +9m18s805ms (2) 100 -alarm=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +9m18s805ms (2) 100 -wake_lock_in=1000:"*alarm*" + +9m18s808ms (2) 100 +wifi_scan +job=u0a11:"com.google.android.googlequicksearchbox/com.google.android.apps.gsa.tasks.BackgroundTasksJobService" + +9m18s809ms (2) 100 +wake_lock_in=u0a11:"*job*/com.google.android.googlequicksearchbox/com.google.android.apps.gsa.tasks.BackgroundTasksJobService" + +9m18s811ms (2) 100 -job=u0a11:"com.google.android.googlequicksearchbox/com.google.android.apps.gsa.tasks.BackgroundTasksJobService" + +9m18s811ms (2) 100 -wake_lock_in=u0a11:"*job*/com.google.android.googlequicksearchbox/com.google.android.apps.gsa.tasks.BackgroundTasksJobService" + +9m18s821ms (2) 100 +alarm=u0a11:"*walarm*:*job.delay*" + +9m18s821ms (2) 100 +wake_lock_in=u0a11:"*walarm*:*job.delay*" + +9m18s821ms (2) 100 -alarm=u0a11:"*walarm*:*job.delay*" + +9m18s821ms (2) 100 -wake_lock_in=u0a11:"*walarm*:*job.delay*" + +9m18s824ms (2) 100 +job=u0a11:"com.google.android.googlequicksearchbox/com.google.android.apps.gsa.tasks.BackgroundTasksJobService" + +9m18s825ms (2) 100 +wake_lock_in=u0a11:"*job*/com.google.android.googlequicksearchbox/com.google.android.apps.gsa.tasks.BackgroundTasksJobService" + +9m18s828ms (2) 100 -job=u0a11:"com.google.android.googlequicksearchbox/com.google.android.apps.gsa.tasks.BackgroundTasksJobService" + +9m18s828ms (2) 100 -wifi_scan -wake_lock_in=u0a11:"*job*/com.google.android.googlequicksearchbox/com.google.android.apps.gsa.tasks.BackgroundTasksJobService" + +9m30s121ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +9m30s135ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +10m01s059ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +10m01s082ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +10m16s988ms (2) 100 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +10m16s988ms (2) 100 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +10m16s992ms (2) 100 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +10m16s992ms (2) 100 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +10m33s762ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +10m33s783ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +11m05s912ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +11m05s932ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +11m07s265ms (2) 100 temp=350 charge=-3831 + +11m16s988ms (2) 100 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +11m16s988ms (2) 100 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +11m16s992ms (2) 100 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +11m16s993ms (2) 100 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +11m38s129ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +11m38s153ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +11m58s804ms (2) 100 +alarm=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +11m58s804ms (2) 100 +wake_lock_in=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +11m58s804ms (2) 100 -alarm=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +11m58s804ms (2) 100 +wifi_scan -wake_lock_in=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +11m59s028ms (1) 100 -wifi_scan + +12m09s853ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +12m09s867ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +12m16s988ms (2) 100 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +12m16s988ms (2) 100 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +12m16s992ms (2) 100 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +12m16s992ms (2) 100 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +12m41s590ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +12m41s612ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +13m14s287ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +13m14s301ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +13m16s988ms (2) 100 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +13m16s988ms (2) 100 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +13m16s995ms (2) 100 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +13m16s995ms (2) 100 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +13m16s999ms (2) 100 -proc=u0a73:"com.android.chrome:webview_service" + +13m46s367ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +13m46s388ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +14m03s019ms (2) 100 +wake_lock_in=1002:"bluetooth_timer" + +14m03s023ms (2) 100 -wake_lock_in=1002:"bluetooth_timer" + +14m03s024ms (2) 100 +wake_lock_in=1002:"bluetooth_timer" + +14m03s025ms (2) 100 -wake_lock_in=1002:"bluetooth_timer" + +14m03s026ms (2) 100 +wake_lock_in=1002:"bluetooth_timer" + +14m03s026ms (2) 100 -wake_lock_in=1002:"bluetooth_timer" + +14m03s027ms (2) 100 +wake_lock_in=1002:"bluetooth_timer" + +14m03s027ms (2) 100 -wake_lock_in=1002:"bluetooth_timer" + +14m03s028ms (2) 100 +wake_lock_in=1002:"bluetooth_timer" + +14m03s028ms (2) 100 -wake_lock_in=1002:"bluetooth_timer" + +14m09s090ms (2) 100 +alarm=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +14m09s090ms (2) 100 +wake_lock_in=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +14m09s090ms (2) 100 -alarm=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +14m09s090ms (2) 100 -wake_lock_in=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +14m16s988ms (2) 100 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +14m16s988ms (2) 100 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +14m16s991ms (2) 100 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +14m16s991ms (2) 100 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +14m18s313ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +14m18s335ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +14m50s541ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +14m50s564ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +15m16s988ms (2) 100 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +15m16s988ms (2) 100 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +15m16s992ms (2) 100 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +15m16s992ms (2) 100 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +15m22s173ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +15m22s187ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +15m50s769ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +15m50s792ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +16m01s608ms (1) 100 wifi_suppl=group-handshake + +16m01s609ms (2) 100 wifi_suppl=completed +wake_lock_in=1000:"IpReachabilityMonitor.wlan0" + +16m05s113ms (2) 100 -wake_lock_in=1000:"IpReachabilityMonitor.wlan0" + +16m16s988ms (2) 100 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +16m16s988ms (2) 100 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +16m16s992ms (2) 100 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +16m16s992ms (2) 100 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +16m19s710ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +16m19s732ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +16m24s795ms (2) 100 +alarm=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +16m24s795ms (2) 100 +wake_lock_in=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +16m24s795ms (2) 100 +alarm=u0a11:"*walarm*:*job.deadline*" + +16m24s795ms (2) 100 +alarm=u0a11:"*walarm*:*job.delay*" + +16m24s795ms (2) 100 -alarm=u0a11:"*walarm*:*job.deadline*" + +16m24s795ms (2) 100 -wake_lock_in=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +16m24s795ms (2) 100 +wake_lock_in=1000:"*alarm*" + +16m24s796ms (2) 100 -alarm=1000:"*walarm*:WifiConnectivityManager Schedule Periodic Scan Timer" + +16m24s796ms (2) 100 -wake_lock_in=1000:"*alarm*" + +16m24s796ms (2) 100 +wake_lock_in=u0a11:"*alarm*" + +16m24s796ms (2) 100 -alarm=u0a11:"*walarm*:*job.delay*" + +16m24s796ms (2) 100 -wake_lock_in=u0a11:"*alarm*" + +16m24s799ms (2) 100 +job=u0a11:"com.google.android.googlequicksearchbox/com.google.android.apps.gsa.tasks.BackgroundTasksJobService" + +16m24s800ms (2) 100 +wifi_scan +wake_lock_in=u0a11:"*job*/com.google.android.googlequicksearchbox/com.google.android.apps.gsa.tasks.BackgroundTasksJobService" + +16m24s814ms (2) 100 -job=u0a11:"com.google.android.googlequicksearchbox/com.google.android.apps.gsa.tasks.BackgroundTasksJobService" + +16m24s814ms (2) 100 -wifi_scan -wake_lock_in=u0a11:"*job*/com.google.android.googlequicksearchbox/com.google.android.apps.gsa.tasks.BackgroundTasksJobService" + +16m46s860ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +16m46s883ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +17m15s487ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +17m15s509ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +17m16s988ms (2) 100 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +17m16s988ms (2) 100 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +17m16s993ms (2) 100 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +17m16s993ms (2) 100 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +17m32s266ms (2) 100 volt=4198 charge=-3871 + +17m42s713ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +17m42s735ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +18m10s985ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +18m11s007ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +18m11s015ms (2) 100 temp=360 charge=-3875 + +18m16s988ms (2) 100 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +18m16s988ms (2) 100 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +18m16s992ms (2) 100 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +18m16s992ms (2) 100 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +18m41s948ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +18m41s971ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +19m09s103ms (2) 100 +alarm=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +19m09s103ms (2) 100 +wake_lock_in=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +19m09s103ms (2) 100 -alarm=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +19m09s103ms (2) 100 -wake_lock_in=1000:"*walarm*:DhcpClient.wlan0.RENEW" + +19m10s212ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +19m10s236ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +19m16s988ms (2) 100 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +19m16s988ms (2) 100 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +19m16s992ms (2) 100 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +19m16s992ms (2) 100 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +19m38s467ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +19m38s489ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +20m07s414ms (2) 100 +wake_lock_in=1000:"NetworkStats" + +20m07s436ms (2) 100 -wake_lock_in=1000:"NetworkStats" + +20m16s988ms (2) 100 +alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +20m16s988ms (2) 100 +wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +20m16s992ms (2) 100 -alarm=1000:"*alarm*:android.intent.action.TIME_TICK" + +20m16s992ms (2) 100 -wake_lock_in=1000:"*alarm*:android.intent.action.TIME_TICK" + +20m36s876ms (2) 100 -proc=u0a120:"org.mozilla.geckoview_example:tab" + +20m36s885ms (2) 100 -proc=u0a120:"org.mozilla.geckoview_example" + +20m36s890ms (2) 100 -top=u0a120:"org.mozilla.geckoview_example" + +20m36s890ms (2) 100 +top=u0a130:"com.bitbar.testdroid.monitor" + +20m37s324ms (2) 100 +wake_lock_in=1002:"bluetooth_timer" + +20m37s325ms (2) 100 +wake_lock_in=1001:"RILJ" + +20m37s326ms (2) 100 -wake_lock_in=1001:"RILJ" + +20m37s328ms (2) 100 -wake_lock_in=1002:"bluetooth_timer" + +20m37s329ms (2) 100 stats=0:"dump" + +20m37s426ms (2) 100 +wake_lock_in=1001:"RILJ" + +20m37s427ms (2) 100 +wake_lock_in=1002:"bluetooth_timer" + +20m37s427ms (2) 100 -wake_lock_in=1002:"bluetooth_timer" + +20m37s427ms (2) 100 -wake_lock_in=1001:"RILJ" + +20m37s428ms (2) 100 stats=0:"dump" + +Per-PID Stats: + PID 1195 wake time: +4s424ms + PID 1636 wake time: +3ms + PID 1358 wake time: +9ms + PID 1195 wake time: +42ms + PID 1195 wake time: +4ms + PID 1697 wake time: +151ms + PID 2580 wake time: +56ms + PID 1697 wake time: +24ms + PID 1195 wake time: +390ms + PID 2580 wake time: +38ms + +Daily stats: + Current start time: 2019-07-03-01-04-33 + Next min deadline: 2019-07-04-01-00-00 + Next max deadline: 2019-07-04-03-00-00 + Current daily discharge step durations: + #0: +17m18s990ms to 98 (screen-on, power-save-off, device-idle-off) + #1: +5m46s407ms to 96 (screen-on, power-save-off, device-idle-off) + #2: +10m34s926ms to 97 (screen-on, power-save-off, device-idle-off) + #3: +3m34s468ms to 98 (screen-on, power-save-off, device-idle-off) + #4: +2m23s419ms to 91 (screen-on, power-save-off, device-idle-off) + #5: +3m22s332ms to 92 (screen-on, power-save-off, device-idle-off) + #6: +4m14s249ms to 93 (screen-on, power-save-off, device-idle-off) + #7: +2m55s259ms to 94 (screen-on, power-save-off, device-idle-off) + #8: +1m2s155ms to 95 (screen-on, power-save-off, device-idle-off) + #9: +3m39s810ms to 95 (screen-on, power-save-off, device-idle-off) + #10: +3m26s392ms to 96 (screen-on, power-save-off, device-idle-off) + #11: +4m8s330ms to 97 (screen-on, power-save-off, device-idle-off) + #12: +2m50s719ms to 98 (screen-on, power-save-off, device-idle-off) + #13: +2m45s46ms to 97 (screen-on, power-save-off, device-idle-off) + #14: +2m42s993ms to 98 (screen-on, power-save-off, device-idle-off) + #15: +3m31s821ms to 95 (screen-on, power-save-off, device-idle-off) + #16: +4m52s748ms to 96 (screen-on, power-save-off, device-idle-off) + #17: +4m14s919ms to 97 (screen-on, power-save-off, device-idle-off) + #18: +4m16s376ms to 98 (screen-on, power-save-off, device-idle-off) + Discharge total time: 7h 41m 31s 300ms (from 19 steps) + Discharge screen on time: 7h 41m 31s 300ms (from 19 steps) + Package changes: + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.fennec_aurora vers=2015638179 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.fenix.performancetest vers=1 + Update org.mozilla.fenix.performancetest vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Daily from 2019-07-02-03-23-11 to 2019-07-03-01-04-33: + Discharge step durations: + #0: +2m45s319ms to 93 (screen-on, power-save-off, device-idle-off) + #1: +2m24s418ms to 94 (screen-on, power-save-off, device-idle-off) + #2: +3m41s447ms to 95 (screen-on, power-save-off, device-idle-off) + #3: +3m54s135ms to 96 (screen-on, power-save-off, device-idle-off) + #4: +3m41s862ms to 97 (screen-on, power-save-off, device-idle-off) + #5: +1m34s316ms to 98 (screen-on, power-save-off, device-idle-off) + #6: +3m57s43ms to 98 (screen-on, power-save-off, device-idle-off) + #7: +3m17s714ms to 97 (screen-on, power-save-off, device-idle-off) + #8: +9m32s931ms to 98 (screen-on, power-save-off, device-idle-off) + #9: +5m12s597ms to 98 (screen-on, power-save-off, device-idle-off) + #10: +2m29s58ms to 96 (screen-on, power-save-off, device-idle-off) + #11: +3m48s85ms to 97 (screen-on, power-save-off, device-idle-off) + #12: +2m34s604ms to 93 (screen-on, power-save-off, device-idle-off) + #13: +3m34s318ms to 94 (screen-on, power-save-off, device-idle-off) + #14: +7m8s85ms to 95 (screen-on, power-save-off, device-idle-off) + #15: +3m32s299ms to 96 (screen-on, power-save-off, device-idle-off) + #16: +3m32s298ms to 96 (screen-on, power-save-off, device-idle-off) + #17: +4m31s208ms to 97 (screen-on, power-save-off, device-idle-off) + #18: +3m13s603ms to 98 (screen-on, power-save-off, device-idle-off) + #19: +2m46s110ms to 98 (screen-on, power-save-off, device-idle-off) + #20: +4m52s196ms to 98 (screen-on, power-save-off, device-idle-off) + Discharge total time: 6h 30m 45s 900ms (from 21 steps) + Discharge screen on time: 6h 30m 45s 900ms (from 21 steps) + Package changes: + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Daily from 2019-07-01-03-35-11 to 2019-07-02-03-23-11: + Discharge step durations: + #0: +6m2s535ms to 97 (screen-on, power-save-off, device-idle-off) + #1: +3m4s836ms to 98 (screen-on, power-save-off, device-idle-off) + #2: +1m13s52ms to 68 (screen-on, power-save-off, device-idle-off) + #3: +2m4s712ms to 69 (screen-on, power-save-off, device-idle-off) + #4: +3m37s26ms to 70 (screen-on, power-save-off, device-idle-off) + #5: +4m18s262ms to 71 (screen-on, power-save-off, device-idle-off) + #6: +1m16s800ms to 72 (screen-on, power-save-off, device-idle-off) + #7: +3m22s458ms to 73 (screen-on, power-save-off, device-idle-off) + #8: +2m47s281ms to 73 (screen-on, power-save-off, device-idle-off) + #9: +4m10s509ms to 74 (screen-on, power-save-off, device-idle-off) + #10: +3m4s765ms to 75 (screen-on, power-save-off, device-idle-off) + #11: +2m44s726ms to 76 (screen-on, power-save-off, device-idle-off) + #12: +1m56s818ms to 77 (screen-on, power-save-off, device-idle-off) + #13: +5m40s82ms to 78 (screen-on, power-save-off, device-idle-off) + #14: +4m8s691ms to 78 (screen-on, power-save-off, device-idle-off) + #15: +6m43s275ms to 79 (screen-on, power-save-off, device-idle-off) + #16: +4m46s223ms to 80 (screen-on, power-save-off, device-idle-off) + #17: +4m28s985ms to 80 (screen-on, power-save-off, device-idle-off) + #18: +6m56s180ms to 81 (screen-on, power-save-off, device-idle-off) + #19: +4m58s871ms to 82 (screen-on, power-save-off, device-idle-off) + #20: +6m16s664ms to 83 (screen-on, power-save-off, device-idle-off) + #21: +7m11s674ms to 84 (screen-on, power-save-off, device-idle-off) + #22: +4m14s758ms to 85 (screen-on, power-save-off, device-idle-off) + #23: +1m27s936ms to 85 (screen-on, power-save-off, device-idle-off) + #24: +3m35s269ms to 86 (screen-on, power-save-off, device-idle-off) + #25: +3m23s134ms to 87 (screen-on, power-save-off, device-idle-off) + #26: +3m23s133ms to 87 (screen-on, power-save-off, device-idle-off) + #27: +5m57s139ms to 90 (screen-on, power-save-off, device-idle-off) + #28: +4m18s563ms to 91 (screen-on, power-save-off, device-idle-off) + #29: +4m18s563ms to 91 (screen-on, power-save-off, device-idle-off) + #30: +2m0s21ms to 93 (screen-on, power-save-off, device-idle-off) + #31: +2m5s829ms to 94 (screen-on, power-save-off, device-idle-off) + #32: +2m5s788ms to 95 (screen-on, power-save-off, device-idle-off) + #33: +2m11s596ms to 96 (screen-on, power-save-off, device-idle-off) + #34: +4m49s265ms to 97 (screen-on, power-save-off, device-idle-off) + #35: +1m59s680ms to 98 (screen-on, power-save-off, device-idle-off) + #36: +7m42s296ms to 98 (screen-on, power-save-off, device-idle-off) + #37: +1m43s441ms to 93 (screen-on, power-save-off, device-idle-off) + #38: +4m4s515ms to 94 (screen-on, power-save-off, device-idle-off) + #39: +3m55s401ms to 95 (screen-on, power-save-off, device-idle-off) + #40: +2m0s111ms to 96 (screen-on, power-save-off, device-idle-off) + #41: +2m46s11ms to 97 (screen-on, power-save-off, device-idle-off) + #42: +4m27s285ms to 96 (screen-on, power-save-off, device-idle-off) + #43: +4m34s315ms to 97 (screen-on, power-save-off, device-idle-off) + #44: +4m11s312ms to 98 (screen-on, power-save-off, device-idle-off) + Discharge total time: 6h 22m 35s 0ms (from 45 steps) + Discharge screen on time: 6h 22m 35s 0ms (from 45 steps) + Charge step durations: + #0: +1m29s593ms to 89 (screen-on, power-save-off, device-idle-off) + #1: +1m28s198ms to 88 (screen-on, power-save-off, device-idle-off) + #2: +1m14s166ms to 87 (screen-on, power-save-off, device-idle-off) + #3: +1m17s637ms to 86 (screen-on, power-save-off, device-idle-off) + #4: +1m5s8ms to 85 (screen-on, power-save-off, device-idle-off) + #5: +55s529ms to 84 (screen-on, power-save-off, device-idle-off) + #6: +1m1s213ms to 83 (screen-on, power-save-off, device-idle-off) + #7: +1m1s214ms to 82 (screen-on, power-save-off, device-idle-off) + #8: +59s763ms to 81 (screen-on, power-save-off, device-idle-off) + #9: +59s762ms to 80 (screen-on, power-save-off, device-idle-off) + #10: +58s311ms to 79 (screen-on, power-save-off, device-idle-off) + #11: +59s201ms to 78 (screen-on, power-save-off, device-idle-off) + #12: +59s999ms to 77 (screen-on, power-save-off, device-idle-off) + #13: +59s999ms to 76 (screen-on, power-save-off, device-idle-off) + #14: +33s637ms to 75 (screen-on, power-save-off, device-idle-off) + #15: +46s660ms to 74 (screen-on, power-save-off, device-idle-off) + #16: +48s129ms to 73 (screen-on, power-save-off, device-idle-off) + #17: +51s574ms to 72 (screen-on, power-save-off, device-idle-off) + Charge total time: 1h 42m 44s 400ms (from 18 steps) + Charge screen on time: 1h 42m 44s 400ms (from 18 steps) + Package changes: + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.fenix.performancetest vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.fenix.performancetest vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.fenix.performancetest vers=1 + Update org.mozilla.fenix.performancetest vers=1 + Update org.mozilla.fenix.performancetest vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update com.android.vending vers=81532000 + Update com.android.vending vers=81532000 + Update com.google.android.videos vers=41200081 + Update com.google.android.videos vers=41200081 + Update com.google.android.youtube vers=1425573400 + Update com.google.android.youtube vers=1425573400 + Daily from 2019-06-30-03-51-31 to 2019-07-01-03-35-11: + Discharge step durations: + #0: +3m13s628ms to 98 (screen-on, power-save-off, device-idle-off) + #1: +2m47s696ms to 96 (screen-on, power-save-off, device-idle-off) + #2: +5m12s215ms to 97 (screen-on, power-save-off, device-idle-off) + #3: +4m12s528ms to 98 (screen-on, power-save-off, device-idle-off) + Discharge total time: 6h 25m 51s 600ms (from 4 steps) + Discharge screen on time: 6h 25m 51s 600ms (from 4 steps) + Package changes: + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update com.google.android.apps.maps vers=1019101040 + Update com.google.android.apps.maps vers=1019101040 + Daily from 2019-06-29-03-53-42 to 2019-06-30-03-51-31: + Discharge step durations: + #0: +3m42s886ms to 89 (screen-on, power-save-off, device-idle-off) + #1: +3m47s101ms to 90 (screen-on, power-save-off, device-idle-off) + #2: +2m42s264ms to 91 (screen-on, power-save-off, device-idle-off) + #3: +3m16s737ms to 92 (screen-on, power-save-off, device-idle-off) + #4: +1m31s889ms to 93 (screen-on, power-save-off, device-idle-off) + #5: +2m52s192ms to 93 (screen-on, power-save-off, device-idle-off) + #6: +3m32s783ms to 94 (screen-on, power-save-off, device-idle-off) + #7: +4m26s509ms to 96 (screen-on, power-save-off, device-idle-off) + #8: +4m9s160ms to 97 (screen-on, power-save-off, device-idle-off) + #9: +2m1s431ms to 98 (screen-on, power-save-off, device-idle-off) + #10: +7m36s775ms to 98 (screen-on, power-save-off, device-idle-off) + #11: +6m48s278ms to 98 (screen-on, power-save-off, device-idle-off) + Discharge total time: 6h 27m 13s 300ms (from 12 steps) + Discharge screen on time: 6h 27m 13s 300ms (from 12 steps) + Package changes: + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Daily from 2019-06-28-04-56-52 to 2019-06-29-03-53-42: + Discharge step durations: + #0: +5m36s159ms to 98 (screen-on, power-save-off, device-idle-off) + #1: +7m12s201ms to 91 (screen-on, power-save-off, device-idle-off) + #2: +6m34s890ms to 92 (screen-on, power-save-off, device-idle-off) + #3: +3m29s703ms to 93 (screen-on, power-save-off, device-idle-off) + #4: +3m29s722ms to 94 (screen-on, power-save-off, device-idle-off) + #5: +4m26s849ms to 95 (screen-on, power-save-off, device-idle-off) + #6: +1m41s616ms to 96 (screen-on, power-save-off, device-idle-off) + #7: +3m10s764ms to 97 (screen-on, power-save-off, device-idle-off) + #8: +4m36s578ms to 95 (screen-on, power-save-off, device-idle-off) + #9: +5m2s511ms to 96 (screen-on, power-save-off, device-idle-off) + #10: +3m26s952ms to 97 (screen-on, power-save-off, device-idle-off) + #11: +3m59s764ms to 96 (screen-on, power-save-off, device-idle-off) + #12: +6m41s143ms to 97 (screen-on, power-save-off, device-idle-off) + #13: +5m0s149ms to 98 (screen-on, power-save-off, device-idle-off) + #14: +1m13s423ms to 98 (screen-on, power-save-off, device-idle-off) + #15: +2m53s851ms to 96 (screen-on, power-save-off, device-idle-off) + #16: +5m5s897ms to 97 (screen-on, power-save-off, device-idle-off) + #17: +5m18s969ms to 98 (screen-on, power-save-off, device-idle-off) + #18: +12m43s982ms to 98 (screen-on, power-save-off, device-idle-off) + Discharge total time: 8h 2m 54s 300ms (from 19 steps) + Discharge screen on time: 8h 2m 54s 300ms (from 19 steps) + Package changes: + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.reference.browser.raptor vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.fenix.performancetest vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.reference.browser.raptor vers=1 + Update org.mozilla.fenix.performancetest vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.fenix.performancetest vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.fenix.performancetest vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update com.google.android.apps.photos vers=4846885 + Update com.google.android.apps.photos vers=4846885 + Daily from 2019-06-27-04-41-44 to 2019-06-28-04-56-52: + Discharge step durations: + #0: +2m48s271ms to 98 (screen-on, power-save-off, device-idle-off) + #1: +6m23s489ms to 92 (screen-on, power-save-off, device-idle-off) + #2: +5m36s548ms to 93 (screen-on, power-save-off, device-idle-off) + #3: +5m35s928ms to 94 (screen-on, power-save-off, device-idle-off) + #4: +6m14s349ms to 95 (screen-on, power-save-off, device-idle-off) + #5: +3m1s825ms to 96 (screen-on, power-save-off, device-idle-off) + #6: +4m0s433ms to 97 (screen-on, power-save-off, device-idle-off) + #7: +3m57s910ms to 98 (screen-on, power-save-off, device-idle-off) + #8: +4m19s103ms to 98 (screen-on, power-save-off, device-idle-off) + #9: +2m9s929ms to 96 (screen-on, power-save-off, device-idle-off) + #10: +4m13s353ms to 97 (screen-on, power-save-off, device-idle-off) + #11: +6m9s802ms to 98 (screen-on, power-save-off, device-idle-off) + Discharge total time: 7h 34m 17s 800ms (from 12 steps) + Discharge screen on time: 7h 34m 17s 800ms (from 12 steps) + Package changes: + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.fenix.raptor vers=1 + Update org.mozilla.reference.browser.raptor vers=1 + Update org.mozilla.fennec_aurora vers=2015636979 + Update org.mozilla.reference.browser.raptor vers=1 + Update org.mozilla.fenix.performancetest vers=1 + Update org.mozilla.fenix.performancetest vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Daily from 2019-06-26-04-29-41 to 2019-06-27-04-41-44: + Discharge step durations: + #0: +3m14s655ms to 90 (screen-on, power-save-off, device-idle-off) + #1: +3m37s34ms to 91 (screen-on, power-save-off, device-idle-off) + #2: +3m37s61ms to 92 (screen-on, power-save-off, device-idle-off) + #3: +3m42s890ms to 93 (screen-on, power-save-off, device-idle-off) + #4: +3m38s537ms to 94 (screen-on, power-save-off, device-idle-off) + #5: +2m22s824ms to 95 (screen-on, power-save-off, device-idle-off) + #6: +3m37s54ms to 96 (screen-on, power-save-off, device-idle-off) + #7: +4m19s284ms to 97 (screen-on, power-save-off, device-idle-off) + #8: +5m8s753ms to 98 (screen-on, power-save-off, device-idle-off) + #9: +4m44s170ms to 98 (screen-on, power-save-off, device-idle-off) + #10: +3m53s227ms to 98 (screen-on, power-save-off, device-idle-off) + Discharge total time: 6h 21m 8s 0ms (from 11 steps) + Discharge screen on time: 6h 21m 8s 0ms (from 11 steps) + Package changes: + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update com.google.android.gms vers=17785028 + Update com.google.android.gms vers=17785028 + Daily from 2019-06-25-01-29-55 to 2019-06-26-04-29-41: + Discharge step durations: + #0: +5m4s365ms to 95 (screen-on, power-save-off, device-idle-off) + #1: +6m38s468ms to 96 (screen-on, power-save-off, device-idle-off) + #2: +4m27s81ms to 97 (screen-on, power-save-off, device-idle-off) + #3: +7m5s799ms to 98 (screen-on, power-save-off, device-idle-off) + #4: +6m59s932ms to 98 (screen-on, power-save-off, device-idle-off) + #5: +3m44s382ms to 96 (screen-on, power-save-off, device-idle-off) + #6: +5m21s802ms to 97 (screen-on, power-save-off, device-idle-off) + #7: +5m31s978ms to 98 (screen-on, power-save-off, device-idle-off) + Discharge total time: 9h 21m 12s 500ms (from 8 steps) + Discharge screen on time: 9h 21m 12s 500ms (from 8 steps) + Package changes: + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update com.google.android.youtube vers=1424573400 + Update com.google.android.youtube vers=1424573400 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Daily from 2019-06-24-04-15-14 to 2019-06-25-01-29-55: + Discharge step durations: + #0: +7m38s303ms to 30 (screen-on, power-save-off, device-idle-off) + #1: +5m0s60ms to 31 (screen-on, power-save-off, device-idle-off) + #2: +6m43s705ms to 32 (screen-on, power-save-off, device-idle-off) + #3: +2m44s678ms to 29 (screen-on, power-save-off, device-idle-off) + #4: +4m59s474ms to 30 (screen-on, power-save-off, device-idle-off) + #5: +2m0s119ms to 31 (screen-on, power-save-off, device-idle-off) + #6: +5m23s389ms to 32 (screen-on, power-save-off, device-idle-off) + #7: +5m0s221ms to 31 (screen-on, power-save-off, device-idle-off) + #8: +7m41s899ms to 32 (screen-on, power-save-off, device-idle-off) + #9: +4m0s137ms to 33 (screen-on, power-save-off, device-idle-off) + #10: +4m1s434ms to 30 (screen-on, power-save-off, device-idle-off) + #11: +3m46s629ms to 31 (screen-on, power-save-off, device-idle-off) + #12: +5m52s478ms to 32 (screen-on, power-save-off, device-idle-off) + #13: +4m42s916ms to 33 (screen-on, power-save-off, device-idle-off) + #14: +1m13s100ms to 34 (screen-on, power-save-off, device-idle-off) + #15: +3m47s79ms to 35 (screen-on, power-save-off, device-idle-off) + #16: +3m2s287ms to 36 (screen-on, power-save-off, device-idle-off) + #17: +3m31s244ms to 37 (screen-on, power-save-off, device-idle-off) + #18: +3m21s24ms to 38 (screen-on, power-save-off, device-idle-off) + #19: +3m43s831ms to 39 (screen-on, power-save-off, device-idle-off) + #20: +5m0s99ms to 40 (screen-on, power-save-off, device-idle-off) + #21: +6m3s936ms to 41 (screen-on, power-save-off, device-idle-off) + #22: +3m57s614ms to 42 (screen-on, power-save-off, device-idle-off) + #23: +3m41s455ms to 43 (screen-on, power-save-off, device-idle-off) + #24: +3m53s96ms to 44 (screen-on, power-save-off, device-idle-off) + #25: +3m39s995ms to 45 (screen-on, power-save-off, device-idle-off) + #26: +3m42s902ms to 46 (screen-on, power-save-off, device-idle-off) + #27: +3m8s680ms to 47 (screen-on, power-save-off, device-idle-off) + #28: +1m55s475ms to 47 (screen-on, power-save-off, device-idle-off) + #29: +2m46s252ms to 49 (screen-on, power-save-off, device-idle-off) + #30: +3m32s704ms to 50 (screen-on, power-save-off, device-idle-off) + #31: +3m41s454ms to 51 (screen-on, power-save-off, device-idle-off) + #32: +3m35s630ms to 52 (screen-on, power-save-off, device-idle-off) + #33: +3m49s170ms to 53 (screen-on, power-save-off, device-idle-off) + #34: +1m23s33ms to 53 (screen-on, power-save-off, device-idle-off) + #35: +2m50s144ms to 54 (screen-on, power-save-off, device-idle-off) + #36: +2m57s597ms to 55 (screen-on, power-save-off, device-idle-off) + #37: +3m12s291ms to 56 (screen-on, power-save-off, device-idle-off) + #38: +3m50s111ms to 57 (screen-on, power-save-off, device-idle-off) + #39: +2m35s951ms to 58 (screen-on, power-save-off, device-idle-off) + #40: +5m2s243ms to 59 (screen-on, power-save-off, device-idle-off) + #41: +3m30s969ms to 60 (screen-on, power-save-off, device-idle-off) + #42: +5m11s982ms to 61 (screen-on, power-save-off, device-idle-off) + #43: +3m36s661ms to 62 (screen-on, power-save-off, device-idle-off) + #44: +5m0s199ms to 63 (screen-on, power-save-off, device-idle-off) + #45: +1m23s997ms to 62 (screen-on, power-save-off, device-idle-off) + #46: +4m13s108ms to 50 (screen-on, power-save-off, device-idle-off) + #47: +2m43s605ms to 51 (screen-on, power-save-off, device-idle-off) + #48: +3m4s644ms to 52 (screen-on, power-save-off, device-idle-off) + #49: +2m24s227ms to 53 (screen-on, power-save-off, device-idle-off) + #50: +4m11s71ms to 54 (screen-on, power-save-off, device-idle-off) + #51: +5m12s975ms to 55 (screen-on, power-save-off, device-idle-off) + #52: +2m25s611ms to 56 (screen-on, power-save-off, device-idle-off) + #53: +4m19s83ms to 57 (screen-on, power-save-off, device-idle-off) + #54: +2m17s31ms to 58 (screen-on, power-save-off, device-idle-off) + #55: +1m56s610ms to 58 (screen-on, power-save-off, device-idle-off) + #56: +4m1s267ms to 59 (screen-on, power-save-off, device-idle-off) + #57: +1m20s78ms to 60 (screen-on, power-save-off, device-idle-off) + #58: +2m20s87ms to 61 (screen-on, power-save-off, device-idle-off) + #59: +3m49s576ms to 61 (screen-on, power-save-off, device-idle-off) + #60: +1m51s913ms to 62 (screen-on, power-save-off, device-idle-off) + #61: +3m24s48ms to 63 (screen-on, power-save-off, device-idle-off) + #62: +4m57s644ms to 64 (screen-on, power-save-off, device-idle-off) + #63: +3m37s998ms to 65 (screen-on, power-save-off, device-idle-off) + #64: +3m24s273ms to 65 (screen-on, power-save-off, device-idle-off) + #65: +5m10s852ms to 66 (screen-on, power-save-off, device-idle-off) + #66: +3m23s224ms to 67 (screen-on, power-save-off, device-idle-off) + #67: +2m39s990ms to 67 (screen-on, power-save-off, device-idle-off) + #68: +4m48s291ms to 68 (screen-on, power-save-off, device-idle-off) + #69: +2m49s16ms to 69 (screen-on, power-save-off, device-idle-off) + #70: +3m48s746ms to 70 (screen-on, power-save-off, device-idle-off) + #71: +2m22s174ms to 71 (screen-on, power-save-off, device-idle-off) + #72: +3m3s623ms to 71 (screen-on, power-save-off, device-idle-off) + #73: +2m32s594ms to 72 (screen-on, power-save-off, device-idle-off) + #74: +2m51s738ms to 73 (screen-on, power-save-off, device-idle-off) + #75: +2m38s626ms to 73 (screen-on, power-save-off, device-idle-off) + #76: +3m48s313ms to 74 (screen-on, power-save-off, device-idle-off) + #77: +4m54s489ms to 75 (screen-on, power-save-off, device-idle-off) + #78: +3m53s181ms to 75 (screen-on, power-save-off, device-idle-off) + #79: +1m30s807ms to 76 (screen-on, power-save-off, device-idle-off) + #80: +3m37s439ms to 77 (screen-on, power-save-off, device-idle-off) + #81: +1m32s353ms to 78 (screen-on, power-save-off, device-idle-off) + #82: +3m6s72ms to 78 (screen-on, power-save-off, device-idle-off) + #83: +5m18s82ms to 79 (screen-on, power-save-off, device-idle-off) + #84: +1m40s559ms to 80 (screen-on, power-save-off, device-idle-off) + #85: +4m51s163ms to 81 (screen-on, power-save-off, device-idle-off) + #86: +3m9s384ms to 82 (screen-on, power-save-off, device-idle-off) + #87: +3m54s805ms to 83 (screen-on, power-save-off, device-idle-off) + #88: +4m38s236ms to 84 (screen-on, power-save-off, device-idle-off) + #89: +3m0s160ms to 85 (screen-on, power-save-off, device-idle-off) + #90: +3m7s81ms to 85 (screen-on, power-save-off, device-idle-off) + #91: +3m57s420ms to 86 (screen-on, power-save-off, device-idle-off) + #92: +4m0s362ms to 87 (screen-on, power-save-off, device-idle-off) + #93: +3m55s976ms to 88 (screen-on, power-save-off, device-idle-off) + #94: +3m47s223ms to 89 (screen-on, power-save-off, device-idle-off) + #95: +3m47s296ms to 88 (screen-on, power-save-off, device-idle-off) + #96: +4m1s850ms to 89 (screen-on, power-save-off, device-idle-off) + #97: +4m0s439ms to 90 (screen-on, power-save-off, device-idle-off) + #98: +3m48s662ms to 86 (screen-on, power-save-off, device-idle-off) + #99: +4m4s644ms to 87 (screen-on, power-save-off, device-idle-off) + #100: +4m40s388ms to 88 (screen-on, power-save-off, device-idle-off) + #101: +3m52s207ms to 89 (screen-on, power-save-off, device-idle-off) + #102: +3m46s553ms to 90 (screen-on, power-save-off, device-idle-off) + #103: +2m11s105ms to 85 (screen-on, power-save-off, device-idle-off) + #104: +3m9s753ms to 86 (screen-on, power-save-off, device-idle-off) + #105: +2m57s666ms to 87 (screen-on, power-save-off, device-idle-off) + #106: +5m10s775ms to 88 (screen-on, power-save-off, device-idle-off) + #107: +3m21s421ms to 89 (screen-on, power-save-off, device-idle-off) + #108: +4m11s832ms to 90 (screen-on, power-save-off, device-idle-off) + #109: +2m34s418ms to 91 (screen-on, power-save-off, device-idle-off) + #110: +2m27s672ms to 92 (screen-on, power-save-off, device-idle-off) + #111: +4m32s561ms to 92 (screen-on, power-save-off, device-idle-off) + #112: +6m0s366ms to 93 (screen-on, power-save-off, device-idle-off) + #113: +3m0s55ms to 93 (screen-on, power-save-off, device-idle-off) + #114: +5m49s976ms to 94 (screen-on, power-save-off, device-idle-off) + #115: +6m46s380ms to 95 (screen-on, power-save-off, device-idle-off) + #116: +2m0s123ms to 96 (screen-on, power-save-off, device-idle-off) + #117: +3m27s490ms to 96 (screen-on, power-save-off, device-idle-off) + #118: +4m43s851ms to 97 (screen-on, power-save-off, device-idle-off) + #119: +4m32s477ms to 98 (screen-on, power-save-off, device-idle-off) + #120: +3m20s908ms to 98 (screen-on, power-save-off, device-idle-off) + Discharge total time: 6h 11m 8s 800ms (from 121 steps) + Discharge screen on time: 6h 11m 8s 800ms (from 121 steps) + Charge step durations: + #0: +2m0s3ms to 89 (screen-on, power-save-off, device-idle-off) + #1: +1m0s0ms to 88 (screen-on, power-save-off, device-idle-off) + #2: +1m3s876ms to 87 (screen-on, power-save-off, device-idle-off) + #3: +1m50s500ms to 86 (screen-on, power-save-off, device-idle-off) + #4: +1m5s621ms to 85 (screen-on, power-save-off, device-idle-off) + #5: +1m0s4ms to 84 (screen-on, power-save-off, device-idle-off) + #6: +59s997ms to 83 (screen-on, power-save-off, device-idle-off) + #7: +1m0s0ms to 82 (screen-on, power-save-off, device-idle-off) + #8: +59s999ms to 81 (screen-on, power-save-off, device-idle-off) + #9: +1m0s1ms to 80 (screen-on, power-save-off, device-idle-off) + #10: +1m0s1ms to 79 (screen-on, power-save-off, device-idle-off) + #11: +59s998ms to 78 (screen-on, power-save-off, device-idle-off) + #12: +1m0s0ms to 77 (screen-on, power-save-off, device-idle-off) + #13: +1m54s445ms to 76 (screen-on, power-save-off, device-idle-off) + #14: +5s558ms to 75 (screen-on, power-save-off, device-idle-off) + #15: +59s999ms to 74 (screen-on, power-save-off, device-idle-off) + #16: +59s999ms to 73 (screen-on, power-save-off, device-idle-off) + #17: +1m0s1ms to 72 (screen-on, power-save-off, device-idle-off) + #18: +59s998ms to 71 (screen-on, power-save-off, device-idle-off) + #19: +1m0s1ms to 70 (screen-on, power-save-off, device-idle-off) + #20: +1m0s1ms to 69 (screen-on, power-save-off, device-idle-off) + #21: +59s998ms to 68 (screen-on, power-save-off, device-idle-off) + #22: +1m0s3ms to 67 (screen-on, power-save-off, device-idle-off) + #23: +59s999ms to 66 (screen-on, power-save-off, device-idle-off) + #24: +1m0s432ms to 65 (screen-on, power-save-off, device-idle-off) + #25: +48s85ms to 64 (screen-on, power-save-off, device-idle-off) + #26: +48s84ms to 64 (screen-on, power-save-off, device-idle-off) + #27: +23s397ms to 62 (screen-on, power-save-off, device-idle-off) + #28: +1m12s771ms to 61 (screen-on, power-save-off, device-idle-off) + #29: +23s616ms to 60 (screen-on, power-save-off, device-idle-off) + #30: +23s615ms to 60 (screen-on, power-save-off, device-idle-off) + #31: +59s999ms to 58 (screen-on, power-save-off, device-idle-off) + #32: +1m0s1ms to 57 (screen-on, power-save-off, device-idle-off) + #33: +1m10s288ms to 56 (screen-on, power-save-off, device-idle-off) + #34: +45s167ms to 55 (screen-on, power-save-off, device-idle-off) + #35: +45s167ms to 55 (screen-on, power-save-off, device-idle-off) + #36: +19s378ms to 53 (screen-on, power-save-off, device-idle-off) + #37: +1m10s945ms to 52 (screen-on, power-save-off, device-idle-off) + #38: +45s892ms to 51 (screen-on, power-save-off, device-idle-off) + #39: +45s892ms to 51 (screen-on, power-save-off, device-idle-off) + #40: +17s271ms to 49 (screen-on, power-save-off, device-idle-off) + #41: +59s997ms to 48 (screen-on, power-save-off, device-idle-off) + #42: +15s985ms to 47 (screen-on, power-save-off, device-idle-off) + #43: +46s622ms to 46 (screen-on, power-save-off, device-idle-off) + #44: +1m33s232ms to 45 (screen-on, power-save-off, device-idle-off) + #45: +24s164ms to 44 (screen-on, power-save-off, device-idle-off) + #46: +1m9s84ms to 43 (screen-on, power-save-off, device-idle-off) + #47: +51s725ms to 42 (screen-on, power-save-off, device-idle-off) + #48: +51s725ms to 42 (screen-on, power-save-off, device-idle-off) + #49: +7s467ms to 40 (screen-on, power-save-off, device-idle-off) + #50: +1m33s81ms to 39 (screen-on, power-save-off, device-idle-off) + #51: +26s917ms to 38 (screen-on, power-save-off, device-idle-off) + #52: +1m12s176ms to 37 (screen-on, power-save-off, device-idle-off) + #53: +49s552ms to 36 (screen-on, power-save-off, device-idle-off) + #54: +46s645ms to 35 (screen-on, power-save-off, device-idle-off) + #55: +46s644ms to 35 (screen-on, power-save-off, device-idle-off) + #56: +24s985ms to 33 (screen-on, power-save-off, device-idle-off) + #57: +12s917ms to 35 (screen-on, power-save-off, device-idle-off) + #58: +1m42s262ms to 34 (screen-on, power-save-off, device-idle-off) + #59: +17s731ms to 33 (screen-on, power-save-off, device-idle-off) + #60: +1m28s779ms to 32 (screen-on, power-save-off, device-idle-off) + #61: +53s939ms to 35 (screen-on, power-save-off, device-idle-off) + #62: +53s938ms to 35 (screen-on, power-save-off, device-idle-off) + #63: +11s957ms to 33 (screen-on, power-save-off, device-idle-off) + #64: +25s481ms to 64 (screen-on, power-save-off, device-idle-off) + #65: +50s240ms to 61 (screen-on, power-save-off, device-idle-off) + #66: +35s794ms to 60 (screen-on, power-save-off, device-idle-off) + #67: +45s241ms to 59 (screen-on, power-save-off, device-idle-off) + #68: +48s163ms to 56 (screen-on, power-save-off, device-idle-off) + #69: +1m18s660ms to 89 (screen-on, power-save-off, device-idle-off) + #70: +28s146ms to 89 (screen-on, power-save-off, device-idle-off) + Charge total time: 1h 28m 34s 400ms (from 71 steps) + Charge screen on time: 1h 28m 34s 400ms (from 71 steps) + Package changes: + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.fennec_aurora vers=2015636403 + Update org.mozilla.fenix.raptor vers=1 + Update org.mozilla.reference.browser vers=11281213 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.reference.browser vers=11281214 + Update org.mozilla.fennec_aurora vers=2015636403 + Update org.mozilla.reference.browser vers=11281213 + Update org.mozilla.fennec_aurora vers=2015636401 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.fenix.raptor vers=1 + Update org.mozilla.reference.browser vers=11281213 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.fenix.raptor vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.fennec_aurora vers=2015636401 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.fenix.raptor vers=1 + Update org.mozilla.fenix.raptor vers=1 + Update org.mozilla.fenix.raptor vers=1 + Update org.mozilla.fennec_aurora vers=2015636403 + Update org.mozilla.fennec_aurora vers=2015636403 + Update org.mozilla.fenix.raptor vers=1 + Update org.mozilla.fenix.raptor vers=1 + Update org.mozilla.fenix.raptor vers=1 + Update org.mozilla.fennec_aurora vers=2015636401 + Update org.mozilla.reference.browser.raptor vers=1 + Update org.mozilla.fennec_aurora vers=2015636441 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.reference.browser.raptor vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.fennec_aurora vers=2015636457 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.fenix.performancetest vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.fenix.performancetest vers=1 + Update org.mozilla.reference.browser.raptor vers=1 + Update org.mozilla.geckoview_example vers=1 + Update com.android.chrome vers=377010137 + Update com.android.chrome vers=377010137 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.reference.browser.raptor vers=1 + Daily from 2019-06-23-04-45-02 to 2019-06-24-04-15-14: + Discharge step durations: + #0: +2m47s180ms to 91 (screen-on, power-save-off, device-idle-off) + #1: +3m45s842ms to 92 (screen-on, power-save-off, device-idle-off) + #2: +3m44s384ms to 93 (screen-on, power-save-off, device-idle-off) + #3: +3m37s80ms to 94 (screen-on, power-save-off, device-idle-off) + #4: +2m50s673ms to 95 (screen-on, power-save-off, device-idle-off) + #5: +2m44s669ms to 96 (screen-on, power-save-off, device-idle-off) + #6: +4m35s281ms to 97 (screen-on, power-save-off, device-idle-off) + #7: +2m40s50ms to 98 (screen-on, power-save-off, device-idle-off) + #8: +3m10s7ms to 97 (screen-on, power-save-off, device-idle-off) + #9: +4m38s222ms to 98 (screen-on, power-save-off, device-idle-off) + Discharge total time: 5h 45m 33s 800ms (from 10 steps) + Discharge screen on time: 5h 45m 33s 800ms (from 10 steps) + Package changes: + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + Update org.mozilla.geckoview_example vers=1 + +Statistics since last charge: + System starts: 0, currently on battery: true + Estimated battery capacity: 2700 mAh + Min learned battery capacity: 2606 mAh + Max learned battery capacity: 2606 mAh + Time on battery: 20m 37s 454ms (100.0%) realtime, 20m 37s 454ms (100.0%) uptime + Time on battery screen off: 0ms (0.0%) realtime, 0ms (0.0%) uptime + Total run time: 20m 37s 471ms realtime, 20m 37s 471ms uptime + Discharge: 111 mAh + Screen off discharge: 0 mAh + Screen on discharge: 111 mAh + Start clock time: 2019-07-03-23-26-42 + Screen on: 20m 37s 454ms (100.0%) 0x, Interactive: 20m 37s 454ms (100.0%) + Screen brightnesses: + dark 20m 37s 454ms (100.0%) + Total full wakelock time: 1m 4s 45ms + Mobile total received: 0B, sent: 0B (packets received 0, sent 0) + Phone signal levels: + none 20m 37s 454ms (100.0%) 0x + Signal scanning time: 20m 37s 454ms + Radio types: (no activity) + Mobile radio active time: 0ms (0.0%) 0x + Radio Idle time: 40m 21s 575ms (99.3%) + Radio Rx time: 16s 999ms (0.7%) + Radio Tx time: 0ms (0.0%) + [0] 0ms (--%) + [1] 0ms (--%) + [2] 0ms (--%) + [3] 0ms (--%) + [4] 0ms (--%) + Radio Power drain: 0mAh + Wi-Fi total received: 19.20MB, sent: 60.76MB (packets received 264638, sent 265477) + Wifi on: 20m 37s 454ms (100.0%), Wifi running: 20m 37s 454ms (100.0%) + Wifi states: + sta 20m 37s 454ms (100.0%) 0x + Wifi supplicant states: + group-handshake 1ms (0.0%) 1x + completed 20m 37s 453ms (100.0%) 1x + Wifi signal levels: + level(4) 20m 37s 454ms (100.0%) 0x + WiFi Idle time: 18m 37s 949ms (96.8%) + WiFi Rx time: 5s 410ms (0.5%) + WiFi Tx time: 32s 105ms (2.8%) + WiFi Power drain: 2.69mAh + Bluetooth total received: 0B, sent: 0B + Bluetooth scan time: 0ms + Bluetooth Idle time: 707ms (2.7%) + Bluetooth Rx time: 25s 583ms (97.3%) + Bluetooth Tx time: 0ms (0.0%) + Bluetooth Power drain: 0.157mAh + + Device battery use since last full charge + Amount discharged (lower bound): 0 + Amount discharged (upper bound): 0 + Amount discharged while screen on: 0 + Amount discharged while screen off: 0 + + Estimated power use (mAh): + Capacity: 2700, Computed drain: 71.8, actual drain: 0 + Screen: 51.7 Excluded from smearing + Uid 2000: 5.01 ( cpu=2.75 wifi=2.26 ) Excluded from smearing + Uid u0a120: 4.70 ( cpu=4.70 wifi=0.000556 ) Including smearing: 67.4 ( screen=51.5 proportional=11.2 ) + Cell standby: 3.78 ( radio=3.78 ) Excluded from smearing + Idle: 2.48 Excluded from smearing + Uid 1036: 1.80 ( cpu=1.80 ) Excluded from smearing + Uid 0: 0.937 ( cpu=0.936 wifi=0.000556 ) Excluded from smearing + Wifi: 0.501 ( cpu=0.0673 wifi=0.433 ) Including smearing: 0.600 ( proportional=0.0998 ) + Uid u0a55: 0.303 ( cpu=0.303 wifi=0.000208 ) Including smearing: 0.363 ( proportional=0.0604 ) + Uid 1000: 0.278 ( cpu=0.244 sensor=0.0344 ) Excluded from smearing + Bluetooth: 0.157 ( cpu=0.000645 bt=0.157 ) Including smearing: 0.189 ( proportional=0.0314 ) + Uid u0a17: 0.107 ( cpu=0.0215 sensor=0.0859 ) Excluded from smearing + Uid u0a38: 0.0136 ( cpu=0.0129 sensor=0.000687 ) Excluded from smearing + Uid u0a130: 0.00669 ( cpu=0.00669 ) Including smearing: 0.200 ( screen=0.160 proportional=0.0332 ) + Uid 1001: 0.00411 ( cpu=0.00411 ) Excluded from smearing + Uid u0a11: 0.00276 ( cpu=0.00276 ) Including smearing: 0.00331 ( proportional=0.000550 ) + Uid 1027: 0.00106 ( cpu=0.00106 ) Excluded from smearing + Uid u0a98: 0.000821 ( cpu=0.000821 ) Including smearing: 0.000985 ( proportional=0.000164 ) + Uid u0a8: 0.000762 ( cpu=0.000762 ) Including smearing: 0.000915 ( proportional=0.000152 ) + Uid u0a9: 0.000762 ( cpu=0.000762 ) Including smearing: 0.000915 ( proportional=0.000152 ) + Uid 1017: 0.000411 ( cpu=0.000411 ) Excluded from smearing + Uid 1021: 0.000411 ( cpu=0.000411 ) Excluded from smearing + Uid u0a91: 0.000411 ( cpu=0.000411 ) Including smearing: 0.000492 ( proportional=0.0000819 ) + Uid 1013: 0.000352 ( cpu=0.000352 ) Excluded from smearing + Uid u0a43: 0.000352 ( cpu=0.000352 ) Including smearing: 0.000422 ( proportional=0.0000702 ) + Uid u0a57: 0.000176 ( cpu=0.000176 ) Excluded from smearing + Uid u0a97: 0.000176 ( cpu=0.000176 ) Including smearing: 0.000211 ( proportional=0.0000351 ) + +Memory Stats + 0: + Wi-Fi network: 1.36KB received, 5.87KB sent (packets 19 received, 71 sent) + WiFi Idle time: 0ms (0.0%) + WiFi Rx time: 0ms (0.0%) + WiFi Tx time: 8ms (100.0%) + WiFi Power drain: 0mAh + Total cpu time: u=1s 186ms s=14s 774ms + Proc android.hardware.wifi@1.0-service: + CPU: 340ms usr + 370ms krn ; 0ms fg + Proc kworker/u16:7: + CPU: 0ms usr + 1s 340ms krn ; 0ms fg + Proc kworker/u16:5: + CPU: 0ms usr + 90ms krn ; 0ms fg + Proc kworker/u16:3: + CPU: 0ms usr + 70ms krn ; 0ms fg + Proc kworker/u16:0: + CPU: 0ms usr + 1s 0ms krn ; 0ms fg + Proc wpa_supplicant: + CPU: 10ms usr + 10ms krn ; 0ms fg + Proc ksoftirqd/5: + CPU: 0ms usr + 100ms krn ; 0ms fg + Proc ksoftirqd/4: + CPU: 0ms usr + 460ms krn ; 0ms fg + Proc ksoftirqd/3: + CPU: 0ms usr + 610ms krn ; 0ms fg + Proc ksoftirqd/2: + CPU: 0ms usr + 40ms krn ; 0ms fg + Proc ksoftirqd/1: + CPU: 0ms usr + 580ms krn ; 0ms fg + Proc ksoftirqd/0: + CPU: 0ms usr + 160ms krn ; 0ms fg + Proc msm_watchdog: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc rcuop/7: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc rcuop/6: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc rcuop/5: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc rcuop/4: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc rcuop/2: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc rcuop/1: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc rcuop/0: + CPU: 0ms usr + 100ms krn ; 0ms fg + Proc kworker/7:0: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc kworker/5:3: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc kworker/4:2: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc kworker/4:0: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc kworker/3:2: + CPU: 0ms usr + 30ms krn ; 0ms fg + Proc kworker/3:0: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc kworker/2:4: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc kworker/2:3: + CPU: 0ms usr + 480ms krn ; 0ms fg + Proc kworker/1:2: + CPU: 0ms usr + 80ms krn ; 0ms fg + Proc kworker/0:4: + CPU: 0ms usr + 330ms krn ; 0ms fg + Proc kworker/0:2: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc wlan_logging_th: + CPU: 0ms usr + 60ms krn ; 0ms fg + Proc jbd2/sda45-8: + CPU: 0ms usr + 50ms krn ; 0ms fg + Proc hwrng: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc rcu_preempt: + CPU: 0ms usr + 70ms krn ; 0ms fg + Proc vold: + CPU: 10ms usr + 20ms krn ; 0ms fg + Proc netd: + CPU: 10ms usr + 10ms krn ; 0ms fg + Proc logd: + CPU: 5s 20ms usr + 15s 630ms krn ; 0ms fg + Proc lmkd: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc adbd: + CPU: 2s 660ms usr + 18s 650ms krn ; 0ms fg + Proc surfaceflinger: + CPU: 70ms usr + 80ms krn ; 0ms fg + Proc magisk_daemon: + CPU: 10ms usr + 0ms krn ; 0ms fg + Proc smem_native_rpm: + CPU: 0ms usr + 110ms krn ; 0ms fg + Proc ueventd: + CPU: 10ms usr + 0ms krn ; 0ms fg + Proc zygote: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc msm_irqbalance: + CPU: 40ms usr + 630ms krn ; 0ms fg + Proc system: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc logcat: + CPU: 730ms usr + 1s 890ms krn ; 0ms fg + Proc mdss_fb0: + CPU: 0ms usr + 90ms krn ; 0ms fg + Proc android.hardware.usb@1.1-service.wahoo: + CPU: 10ms usr + 0ms krn ; 0ms fg + Proc irq/35-1008000.: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc cds_mc_thread: + CPU: 0ms usr + 410ms krn ; 0ms fg + 1000: + Wi-Fi network: 1.28KB received, 1.24KB sent (packets 4 received, 4 sent) + Wake lock *alarm* realtime + Wake lock NetworkStats realtime + Wake lock GnssLocationProvider realtime + Wake lock IpReachabilityMonitor.wlan0 realtime + Sensor 7: 20m 37s 450ms realtime (0 times) + Fg Service for: 20m 37s 450ms + Total running: 20m 37s 450ms + Total cpu time: u=2s 133ms s=2s 20ms + Proc android.hardware.memtrack@1.0-service: + CPU: 20ms usr + 10ms krn ; 0ms fg + Proc .dataservices: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc servicemanager: + CPU: 10ms usr + 20ms krn ; 0ms fg + Proc sensors.qcom: + CPU: 0ms usr + 20ms krn ; 0ms fg + Proc android.hardware.graphics.composer@2.1-service: + CPU: 50ms usr + 90ms krn ; 0ms fg + Proc system: + CPU: 1s 570ms usr + 1s 350ms krn ; 0ms fg + Proc android.hardware.power@1.1-service.wahoo: + CPU: 0ms usr + 20ms krn ; 0ms fg + Proc android.hardware.sensors@1.0-service: + CPU: 30ms usr + 90ms krn ; 0ms fg + Apk android: + Wakeup alarm *walarm*:ScheduleConditionProvider.EVALUATE: 1 times + Wakeup alarm *walarm*:WifiConnectivityManager Schedule Periodic Scan Timer: 5 times + Wakeup alarm *walarm*:DhcpClient.wlan0.RENEW: 4 times + 1001: + Wake lock RILJ realtime + Fg Service for: 20m 37s 449ms + Total running: 20m 37s 449ms + Total cpu time: u=50ms s=20ms + Proc com.android.phone: + CPU: 10ms usr + 10ms krn ; 0ms fg + Proc ipacm: + CPU: 0ms usr + 10ms krn ; 0ms fg + Proc rild: + CPU: 10ms usr + 10ms krn ; 0ms fg + 1002: + Wake lock bluetooth_timer realtime + Foreground for: 20m 37s 449ms + Total running: 20m 37s 449ms + Total cpu time: u=7ms s=4ms + Proc com.android.bluetooth: + CPU: 10ms usr + 0ms krn ; 0ms fg + 1010: + Wifi Running: 0ms (0.0%) + Full Wifi Lock: 0ms (0.0%) + Wifi Scan (blamed): 1s 259ms (0.1%) 5x + Wifi Scan (actual): 1s 259ms (0.1%) 5x + Background Wifi Scan: 0ms (0.0%) 0x + WiFi Idle time: 0ms (0.0%) + WiFi Rx time: 1s 259ms (50.0%) + WiFi Tx time: 1s 259ms (50.0%) + WiFi Power drain: 0mAh + Total cpu time: u=537ms s=610ms + Proc wificond: + CPU: 10ms usr + 70ms krn ; 0ms fg + 1013: + Total cpu time: u=0ms s=6ms + Proc mediaserver: + CPU: 0ms usr + 10ms krn ; 0ms fg + 1017: + Total cpu time: u=0ms s=7ms + (nothing executed) + 1021: + Total cpu time: u=3ms s=4ms + Proc lowi-server: + CPU: 0ms usr + 10ms krn ; 0ms fg + 1027: + Fg Service for: 20m 37s 445ms + Total running: 20m 37s 445ms + Total cpu time: u=14ms s=4ms + Proc com.android.nfc: + CPU: 10ms usr + 0ms krn ; 0ms fg + 1036: + Total cpu time: u=7s 726ms s=22s 987ms + (nothing executed) + 2000: + Wi-Fi network: 19.19MB received, 60.74MB sent (packets 264527 received, 265285 sent) + WiFi Idle time: 0ms (0.0%) + WiFi Rx time: 4s 149ms (11.9%) + WiFi Tx time: 30s 823ms (88.1%) + WiFi Power drain: 0mAh + Total cpu time: u=12s 40ms s=34s 910ms + Proc logcat: + CPU: 4s 100ms usr + 3s 950ms krn ; 0ms fg + u0a3: + Cached for: 20m 37s 441ms + Total running: 20m 37s 441ms + u0a5: + Background for: 1ms + Cached for: 20m 37s 440ms + Total running: 20m 37s 441ms + u0a8: + Wi-Fi network: 104B received, 374B sent (packets 2 received, 6 sent) + Cached for: 20m 37s 440ms + Total running: 20m 37s 440ms + Total cpu time: u=13ms s=0ms + Proc com.android.vending: + CPU: 40ms usr + 10ms krn ; 0ms fg + u0a9: + Background for: 20m 37s 440ms + Total running: 20m 37s 440ms + Total cpu time: u=10ms s=3ms + Proc com.google.android.apps.turbo: + CPU: 10ms usr + 20ms krn ; 0ms fg + Apk com.google.android.apps.turbo: + Service com.google.android.apps.turbo.database.BatteryHistoryLoggerService: + Created for: 16ms uptime + Starts: 5, launches: 5 + u0a11: + Wake lock *alarm* realtime + Wake lock *job*/com.google.android.googlequicksearchbox/com.google.android.apps.gsa.tasks.BackgroundTasksJobService realtime + Job com.google.android.googlequicksearchbox/com.google.android.apps.gsa.tasks.BackgroundTasksJobService: 45ms realtime (4 times) + Fg Service for: 20m 37s 440ms + Total running: 20m 37s 440ms + Total cpu time: u=37ms s=10ms + Proc com.google.android.googlequicksearchbox:search: + CPU: 40ms usr + 20ms krn ; 0ms fg + Apk android: + Wakeup alarm *walarm*:*job.delay*: 4 times + Wakeup alarm *walarm*:*job.deadline*: 1 times + Apk com.google.android.googlequicksearchbox: + Service com.google.android.apps.gsa.tasks.BackgroundTasksJobService: + Created for: 0ms uptime + Starts: 0, launches: 4 + u0a17: + Wi-Fi network: 52B received, 187B sent (packets 1 received, 3 sent) + Wake lock *net_scheduler* realtime + Wake lock GCoreFlp realtime + Wake lock NlpWakeLock realtime + Wake lock *gms_scheduler*/com.google.android.gms/.stats.PlatformStatsCollectorService realtime + Wake lock *alarm* realtime + Wake lock Wakeful StateMachine: GeofencerStateMachine realtime + Wake lock Icing realtime + Wake lock *gms_scheduler*/com.google.android.gms/.icing.service.IcingGcmTaskService realtime + Sensor 17: 20m 37s 440ms realtime (0 times) + Fg Service for: 20m 37s 440ms + Total running: 20m 37s 440ms + Total cpu time: u=303ms s=63ms + Proc com.google.process.gapps: + CPU: 30ms usr + 10ms krn ; 0ms fg + Proc com.google.android.gms: + CPU: 140ms usr + 20ms krn ; 0ms fg + Proc com.google.android.gms.persistent: + CPU: 290ms usr + 70ms krn ; 0ms fg + Apk com.google.android.gms: + Wakeup alarm *walarm*:com.google.android.gms.gcm.ACTION_CHECK_QUEUE: 1 times + Service com.google.android.gms.wearable.service.WearableControlService: + Created for: 16ms uptime + Starts: 1, launches: 1 + Service com.google.android.gms.config.ConfigService: + Created for: 16ms uptime + Starts: 1, launches: 1 + Service com.google.android.gms.stats.PlatformStatsCollectorService: + Created for: 0ms uptime + Starts: 0, launches: 1 + Service com.google.android.gms.icing.service.IndexWorkerService: + Created for: 84ms uptime + Starts: 2, launches: 2 + Service com.google.android.gms.chimera.PersistentIntentOperationService: + Created for: 7s 11ms uptime + Starts: 1, launches: 1 + Service com.google.android.gms.chimera.GmsIntentOperationService: + Created for: 7s 53ms uptime + Starts: 1, launches: 1 + Service com.google.android.gms.icing.service.IcingGcmTaskService: + Created for: 0ms uptime + Starts: 0, launches: 1 + u0a28: + Cached for: 20m 37s 438ms + Total running: 20m 37s 438ms + u0a32: + Fg Service for: 20m 37s 438ms + Total running: 20m 37s 438ms + u0a38: + Sensor 24: 20m 37s 438ms realtime (0 times) + Sensor 28: 20m 37s 438ms realtime (0 times) + Fg Service for: 20m 37s 438ms + Total running: 20m 37s 438ms + Total cpu time: u=203ms s=17ms + Proc com.android.systemui: + CPU: 150ms usr + 20ms krn ; 0ms fg + u0a40: + Fg Service for: 20m 37s 438ms + Total running: 20m 37s 438ms + u0a43: + Foreground for: 5ms + Cached for: 20m 37s 433ms + Total running: 20m 37s 438ms + Total cpu time: u=6ms s=0ms + Proc com.android.defcontainer: + CPU: 10ms usr + 0ms krn ; 0ms fg + Apk com.android.defcontainer: + Service com.android.defcontainer.DefaultContainerService: + Created for: 0ms uptime + Starts: 0, launches: 1 + u0a44: + Cached for: 20m 37s 438ms + Total running: 20m 37s 438ms + u0a51: + Cached for: 2m 16s 985ms + Total running: 2m 16s 985ms + u0a55: + Wi-Fi network: 2.31KB received, 3.42KB sent (packets 24 received, 33 sent) + WiFi Idle time: 0ms (0.0%) + WiFi Rx time: 0ms (0.0%) + WiFi Tx time: 3ms (100.0%) + WiFi Power drain: 0mAh + Background for: 8s 857ms + Cached for: 20m 28s 581ms + Total running: 20m 37s 438ms + Total cpu time: u=1s 676ms s=3s 483ms + Proc com.verizon.mips.services: + CPU: 1s 330ms usr + 2s 760ms krn ; 0ms fg + Apk com.verizon.mips.services: + Service com.vzw.hss.myverizon.rdd.wifidata.WifiThroughputAlarmService: + Created for: 15ms uptime + Starts: 4, launches: 4 + Service com.vzw.hss.myverizon.rdd.wifidata.WifiScanAlarmService: + Created for: 28ms uptime + Starts: 4, launches: 4 + Service com.vzw.hss.myverizon.rdd.wifidata.RDDWifiDataStateService: + Created for: 8s 789ms uptime + Starts: 4, launches: 4 + u0a57: + Wake lock *net_scheduler* realtime + Background for: 22ms + Cached for: 20m 37s 416ms + Total running: 20m 37s 438ms + Total cpu time: u=0ms s=3ms + Apk com.google.android.apps.gcs: + Service com.google.android.apps.gcs.service.WfaEligibilityRefreshingGcmTaskService: + Created for: 0ms uptime + Starts: 0, launches: 1 + u0a73: + Background for: 2ms + Cached for: 20m 37s 436ms + Total running: 20m 37s 438ms + Proc com.android.chrome: + CPU: 10ms usr + 0ms krn ; 0ms fg + u0a91: + Background for: 20m 37s 438ms + Total running: 20m 37s 438ms + Total cpu time: u=7ms s=0ms + Proc com.google.android.inputmethod.latin: + CPU: 10ms usr + 0ms krn ; 0ms fg + u0a97: + Cached for: 20m 37s 438ms + Total running: 20m 37s 438ms + Total cpu time: u=3ms s=0ms + Proc com.google.android.apps.docs: + CPU: 30ms usr + 10ms krn ; 0ms fg + u0a98: + Background for: 7ms + Cached for: 20m 37s 431ms + Total running: 20m 37s 438ms + Total cpu time: u=14ms s=0ms + Proc com.google.android.apps.photos: + CPU: 50ms usr + 10ms krn ; 0ms fg + u0a104: + Fg Service for: 20m 37s 438ms + Total running: 20m 37s 438ms + u0a120: + Wi-Fi network: 5.70KB received, 8.29KB sent (packets 61 received, 75 sent) + WiFi Idle time: 0ms (0.0%) + WiFi Rx time: 0ms (0.0%) + WiFi Tx time: 8ms (100.0%) + WiFi Power drain: 0mAh + Wake lock *launch* realtime + Wake lock Icing realtime + Foreground activities: 20m 33s 557ms realtime (1 times) + Top for: 20m 33s 557ms + Cached for: 44ms + Total running: 20m 33s 601ms + Total cpu time: u=54s 450ms s=25s 646ms + Proc org.mozilla.geckoview_example: + CPU: 0ms usr + 0ms krn ; 0ms fg + 1 starts + Proc org.mozilla.geckoview_example:tab: + CPU: 0ms usr + 0ms krn ; 0ms fg + 1 starts + Apk org.mozilla.geckoview_example: + Service org.mozilla.gecko.process.GeckoServiceChildProcess$tab: + Created for: 0ms uptime + Starts: 0, launches: 1 + u0a130: + User activity: 1 other + Wake lock TestdroidDeviceService: 1m 4s 45ms full (0 times) realtime + Foreground activities: 3s 827ms realtime (1 times) (running) + Top for: 4s 603ms + Background for: 1m 0s 5ms + Cached for: 19m 32s 830ms + Total running: 20m 37s 438ms + Total cpu time: u=107ms s=7ms + Proc com.bitbar.testdroid.monitor: + CPU: 50ms usr + 10ms krn ; 2s 370ms fg + Proc com.bitbar.testdroid.monitor:monitor: + CPU: 20ms usr + 10ms krn ; 0ms fg + Proc com.bitbar.testdroid.monitor:data: + CPU: 30ms usr + 0ms krn ; 0ms fg
\ No newline at end of file diff --git a/testing/raptor/test/files/fake_binary.exe b/testing/raptor/test/files/fake_binary.exe new file mode 100755 index 0000000000..e69de29bb2 --- /dev/null +++ b/testing/raptor/test/files/fake_binary.exe diff --git a/testing/raptor/test/files/top-info.txt b/testing/raptor/test/files/top-info.txt new file mode 100644 index 0000000000..91e413ccbe --- /dev/null +++ b/testing/raptor/test/files/top-info.txt @@ -0,0 +1,41 @@ +Tasks: 142 total, 1 running, 140 sleeping, 0 stopped, 1 zombie +Mem: 1548824k total, 1234756k used, 314068k free, 37080k buffers +Swap: 0k total, 0k used, 0k free, 552360k cached +200%cpu 122%user 9%nice 50%sys 13%idle 0%iow 0%irq 6%sirq 0%host + PID USER [%CPU]%CPU %MEM TIME+ ARGS +17504 u0_a83 93.7 93.7 14.2 0:12.12 org.mozilla.geckoview_example +17529 u0_a83 43.7 43.7 19.3 0:11.80 org.mozilla.geckoview_example:tab + 7030 u0_a54 28.1 28.1 5.6 0:05.47 com.google.android.tts + 1598 root 9.3 9.3 0.1 0:13.73 dhcpclient -i eth0 + 1667 system 6.2 6.2 9.6 16:10.78 system_server + 1400 system 6.2 6.2 0.2 8:15.20 android.hardware.sensors@1.0-service +17729 shell 3.1 3.1 0.1 0:00.02 top -O %CPU -n 1 + 1411 system 3.1 3.1 0.7 23:06.11 surfaceflinger +17497 shell 0.0 0.0 0.1 0:00.01 sh - +17321 root 0.0 0.0 0.0 0:00.13 [kworker/0:1] +17320 root 0.0 0.0 0.0 0:00.15 [kworker/u4:1] +17306 root 0.0 0.0 0.0 0:00.21 [kworker/u5:1] +16545 root 0.0 0.0 0.0 0:00.17 [kworker/0:0] +16543 root 0.0 0.0 0.0 0:00.15 [kworker/u4:2] +16411 root 0.0 0.0 0.0 0:00.41 [kworker/u5:2] +15827 root 0.0 0.0 0.0 0:00.04 [kworker/1:2] +14998 root 0.0 0.0 0.0 0:00.03 [kworker/1:1] +14996 root 0.0 0.0 0.0 0:00.38 [kworker/0:2] +14790 root 0.0 0.0 0.0 0:01.04 [kworker/u5:0] +14167 root 0.0 0.0 0.0 0:01.32 [kworker/u4:0] +11922 u0_a50 0.0 0.0 6.9 0:00.80 com.google.android.apps.docs +11906 u0_a67 0.0 0.0 5.0 0:00.25 com.google.android.apps.photos +11887 u0_a11 0.0 0.0 4.3 0:00.25 com.android.documentsui +11864 u0_a6 0.0 0.0 3.3 0:00.19 com.android.defcontainer +10866 u0_a15 0.0 0.0 3.3 0:00.04 com.google.android.partnersetup + 8956 u0_a1 0.0 0.0 3.7 0:00.40 com.android.providers.calendar + 8070 u0_a10 0.0 0.0 6.7 0:01.21 com.google.android.gms.unstable + 6638 u0_a10 0.0 0.0 7.4 0:12.89 com.google.android.gms + 2291 u0_a30 0.0 0.0 9.0 5:45.93 com.google.android.googlequicksearchbox:search + 2230 u0_a10 0.0 0.0 3.9 0:02.00 com.google.process.gapps + 2213 u0_a22 0.0 0.0 7.2 4:12.95 com.google.android.apps.nexuslauncher + 2195 u0_a30 0.0 0.0 4.1 0:00.37 com.google.android.googlequicksearchbox:interactor + 2163 u0_a10 0.0 0.0 8.2 1:49.32 com.google.android.gms.persistent + 1882 radio 0.0 0.0 5.1 0:53.61 com.android.phone + 1875 wifi 0.0 0.0 0.4 0:02.25 wpa_supplicant -Dnl80211 -iwlan0 -c/vendor/etc/wifi/wpa_supplicant.conf -g@android:wpa_wla+ + 1828 webview_zyg+ 0.0 0.0 3.0 0:00.45 webview_zygote32
\ No newline at end of file diff --git a/testing/raptor/test/geckoProfileTest.tar b/testing/raptor/test/geckoProfileTest.tar Binary files differnew file mode 100644 index 0000000000..b197606ffd --- /dev/null +++ b/testing/raptor/test/geckoProfileTest.tar diff --git a/testing/raptor/test/python.ini b/testing/raptor/test/python.ini new file mode 100644 index 0000000000..a9f8202cc2 --- /dev/null +++ b/testing/raptor/test/python.ini @@ -0,0 +1,13 @@ +[DEFAULT] +subsuite = raptor + +[test_cmdline.py] +[test_manifest.py] +[test_control_server.py] +[test_utils.py] +[test_playback.py] +[test_print_tests.py] +[test_raptor.py] +[test_cpu.py] +[test_power.py] +[test_gecko_profile.py] diff --git a/testing/raptor/test/test_cmdline.py b/testing/raptor/test/test_cmdline.py new file mode 100644 index 0000000000..60ab84b07a --- /dev/null +++ b/testing/raptor/test/test_cmdline.py @@ -0,0 +1,159 @@ +import os +import sys + +import mozunit +import pytest + +# need this so the raptor unit tests can find raptor/raptor classes +here = os.path.abspath(os.path.dirname(__file__)) +raptor_dir = os.path.join(os.path.dirname(here), "raptor") +sys.path.insert(0, raptor_dir) + +from argparse import ArgumentParser, Namespace + +from cmdline import verify_options + + +def test_verify_options(filedir): + args = Namespace( + app="firefox", + binary="invalid/path", + gecko_profile="False", + page_cycles=1, + page_timeout=60000, + debug="True", + power_test=False, + cpu_test=False, + memory_test=False, + chimera=False, + browsertime_video=False, + browsertime_visualmetrics=False, + fission=True, + fission_mobile=False, + test_bytecode_cache=False, + webext=False, + extra_prefs=[], + ) + parser = ArgumentParser() + + with pytest.raises(SystemExit): + verify_options(parser, args) + + args.binary = os.path.join(filedir, "fake_binary.exe") + verify_options(parser, args) # assert no exception + + args = Namespace( + app="geckoview", + binary="org.mozilla.geckoview_example", + activity="org.mozilla.geckoview_example.GeckoViewActivity", + intent="android.intent.action.MAIN", + gecko_profile="False", + is_release_build=False, + host="sophie", + power_test=False, + cpu_test=False, + memory_test=False, + chimera=False, + browsertime_video=False, + browsertime_visualmetrics=False, + fission=True, + fission_mobile=False, + test_bytecode_cache=False, + webext=False, + extra_prefs=[], + ) + verify_options(parser, args) # assert no exception + + args = Namespace( + app="refbrow", + binary="org.mozilla.reference.browser", + activity="org.mozilla.reference.browser.BrowserTestActivity", + intent="android.intent.action.MAIN", + gecko_profile="False", + is_release_build=False, + host="sophie", + power_test=False, + cpu_test=False, + memory_test=False, + chimera=False, + browsertime_video=False, + browsertime_visualmetrics=False, + fission=True, + fission_mobile=False, + test_bytecode_cache=False, + webext=False, + extra_prefs=[], + ) + verify_options(parser, args) # assert no exception + + args = Namespace( + app="fenix", + binary="org.mozilla.fenix.browser", + activity="org.mozilla.fenix.browser.BrowserPerformanceTestActivity", + intent="android.intent.action.VIEW", + gecko_profile="False", + is_release_build=False, + host="sophie", + power_test=False, + cpu_test=False, + memory_test=False, + chimera=False, + browsertime_video=False, + browsertime_visualmetrics=False, + fission=True, + fission_mobile=False, + test_bytecode_cache=False, + webext=False, + extra_prefs=[], + ) + verify_options(parser, args) # assert no exception + + args = Namespace( + app="geckoview", + binary="org.mozilla.geckoview_example", + activity="org.mozilla.geckoview_example.GeckoViewActivity", + intent="android.intent.action.MAIN", + gecko_profile="False", + is_release_build=False, + host="sophie", + power_test=False, + cpu_test=True, + memory_test=False, + chimera=False, + browsertime_video=False, + browsertime_visualmetrics=False, + fission=True, + fission_mobile=False, + test_bytecode_cache=False, + webext=False, + extra_prefs=[], + ) + verify_options(parser, args) # assert no exception + + args = Namespace( + app="refbrow", + binary="org.mozilla.reference.browser", + activity=None, + intent="android.intent.action.MAIN", + gecko_profile="False", + is_release_build=False, + host="sophie", + power_test=False, + cpu_test=False, + memory_test=False, + chimera=False, + browsertime_video=False, + browsertime_visualmetrics=False, + fission=True, + fission_mobile=False, + test_bytecode_cache=False, + webext=False, + extra_prefs=[], + ) + parser = ArgumentParser() + + verify_options(parser, args) # also will work as uses default activity + + +if __name__ == "__main__": + mozunit.main() diff --git a/testing/raptor/test/test_control_server.py b/testing/raptor/test/test_control_server.py new file mode 100644 index 0000000000..83d47a4d3f --- /dev/null +++ b/testing/raptor/test/test_control_server.py @@ -0,0 +1,189 @@ +import os +import shutil +import sys +from unittest import mock + +import mozunit +import requests + +try: + from http.server import HTTPServer # py3 +except ImportError: + from BaseHTTPServer import HTTPServer # py2 + +from mozlog.structuredlog import StructuredLogger, set_default_logger +from raptor.control_server import RaptorControlServer + +# need this so the raptor unit tests can find output & filter classes +here = os.path.abspath(os.path.dirname(__file__)) +raptor_dir = os.path.join(os.path.dirname(here), "raptor") +sys.path.insert(0, raptor_dir) + +from raptor.results import RaptorResultsHandler + +set_default_logger(StructuredLogger("test_control_server")) + + +def clear_cache(): + # remove the condprof download cache + from condprof.client import CONDPROF_CACHE # noqa + + if os.path.exists(CONDPROF_CACHE): + shutil.rmtree(CONDPROF_CACHE) + + +clear_cache() + + +def test_start_and_stop(): + + results_handler = RaptorResultsHandler() + control = RaptorControlServer(results_handler) + + assert control.server is None + control.start() + assert isinstance(control.server, HTTPServer) + assert control.server.fileno() + assert control._server_thread.is_alive() + + control.stop() + assert not control._server_thread.is_alive() + + +def test_server_get_timeout(raptor): + test_name = "test-name" + url = "test-url" + metrics = {"metric1": False, "metric2": True, "metric3": True} + page_cycle = 1 + + def post_state(): + requests.post( + "http://127.0.0.1:%s/" % raptor.control_server.port, + json={ + "type": "webext_raptor-page-timeout", + "data": [test_name, url, page_cycle, metrics], + }, + ) + + assert len(raptor.results_handler.page_timeout_list) == 0 + + post_state() + + assert len(raptor.results_handler.page_timeout_list) == 1 + + timeout_details = raptor.results_handler.page_timeout_list[0] + assert timeout_details["test_name"] == test_name + assert timeout_details["url"] == url + + pending_metrics = [k for k, v in metrics.items() if v] + assert len(timeout_details["pending_metrics"].split(", ")) == len(pending_metrics) + + +def test_server_android_app_backgrounding(): + # Mock the background and foreground functions + with mock.patch.object( + RaptorControlServer, "background_app", return_value=True + ) as _, mock.patch.object( + RaptorControlServer, "foreground_app", return_value=True + ) as _: + + results_handler = RaptorResultsHandler() + control = RaptorControlServer(results_handler) + control.backgrounded = False + + control.start() + assert control._server_thread.is_alive() + + def post_start_background(): + requests.post( + "http://127.0.0.1:%s/" % control.port, + json={ + "type": "webext_start_background", + "data": "starting background app", + }, + ) + + def post_end_background(): + requests.post( + "http://127.0.0.1:%s/" % control.port, + json={"type": "webext_end_background", "data": "ending background app"}, + ) + + # Test that app is backgrounded + post_start_background() + control.background_app.assert_called() + + # Test that app is returned to foreground + post_end_background() + control.foreground_app.assert_called() + + # Make sure the control server stops after these requests + control.stop() + assert not control._server_thread.is_alive() + + +def test_server_wait_states(raptor): + import datetime + + def post_state(): + requests.post( + "http://127.0.0.1:%s/" % raptor.control_server.port, + json={"type": "webext_status", "data": "test status"}, + ) + + wait_time = 5 + message_state = "webext_status/test status" + rhc = raptor.control_server.server.RequestHandlerClass + + # Test initial state + assert rhc.wait_after_messages == {} + assert rhc.waiting_in_state is None + assert rhc.wait_timeout == 60 + assert raptor.control_server_wait_get() == "None" + + # Test setting a state + assert raptor.control_server_wait_set(message_state) == "" + assert message_state in rhc.wait_after_messages + assert rhc.wait_after_messages[message_state] + + # Test clearing a non-existent state + assert raptor.control_server_wait_clear("nothing") == "" + assert message_state in rhc.wait_after_messages + + # Test clearing a state + assert raptor.control_server_wait_clear(message_state) == "" + assert message_state not in rhc.wait_after_messages + + # Test clearing all states + assert raptor.control_server_wait_set(message_state) == "" + assert message_state in rhc.wait_after_messages + assert raptor.control_server_wait_clear("all") == "" + assert rhc.wait_after_messages == {} + + # Test wait timeout + # Block on post request + assert raptor.control_server_wait_set(message_state) == "" + assert rhc.wait_after_messages[message_state] + assert raptor.control_server_wait_timeout(wait_time) == "" + assert rhc.wait_timeout == wait_time + start = datetime.datetime.now() + post_state() + assert datetime.datetime.now() - start < datetime.timedelta(seconds=wait_time + 2) + assert raptor.control_server_wait_get() == "None" + assert message_state not in rhc.wait_after_messages + + raptor.clean_up() + assert not raptor.control_server._server_thread.is_alive() + + +def test_clean_up_stop_server(raptor): + assert raptor.control_server._server_thread.is_alive() + assert raptor.control_server.port is not None + assert raptor.control_server.server is not None + + raptor.clean_up() + assert not raptor.control_server._server_thread.is_alive() + + +if __name__ == "__main__": + mozunit.main() diff --git a/testing/raptor/test/test_cpu.py b/testing/raptor/test/test_cpu.py new file mode 100644 index 0000000000..c60d5c6577 --- /dev/null +++ b/testing/raptor/test/test_cpu.py @@ -0,0 +1,196 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import os +import sys +from unittest import mock + +import mozunit + +# need this so the raptor unit tests can find output & filter classes +here = os.path.abspath(os.path.dirname(__file__)) +raptor_dir = os.path.join(os.path.dirname(here), "raptor") +sys.path.insert(0, raptor_dir) + +import cpu +from webextension import WebExtensionAndroid + + +def test_no_device(): + raptor = WebExtensionAndroid( + "geckoview", + "org.mozilla.org.mozilla.geckoview_example", + cpu_test=True, + ) + raptor.device = None + resp = cpu.start_android_cpu_profiler(raptor) + assert resp is None + + +def test_usage_with_invalid_data_returns_zero(): + with mock.patch("mozdevice.adb.ADBDevice") as device: + with mock.patch("control_server.RaptorControlServer") as control_server: + # Create a device that returns invalid data + device.shell_output.side_effect = ["8.0.0", "geckoview"] + device._verbose = True + + # Create a control server + control_server.cpu_test = True + control_server.device = device + raptor = WebExtensionAndroid("geckoview", "org.mozilla.geckoview_example") + raptor.config["cpu_test"] = True + raptor.control_server = control_server + raptor.device = device + + cpu_profiler = cpu.AndroidCPUProfiler(raptor) + cpu_profiler.get_app_cpu_usage() + + # Verify the call to submit data was made + avg_cpuinfo_data = { + "type": "cpu", + "test": "usage_with_invalid_data_returns_zero-avg", + "unit": "%", + "values": {"avg": 0}, + } + min_cpuinfo_data = { + "type": "cpu", + "test": "usage_with_invalid_data_returns_zero-min", + "unit": "%", + "values": {"min": 0}, + } + max_cpuinfo_data = { + "type": "cpu", + "test": "usage_with_invalid_data_returns_zero-max", + "unit": "%", + "values": {"max": 0}, + } + + cpu_profiler.generate_android_cpu_profile( + "usage_with_invalid_data_returns_zero" + ) + control_server.submit_supporting_data.assert_has_calls( + [ + mock.call(avg_cpuinfo_data), + mock.call(min_cpuinfo_data), + mock.call(max_cpuinfo_data), + ] + ) + + +def test_usage_with_output(): + with mock.patch("mozdevice.adb.ADBDevice") as device: + with mock.patch("control_server.RaptorControlServer") as control_server: + # Override the shell output with sample CPU usage details + filepath = os.path.abspath(os.path.dirname(__file__)) + "/files/" + with open(filepath + "top-info.txt", "r") as f: + test_data = f.read() + device.shell_output.side_effect = ["8.0.0", test_data] + device._verbose = True + + # Create a control server + control_server.cpu_test = True + control_server.test_name = "cpuunittest" + control_server.device = device + control_server.app_name = "org.mozilla.geckoview_example" + raptor = WebExtensionAndroid("geckoview", "org.mozilla.geckoview_example") + raptor.device = device + raptor.config["cpu_test"] = True + raptor.control_server = control_server + + cpu_profiler = cpu.AndroidCPUProfiler(raptor) + cpu_profiler.polls.append(cpu_profiler.get_app_cpu_usage()) + cpu_profiler.polls.append(0) + + # Verify the response contains our expected CPU % of 93.7 + avg_cpuinfo_data = { + "type": "cpu", + "test": "usage_with_integer_cpu_info_output-avg", + "unit": "%", + "values": {"avg": 93.7 / 2}, + } + min_cpuinfo_data = { + "type": "cpu", + "test": "usage_with_integer_cpu_info_output-min", + "unit": "%", + "values": {"min": 0}, + } + max_cpuinfo_data = { + "type": "cpu", + "test": "usage_with_integer_cpu_info_output-max", + "unit": "%", + "values": {"max": 93.7}, + } + + cpu_profiler.generate_android_cpu_profile( + "usage_with_integer_cpu_info_output" + ) + control_server.submit_supporting_data.assert_has_calls( + [ + mock.call(avg_cpuinfo_data), + mock.call(min_cpuinfo_data), + mock.call(max_cpuinfo_data), + ] + ) + + +def test_usage_with_fallback(): + with mock.patch("mozdevice.adb.ADBDevice") as device: + with mock.patch("control_server.RaptorControlServer") as control_server: + device._verbose = True + + # Return what our shell call to dumpsys would give us + shell_output = ( + " 31093 u0_a196 10 -10 8% S " + + "66 1392100K 137012K fg org.mozilla.geckoview_example" + ) + + # We set the version to be less than Android 8 + device.shell_output.side_effect = ["7.0.0", shell_output] + + # Create a control server + control_server.cpu_test = True + control_server.test_name = "cpuunittest" + control_server.device = device + control_server.app_name = "org.mozilla.geckoview_example" + raptor = WebExtensionAndroid("geckoview", "org.mozilla.geckoview_example") + raptor.device = device + raptor.config["cpu_test"] = True + raptor.control_server = control_server + + cpu_profiler = cpu.AndroidCPUProfiler(raptor) + cpu_profiler.polls.append(cpu_profiler.get_app_cpu_usage()) + cpu_profiler.polls.append(0) + + # Verify the response contains our expected CPU % of 8 + # pylint --py3k W1619 + avg_cpuinfo_data = { + "type": "cpu", + "test": "usage_with_fallback-avg", + "unit": "%", + "values": {"avg": 8 / 2}, + } + min_cpuinfo_data = { + "type": "cpu", + "test": "usage_with_fallback-min", + "unit": "%", + "values": {"min": 0}, + } + max_cpuinfo_data = { + "type": "cpu", + "test": "usage_with_fallback-max", + "unit": "%", + "values": {"max": 8}, + } + + cpu_profiler.generate_android_cpu_profile("usage_with_fallback") + control_server.submit_supporting_data.assert_has_calls( + [ + mock.call(avg_cpuinfo_data), + mock.call(min_cpuinfo_data), + mock.call(max_cpuinfo_data), + ] + ) + + +if __name__ == "__main__": + mozunit.main() diff --git a/testing/raptor/test/test_gecko_profile.py b/testing/raptor/test/test_gecko_profile.py new file mode 100644 index 0000000000..a62a399ce1 --- /dev/null +++ b/testing/raptor/test/test_gecko_profile.py @@ -0,0 +1,54 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import os +import shutil +import sys +import tarfile +import tempfile + +import mozunit + +# need this so raptor imports work both from /raptor and via mach +here = os.path.abspath(os.path.dirname(__file__)) + +raptor_dir = os.path.join(os.path.dirname(here), "raptor") +sys.path.insert(0, raptor_dir) + +from gecko_profile import GeckoProfile + + +def test_browsertime_profiling(): + result_dir = tempfile.mkdtemp() + # untar geckoProfile.tar + with tarfile.open(os.path.join(here, "geckoProfileTest.tar")) as f: + f.extractall(path=result_dir) + + # Makes sure we can run the profile process against a browsertime-generated + # profile (geckoProfile-1.json in this test dir) + upload_dir = tempfile.mkdtemp() + symbols_path = tempfile.mkdtemp() + raptor_config = { + "symbols_path": symbols_path, + "browsertime": True, + "browsertime_result_dir": os.path.join(result_dir, "amazon"), + } + test_config = {"name": "tp6"} + try: + profile = GeckoProfile(upload_dir, raptor_config, test_config) + profile.symbolicate() + profile.clean() + arcname = os.environ["RAPTOR_LATEST_GECKO_PROFILE_ARCHIVE"] + assert os.stat(arcname).st_size > 1000000, "We got a 1mb+ zip" + except Exception: + assert False, "Symbolication failed!" + raise + finally: + shutil.rmtree(upload_dir) + shutil.rmtree(symbols_path) + shutil.rmtree(result_dir) + + +if __name__ == "__main__": + mozunit.main() diff --git a/testing/raptor/test/test_manifest.py b/testing/raptor/test/test_manifest.py new file mode 100644 index 0000000000..6f18270ffd --- /dev/null +++ b/testing/raptor/test/test_manifest.py @@ -0,0 +1,441 @@ +import os +import sys + +import mozinfo +import mozunit +import pytest +from six.moves.urllib.parse import parse_qs, urlsplit + +# need this so raptor imports work both from /raptor and via mach +here = os.path.abspath(os.path.dirname(__file__)) + +raptor_dir = os.path.join(os.path.dirname(here), "raptor") +sys.path.insert(0, raptor_dir) + +from manifest import ( + add_test_url_params, + get_browser_test_list, + get_raptor_test_list, + validate_test_ini, +) + +# some test details (test INIs) +VALID_MANIFESTS = [ + { + # page load test with local playback + "alert_on": "fcp", + "alert_threshold": 2.0, + "apps": "firefox", + "lower_is_better": True, + "manifest": "valid_details_0", + "measure": ["fnbpaint", "fcp"], + "page_cycles": 25, + "playback": "mitmproxy", + "playback_pageset_manifest": "pageset.manifest", + "test_url": "http://www.test-url/goes/here", + "type": "pageload", + "unit": "ms", + }, + { + # test optional settings with None + "alert_threshold": 2.0, + "apps": "firefox", + "lower_is_better": True, + "manifest": "valid_details_1", + "measure": "fnbpaint, fcb", + "page_cycles": 25, + "test_url": "http://www.test-url/goes/here", + "type": "pageload", + "unit": "ms", + "alert_change_type": None, + "alert_on": None, + "playback": None, + }, + { + # page load test for geckoview + "alert_threshold": 2.0, + "apps": "geckoview", + "browser_cycles": 10, + "lower_is_better": False, + "manifest": "valid_details_2", + "measure": "fcp", + "page_cycles": 1, + "test_url": "http://www.test-url/goes/here", + "type": "pageload", + "unit": "score", + }, + { + # benchmark test for chrome + "alert_threshold": 2.0, + "apps": "chrome", + "lower_is_better": False, + "manifest": "valid_details_1", + "measure": "fcp", + "page_cycles": 5, + "test_url": "http://www.test-url/goes/here", + "type": "benchmark", + "unit": "score", + }, + { + # benchmark test for chromium + "alert_threshold": 2.0, + "apps": "chromium", + "lower_is_better": False, + "manifest": "valid_details_1", + "measure": "fcp", + "page_cycles": 5, + "test_url": "http://www.test-url/goes/here", + "type": "benchmark", + "unit": "score", + }, +] + +INVALID_MANIFESTS = [ + { + "alert_threshold": 2.0, + "apps": "firefox", + "lower_is_better": True, + "manifest": "invalid_details_0", + "page_cycles": 25, + "playback": "mitmproxy", + "playback_pageset_manifest": "pageset.manifest", + "test_url": "http://www.test-url/goes/here", + "type": "pageload", + "unit": "ms", + }, + { + "alert_threshold": 2.0, + "apps": "chrome", + "lower_is_better": True, + "manifest": "invalid_details_1", + "measure": "fnbpaint, fcp", + "page_cycles": 25, + "playback": "mitmproxy", + "test_url": "http://www.test-url/goes/here", + "type": "pageload", + "unit": "ms", + }, + { + "alert_threshold": 2.0, + "apps": "chromium", + "lower_is_better": True, + "manifest": "invalid_details_1", + "measure": "fnbpaint, fcp", + "page_cycles": 25, + "playback": "mitmproxy", + "test_url": "http://www.test-url/goes/here", + "type": "pageload", + "unit": "ms", + }, + { + "alert_on": "nope", + "alert_threshold": 2.0, + "apps": "firefox", + "lower_is_better": True, + "manifest": "invalid_details_2", + "measure": "fnbpaint, fcp", + "page_cycles": 25, + "playback": "mitmproxy", + "playback_pageset_manifest": "pageset.manifest", + "test_url": "http://www.test-url/goes/here", + "type": "pageload", + "unit": "ms", + }, +] + + +@pytest.mark.parametrize( + "app", ["firefox", "chrome", "chromium", "geckoview", "refbrow", "fenix"] +) +def test_get_browser_test_list(app): + test_list = get_browser_test_list(app, run_local=True) + assert len(test_list) > 0 + + +@pytest.mark.parametrize("test_details", VALID_MANIFESTS) +def test_validate_test_ini_valid(test_details): + assert validate_test_ini(test_details) + + +@pytest.mark.parametrize("test_details", INVALID_MANIFESTS) +def test_validate_test_ini_invalid(test_details): + assert not (validate_test_ini(test_details)) + + +def test_get_raptor_test_list_firefox(create_args): + args = create_args(browser_cycles=1) + + test_list = get_raptor_test_list(args, mozinfo.os) + assert len(test_list) == 4 + + subtests = [ + "raptor-tp6-unittest-google-firefox", + "raptor-tp6-unittest-amazon-firefox", + "raptor-tp6-unittest-facebook-firefox", + "raptor-tp6-unittest-youtube-firefox", + ] + + for next_subtest in test_list: + assert next_subtest["name"] in subtests + + +def test_get_raptor_test_list_chrome(create_args): + args = create_args(app="chrome", test="speedometer", browser_cycles=1) + + test_list = get_raptor_test_list(args, mozinfo.os) + assert len(test_list) == 1 + assert test_list[0]["name"] == "speedometer" + + +def test_get_raptor_test_list_geckoview(create_args): + args = create_args(app="geckoview", test="unity-webgl", browser_cycles=1) + + test_list = get_raptor_test_list(args, mozinfo.os) + assert len(test_list) == 1 + assert test_list[0]["name"] == "unity-webgl" + + +def test_get_raptor_test_list_gecko_profiling_enabled(create_args): + args = create_args(test="amazon", gecko_profile=True, browser_cycles=1) + + test_list = get_raptor_test_list(args, mozinfo.os) + assert len(test_list) == 1 + assert test_list[0]["name"] == "amazon" + assert test_list[0]["gecko_profile"] is True + assert test_list[0].get("gecko_profile_entries") == "14000000" + assert test_list[0].get("gecko_profile_interval") == "1" + assert test_list[0].get("gecko_profile_threads") is None + assert test_list[0].get("gecko_profile_features") is None + + +def test_get_raptor_test_list_gecko_profiling_enabled_args_override(create_args): + args = create_args( + test="amazon", + gecko_profile=True, + gecko_profile_entries=42, + gecko_profile_interval=100, + gecko_profile_threads="Foo", + gecko_profile_features="Mood,UserNetWorth", + browser_cycles=1, + ) + + test_list = get_raptor_test_list(args, mozinfo.os) + assert len(test_list) == 1 + assert test_list[0]["name"] == "amazon" + assert test_list[0]["gecko_profile"] is True + assert test_list[0]["gecko_profile_entries"] == "42" + assert test_list[0]["gecko_profile_interval"] == "100" + assert test_list[0]["gecko_profile_threads"] == "Foo" + assert test_list[0]["gecko_profile_features"] == "Mood,UserNetWorth" + + +def test_get_raptor_test_list_gecko_profiling_enabled_extra_args_override(create_args): + args = create_args( + test="amazon", + gecko_profile=True, + gecko_profile_entries=42, + gecko_profile_interval=100, + gecko_profile_extra_threads=["Foo", "Oof"], + gecko_profile_threads="String,Rope", + browser_cycles=1, + ) + + test_list = get_raptor_test_list(args, mozinfo.os) + assert len(test_list) == 1 + assert test_list[0]["name"] == "amazon" + assert test_list[0]["gecko_profile"] is True + assert test_list[0]["gecko_profile_entries"] == "42" + assert test_list[0]["gecko_profile_interval"] == "100" + assert test_list[0]["gecko_profile_threads"] == "String,Rope,Foo,Oof" + + +def test_get_raptor_test_list_gecko_profiling_disabled(create_args): + args = create_args( + test="amazon", + gecko_profile=False, + gecko_profile_entries=42, + gecko_profile_interval=100, + gecko_profile_threads=["Foo"], + gecko_profile_features=["Temperature"], + browser_cycles=1, + ) + + test_list = get_raptor_test_list(args, mozinfo.os) + assert len(test_list) == 1 + assert test_list[0]["name"] == "amazon" + assert test_list[0].get("gecko_profile") is None + assert test_list[0].get("gecko_profile_entries") is None + assert test_list[0].get("gecko_profile_interval") is None + assert test_list[0].get("gecko_profile_threads") is None + assert test_list[0].get("gecko_profile_features") is None + + +def test_get_raptor_test_list_gecko_profiling_disabled_args_override(create_args): + args = create_args( + test="amazon", + gecko_profile=False, + gecko_profile_entries=42, + gecko_profile_interval=100, + gecko_profile_threads=["Foo"], + gecko_profile_features=["Temperature"], + browser_cycles=1, + ) + + test_list = get_raptor_test_list(args, mozinfo.os) + assert len(test_list) == 1 + assert test_list[0]["name"] == "amazon" + assert test_list[0].get("gecko_profile") is None + assert test_list[0].get("gecko_profile_entries") is None + assert test_list[0].get("gecko_profile_interval") is None + assert test_list[0].get("gecko_profile_threads") is None + assert test_list[0].get("gecko_profile_features") is None + + +def test_get_raptor_test_list_extra_profiler_run_enabled(create_args): + args = create_args(test="amazon", extra_profiler_run=True, browser_cycles=1) + + test_list = get_raptor_test_list(args, mozinfo.os) + assert len(test_list) == 1 + assert test_list[0]["name"] == "amazon" + assert test_list[0]["extra_profiler_run"] is True + + +def test_get_raptor_test_list_extra_profiler_run_disabled(create_args): + args = create_args(test="amazon", browser_cycles=1) + + test_list = get_raptor_test_list(args, mozinfo.os) + assert len(test_list) == 1 + assert test_list[0]["name"] == "amazon" + assert test_list[0].get("extra_profiler_run") is None + + +def test_get_raptor_test_list_debug_mode(create_args): + args = create_args(test="amazon", debug_mode=True, browser_cycles=1) + + test_list = get_raptor_test_list(args, mozinfo.os) + assert len(test_list) == 1 + assert test_list[0]["name"] == "amazon" + assert test_list[0]["debug_mode"] is True + assert test_list[0]["page_cycles"] == 2 + + +def test_get_raptor_test_list_using_live_sites(create_args): + args = create_args(test="amazon", live_sites=True, browser_cycles=1) + + test_list = get_raptor_test_list(args, mozinfo.os) + assert len(test_list) == 1 + assert test_list[0]["name"] == "amazon" + assert test_list[0]["use_live_sites"] == "true" + assert test_list[0]["playback"] is None + + +def test_get_raptor_test_list_using_collect_perfstats(create_args): + args = create_args(test="amazon", collect_perfstats=True, browser_cycles=1) + + test_list = get_raptor_test_list(args, mozinfo.os) + assert len(test_list) == 1 + assert test_list[0]["name"] == "amazon" + assert test_list[0]["perfstats"] == "true" + + +def test_get_raptor_test_list_override_page_cycles(create_args): + args = create_args(test="amazon", page_cycles=99, browser_cycles=1) + + test_list = get_raptor_test_list(args, mozinfo.os) + assert len(test_list) == 1 + assert test_list[0]["name"] == "amazon" + assert test_list[0]["page_cycles"] == 99 + + +def test_get_raptor_test_list_override_page_timeout(create_args): + args = create_args(test="amazon", page_timeout=9999, browser_cycles=1) + + test_list = get_raptor_test_list(args, mozinfo.os) + assert len(test_list) == 1 + assert test_list[0]["name"] == "amazon" + assert test_list[0]["page_timeout"] == 9999 + + +def test_get_raptor_test_list_add_test_url_params(create_args): + args = create_args(test="amazon", test_url_params="c=4", browser_cycles=1) + + test_list = get_raptor_test_list(args, mozinfo.os) + assert len(test_list) == 1 + assert test_list[0]["name"] == "amazon" + query_params = parse_qs(urlsplit(test_list[0]["test_url"]).query) + assert query_params.get("c") == ["4"] + + +def test_get_raptor_test_list_refbrow(create_args): + args = create_args(app="refbrow", test="speedometer", browser_cycles=1) + + test_list = get_raptor_test_list(args, mozinfo.os) + assert len(test_list) == 1 + assert test_list[0]["name"] == "speedometer" + + +def test_get_raptor_test_list_fenix(create_args): + args = create_args(app="fenix", test="speedometer", browser_cycles=1) + + test_list = get_raptor_test_list(args, mozinfo.os) + assert len(test_list) == 1 + assert test_list[0]["name"] == "speedometer" + + +def test_add_test_url_params_with_single_extra_param(): + initial_test_url = "http://test.com?a=1&b=2" + extra_params = "c=3" + + result = add_test_url_params(initial_test_url, extra_params) + + expected_params = {"a": ["1"], "b": ["2"], "c": ["3"]} + actual_params = parse_qs(urlsplit(result).query) + assert actual_params == expected_params + + +def test_add_test_url_params_with_multiple_extra_param(): + initial_test_url = "http://test.com?a=1&b=2" + extra_params = "c=3&d=4" + + result = add_test_url_params(initial_test_url, extra_params) + + expected_params = {"a": ["1"], "b": ["2"], "c": ["3"], "d": ["4"]} + actual_params = parse_qs(urlsplit(result).query) + assert actual_params == expected_params + + +def test_add_test_url_params_without_params_in_url(): + initial_test_url = "http://test.com" + extra_params = "c=3" + + result = add_test_url_params(initial_test_url, extra_params) + + expected_params = {"c": ["3"]} + actual_params = parse_qs(urlsplit(result).query) + assert actual_params == expected_params + + +def test_add_test_url_params_overwrites_single_param(): + initial_test_url = "http://test.com?a=1&b=2" + extra_params = "b=3" + + result = add_test_url_params(initial_test_url, extra_params) + + expected_params = {"a": ["1"], "b": ["3"]} + actual_params = parse_qs(urlsplit(result).query) + assert actual_params == expected_params + + +def test_add_test_url_params_overwrites_multiple_param(): + initial_test_url = "http://test.com?a=1&b=2&c=3" + extra_params = "c=4&b=5" + + result = add_test_url_params(initial_test_url, extra_params) + + expected_params = {"a": ["1"], "b": ["5"], "c": ["4"]} + actual_params = parse_qs(urlsplit(result).query) + assert actual_params == expected_params + + +if __name__ == "__main__": + mozunit.main() diff --git a/testing/raptor/test/test_playback.py b/testing/raptor/test/test_playback.py new file mode 100644 index 0000000000..c01065ea83 --- /dev/null +++ b/testing/raptor/test/test_playback.py @@ -0,0 +1,65 @@ +import os +import time + +import mozinfo +import mozunit +from mozlog.structuredlog import StructuredLogger, set_default_logger + +# need this so raptor imports work both from /raptor and via mach +here = os.path.abspath(os.path.dirname(__file__)) + +set_default_logger(StructuredLogger("test_playback")) + +from mozproxy import get_playback +from mozproxy.backends.mitm.desktop import MitmproxyDesktop + +config = {} + +run_local = True +if os.environ.get("TOOLTOOLCACHE") is None: + run_local = False + + +def test_get_playback(get_binary): + config["platform"] = mozinfo.os + if "win" in config["platform"]: + # this test is not yet supported on windows + assert True + return + config["obj_path"] = os.path.dirname(get_binary("firefox")) + config["playback_tool"] = "mitmproxy" + config["playback_version"] = "7.0.4" + config["playback_files"] = [ + os.path.join( + os.path.dirname(os.path.abspath(os.path.dirname(__file__))), + "raptor", + "tooltool-manifests", + "playback", + "mitm7-linux-firefox-amazon.manifest", + ) + ] + config["binary"] = get_binary("firefox") + config["run_local"] = run_local + config["app"] = "firefox" + config["host"] = "127.0.0.1" + + playback = get_playback(config) + assert isinstance(playback, MitmproxyDesktop) + playback.start() + time.sleep(1) + playback.stop() + + +def test_get_unsupported_playback(): + config["playback_tool"] = "unsupported" + playback = get_playback(config) + assert playback is None + + +def test_get_playback_missing_tool_name(): + playback = get_playback(config) + assert playback is None + + +if __name__ == "__main__": + mozunit.main() diff --git a/testing/raptor/test/test_power.py b/testing/raptor/test/test_power.py new file mode 100644 index 0000000000..52b87f0446 --- /dev/null +++ b/testing/raptor/test/test_power.py @@ -0,0 +1,248 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import os +import sys +import tempfile +from unittest import mock + +import mozunit + +# need this so raptor imports work both from /raptor and via mach +here = os.path.abspath(os.path.dirname(__file__)) + +raptor_dir = os.path.join(os.path.dirname(here), "raptor") +sys.path.insert(0, raptor_dir) + +import power +from webextension import WebExtensionAndroid + + +def test_android7_power(): + if not os.getenv("MOZ_UPLOAD_DIR"): + os.environ["MOZ_UPLOAD_DIR"] = tempfile.mkdtemp() + + with mock.patch("mozdevice.adb.ADBDevice") as device: + with mock.patch("control_server.RaptorControlServer") as control_server: + # Override the shell output with sample CPU usage details + filepath = os.path.abspath(os.path.dirname(__file__)) + "/files/" + f = open(filepath + "batterystats-android-7.txt", "r") + batterystats_return_value = f.read() + + # Multiple shell output calls are performed + # and only those with non-None output are required + device.shell_output.return_value = None + device.shell_output.side_effect = [ + None, + None, + "Test value", + "Test value", + batterystats_return_value, + "7.0.0", + ] + + device._verbose = True + device.version = 7 + + # Create a control server + control_server.power_test = True + control_server.test_name = "gve-pytest" + control_server.device = device + control_server.app_name = "org.mozilla.geckoview_example" + web_extension = WebExtensionAndroid( + "geckoview", "org.mozilla.geckoview_example", power_test=True + ) + web_extension.device = device + web_extension.config["power_test"] = True + web_extension.control_server = control_server + web_extension.power_test_time = 20 # minutes + web_extension.os_baseline_data = { + "type": "power", + "test": "gve-pytest", + "unit": "mAh", + "values": {"cpu": float(5), "wifi": float(5), "screen": float(5)}, + } + + # Verify the response contains our expected calculations + # (no proportional measure on android 7) + power_data = { + "type": "power", + "test": "gve-pytest", + "unit": "mAh", + "values": { + "cpu": float(14.5), + "wifi": float(0.132), + "screen": float(70.7), + }, + } + + pc_data = { + "type": "power", + "test": "gve-pytest-%change", + "unit": "%", + "values": { + "cpu": float(14.5), + "wifi": float(0.132000000000005), + "screen": float(70.70000000000002), + }, + } + + power.finish_android_power_test(web_extension, "gve-pytest") + + control_server.submit_supporting_data.assert_has_calls( + [ + mock.call(power_data), + mock.call(pc_data), + mock.call(web_extension.os_baseline_data), + ] + ) + + +def test_android8_power(): + if not os.getenv("MOZ_UPLOAD_DIR"): + os.environ["MOZ_UPLOAD_DIR"] = tempfile.mkdtemp() + + with mock.patch("mozdevice.adb.ADBDevice") as device: + with mock.patch("control_server.RaptorControlServer") as control_server: + # Override the shell output with sample CPU usage details + filepath = os.path.abspath(os.path.dirname(__file__)) + "/files/" + f = open(filepath + "batterystats-android-8.txt", "r") + batterystats_return_value = f.read() + print(type(batterystats_return_value)) + + # Multiple shell output calls are performed + # and only those with non-None output are required + device.shell_output.return_value = None + device.shell_output.side_effect = [ + None, + None, + "Test value", + "Test value", + batterystats_return_value, + "8.0.0", + ] + + device._verbose = True + device.version = 8 + + # Create a control server + control_server.power_test = True + control_server.test_name = "gve-pytest" + control_server.device = device + control_server.app_name = "org.mozilla.geckoview_example" + web_extension = WebExtensionAndroid( + "geckoview", "org.mozilla.geckoview_example", power_test=True + ) + web_extension.device = device + web_extension.config["power_test"] = True + web_extension.control_server = control_server + web_extension.power_test_time = 20 # minutes + web_extension.os_baseline_data = { + "type": "power", + "test": "gve-pytest", + "unit": "mAh", + "values": { + "cpu": float(5), + "wifi": float(5), + "screen": float(5), + "proportional": float(5), + }, + } + + # Verify the response contains our expected calculations + power_data = { + "type": "power", + "test": "gve-pytest", + "unit": "mAh", + "values": { + "cpu": float(4.7), + "wifi": float(0.000556), + "screen": float(51.5), + "proportional": float(11.2), + }, + } + + pc_data = { + "type": "power", + "test": "gve-pytest-%change", + "unit": "%", + "values": { + "cpu": float(4.700000000000017), + "wifi": float(0.0005559999999888987), + "screen": float(51.5), + "proportional": float(11.199999999999989), + }, + } + + power.finish_android_power_test(web_extension, "gve-pytest") + + control_server.submit_supporting_data.assert_has_calls( + [ + mock.call(power_data), + mock.call(pc_data), + mock.call(web_extension.os_baseline_data), + ] + ) + + +def test_androidos_baseline_power(): + if not os.getenv("MOZ_UPLOAD_DIR"): + os.environ["MOZ_UPLOAD_DIR"] = tempfile.mkdtemp() + + with mock.patch("mozdevice.adb.ADBDevice") as device: + with mock.patch("control_server.RaptorControlServer") as control_server: + # Override the shell output with sample CPU usage details + filepath = os.path.abspath(os.path.dirname(__file__)) + "/files/" + f = open(filepath + "batterystats-android-8.txt", "r") + batterystats_return_value = f.read() + + # Multiple shell output calls are performed + # and only those with non-None output are required + device.shell_output.return_value = None + device.shell_output.side_effect = [ + None, + None, + "Test value", + "Test value", + batterystats_return_value, + "8.0.0", + ] + + device._verbose = True + device.version = 8 + + # Create a control server + control_server.power_test = True + control_server.test_name = "gve-pytest" + control_server.device = device + control_server.app_name = "org.mozilla.geckoview_example" + web_extension = WebExtensionAndroid( + "geckoview", "org.mozilla.geckoview_example", power_test=True + ) + web_extension.device = device + web_extension.config["power_test"] = True + web_extension.control_server = control_server + + # Expected OS baseline calculation result + os_baseline_data = { + "type": "power", + "test": "gve-pytest", + "unit": "mAh", + "values": { + "cpu": float(10.786654), + "wifi": float(2.26132), + "screen": float(51.66), + "proportional": float(11.294805199999999), + }, + } + + # Verify the response contains our expected calculations + power.finish_android_power_test( + web_extension, "gve-pytest", os_baseline=True + ) + + assert web_extension.os_baseline_data == os_baseline_data + + +if __name__ == "__main__": + mozunit.main() diff --git a/testing/raptor/test/test_print_tests.py b/testing/raptor/test/test_print_tests.py new file mode 100644 index 0000000000..739d3b0d6c --- /dev/null +++ b/testing/raptor/test/test_print_tests.py @@ -0,0 +1,53 @@ +import os + +import mozunit +import pytest + +# need this so raptor imports work both from /raptor and via mach +here = os.path.abspath(os.path.dirname(__file__)) +from raptor import cmdline + + +def test_pageload_subtests(capsys, monkeypatch, tmpdir): + # cmdline.py is hard-coded to use raptor.ini from the same directory so we need + # to monkey patch os.dirname, which is not ideal. If we could make --print-tests + # respect the --test path that would be much better. + def mock(path): + return str(tmpdir) + + monkeypatch.setattr(os.path, "dirname", mock) + manifest = tmpdir.join("raptor.ini") + manifest.write( + """ +[DEFAULT] +type = pageload +apps = firefox + +[raptor-subtest-1] +measure = foo, bar + +[raptor-subtest-2] +""" + ) + with pytest.raises(SystemExit): + cmdline.parse_args(["--print-tests"]) + captured = capsys.readouterr() + assert ( + captured.out + == """ +Raptor Tests Available for Firefox Desktop +========================================== + +raptor + type: pageload + subtests: + raptor-subtest-1 (foo, bar) + raptor-subtest-2 + +Done. +""" + ) + + +if __name__ == "__main__": + mozunit.main() diff --git a/testing/raptor/test/test_raptor.py b/testing/raptor/test/test_raptor.py new file mode 100644 index 0000000000..ef1a5a73cb --- /dev/null +++ b/testing/raptor/test/test_raptor.py @@ -0,0 +1,386 @@ +import os +import sys +import threading +import time +import traceback +from unittest import mock +from unittest.mock import Mock + +import mozunit +import pytest +from mozprofile import BaseProfile +from mozrunner.errors import RunnerNotStartedError +from six import reraise + +# need this so the raptor unit tests can find output & filter classes +here = os.path.abspath(os.path.dirname(__file__)) +raptor_dir = os.path.join(os.path.dirname(here), "raptor") +sys.path.insert(0, raptor_dir) + + +from browsertime import BrowsertimeAndroid, BrowsertimeDesktop +from webextension import ( + WebExtensionAndroid, + WebExtensionDesktopChrome, + WebExtensionFirefox, +) + +DEFAULT_TIMEOUT = 125 + + +class TestBrowserThread(threading.Thread): + def __init__(self, raptor_instance, tests, names): + super(TestBrowserThread, self).__init__() + self.raptor_instance = raptor_instance + self.tests = tests + self.names = names + self.exc = None + + def print_error(self): + if self.exc is None: + return + type, value, tb = self.exc + traceback.print_exception(type, value, tb, None, sys.stderr) + + def run(self): + try: + self.raptor_instance.run_tests(self.tests, self.names) + except BaseException: + self.exc = sys.exc_info() + + +# Perftest tests +@pytest.mark.parametrize( + "perftest_class, app_name", + [ + [WebExtensionFirefox, "firefox"], + [WebExtensionDesktopChrome, "chrome"], + [WebExtensionDesktopChrome, "chromium"], + [WebExtensionAndroid, "geckoview"], + [BrowsertimeDesktop, "firefox"], + [BrowsertimeDesktop, "chrome"], + [BrowsertimeDesktop, "chromium"], + [BrowsertimeAndroid, "geckoview"], + ], +) +def test_build_profile(options, perftest_class, app_name, get_prefs): + options["app"] = app_name + perftest_instance = perftest_class(**options) + assert isinstance(perftest_instance.profile, BaseProfile) + if app_name != "firefox": + return + + # These prefs are set in mozprofile + firefox_prefs = [ + 'user_pref("app.update.checkInstallTime", false);', + 'user_pref("app.update.disabledForTesting", true);', + 'user_pref("' + 'security.turn_off_all_security_so_that_viruses_can_take_over_this_computer", true);', + ] + # This pref is set in raptor + raptor_pref = 'user_pref("security.enable_java", false);' + + prefs_file = os.path.join(perftest_instance.profile.profile, "user.js") + with open(prefs_file, "r") as fh: + prefs = fh.read() + for firefox_pref in firefox_prefs: + assert firefox_pref in prefs + assert raptor_pref in prefs + + +def test_perftest_host_ip(ConcretePerftest, options, get_prefs): + os.environ["HOST_IP"] = "some_dummy_host_ip" + options["host"] = "HOST_IP" + + perftest = ConcretePerftest(**options) + + assert perftest.config["host"] == os.environ["HOST_IP"] + + +@pytest.mark.parametrize( + "app_name, expected_e10s_flag", + [["firefox", True], ["geckoview", True]], +) +def test_e10s_enabling(ConcretePerftest, options, app_name, expected_e10s_flag): + options["app"] = app_name + perftest = ConcretePerftest(profile_class="firefox", **options) + assert perftest.config["e10s"] == expected_e10s_flag + + +def test_profile_was_provided_locally(ConcretePerftest, options): + perftest = ConcretePerftest(**options) + assert os.path.isdir(perftest.config["local_profile_dir"]) + + +@pytest.mark.parametrize( + "profile_class, app, expected_profile", + [ + ["firefox", "firefox", "firefox"], + [None, "firefox", "firefox"], + ["firefox", None, "firefox"], + ], +) +def test_profile_class_assignation( + ConcretePerftest, options, profile_class, app, expected_profile +): + options["app"] = app + perftest = ConcretePerftest(profile_class=profile_class, **options) + assert perftest.profile_class == expected_profile + + +def test_raptor_venv(ConcretePerftest, options): + perftest = ConcretePerftest(**options) + assert perftest.raptor_venv.endswith("raptor-venv") + + +@pytest.mark.parametrize( + "run_local," + "debug_mode," + "post_startup_delay," + "expected_post_startup_delay," + "expected_debug_mode", + [ + [True, True, 1234, 1234, True], + [True, True, 12345, 3000, True], + [False, False, 1234, 1234, False], + [False, False, 12345, 12345, False], + [True, False, 1234, 1234, False], + [True, False, 12345, 12345, False], + [False, True, 1234, 1234, False], + [False, True, 12345, 12345, False], + ], +) +def test_post_startup_delay( + ConcretePerftest, + options, + run_local, + debug_mode, + post_startup_delay, + expected_post_startup_delay, + expected_debug_mode, +): + perftest = ConcretePerftest( + run_local=run_local, + debug_mode=debug_mode, + post_startup_delay=post_startup_delay, + **options + ) + assert perftest.post_startup_delay == expected_post_startup_delay + assert perftest.debug_mode == expected_debug_mode + + +@pytest.mark.parametrize( + "alert, expected_alert", [["test_to_alert_on", "test_to_alert_on"], [None, None]] +) +def test_perftest_run_test_setup( + ConcretePerftest, options, mock_test, alert, expected_alert +): + perftest = ConcretePerftest(**options) + mock_test["alert_on"] = alert + + perftest.run_test_setup(mock_test) + + assert perftest.config["subtest_alert_on"] == expected_alert + + +# WebExtension tests +@pytest.mark.parametrize( + "app", ["firefox", pytest.mark.xfail("chrome"), pytest.mark.xfail("chromium")] +) +def test_start_browser(get_binary, app): + binary = get_binary(app) + assert binary + + raptor = WebExtensionFirefox(app, binary, post_startup_delay=0) + + tests = [{"name": "raptor-{}-tp6".format(app), "page_timeout": 1000}] + test_names = [test["name"] for test in tests] + + thread = TestBrowserThread(raptor, tests, test_names) + thread.start() + + timeout = time.time() + 5 # seconds + while time.time() < timeout: + try: + is_running = raptor.runner.is_running() + assert is_running + break + except RunnerNotStartedError: + time.sleep(0.1) + else: + # browser didn't start + # if the thread had an error, display it here + thread.print_error() + assert False + + raptor.clean_up() + thread.join(5) + + if thread.exc is not None: + exc, value, tb = thread.exc + reraise(exc, value, tb) + + assert not raptor.runner.is_running() + assert raptor.runner.returncode is not None + + +# Browsertime tests +def test_cmd_arguments(ConcreteBrowsertime, browsertime_options, mock_test): + expected_cmd = { + browsertime_options["browsertime_node"], + browsertime_options["browsertime_browsertimejs"], + "--firefox.geckodriverPath", + browsertime_options["browsertime_geckodriver"], + "--browsertime.page_cycles", + "1", + "--browsertime.url", + mock_test["test_url"], + "--browsertime.secondary_url", + mock_test["secondary_url"], + "--browsertime.page_cycle_delay", + "1000", + "--browsertime.post_startup_delay", + str(DEFAULT_TIMEOUT), + "--firefox.profileTemplate", + "--skipHar", + "--video", + "true", + "--visualMetrics", + "false", + "--timeouts.pageLoad", + str(DEFAULT_TIMEOUT), + "--timeouts.script", + str(DEFAULT_TIMEOUT), + "--resultDir", + "--iterations", + "1", + } + if browsertime_options.get("app") in ["chrome", "chrome-m"]: + expected_cmd.add( + "--chrome.chromedriverPath", browsertime_options["browsertime_chromedriver"] + ) + + browsertime = ConcreteBrowsertime( + post_startup_delay=DEFAULT_TIMEOUT, **browsertime_options + ) + browsertime.run_test_setup(mock_test) + cmd = browsertime._compose_cmd(mock_test, DEFAULT_TIMEOUT) + + assert expected_cmd.issubset(set(cmd)) + + +def extract_arg_value(cmd, arg): + param_index = cmd.index(arg) + 1 + return cmd[param_index] + + +@pytest.mark.parametrize( + "arg_to_test, expected, test_patch, options_patch", + [ + ["--iterations", "1", {}, {"browser_cycles": None}], + ["--iterations", "123", {"browser_cycles": 123}, {}], + ["--video", "false", {}, {"browsertime_video": None}], + ["--video", "true", {}, {"browsertime_video": "dummy_value"}], + ["--timeouts.script", str(DEFAULT_TIMEOUT), {}, {"page_cycles": None}], + ["--timeouts.script", str(123 * DEFAULT_TIMEOUT), {"page_cycles": 123}, {}], + ["--browsertime.page_cycles", "1", {}, {"page_cycles": None}], + ["--browsertime.page_cycles", "123", {"page_cycles": 123}, {}], + ], +) +def test_browsertime_arguments( + ConcreteBrowsertime, + browsertime_options, + mock_test, + arg_to_test, + expected, + test_patch, + options_patch, +): + mock_test.update(test_patch) + browsertime_options.update(options_patch) + browsertime = ConcreteBrowsertime( + post_startup_delay=DEFAULT_TIMEOUT, **browsertime_options + ) + browsertime.run_test_setup(mock_test) + cmd = browsertime._compose_cmd(mock_test, DEFAULT_TIMEOUT) + + param_value = extract_arg_value(cmd, arg_to_test) + assert expected == param_value + + +@pytest.mark.parametrize( + "timeout, expected_timeout, test_patch, options_patch", + [ + [0, 80, {}, {}], + [0, 80, {}, {"gecko_profile": False}], + [1000, 381, {}, {"gecko_profile": True}], + ], +) +def test_compute_process_timeout( + ConcreteBrowsertime, + browsertime_options, + mock_test, + timeout, + expected_timeout, + test_patch, + options_patch, +): + mock_test.update(test_patch) + browsertime_options.update(options_patch) + browsertime = ConcreteBrowsertime( + post_startup_delay=DEFAULT_TIMEOUT, **browsertime_options + ) + bt_timeout = browsertime._compute_process_timeout(mock_test, timeout) + assert bt_timeout == expected_timeout + + +@pytest.mark.parametrize( + "host, playback, benchmark", + [["127.0.0.1", True, False], ["localhost", False, True]], +) +def test_android_reverse_ports(host, playback, benchmark): + raptor = WebExtensionAndroid( + "geckoview", + "org.mozilla.geckoview_example", + host=host, + extra_prefs={}, + ) + if benchmark: + benchmark_mock = mock.patch("raptor.raptor.benchmark.Benchmark") + raptor.benchmark = benchmark_mock + raptor.benchmark.port = 1234 + + if playback: + playback_mock = mock.patch( + "mozbase.mozproxy.mozproxy.backends.mitm.mitm.MitmproxyAndroid" + ) + playback_mock.port = 4321 + raptor.playback = playback_mock + + raptor.set_reverse_port = Mock() + raptor.set_reverse_ports() + + raptor.set_reverse_port.assert_any_call(raptor.control_server.port) + if benchmark: + raptor.set_reverse_port.assert_any_call(1234) + + if playback: + raptor.set_reverse_port.assert_any_call(4321) + + +def test_android_reverse_ports_non_local_host(): + raptor = WebExtensionAndroid( + "geckoview", + "org.mozilla.geckoview_example", + host="192.168.100.10", + extra_prefs={}, + ) + + raptor.set_reverse_port = Mock() + raptor.set_reverse_ports() + + raptor.set_reverse_port.assert_not_called() + + +if __name__ == "__main__": + mozunit.main() diff --git a/testing/raptor/test/test_utils.py b/testing/raptor/test/test_utils.py new file mode 100644 index 0000000000..1fcf755e0b --- /dev/null +++ b/testing/raptor/test/test_utils.py @@ -0,0 +1,79 @@ +import os +import sys +import tempfile + +import mozunit +import pytest +import yaml + +# need this so raptor imports work both from /raptor and via mach +here = os.path.abspath(os.path.dirname(__file__)) + +raptor_dir = os.path.join(os.path.dirname(here), "raptor") +sys.path.insert(0, raptor_dir) + +from utils import bool_from_str, transform_platform, write_yml_file + + +@pytest.mark.parametrize("platform", ["win", "mac", "linux64"]) +def test_transform_platform(platform): + transformed = transform_platform("mitmproxy-rel-bin-{platform}.manifest", platform) + assert "{platform}" not in transformed + if platform == "mac": + assert "osx" in transformed + else: + assert platform in transformed + + +def test_transform_platform_no_change(): + starting_string = "nothing-in-here-to-transform" + assert transform_platform(starting_string, "mac") == starting_string + + +@pytest.mark.parametrize("processor", ["x86_64", "other"]) +def test_transform_platform_processor(processor): + transformed = transform_platform( + "string-with-processor-{x64}.manifest", "win", processor + ) + assert "{x64}" not in transformed + if processor == "x86_64": + assert "_x64" in transformed + + +def test_write_yml_file(): + yml_file = os.path.join(tempfile.mkdtemp(), "utils.yaml") + + yml_data = dict(args=["--a", "apple", "--b", "banana"], env=dict(LOG_VERBOSE=1)) + + assert not os.path.exists(yml_file) + write_yml_file(yml_file, yml_data) + assert os.path.exists(yml_file) + + with open(yml_file, "r") as yml_in: + yml_loaded = yaml.unsafe_load(yml_in) + assert yml_loaded == yml_data + + +@pytest.mark.parametrize( + "value, expected_result", + [ + ("true", True), + ("TRUE", True), + ("True", True), + ("false", False), + ("FALSE", False), + ("False", False), + ], +) +def test_bool_from_str(value, expected_result): + assert expected_result == bool_from_str(value) + + +@pytest.mark.parametrize("invalid_value", ["invalid_str", ""]) +def test_bool_from_str_with_invalid_values(invalid_value): + with pytest.raises(ValueError): + bool_from_str(invalid_value) + + +if __name__ == "__main__": + mozunit.main() |