Commit b182f0b5 authored by lizeb's avatar lizeb Committed by Commit bot

tools: Small fixes in customtabs_benchmark.

- Fix metrics recording: delay incorrectly set, and simplify the logic
- Fix metrics parsing
- Output to a CSV file in prefetch_benchmark.

BUG=655980

Review-Url: https://codereview.chromium.org/2551913002
Cr-Commit-Position: refs/heads/master@{#436300}
parent 2434a9d0
...@@ -109,17 +109,11 @@ public class MainActivity extends Activity { ...@@ -109,17 +109,11 @@ public class MainActivity extends Activity {
break; break;
case CustomTabsCallback.NAVIGATION_FINISHED: case CustomTabsCallback.NAVIGATION_FINISHED:
mPageLoadFinishedMs = SystemClock.uptimeMillis(); mPageLoadFinishedMs = SystemClock.uptimeMillis();
if (mIntentSentMs != NONE && mPageLoadStartedMs != NONE) {
if (mFirstContentfulPaintMs != NONE) {
logMetricsAndFinish();
} else {
logMetricsAndFinishDelayed(3000);
}
}
break; break;
default: default:
break; break;
} }
if (allSet()) logMetricsAndFinish();
} }
@Override @Override
...@@ -132,7 +126,12 @@ public class MainActivity extends Activity { ...@@ -132,7 +126,12 @@ public class MainActivity extends Activity {
if (mFirstContentfulPaintMs == NONE) { if (mFirstContentfulPaintMs == NONE) {
mFirstContentfulPaintMs = navigationStartMs + firstPaintMs; mFirstContentfulPaintMs = navigationStartMs + firstPaintMs;
} }
if (mPageLoadFinishedMs != NONE) logMetricsAndFinish(); if (allSet()) logMetricsAndFinish();
}
private boolean allSet() {
return mIntentSentMs != NONE && mPageLoadStartedMs != NONE
&& mFirstContentfulPaintMs != NONE && mPageLoadFinishedMs != NONE;
} }
/** Outputs the available metrics, and die. Unavalaible metrics are set to -1. */ /** Outputs the available metrics, and die. Unavalaible metrics are set to -1. */
...@@ -153,7 +152,7 @@ public class MainActivity extends Activity { ...@@ -153,7 +152,7 @@ public class MainActivity extends Activity {
public void run() { public void run() {
logMetricsAndFinish(); logMetricsAndFinish();
} }
}, 3000); }, delayMs);
} }
} }
......
...@@ -37,6 +37,8 @@ import device_setup ...@@ -37,6 +37,8 @@ import device_setup
_CHROME_PACKAGE = 'com.google.android.apps.chrome' _CHROME_PACKAGE = 'com.google.android.apps.chrome'
_COMMAND_LINE_PATH = '/data/local/tmp/chrome-command-line' _COMMAND_LINE_PATH = '/data/local/tmp/chrome-command-line'
_TEST_APP_PACKAGE_NAME = 'org.chromium.customtabsclient.test' _TEST_APP_PACKAGE_NAME = 'org.chromium.customtabsclient.test'
_INVALID_VALUE = -1
# Command line arguments for Chrome. # Command line arguments for Chrome.
CHROME_ARGS = [ CHROME_ARGS = [
...@@ -151,8 +153,9 @@ def ParseResult(result_line): ...@@ -151,8 +153,9 @@ def ParseResult(result_line):
assert len(tokens) == 8 assert len(tokens) == 8
intent_sent_timestamp = int(tokens[4]) intent_sent_timestamp = int(tokens[4])
return Result(bool(tokens[0]), tokens[1], int(tokens[2]), int(tokens[3]), return Result(bool(tokens[0]), tokens[1], int(tokens[2]), int(tokens[3]),
int(tokens[5]) - intent_sent_timestamp, max(_INVALID_VALUE, int(tokens[5]) - intent_sent_timestamp),
int(tokens[6]) - intent_sent_timestamp, int(tokens[7])) max(_INVALID_VALUE, int(tokens[6]) - intent_sent_timestamp),
max(_INVALID_VALUE, int(tokens[7]) - intent_sent_timestamp))
def LoopOnDevice(device, configs, output_filename, wpr_archive_path=None, def LoopOnDevice(device, configs, output_filename, wpr_archive_path=None,
...@@ -221,9 +224,9 @@ def ProcessOutput(filename): ...@@ -221,9 +224,9 @@ def ProcessOutput(filename):
result['speculation_mode'] = data[:, 1] result['speculation_mode'] = data[:, 1]
result['delay_to_may_launch_url'] = data[:, 2] result['delay_to_may_launch_url'] = data[:, 2]
result['delay_to_launch_url'] = data[:, 3] result['delay_to_launch_url'] = data[:, 3]
result['commit'] = data[:, 5] - data[:, 4] result['commit'] = data[:, 4]
result['plt'] = data[:, 6] - data[:, 4] result['plt'] = data[:, 5]
result['first_contentful_paint'] = data[7] result['first_contentful_paint'] = data[:, 6]
return result return result
......
...@@ -48,6 +48,8 @@ def _CreateArgumentParser(): ...@@ -48,6 +48,8 @@ def _CreateArgumentParser():
parser.add_argument('--url', help='URL to load.') parser.add_argument('--url', help='URL to load.')
parser.add_argument('--prefetch_delay_ms', parser.add_argument('--prefetch_delay_ms',
help='Prefetch delay in ms. -1 to disable prefetch.') help='Prefetch delay in ms. -1 to disable prefetch.')
parser.add_argument('--output_filename',
help='CSV file to append the result to.')
return parser return parser
...@@ -97,9 +99,9 @@ def _Go(device, url, prefetch_delay_ms): ...@@ -97,9 +99,9 @@ def _Go(device, url, prefetch_delay_ms):
result = customtabs_benchmark.RunOnce( result = customtabs_benchmark.RunOnce(
device, url, warmup=True, speculation_mode=prefetch_mode, device, url, warmup=True, speculation_mode=prefetch_mode,
delay_to_may_launch_url=2000, delay_to_may_launch_url=2000,
delay_to_launch_url=max(0, prefetch_delay_ms), cold=False, delay_to_launch_url=prefetch_delay_ms, cold=False,
chrome_args=chrome_args, reset_chrome_state=False) chrome_args=chrome_args, reset_chrome_state=False)
print customtabs_benchmark.ParseResult(result) return customtabs_benchmark.ParseResult(result)
def main(): def main():
...@@ -115,7 +117,10 @@ def main(): ...@@ -115,7 +117,10 @@ def main():
sys.exit(1) sys.exit(1)
_Setup(device, args.database) _Setup(device, args.database)
_Go(device, args.url, int(args.prefetch_delay_ms)) result = _Go(device, args.url, int(args.prefetch_delay_ms))
print result
with open(args.output_filename, 'a') as f:
f.write(','.join(str(x) for x in result) + '\n')
if __name__ == '__main__': if __name__ == '__main__':
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment