зеркало из https://github.com/mozilla/gecko-dev.git
252 строки
8.9 KiB
Python
252 строки
8.9 KiB
Python
# 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/.
|
|
from __future__ import absolute_import, unicode_literals
|
|
|
|
import sys
|
|
|
|
import os
|
|
from unittest import mock
|
|
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)
|
|
|
|
import power
|
|
from webextension import WebExtensionAndroid
|
|
|
|
|
|
def test_android7_power():
|
|
if not os.getenv("MOZ_UPLOAD_DIR"):
|
|
os.environ["MOZ_UPLOAD_DIR"] = tempfile.mkdtemp()
|
|
|
|
with mock.patch("mozdevice.adb.ADBDevice") as device:
|
|
with mock.patch("control_server.RaptorControlServer") as control_server:
|
|
# Override the shell output with sample CPU usage details
|
|
filepath = os.path.abspath(os.path.dirname(__file__)) + "/files/"
|
|
f = open(filepath + "batterystats-android-7.txt", "r")
|
|
batterystats_return_value = f.read()
|
|
|
|
# Multiple shell output calls are performed
|
|
# and only those with non-None output are required
|
|
device.shell_output.return_value = None
|
|
device.shell_output.side_effect = [
|
|
None,
|
|
None,
|
|
"Test value",
|
|
"Test value",
|
|
batterystats_return_value,
|
|
"7.0.0",
|
|
]
|
|
|
|
device._verbose = True
|
|
device.version = 7
|
|
|
|
# Create a control server
|
|
control_server.power_test = True
|
|
control_server.test_name = "gve-pytest"
|
|
control_server.device = device
|
|
control_server.app_name = "org.mozilla.geckoview_example"
|
|
web_extension = WebExtensionAndroid(
|
|
"geckoview", "org.mozilla.geckoview_example", power_test=True
|
|
)
|
|
web_extension.device = device
|
|
web_extension.config["power_test"] = True
|
|
web_extension.control_server = control_server
|
|
web_extension.power_test_time = 20 # minutes
|
|
web_extension.os_baseline_data = {
|
|
"type": "power",
|
|
"test": "gve-pytest",
|
|
"unit": "mAh",
|
|
"values": {"cpu": float(5), "wifi": float(5), "screen": float(5)},
|
|
}
|
|
|
|
# Verify the response contains our expected calculations
|
|
# (no proportional measure on android 7)
|
|
power_data = {
|
|
"type": "power",
|
|
"test": "gve-pytest",
|
|
"unit": "mAh",
|
|
"values": {
|
|
"cpu": float(14.5),
|
|
"wifi": float(0.132),
|
|
"screen": float(70.7),
|
|
},
|
|
}
|
|
|
|
pc_data = {
|
|
"type": "power",
|
|
"test": "gve-pytest-%change",
|
|
"unit": "%",
|
|
"values": {
|
|
"cpu": float(14.5),
|
|
"wifi": float(0.132000000000005),
|
|
"screen": float(70.70000000000002),
|
|
},
|
|
}
|
|
|
|
power.finish_android_power_test(web_extension, "gve-pytest")
|
|
|
|
control_server.submit_supporting_data.assert_has_calls(
|
|
[
|
|
mock.call(power_data),
|
|
mock.call(pc_data),
|
|
mock.call(web_extension.os_baseline_data),
|
|
]
|
|
)
|
|
|
|
|
|
def test_android8_power():
|
|
if not os.getenv("MOZ_UPLOAD_DIR"):
|
|
os.environ["MOZ_UPLOAD_DIR"] = tempfile.mkdtemp()
|
|
|
|
with mock.patch("mozdevice.adb.ADBDevice") as device:
|
|
with mock.patch("control_server.RaptorControlServer") as control_server:
|
|
# Override the shell output with sample CPU usage details
|
|
filepath = os.path.abspath(os.path.dirname(__file__)) + "/files/"
|
|
f = open(filepath + "batterystats-android-8.txt", "r")
|
|
batterystats_return_value = f.read()
|
|
print(type(batterystats_return_value))
|
|
|
|
# Multiple shell output calls are performed
|
|
# and only those with non-None output are required
|
|
device.shell_output.return_value = None
|
|
device.shell_output.side_effect = [
|
|
None,
|
|
None,
|
|
"Test value",
|
|
"Test value",
|
|
batterystats_return_value,
|
|
"8.0.0",
|
|
]
|
|
|
|
device._verbose = True
|
|
device.version = 8
|
|
|
|
# Create a control server
|
|
control_server.power_test = True
|
|
control_server.test_name = "gve-pytest"
|
|
control_server.device = device
|
|
control_server.app_name = "org.mozilla.geckoview_example"
|
|
web_extension = WebExtensionAndroid(
|
|
"geckoview", "org.mozilla.geckoview_example", power_test=True
|
|
)
|
|
web_extension.device = device
|
|
web_extension.config["power_test"] = True
|
|
web_extension.control_server = control_server
|
|
web_extension.power_test_time = 20 # minutes
|
|
web_extension.os_baseline_data = {
|
|
"type": "power",
|
|
"test": "gve-pytest",
|
|
"unit": "mAh",
|
|
"values": {
|
|
"cpu": float(5),
|
|
"wifi": float(5),
|
|
"screen": float(5),
|
|
"proportional": float(5),
|
|
},
|
|
}
|
|
|
|
# Verify the response contains our expected calculations
|
|
power_data = {
|
|
"type": "power",
|
|
"test": "gve-pytest",
|
|
"unit": "mAh",
|
|
"values": {
|
|
"cpu": float(4.7),
|
|
"wifi": float(0.000556),
|
|
"screen": float(51.5),
|
|
"proportional": float(11.2),
|
|
},
|
|
}
|
|
|
|
pc_data = {
|
|
"type": "power",
|
|
"test": "gve-pytest-%change",
|
|
"unit": "%",
|
|
"values": {
|
|
"cpu": float(4.700000000000017),
|
|
"wifi": float(0.0005559999999888987),
|
|
"screen": float(51.5),
|
|
"proportional": float(11.199999999999989),
|
|
},
|
|
}
|
|
|
|
power.finish_android_power_test(web_extension, "gve-pytest")
|
|
|
|
control_server.submit_supporting_data.assert_has_calls(
|
|
[
|
|
mock.call(power_data),
|
|
mock.call(pc_data),
|
|
mock.call(web_extension.os_baseline_data),
|
|
]
|
|
)
|
|
|
|
|
|
def test_androidos_baseline_power():
|
|
if not os.getenv("MOZ_UPLOAD_DIR"):
|
|
os.environ["MOZ_UPLOAD_DIR"] = tempfile.mkdtemp()
|
|
|
|
with mock.patch("mozdevice.adb.ADBDevice") as device:
|
|
with mock.patch("control_server.RaptorControlServer") as control_server:
|
|
# Override the shell output with sample CPU usage details
|
|
filepath = os.path.abspath(os.path.dirname(__file__)) + "/files/"
|
|
f = open(filepath + "batterystats-android-8.txt", "r")
|
|
batterystats_return_value = f.read()
|
|
|
|
# Multiple shell output calls are performed
|
|
# and only those with non-None output are required
|
|
device.shell_output.return_value = None
|
|
device.shell_output.side_effect = [
|
|
None,
|
|
None,
|
|
"Test value",
|
|
"Test value",
|
|
batterystats_return_value,
|
|
"8.0.0",
|
|
]
|
|
|
|
device._verbose = True
|
|
device.version = 8
|
|
|
|
# Create a control server
|
|
control_server.power_test = True
|
|
control_server.test_name = "gve-pytest"
|
|
control_server.device = device
|
|
control_server.app_name = "org.mozilla.geckoview_example"
|
|
web_extension = WebExtensionAndroid(
|
|
"geckoview", "org.mozilla.geckoview_example", power_test=True
|
|
)
|
|
web_extension.device = device
|
|
web_extension.config["power_test"] = True
|
|
web_extension.control_server = control_server
|
|
|
|
# Expected OS baseline calculation result
|
|
os_baseline_data = {
|
|
"type": "power",
|
|
"test": "gve-pytest",
|
|
"unit": "mAh",
|
|
"values": {
|
|
"cpu": float(10.786654),
|
|
"wifi": float(2.26132),
|
|
"screen": float(51.66),
|
|
"proportional": float(11.294805199999999),
|
|
},
|
|
}
|
|
|
|
# Verify the response contains our expected calculations
|
|
power.finish_android_power_test(
|
|
web_extension, "gve-pytest", os_baseline=True
|
|
)
|
|
|
|
assert web_extension.os_baseline_data == os_baseline_data
|
|
|
|
|
|
if __name__ == "__main__":
|
|
mozunit.main()
|