Add back the ability to run just some tests with "git cl try" |
|||||||||
Issue descriptionFor example, suppose I want to make a change to just a single test and start a try job. I'd like to pick a set of bots, pick a test target name, and a filter, and have it skip all steps that aren't related to that test target. Ideally, it'd only compile that specific target (like content_browsertests, for example - should take half as long as building everything) The primary goal would be to reduce cycle time. If I want to write a cross-platform browser test and see what happens on all platforms the average wait for all try jobs to finish is ~2 hours.
,
May 26 2017
,
May 26 2017
,
May 30 2017
Yes, this is something we want to support. (For the sake of pedantry, it used to work with "git try", it has never worked with "git cl try".) I think that adding this feature is something that the platform team should drive, as I believe it will require a bunch of work to support building smaller unittest targets, and passing target filters into the resulting jobs.
,
May 30 2017
It does work with git cl try!
$ git cl try --help
...
-p PROPERTIES, --property=PROPERTIES
Specify generic properties in the form -p key1=value1
-p key2=value2 etc. The value will be treated as json
if decodable, or as string otherwise. NOTE: using this
may make your try job not usable for CQ, which will
then schedule another try job with default properties
...
Furthermore, CQ will correctly not take such tryjobs into account and will reschedule them instead.
V8 project is already taking advantage of this, since as agable@ correctly mentioned above, V8's recipes understand such properties and then propagate them through isolate to test runners.
So, what's missing is this in Chrome recipes and possible test runners.
,
Dec 11 2017
I'm marking this as available P2. We're probably not going to get around to implementing this this quarter, but it does seem like a good feature, so we might re-visit it in the future. Tandrii, is there any documentation about how this works for V8 that you can point to?
,
Dec 11 2017
Hm, not aware of docs, +machenbach@ From my PoV, it's trivial to get this property from inside recipe. The difficult part is propagating this property to all test runners (and possibly even as early as gn to avoid unnecessary compile & isolate targets). But the good news, is that it's easy to experiment today: * CQ won't be accidentally use such tryjobs * you have awesome led tool at your disposal: go/led-talk
,
Dec 12 2017
We have no specific docs. But agreeing with Andrii. Setting properties is trivial, see comment 5. Those properties will reach the recipe. Then comes the hard part in chromium_test module to teach the recipes what to do with this. First you need to map the filtering properties to steps somehow (i.e. skip some steps entirely), then pass it to the different types of test-runners (e.g. gtest vs. telemetry vs. layout tests etc.). Bonus points would be to only compile what is really needed for testing, in order to also speed up this part. E.g. if I only want to run a specific browser_test, then only browser_tests should be compiled, all other test steps should be skipped, a filter needs to be passed to the browser_tests executable and maybe also swarming shards need to be adjusted on the fly (that's probably tricky). In the simple case, we could keep original shards (e.g. 9) but only run that one test.
,
Dec 12
This issue has been Available for over a year. If it's no longer important or seems unlikely to be fixed, please consider closing it out. If it is important, please re-triage the issue. Sorry for the inconvenience if the bug really should have been left as Available. For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
,
Dec 12
,
Dec 12
V8 still wants this feature. It'd be particularly helpful to quickly bisect through stuck V8 rolls. |
|||||||||
►
Sign in to add a comment |
|||||||||
Comment 1 by dpranke@chromium.org
, May 25 2017