skia2/infra/bots/recipes
Brian Osman 76323bc061 Threaded generation of software paths
All information needed by the thread is captured by the prepare
callback object, the lambda captures a pointer to that, and does the
mask render. Once it's done, it signals the semaphore (also owned by the
callback). The callback defers the semaphore wait even longer (into the
ASAP upload), so the odds of waiting for the thread are REALLY low.

Also did a bunch of cleanup along the way, and put in some trace markers
so we can monitor how well this is working.

Traces of a GM that includes GPU and SW path rendering (path-reverse):

Original:
    https://screenshot.googleplex.com/f5BG3901tQg.png
Threaded, with wait in the callback (notice pre flush callback blocking):
    https://screenshot.googleplex.com/htOSZFE2s04.png
Current version, with wait deferred to ASAP upload function:
    https://screenshot.googleplex.com/GHjD0U3C34q.png

Bug: skia:
Change-Id: I3d5a230bbd68eb35e1f0574b308485c691435790
Reviewed-on: https://skia-review.googlesource.com/36560
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2017-08-24 15:22:57 +00:00
..
bundle_recipes.expected Use chrome-infra Git CIPD package 2017-06-06 12:45:11 +00:00
check_generated_files.expected Revert "Bring recipes up to date." 2017-08-09 13:03:15 +00:00
compile.expected Revert "Bring recipes up to date." 2017-08-09 13:03:15 +00:00
ct_skps.expected Revert "Bring recipes up to date." 2017-08-09 13:03:15 +00:00
housekeeper.expected Revert "Bring recipes up to date." 2017-08-09 13:03:15 +00:00
infra.expected Revert "Bring recipes up to date." 2017-08-09 13:03:15 +00:00
perf.expected Rename Mac bots to match reality. 2017-08-18 12:20:19 +00:00
recreate_skps.expected Revert "Bring recipes up to date." 2017-08-09 13:03:15 +00:00
skpbench.expected Remove dependency on recipe_engine/shutil. 2017-07-10 13:46:35 +00:00
test.expected Threaded generation of software paths 2017-08-24 15:22:57 +00:00
update_meta_config.expected Revert "Bring recipes up to date." 2017-08-09 13:03:15 +00:00
upload_dm_results.expected Remove dependency on recipe_engine/shutil. 2017-07-10 13:46:35 +00:00
upload_nano_results.expected [recipes] Switch to file module from recipe_engine 2017-06-16 17:41:28 +00:00
bundle_recipes.py Use chrome-infra Git CIPD package 2017-06-06 12:45:11 +00:00
check_generated_files.py Add a bot to verify that generated SKSL files have not been hand-edited 2017-07-28 12:20:47 +00:00
compile.py Stop adding Android-specific defines to SkUserConfig 2017-07-11 20:43:35 +00:00
ct_skps.py Bot updates for SkiaCT tasks. 2017-08-08 14:17:49 +00:00
housekeeper.py [skia] convert recipes and module to new context module 2017-05-15 13:46:22 +00:00
infra.py Fixes for internal repo infra tests 2017-06-15 13:10:59 +00:00
perf.py Rename Mac bots to match reality. 2017-08-18 12:20:19 +00:00
README.md Use new recipes.py test command 2017-04-18 13:57:56 +00:00
recreate_skps.py Revert "Re-enable uploading to partner bucket" 2017-07-13 20:46:34 +00:00
skpbench.py Remove dependency on recipe_engine/shutil. 2017-07-10 13:46:35 +00:00
test.py Threaded generation of software paths 2017-08-24 15:22:57 +00:00
update_meta_config.py [recipes] Switch to file module from recipe_engine 2017-06-16 17:41:28 +00:00
upload_dm_results.py Remove dependency on recipe_engine/shutil. 2017-07-10 13:46:35 +00:00
upload_nano_results.py [recipes] Switch to file module from recipe_engine 2017-06-16 17:41:28 +00:00

Skia Recipes

These are the top-level scripts which run inside of Swarming tasks to perform all of Skia's automated testing.

To run a recipe locally:

$ python infra/bots/recipes.py run --workdir=/tmp/<workdir> <recipe name without .py> key1=value1 key2=value2 ...

Each recipe may have its own required properties which must be entered as key/value pairs in the command.

When you change a recipe, you generally need to re-train the simulation test:

$ python infra/bots/recipes.py test run --train

Or:

    $ cd infra/bots; make train

The test generates expectations files for the tests contained within each recipe which illustrate which steps would run, given a particular set of inputs. Pay attention to the diffs in these files when making changes to ensure that your change has the intended effect.