summaryrefslogtreecommitdiffstats
path: root/testing/raptor/test
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
commit36d22d82aa202bb199967e9512281e9a53db42c9 (patch)
tree105e8c98ddea1c1e4784a60a5a6410fa416be2de /testing/raptor/test
parentInitial commit. (diff)
downloadfirefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz
firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/raptor/test')
-rw-r--r--testing/raptor/test/__init__.py0
-rw-r--r--testing/raptor/test/conftest.py165
-rw-r--r--testing/raptor/test/files/batterystats-android-7.txt1589
-rw-r--r--testing/raptor/test/files/batterystats-android-8.txt1669
-rwxr-xr-xtesting/raptor/test/files/fake_binary.exe0
-rw-r--r--testing/raptor/test/files/top-info.txt41
-rw-r--r--testing/raptor/test/geckoProfileTest.tarbin0 -> 2048000 bytes
-rw-r--r--testing/raptor/test/python.ini13
-rw-r--r--testing/raptor/test/test_cmdline.py177
-rw-r--r--testing/raptor/test/test_control_server.py189
-rw-r--r--testing/raptor/test/test_cpu.py223
-rw-r--r--testing/raptor/test/test_gecko_profile.py54
-rw-r--r--testing/raptor/test/test_manifest.py436
-rw-r--r--testing/raptor/test/test_playback.py65
-rw-r--r--testing/raptor/test/test_power.py269
-rw-r--r--testing/raptor/test/test_print_tests.py53
-rw-r--r--testing/raptor/test/test_raptor.py406
-rw-r--r--testing/raptor/test/test_utils.py79
18 files changed, 5428 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..562042ca43
--- /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="browsertime-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
new file mode 100644
index 0000000000..b197606ffd
--- /dev/null
+++ b/testing/raptor/test/geckoProfileTest.tar
Binary files differ
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..8da43db727
--- /dev/null
+++ b/testing/raptor/test/test_cmdline.py
@@ -0,0 +1,177 @@
+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=[],
+ benchmark_repository=None,
+ benchmark_revision=None,
+ benchmark_branch=None,
+ )
+ 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=[],
+ benchmark_repository=None,
+ benchmark_revision=None,
+ benchmark_branch=None,
+ )
+ 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=[],
+ benchmark_repository=None,
+ benchmark_revision=None,
+ benchmark_branch=None,
+ )
+ 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=[],
+ benchmark_repository=None,
+ benchmark_revision=None,
+ benchmark_branch=None,
+ )
+ 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=[],
+ benchmark_repository=None,
+ benchmark_revision=None,
+ benchmark_branch=None,
+ )
+ 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=[],
+ benchmark_repository=None,
+ benchmark_revision=None,
+ benchmark_branch=None,
+ )
+ 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..a0f4c8394d
--- /dev/null
+++ b/testing/raptor/test/test_cpu.py
@@ -0,0 +1,223 @@
+# 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():
+ original_get = WebExtensionAndroid.get_browser_meta
+ WebExtensionAndroid.get_browser_meta = mock.MagicMock()
+ WebExtensionAndroid.get_browser_meta.return_value = ("app", "version")
+
+ raptor = WebExtensionAndroid(
+ "geckoview",
+ "org.mozilla.org.mozilla.geckoview_example",
+ cpu_test=True,
+ )
+ WebExtensionAndroid.get_browser_meta = original_get
+
+ 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
+
+ original_get = WebExtensionAndroid.get_browser_meta
+ WebExtensionAndroid.get_browser_meta = mock.MagicMock()
+ WebExtensionAndroid.get_browser_meta.return_value = ("app", "version")
+
+ raptor = WebExtensionAndroid("geckoview", "org.mozilla.geckoview_example")
+ WebExtensionAndroid.get_browser_meta = original_get
+
+ 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"
+
+ original_get = WebExtensionAndroid.get_browser_meta
+ WebExtensionAndroid.get_browser_meta = mock.MagicMock()
+ WebExtensionAndroid.get_browser_meta.return_value = ("app", "version")
+
+ raptor = WebExtensionAndroid("geckoview", "org.mozilla.geckoview_example")
+ WebExtensionAndroid.get_browser_meta = original_get
+
+ 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"
+
+ original_get = WebExtensionAndroid.get_browser_meta
+ WebExtensionAndroid.get_browser_meta = mock.MagicMock()
+ WebExtensionAndroid.get_browser_meta.return_value = ("app", "version")
+
+ raptor = WebExtensionAndroid("geckoview", "org.mozilla.geckoview_example")
+ WebExtensionAndroid.get_browser_meta = original_get
+
+ 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..db018d0ad6
--- /dev/null
+++ b/testing/raptor/test/test_manifest.py
@@ -0,0 +1,436 @@
+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 = ["google", "amazon", "facebook", "youtube"]
+
+ 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..7fa3b1a609
--- /dev/null
+++ b/testing/raptor/test/test_power.py
@@ -0,0 +1,269 @@
+# 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"
+
+ original_get = WebExtensionAndroid.get_browser_meta
+ WebExtensionAndroid.get_browser_meta = mock.MagicMock()
+ WebExtensionAndroid.get_browser_meta.return_value = ("app", "version")
+
+ web_extension = WebExtensionAndroid(
+ "geckoview", "org.mozilla.geckoview_example", power_test=True
+ )
+ WebExtensionAndroid.get_browser_meta = original_get
+
+ 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"
+
+ original_get = WebExtensionAndroid.get_browser_meta
+ WebExtensionAndroid.get_browser_meta = mock.MagicMock()
+ WebExtensionAndroid.get_browser_meta.return_value = ("app", "version")
+
+ web_extension = WebExtensionAndroid(
+ "geckoview", "org.mozilla.geckoview_example", power_test=True
+ )
+ WebExtensionAndroid.get_browser_meta = original_get
+
+ 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"
+
+ original_get = WebExtensionAndroid.get_browser_meta
+ WebExtensionAndroid.get_browser_meta = mock.MagicMock()
+ WebExtensionAndroid.get_browser_meta.return_value = ("app", "version")
+
+ web_extension = WebExtensionAndroid(
+ "geckoview", "org.mozilla.geckoview_example", power_test=True
+ )
+ WebExtensionAndroid.get_browser_meta = original_get
+
+ 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..0c6e735158
--- /dev/null
+++ b/testing/raptor/test/test_raptor.py
@@ -0,0 +1,406 @@
+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
+
+ # We need to do the mock ourselves because of how the perftest_class
+ # is being defined
+ original_get = perftest_class.get_browser_meta
+ perftest_class.get_browser_meta = mock.MagicMock()
+ perftest_class.get_browser_meta.return_value = (app_name, "100")
+
+ perftest_instance = perftest_class(**options)
+ perftest_class.get_browser_meta = original_get
+
+ 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):
+ original_get = WebExtensionAndroid.get_browser_meta
+ WebExtensionAndroid.get_browser_meta = mock.MagicMock()
+ WebExtensionAndroid.get_browser_meta.return_value = ("app", "version")
+
+ raptor = WebExtensionAndroid(
+ "geckoview",
+ "org.mozilla.geckoview_example",
+ host=host,
+ extra_prefs={},
+ )
+ WebExtensionAndroid.get_browser_meta = original_get
+
+ 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():
+ original_get = WebExtensionAndroid.get_browser_meta
+ WebExtensionAndroid.get_browser_meta = mock.MagicMock()
+ WebExtensionAndroid.get_browser_meta.return_value = ("app", "version")
+
+ raptor = WebExtensionAndroid(
+ "geckoview",
+ "org.mozilla.geckoview_example",
+ host="192.168.100.10",
+ extra_prefs={},
+ )
+ WebExtensionAndroid.get_browser_meta = original_get
+
+ 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()