blob: daa64a941432ca9fa3320ded6f0978c024553d50 [file] [log] [blame]
import time
from common import ApkTestRunner
class ApkRunnerImpl(ApkTestRunner):
def __init__(self, config):
self.config = config
self.apk_3d_name = "antutu_benchmark_v6_3d_f1.apk"
self.apk_3d_pkg = "com.antutu.benchmark.full"
self.config["apk_file_name"] = "AnTuTu6.0.4.apk"
self.config["apk_package"] = "com.antutu.ABenchMark"
self.config["activity"] = "com.antutu.ABenchMark/.ABenchMarkStart"
super(ApkRunnerImpl, self).__init__(self.config)
def setUp(self):
self.download_apk(self.apk_3d_name)
self.uninstall_apk(self.apk_3d_pkg)
self.install_apk(self.apk_3d_name)
super(ApkRunnerImpl, self).setUp()
def tearDown(self):
super(ApkRunnerImpl, self).tearDown()
self.uninstall_apk(self.apk_3d_pkg)
def parseResult(self):
test_items = ["3D", "UX", "CPU", "RAM"]
test_subitems = {
"3D": ["3D [Garden]", "3D [Marooned]"],
"UX": [
"UX Data Secure",
"UX Data process",
"UX Strategy games",
"UX Image process",
"UX I/O performance",
],
"CPU": ["CPU Mathematics", "CPU Common Use", "CPU Multi-Core"],
"RAM": [],
}
antutu_sum = 0
for item in test_items:
self.logger.info("Trying to find result id_root for test suite: %s" % item)
found_view = False
while not found_view:
self.dump_always()
id_root = self.vc.findViewWithText(item)
if id_root:
self.logger.info("Found result id_root for test suite: %s" % item)
found_view = True
else:
self.dump_always()
self.logger.info("Press DPAD_DOWN to find %s item" % item)
self.device.press("DPAD_DOWN")
time.sleep(2)
self.logger.info("Trying to find the score value for test suite: %s" % item)
found_view = False
while not found_view:
self.dump_always()
id_root = self.vc.findViewWithText(item)
score_view = self.vc.findViewById(
"com.antutu.ABenchMark:id/tv_score_value", id_root.getParent()
)
if score_view:
score = score_view.getText().strip()
self.logger.info("Found %s score: %s" % (item, score))
try:
score = int(score)
self.report_result(
"antutu6-%s" % item.lower(), "pass", score, "points"
)
antutu_sum = antutu_sum + int(score)
except ValueError:
self.report_result("antutu6-%s" % item.lower(), "fail")
found_view = True
arrow_icon = self.vc.findViewById(
"com.antutu.ABenchMark:id/iv_arrow", id_root.getParent()
)
if arrow_icon:
arrow_icon.touch()
else:
self.logger.info(
"Press DPAD_DOWN to find %s item value" % item.lower()
)
self.device.press("DPAD_DOWN")
time.sleep(2)
for sub_item in test_subitems[item]:
self.logger.info(
"Trying to find score value for sub item: %s" % sub_item
)
found_view = False
while not found_view:
self.dump_always()
subitem_obj = self.vc.findViewWithText(sub_item)
if subitem_obj:
subitem_value_obj = self.vc.findViewByIdOrRaise(
"com.antutu.ABenchMark:id/tv_value", subitem_obj.getParent()
)
subitem_key = sub_item.replace("[", "").replace("]", "")
subitem_key = subitem_key.replace("/", "")
subitem_key = subitem_key.replace(" ", "-")
subitem_score = subitem_value_obj.getText().strip()
self.logger.info(
"Found %s score: %s" % (subitem_key, subitem_score)
)
try:
subitem_score = int(subitem_score)
self.report_result(
"antutu6-%s" % subitem_key.lower(),
"pass",
subitem_score,
"points",
)
except ValueError:
self.report_result(
"antutu6-%s" % subitem_key.lower(), "fail"
)
found_view = True
else:
self.logger.info(
"Press DPAD_DOWN to find sub item: %s" % sub_item
)
self.device.press("DPAD_DOWN")
time.sleep(2)
self.report_result("antutu6-sum", "pass", antutu_sum, "points")
def execute(self):
# Enable 64-bit
time.sleep(10)
finished = False
while not finished:
self.dump_always()
test_region = self.vc.findViewById(
"com.antutu.ABenchMark:" "id/start_test_region"
)
if test_region:
test_region.touch()
time.sleep(30)
self.dump_always()
text_qr_code = self.vc.findViewWithText("QRCode of result")
if text_qr_code:
finished = True
self.logger.info("Benchmark test finished!")
stop_msg = "Unfortunately, AnTuTu 3DBench has stopped."
msg_stopped = self.vc.findViewWithText(stop_msg)
if msg_stopped:
btn_ok = self.vc.findViewWithTextOrRaise("OK") # nopep8
btn_ok.touch()
# cancel the update
update_window = self.vc.findViewWithText("New update available")
need_permission_msg = self.vc.findViewWithText(
"Please allow the permissions we need for test"
)
allow_permission_btn = self.vc.findViewWithText("ALLOW")
warn_msg = self.vc.findViewWithText(
"This app was built for an older version of Android and may not work properly. Try checking for updates, or contact the developer."
)
continue_btn = self.vc.findViewWithText("CONTINUE")
if update_window:
btn_cancel = self.vc.findViewWithTextOrRaise("Cancel")
btn_cancel.touch()
elif need_permission_msg:
btn_ok = self.vc.findViewWithTextOrRaise("OK")
btn_ok.touch()
elif allow_permission_btn:
allow_permission_btn.touch()
elif warn_msg:
self.logger.info("Older version warning popped up")
warning_ok_btn = self.vc.findViewWithTextOrRaise("OK")
warning_ok_btn.touch()
elif continue_btn:
continue_btn.touch()