Transition Telemetry results from simplified json to json test results format |
|||||||||
Issue descriptionTelemetry currently has 8 output format choices in results_options.py. One of these, json, is being output for every benchmark except those already transitioned to using json-test-results (which are uploaded to the flakiness dashboard). json is a simplified json format used only by our team. We should stop using this result type and transition all benchmarks to output json-test-results instead (in addition to chartjson and whatever else they are outputting still). Caveat: We currently upload all json-test-results that are output by Telemetry to the flakiness dashboard. We'd like to avoid uploading additional benchmarks until they are ready. Steps to accomplish this: 1) Pull an additional parameter in https://cs.chromium.org/chromium/build/scripts/slave/recipe_modules/chromium_tests/steps.py?type=cs&l=1686 called upload_test_results 2) Pass that param at https://cs.chromium.org/chromium/build/scripts/slave/recipe_modules/chromium_tests/steps.py?type=cs&l=1753 and https://cs.chromium.org/chromium/build/scripts/slave/recipe_modules/chromium_tests/steps.py?type=cs&l=1766 3) Update perf_data_generator to generate this param, set to False for all that are not being uploaded to the flakiness dashboard 4) Update https://cs.chromium.org/chromium/src/testing/scripts/run_telemetry_benchmark_as_googletest.py?type=cs&l=76 to json-test-results 5) Delete all usage of result type json from run_telemetry_benchmark_as_googletest.py and results_options.py 6) Delete json_output_formatter.py and json_output_formatter_unittest.py Further work should include review of the remaining output format choices: 'html', 'gtest', 'chartjson', 'csv-pivot-table', 'histograms', 'legacy-html' to see if there are others that are worth removing.
,
Jul 25 2017
,
Jul 25 2017
Ned and Emily, Does this plan seem reasonable to you? Think it's safe to remove json_output_formatter.py? Or would this be a send an email to telemetry-announce now and wait two weeks before doing that step? Thanks!
,
Jul 25 2017
We should always send email to telemetry-announce@ upon changing API (even when we are 99% sure that no one use that API). +1 from me for removing json_output_formatter.py You will want to talk to people who maintain https://cs.chromium.org/chromium/src/tools/perf/run_and_compare_benchmarks as well since this script depends on json output format (contacts are mgiuca@, benwells@) Ethan: FYI
,
Jul 25 2017
,
Jul 25 2017
+1 to removing json_output_formatter, but be aware that --output-format=json has been propagated to folks as the hack to use to get Telemetry to output traces for each story run. This is just an artifact of the way json_output_formatter works (it treats TraceValues specially), and probably should be replaced by an appropriate, more purposeful flag. What do we plan to tell people to do instead, if they want Telemetry to emit traces?
,
Jul 25 2017
So far it sounds like steps 1-3 are okay to do but 4-6 are going to hit some snags. I'll reach out to mguica@ and benwells@ about run_and_compare_benchmarks about step 4. With regards to steps 5 & 6 and generating traces, interesting point! I did not know that the flag was being used for that. So we should either keep the json flag around, or better yet, create a flag specifically for generating trace values. Or we can generate the trace files as a part of the updated json-test-results flag but it would be nice to have things cleaned up and make sense. I'll ping you to chat about this, Ethan!
,
Jul 26 2017
Okay so plan w.r.t. tracing is to leave json_output_formatter.py for now. I'm gonna work to come up with a plan to refactor the tracing output in Q4 so we remove hacks instead of replacing them with more hacks. For now, I'm going to focus on steps 1-4. (yay for overall code cleanup planning!)
,
Jul 26 2017
Thanks Ashley! You always amaze me by how fast you detect these architecture issues & opportunities for making things better.
,
Jul 26 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/tools/build/+/d3a7a573c7f6f881ac2354ea3fa990616a7d68b0 commit d3a7a573c7f6f881ac2354ea3fa990616a7d68b0 Author: Ashley Enstad <ashleymarie@chromium.org> Date: Wed Jul 26 20:24:21 2017 Pass through upload_test_results parameter for swarming SwarmingIsolatedScriptTest has an optional parameter upload_test_results. By passing this param from the swarming config, we allow Telemetry (and other users of generate_isolated_script) to delineate which test results should be uploaded to the server. We default this to True if not defined since that is the current default in SwarmingIsolatedScriptTest.__init__. BUG=chromium:748638 Change-Id: Ia8fa52a3d9bf2f72a65d28ae383953775305b579 Reviewed-on: https://chromium-review.googlesource.com/586972 Commit-Queue: Ashley Enstad <ashleymarie@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Stephen Martinis <martiniss@chromium.org> [modify] https://crrev.com/d3a7a573c7f6f881ac2354ea3fa990616a7d68b0/scripts/slave/recipe_modules/chromium_tests/steps.py
,
Jul 27 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/88b7285575ddbe56cc1f35f2408d6cdffbad7519 commit 88b7285575ddbe56cc1f35f2408d6cdffbad7519 Author: Ashley Enstad <ashleymarie@chromium.org> Date: Thu Jul 27 14:08:43 2017 Only upload test results for specific benchmarks BUG=chromium:748638 BUG= chromium:717394 NOTRY=true Change-Id: I881e4e33d1803837ed373b863ae6a0c0d33762c0 Reviewed-on: https://chromium-review.googlesource.com/587092 Commit-Queue: Ashley Enstad <ashleymarie@chromium.org> Reviewed-by: Ned Nguyen <nednguyen@google.com> Cr-Commit-Position: refs/heads/master@{#489913} [modify] https://crrev.com/88b7285575ddbe56cc1f35f2408d6cdffbad7519/testing/buildbot/chromium.perf.fyi.json [modify] https://crrev.com/88b7285575ddbe56cc1f35f2408d6cdffbad7519/testing/buildbot/chromium.perf.json [modify] https://crrev.com/88b7285575ddbe56cc1f35f2408d6cdffbad7519/tools/perf/core/perf_data_generator.py [modify] https://crrev.com/88b7285575ddbe56cc1f35f2408d6cdffbad7519/tools/perf/core/perf_data_generator_unittest.py
,
Jul 27 2017
Thanks for your supportive words Ned! :) Steps 1-3 are submitted at this point Step 4 remains Step 5-6 will be punted to Q4
,
Jul 27 2017
Wow so exciting that you are cleaning up some of this! Full disclosure, even before leave I wasn't as familiar with the flakiness dashboard efforts. The only thing I can think of that might be unrelated, but worth a look is the runtest.py script that seems to be run by everyone and everything: https://cs.chromium.org/chromium/build/scripts/slave/runtest.py. I am looping martiniss@ in on this because he might know better if this is used in our perf workflow anymore. Since everything is swarmed, I *think* we bypass most of this now, but I vaguely remember this script relying on the basic success/failure json and I am not sure if the new format would break that. Again, for perf purposes we shouldn't be using this anymore, but I think there are more consumers of this script.
,
Jul 27 2017
For Step 4, looks like run_and_compare_benchmarks actually depends on chartjson output and html output, not json output https://cs.chromium.org/chromium/src/tools/perf/run_and_compare_benchmarks?l=46 So we should actually be good to go through with step 4 from that perspective
,
Jul 27 2017
,
Jul 27 2017
#14: good catch! So I think you're right & we can make an announcement now about deprecating json results . Somehow I misremember this.
,
Jul 27 2017
Thanks Emily! If that script depends on the basic success/failure json, then these changes could break it. I'll definitely spend some time reading through it today :)
,
Jul 27 2017
I'm looking at slave/runtest.py and am only seeing references to gtestjson and chartjson, not the simplified format I'm trying to remove in Q4. It's definitely possible I'm missing it though since this file is 1778 lines long :/ At the very least, it doesn't seem like that will affect step 4
,
Jul 31 2017
Thanks for checking, you are probably right!
,
Aug 1 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/4147da786b8ecb0c27e539cfccae51aade36bb0c commit 4147da786b8ecb0c27e539cfccae51aade36bb0c Author: Ashley Enstad <ashleymarie@chromium.org> Date: Tue Aug 01 14:18:45 2017 Adding --output-format=json-test-results for all Telemetry benchmarks Now that all the benchmarks are set not to upload results until their individual flags are flipped, we can change all the benchmarks to output json of the json-test-results format instead of the old simplified json format. BUG=chromium:748638 Change-Id: I10ad5029f29052aec44a0476fe17db74215f4786 Reviewed-on: https://chromium-review.googlesource.com/589820 Reviewed-by: Ned Nguyen <nednguyen@google.com> Commit-Queue: Ashley Enstad <ashleymarie@chromium.org> Cr-Commit-Position: refs/heads/master@{#490988} [modify] https://crrev.com/4147da786b8ecb0c27e539cfccae51aade36bb0c/testing/buildbot/chromium.perf.fyi.json [modify] https://crrev.com/4147da786b8ecb0c27e539cfccae51aade36bb0c/testing/buildbot/chromium.perf.json [modify] https://crrev.com/4147da786b8ecb0c27e539cfccae51aade36bb0c/testing/scripts/run_telemetry_benchmark_as_googletest.py [modify] https://crrev.com/4147da786b8ecb0c27e539cfccae51aade36bb0c/tools/perf/core/perf_data_generator.py [modify] https://crrev.com/4147da786b8ecb0c27e539cfccae51aade36bb0c/tools/perf/core/perf_data_generator_unittest.py
,
Aug 2 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/8148f5fdc47e7f1a4c62c4df85770d1ec2594896 commit 8148f5fdc47e7f1a4c62c4df85770d1ec2594896 Author: Ashley Enstad <ashleymarie@chromium.org> Date: Wed Aug 02 03:08:57 2017 Updating run_telemetry_benchmark_as_googletest to resolve crash. Previously, run_telemetry_benchmark_as_googletest would check the validity of the benchmark run by opening results.json. This file was generated using the --output-format=json flag. By removing that flag in https://chromium-review.googlesource.com/c/589820, I broke all the Telemetry benchmarks on the perf waterfall o.O my bad. This change should fix the failing tests by checking the validity of the benchmark run by opening test-results.json, generated using the --output-format=json-test-results flag now being used for all Telemetry benchmark runs on the waterfall. BUG= 751346 , 748638 NOTRY=true # This script is not run on trybot/CQ, hence should be safe to notry Change-Id: I75e0abb5801f1cbaa480e65ade1827335a1195fd Reviewed-on: https://chromium-review.googlesource.com/597428 Commit-Queue: Ashley Enstad <ashleymarie@chromium.org> Reviewed-by: Ned Nguyen <nednguyen@google.com> Cr-Commit-Position: refs/heads/master@{#491242} [modify] https://crrev.com/8148f5fdc47e7f1a4c62c4df85770d1ec2594896/testing/scripts/run_telemetry_benchmark_as_googletest.py
,
Nov 12
,
Jan 16
,
Jan 16
|
|||||||||
►
Sign in to add a comment |
|||||||||
Comment 1 by ashleymarie@chromium.org
, Jul 25 2017Labels: -Pri-3 Pri-1