From d817b224f57b0f47a8ee53d6ad7404eeeb13d1a2 Mon Sep 17 00:00:00 2001 From: Alan Jeffrey Date: Wed, 15 Nov 2017 12:20:01 -0600 Subject: [PATCH 1/3] Support saving test data to .csv as well as .json. --- etc/ci/performance/runner.py | 40 +++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/etc/ci/performance/runner.py b/etc/ci/performance/runner.py index b5afb96ed17..d544a3be547 100644 --- a/etc/ci/performance/runner.py +++ b/etc/ci/performance/runner.py @@ -5,6 +5,7 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. import argparse +import csv import itertools import json import os @@ -236,6 +237,40 @@ def save_result_json(results, filename, manifest, expected_runs, base): print("Result saved to {}".format(filename)) +def save_result_csv(results, filename, manifest, expected_runs, base): + + fieldnames = [ + 'testcase', + 'title', + 'connectEnd', + 'connectStart', + 'domComplete', + 'domContentLoadedEventEnd', + 'domContentLoadedEventStart', + 'domInteractive', + 'domLoading', + 'domainLookupEnd', + 'domainLookupStart', + 'fetchStart', + 'loadEventEnd', + 'loadEventStart', + 'navigationStart', + 'redirectEnd', + 'redirectStart', + 'requestStart', + 'responseEnd', + 'responseStart', + 'secureConnectionStart', + 'unloadEventEnd', + 'unloadEventStart', + ] + + with open(filename, 'w') as csvfile: + writer = csv.DictWriter(csvfile, fieldnames) + writer.writeheader() + writer.writerows(results) + + def format_result_summary(results): failures = list(filter(lambda x: x['domComplete'] == -1, results)) result_log = """ @@ -306,7 +341,10 @@ def main(): # TODO: Record and analyze other performance.timing properties print(format_result_summary(results)) - save_result_json(results, args.output_file, testcases, args.runs, args.base) + if args.output_file.endswith('.csv'): + save_result_csv(results, args.output_file, testcases, args.runs, args.base) + else: + save_result_json(results, args.output_file, testcases, args.runs, args.base) except KeyboardInterrupt: print("Test stopped by user, saving partial result") From a1dfce4d3cd4556d36ce197330add511771dc22d Mon Sep 17 00:00:00 2001 From: Alan Jeffrey Date: Wed, 15 Nov 2017 12:20:37 -0600 Subject: [PATCH 2/3] Made .csv the default file format for perf tests. --- etc/ci/performance/test_all.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/ci/performance/test_all.sh b/etc/ci/performance/test_all.sh index c112a20c8b3..77fce655e8a 100755 --- a/etc/ci/performance/test_all.sh +++ b/etc/ci/performance/test_all.sh @@ -49,7 +49,7 @@ python3 -m http.server > /dev/null 2>&1 & # MANIFEST="page_load_test/tp5n/20160509.manifest" # A manifest that excludes MANIFEST="page_load_test/example.manifest" # A manifest that excludes # timeout test cases -PERF_FILE="output/perf-$(date +%s).json" +PERF_FILE="output/perf-$(date +%s).csv" echo "Running tests" python3 runner.py ${engine} --runs 4 --timeout "${timeout}" --base "${base}" \ From 45d5d53e5533b4d7eb793143fbf904cd7beb9783 Mon Sep 17 00:00:00 2001 From: Alan Jeffrey Date: Wed, 15 Nov 2017 12:21:12 -0600 Subject: [PATCH 3/3] Added title to example test perf document. --- etc/ci/performance/page_load_test/example/example_sync.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/ci/performance/page_load_test/example/example_sync.html b/etc/ci/performance/page_load_test/example/example_sync.html index 2d5b0c72aec..0ee4ef3469b 100644 --- a/etc/ci/performance/page_load_test/example/example_sync.html +++ b/etc/ci/performance/page_load_test/example/example_sync.html @@ -3,7 +3,7 @@ - + An example pageload test Hello World