blob: a043a057345683ad5e8e43a4c87f62688bcc5fb0 [file] [log] [blame]
import time
from common import ApkTestRunner
class ApkRunnerImpl(ApkTestRunner):
def __init__(self, config):
self.config = config
self.config["apk_file_name"] = "RL_Benchmark_SQLite_v1.3.apk"
self.config["apk_package"] = "com.redlicense.benchmark.sqlite"
self.config["activity"] = "com.redlicense.benchmark.sqlite/.Main"
super(ApkRunnerImpl, self).__init__(self.config)
def execute(self):
find_start_btn = False
while not find_start_btn:
self.dump_always()
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."
)
btn_start = self.vc.findViewWithText("Start")
if warn_msg:
self.logger.info("Older version warning popped up")
warning_ok_btn = self.vc.findViewWithTextOrRaise("OK")
warning_ok_btn.touch()
elif btn_start:
btn_start.touch()
find_start_btn = True
finished = False
while not finished:
self.dump_always()
overall_result = self.vc.findViewWithText("Overall")
if overall_result:
finished = True
self.logger.info("benchmark finished")
def __get_score_with_text(self, text):
found_score_view = False
while not found_score_view:
linear_layout = self.vc.findViewByIdOrRaise(
"com.redlicense.benchmark.sqlite:id/stats"
)
for ch in linear_layout.children:
subitem = self.vc.findViewWithText(text, ch)
if subitem:
subitem_result = self.vc.findViewByIdOrRaise(
"com.redlicense.benchmark.sqlite:id/test_result", ch
)
score = (
subitem_result.getText()
.replace("sec", "")
.replace("Running", "")
.strip()
)
score_in_ms = float(score) * 1000
self.report_result(
"RL-sqlite-" + text.replace(" ", "-"),
"pass",
str(score_in_ms),
"ms",
)
found_score_view = True
break
if subitem is None:
self.logger.info("%s not found, need to pageup" % text)
self.device.press("DPAD_UP")
time.sleep(2)
self.device.press("DPAD_UP")
time.sleep(2)
self.dump_always()
def parseResult(self):
self.__get_score_with_text("Overall")
self.__get_score_with_text("DROP TABLE")
self.__get_score_with_text("DELETE with an index")
self.__get_score_with_text("DELETE without an index")
self.__get_score_with_text("INSERTs from a SELECT")
self.__get_score_with_text("25000 UPDATEs with an index")
self.__get_score_with_text("1000 UPDATEs without an index")
self.__get_score_with_text("5000 SELECTs with an index")
self.__get_score_with_text("Creating an index")
self.__get_score_with_text("100 SELECTs on a string comparison")
self.__get_score_with_text("100 SELECTs without an index")
self.__get_score_with_text(
"25000 INSERTs into an indexed table in a transaction"
)
self.__get_score_with_text("25000 INSERTs in a transaction")
self.__get_score_with_text("1000 INSERTs")