aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Mac-Clang-Arm7-Release-iOS.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Mac-Clang-Arm7-Release-iOS.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Mac-Clang-arm64-Debug-GN_iOS.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Mac-Clang-arm64-Debug-GN_iOS.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Mac-Clang-mipsel-Debug-GN_Android.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Mac-Clang-mipsel-Debug-GN_Android.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Mac-Clang-x86_64-Debug-CommandBuffer.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Mac-Clang-x86_64-Debug-CommandBuffer.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Mac-Clang-x86_64-Release-GN.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Mac-Clang-x86_64-Release-GN.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-Clang-arm64-Debug-GN_Android-Trybot.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-Clang-arm64-Debug-GN_Android-Trybot.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-Clang-arm64-Debug-GN_Android_FrameworkDefs.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-Clang-arm64-Debug-GN_Android_FrameworkDefs.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-Clang-arm64-Release-GN_Android.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-Clang-arm64-Release-GN_Android.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-Clang-arm64-Release-GN_Android_Vulkan.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-Clang-arm64-Release-GN_Android_Vulkan.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-Clang-x86_64-Debug-ASAN.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-Clang-x86_64-Debug-ASAN.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-Clang-x86_64-Debug-GN.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-Clang-x86_64-Debug-GN.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86-Debug.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86-Debug.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Debug-GN.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Debug-GN.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Debug-MSAN.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Debug-MSAN.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Debug-NoGPU.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Debug-NoGPU.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Debug-SK_USE_DISCARDABLE_SCALEDIMAGECACHE.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Debug-SK_USE_DISCARDABLE_SCALEDIMAGECACHE.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Release-ANGLE.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Release-ANGLE.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Release-Fast.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Release-Fast.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Release-Mesa.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Release-Mesa.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Release-PDFium.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Release-PDFium.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Release-PDFium_SkiaPaths.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Release-PDFium_SkiaPaths.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Release-Valgrind.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Release-Valgrind.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Win-Clang-arm64-Release-GN_Android.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Win-Clang-arm64-Release-GN_Android.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Win-MSVC-x86-Debug-ANGLE.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Win-MSVC-x86-Debug-ANGLE.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Win-MSVC-x86-Debug-Exceptions.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Win-MSVC-x86-Debug-Exceptions.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Win-MSVC-x86-Debug.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Win-MSVC-x86-Debug.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Win-MSVC-x86-Release-GDI.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Win-MSVC-x86-Release-GDI.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Win-MSVC-x86-Release-GN.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Win-MSVC-x86-Release-GN.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/Build-Win-MSVC-x86_64-Release-Vulkan.json (renamed from infra/bots/recipes/swarm_compile.expected/Build-Win-MSVC-x86_64-Release-Vulkan.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/big_issue_number.json (renamed from infra/bots/recipes/swarm_compile.expected/big_issue_number.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/buildbotless_trybot_gerrit.json (renamed from infra/bots/recipes/swarm_compile.expected/buildbotless_trybot_gerrit.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/buildbotless_trybot_rietveld.json (renamed from infra/bots/recipes/swarm_compile.expected/buildbotless_trybot_rietveld.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.expected/recipe_with_gerrit_patch.json (renamed from infra/bots/recipes/swarm_compile.expected/recipe_with_gerrit_patch.json)0
-rw-r--r--infra/bots/recipe_modules/compile/example.py168
-rw-r--r--infra/bots/recipe_modules/perf/example.expected/Perf-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-GN_Android_Vulkan.json (renamed from infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-GN_Android_Vulkan.json)0
-rw-r--r--infra/bots/recipe_modules/perf/example.expected/Perf-Android-Clang-Nexus5-GPU-Adreno330-arm-Debug-GN_Android.json (renamed from infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-Nexus5-GPU-Adreno330-arm-Debug-GN_Android.json)0
-rw-r--r--infra/bots/recipe_modules/perf/example.expected/Perf-Android-Clang-Nexus6-GPU-Adreno420-arm-Release-GN_Android.json (renamed from infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-Nexus6-GPU-Adreno420-arm-Release-GN_Android.json)0
-rw-r--r--infra/bots/recipe_modules/perf/example.expected/Perf-Android-Clang-Nexus7-GPU-Tegra3-arm-Release-GN_Android.json (renamed from infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-Nexus7-GPU-Tegra3-arm-Release-GN_Android.json)0
-rw-r--r--infra/bots/recipe_modules/perf/example.expected/Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Release-GN_Android.json (renamed from infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Release-GN_Android.json)0
-rw-r--r--infra/bots/recipe_modules/perf/example.expected/Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-GN_Android.json (renamed from infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-GN_Android.json)0
-rw-r--r--infra/bots/recipe_modules/perf/example.expected/Perf-Mac-Clang-MacMini6.2-CPU-AVX-x86_64-Release-GN.json (renamed from infra/bots/recipes/swarm_perf.expected/Perf-Mac-Clang-MacMini6.2-CPU-AVX-x86_64-Release-GN.json)0
-rw-r--r--infra/bots/recipe_modules/perf/example.expected/Perf-Mac-Clang-MacMini6.2-GPU-HD4000-x86_64-Debug-CommandBuffer.json (renamed from infra/bots/recipes/swarm_perf.expected/Perf-Mac-Clang-MacMini6.2-GPU-HD4000-x86_64-Debug-CommandBuffer.json)0
-rw-r--r--infra/bots/recipe_modules/perf/example.expected/Perf-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release-GN.json (renamed from infra/bots/recipes/swarm_perf.expected/Perf-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release-GN.json)0
-rw-r--r--infra/bots/recipe_modules/perf/example.expected/Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-ANGLE.json (renamed from infra/bots/recipes/swarm_perf.expected/Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-ANGLE.json)0
-rw-r--r--infra/bots/recipe_modules/perf/example.expected/Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind.json (renamed from infra/bots/recipes/swarm_perf.expected/Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind.json)0
-rw-r--r--infra/bots/recipe_modules/perf/example.expected/Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Debug.json (renamed from infra/bots/recipes/swarm_perf.expected/Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Debug.json)0
-rw-r--r--infra/bots/recipe_modules/perf/example.expected/Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Release.json (renamed from infra/bots/recipes/swarm_perf.expected/Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Release.json)0
-rw-r--r--infra/bots/recipe_modules/perf/example.expected/Perf-Win10-MSVC-NUC-GPU-IntelIris540-x86_64-Release-ANGLE.json (renamed from infra/bots/recipes/swarm_perf.expected/Perf-Win10-MSVC-NUC-GPU-IntelIris540-x86_64-Release-ANGLE.json)0
-rw-r--r--infra/bots/recipe_modules/perf/example.expected/Perf-Win8-MSVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE.json (renamed from infra/bots/recipes/swarm_perf.expected/Perf-Win8-MSVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE.json)0
-rw-r--r--infra/bots/recipe_modules/perf/example.expected/Perf-Win8-MSVC-ShuttleB-GPU-HD4600-x86_64-Release-Trybot.json (renamed from infra/bots/recipes/swarm_perf.expected/Perf-Win8-MSVC-ShuttleB-GPU-HD4600-x86_64-Release-Trybot.json)0
-rw-r--r--infra/bots/recipe_modules/perf/example.expected/Perf-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug.json (renamed from infra/bots/recipes/swarm_perf.expected/Perf-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug.json)0
-rw-r--r--infra/bots/recipe_modules/perf/example.expected/big_issue_number.json (renamed from infra/bots/recipes/swarm_perf.expected/big_issue_number.json)0
-rw-r--r--infra/bots/recipe_modules/perf/example.expected/nobuildbot.json (renamed from infra/bots/recipes/swarm_perf.expected/nobuildbot.json)0
-rw-r--r--infra/bots/recipe_modules/perf/example.expected/recipe_with_gerrit_patch.json (renamed from infra/bots/recipes/swarm_perf.expected/recipe_with_gerrit_patch.json)0
-rw-r--r--infra/bots/recipe_modules/perf/example.py157
-rw-r--r--infra/bots/recipe_modules/skpbench/example.expected/Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-GN_Android_Skpbench.json290
-rw-r--r--infra/bots/recipe_modules/skpbench/example.expected/Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-GN_Android_Vulkan_Skpbench.json (renamed from infra/bots/recipes/swarm_skpbench.expected/Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-GN_Android_Vulkan_Skpbench.json)0
-rw-r--r--infra/bots/recipe_modules/skpbench/example.py56
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-AndroidOne-CPU-MT6582-arm-Release-GN_Android.json (renamed from infra/bots/recipes/swarm_test.expected/Test-Android-Clang-AndroidOne-CPU-MT6582-arm-Release-GN_Android.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-GN_Android.json (renamed from infra/bots/recipes/swarm_test.expected/Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-GN_Android.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-GalaxyS7-GPU-Adreno530-arm64-Debug-GN_Android.json (renamed from infra/bots/recipes/swarm_test.expected/Test-Android-Clang-GalaxyS7-GPU-Adreno530-arm64-Debug-GN_Android.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-GN_Android.json (renamed from infra/bots/recipes/swarm_test.expected/Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-GN_Android.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-Nexus10-GPU-MaliT604-arm-Release-GN_Android.json (renamed from infra/bots/recipes/swarm_test.expected/Test-Android-Clang-Nexus10-GPU-MaliT604-arm-Release-GN_Android.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-Nexus5-GPU-Adreno330-arm-Release-Android.json (renamed from infra/bots/recipes/swarm_test.expected/Test-Android-Clang-Nexus5-GPU-Adreno330-arm-Release-Android.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-Nexus6-GPU-Adreno420-arm-Debug-GN_Android.json (renamed from infra/bots/recipes/swarm_test.expected/Test-Android-Clang-Nexus6-GPU-Adreno420-arm-Debug-GN_Android.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-Nexus6p-GPU-Adreno430-arm64-Debug-GN_Android_Vulkan.json (renamed from infra/bots/recipes/swarm_test.expected/Test-Android-Clang-Nexus6p-GPU-Adreno430-arm64-Debug-GN_Android_Vulkan.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-GN_Android.json (renamed from infra/bots/recipes/swarm_test.expected/Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-GN_Android.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-NexusPlayer-CPU-SSE4-x86-Release-GN_Android.json (renamed from infra/bots/recipes/swarm_test.expected/Test-Android-Clang-NexusPlayer-CPU-SSE4-x86-Release-GN_Android.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-PixelC-GPU-TegraX1-arm64-Debug-GN_Android.json (renamed from infra/bots/recipes/swarm_test.expected/Test-Android-Clang-PixelC-GPU-TegraX1-arm64-Debug-GN_Android.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Mac-Clang-MacMini4.1-GPU-GeForce320M-x86_64-Debug.json (renamed from infra/bots/recipes/swarm_test.expected/Test-Mac-Clang-MacMini4.1-GPU-GeForce320M-x86_64-Debug.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Mac-Clang-MacMini6.2-CPU-AVX-x86_64-Debug.json (renamed from infra/bots/recipes/swarm_test.expected/Test-Mac-Clang-MacMini6.2-CPU-AVX-x86_64-Debug.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Mac-Clang-MacMini6.2-GPU-HD4000-x86_64-Debug-CommandBuffer.json (renamed from infra/bots/recipes/swarm_test.expected/Test-Mac-Clang-MacMini6.2-GPU-HD4000-x86_64-Debug-CommandBuffer.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Debug.json527
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-ASAN.json (renamed from infra/bots/recipes/swarm_test.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-ASAN.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-MSAN.json (renamed from infra/bots/recipes/swarm_test.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-MSAN.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug.json (renamed from infra/bots/recipes/swarm_test.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Shared.json (renamed from infra/bots/recipes/swarm_test.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Shared.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-TSAN.json (renamed from infra/bots/recipes/swarm_test.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-TSAN.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind.json (renamed from infra/bots/recipes/swarm_test.expected/Test-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Win10-MSVC-NUC-GPU-IntelIris540-x86_64-Debug-ANGLE.json (renamed from infra/bots/recipes/swarm_test.expected/Test-Win10-MSVC-NUC-GPU-IntelIris540-x86_64-Debug-ANGLE.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Win10-MSVC-ShuttleA-GPU-GTX660-x86_64-Debug-Vulkan.json (renamed from infra/bots/recipes/swarm_test.expected/Test-Win10-MSVC-ShuttleA-GPU-GTX660-x86_64-Debug-Vulkan.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Win10-MSVC-ZBOX-GPU-GTX1070-x86_64-Debug-Vulkan.json (renamed from infra/bots/recipes/swarm_test.expected/Test-Win10-MSVC-ZBOX-GPU-GTX1070-x86_64-Debug-Vulkan.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Win8-MSVC-ShuttleB-CPU-AVX2-x86_64-Release-Trybot.json (renamed from infra/bots/recipes/swarm_test.expected/Test-Win8-MSVC-ShuttleB-CPU-AVX2-x86_64-Release-Trybot.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-Win8-MSVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE.json (renamed from infra/bots/recipes/swarm_test.expected/Test-Win8-MSVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug.json (renamed from infra/bots/recipes/swarm_test.expected/Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/big_issue_number.json (renamed from infra/bots/recipes/swarm_test.expected/big_issue_number.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/failed_dm.json (renamed from infra/bots/recipes/swarm_test.expected/failed_dm.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/failed_get_hashes.json (renamed from infra/bots/recipes/swarm_test.expected/failed_get_hashes.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/missing_SKP_VERSION_device.json (renamed from infra/bots/recipes/swarm_test.expected/missing_SKP_VERSION_device.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/nobuildbot.json (renamed from infra/bots/recipes/swarm_test.expected/nobuildbot.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.expected/recipe_with_gerrit_patch.json (renamed from infra/bots/recipes/swarm_test.expected/recipe_with_gerrit_patch.json)0
-rw-r--r--infra/bots/recipe_modules/sktest/example.py225
-rw-r--r--infra/bots/recipe_modules/upload_dm_results/example.expected/failed_all.json (renamed from infra/bots/recipes/upload_dm_results.expected/failed_all.json)0
-rw-r--r--infra/bots/recipe_modules/upload_dm_results/example.expected/failed_once.json (renamed from infra/bots/recipes/upload_dm_results.expected/failed_once.json)0
-rw-r--r--infra/bots/recipe_modules/upload_dm_results/example.expected/normal_bot.json (renamed from infra/bots/recipes/upload_dm_results.expected/normal_bot.json)0
-rw-r--r--infra/bots/recipe_modules/upload_dm_results/example.expected/recipe_with_gerrit_patch.json (renamed from infra/bots/recipes/upload_dm_results.expected/recipe_with_gerrit_patch.json)0
-rw-r--r--infra/bots/recipe_modules/upload_dm_results/example.expected/trybot.json (renamed from infra/bots/recipes/upload_dm_results.expected/trybot.json)0
-rw-r--r--infra/bots/recipe_modules/upload_dm_results/example.py70
-rw-r--r--infra/bots/recipe_modules/upload_nano_results/example.expected/normal_bot.json (renamed from infra/bots/recipes/upload_nano_results.expected/normal_bot.json)0
-rw-r--r--infra/bots/recipe_modules/upload_nano_results/example.expected/recipe_with_gerrit_patch.json (renamed from infra/bots/recipes/upload_nano_results.expected/recipe_with_gerrit_patch.json)0
-rw-r--r--infra/bots/recipe_modules/upload_nano_results/example.expected/trybot.json (renamed from infra/bots/recipes/upload_nano_results.expected/trybot.json)0
-rw-r--r--infra/bots/recipe_modules/upload_nano_results/example.py50
-rw-r--r--infra/bots/recipes/swarm_compile.expected/Build-Mac-Clang-Arm7-Release.json173
-rw-r--r--infra/bots/recipes/swarm_compile.py156
-rw-r--r--infra/bots/recipes/swarm_perf.expected/Perf-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release.json206
-rw-r--r--infra/bots/recipes/swarm_perf.py133
-rw-r--r--infra/bots/recipes/swarm_skpbench.py55
-rw-r--r--infra/bots/recipes/swarm_test.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Debug.json2
-rw-r--r--infra/bots/recipes/swarm_test.py201
-rw-r--r--infra/bots/recipes/upload_dm_results.expected/upload.json111
-rw-r--r--infra/bots/recipes/upload_dm_results.py49
-rw-r--r--infra/bots/recipes/upload_nano_results.expected/upload.json31
-rw-r--r--infra/bots/recipes/upload_nano_results.py29
113 files changed, 2117 insertions, 572 deletions
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Mac-Clang-Arm7-Release-iOS.json b/infra/bots/recipe_modules/compile/example.expected/Build-Mac-Clang-Arm7-Release-iOS.json
index 9a85fed563..9a85fed563 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Mac-Clang-Arm7-Release-iOS.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Mac-Clang-Arm7-Release-iOS.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Mac-Clang-arm64-Debug-GN_iOS.json b/infra/bots/recipe_modules/compile/example.expected/Build-Mac-Clang-arm64-Debug-GN_iOS.json
index cc218ce11f..cc218ce11f 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Mac-Clang-arm64-Debug-GN_iOS.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Mac-Clang-arm64-Debug-GN_iOS.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Mac-Clang-mipsel-Debug-GN_Android.json b/infra/bots/recipe_modules/compile/example.expected/Build-Mac-Clang-mipsel-Debug-GN_Android.json
index e3874738ca..e3874738ca 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Mac-Clang-mipsel-Debug-GN_Android.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Mac-Clang-mipsel-Debug-GN_Android.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Mac-Clang-x86_64-Debug-CommandBuffer.json b/infra/bots/recipe_modules/compile/example.expected/Build-Mac-Clang-x86_64-Debug-CommandBuffer.json
index 661aaad554..661aaad554 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Mac-Clang-x86_64-Debug-CommandBuffer.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Mac-Clang-x86_64-Debug-CommandBuffer.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Mac-Clang-x86_64-Release-GN.json b/infra/bots/recipe_modules/compile/example.expected/Build-Mac-Clang-x86_64-Release-GN.json
index 216aabf553..216aabf553 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Mac-Clang-x86_64-Release-GN.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Mac-Clang-x86_64-Release-GN.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-Clang-arm64-Debug-GN_Android-Trybot.json b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-Clang-arm64-Debug-GN_Android-Trybot.json
index 78b81c7ac1..78b81c7ac1 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-Clang-arm64-Debug-GN_Android-Trybot.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-Clang-arm64-Debug-GN_Android-Trybot.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-Clang-arm64-Debug-GN_Android_FrameworkDefs.json b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-Clang-arm64-Debug-GN_Android_FrameworkDefs.json
index 553bbae0bd..553bbae0bd 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-Clang-arm64-Debug-GN_Android_FrameworkDefs.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-Clang-arm64-Debug-GN_Android_FrameworkDefs.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-Clang-arm64-Release-GN_Android.json b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-Clang-arm64-Release-GN_Android.json
index 0e44619a29..0e44619a29 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-Clang-arm64-Release-GN_Android.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-Clang-arm64-Release-GN_Android.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-Clang-arm64-Release-GN_Android_Vulkan.json b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-Clang-arm64-Release-GN_Android_Vulkan.json
index aba757358a..aba757358a 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-Clang-arm64-Release-GN_Android_Vulkan.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-Clang-arm64-Release-GN_Android_Vulkan.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-Clang-x86_64-Debug-ASAN.json b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-Clang-x86_64-Debug-ASAN.json
index 587b3e4869..587b3e4869 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-Clang-x86_64-Debug-ASAN.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-Clang-x86_64-Debug-ASAN.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-Clang-x86_64-Debug-GN.json b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-Clang-x86_64-Debug-GN.json
index 37b4f13d6e..37b4f13d6e 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-Clang-x86_64-Debug-GN.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-Clang-x86_64-Debug-GN.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86-Debug.json b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86-Debug.json
index f32a316e56..f32a316e56 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86-Debug.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86-Debug.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Debug-GN.json b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Debug-GN.json
index 9faddf7130..9faddf7130 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Debug-GN.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Debug-GN.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Debug-MSAN.json b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Debug-MSAN.json
index 0f3e6fad6f..0f3e6fad6f 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Debug-MSAN.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Debug-MSAN.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Debug-NoGPU.json b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Debug-NoGPU.json
index bb23e90a12..bb23e90a12 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Debug-NoGPU.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Debug-NoGPU.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Debug-SK_USE_DISCARDABLE_SCALEDIMAGECACHE.json b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Debug-SK_USE_DISCARDABLE_SCALEDIMAGECACHE.json
index d6f3944375..d6f3944375 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Debug-SK_USE_DISCARDABLE_SCALEDIMAGECACHE.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Debug-SK_USE_DISCARDABLE_SCALEDIMAGECACHE.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Release-ANGLE.json b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Release-ANGLE.json
index 1d7a797477..1d7a797477 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Release-ANGLE.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Release-ANGLE.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Release-Fast.json b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Release-Fast.json
index f1607435f8..f1607435f8 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Release-Fast.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Release-Fast.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Release-Mesa.json b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Release-Mesa.json
index 53819878d8..53819878d8 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Release-Mesa.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Release-Mesa.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Release-PDFium.json b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Release-PDFium.json
index 7bec373a9d..7bec373a9d 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Release-PDFium.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Release-PDFium.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Release-PDFium_SkiaPaths.json b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Release-PDFium_SkiaPaths.json
index 449c02cc51..449c02cc51 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Release-PDFium_SkiaPaths.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Release-PDFium_SkiaPaths.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Release-Valgrind.json b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Release-Valgrind.json
index 7872d204ca..7872d204ca 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Release-Valgrind.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Ubuntu-GCC-x86_64-Release-Valgrind.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Win-Clang-arm64-Release-GN_Android.json b/infra/bots/recipe_modules/compile/example.expected/Build-Win-Clang-arm64-Release-GN_Android.json
index a3360db50b..a3360db50b 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Win-Clang-arm64-Release-GN_Android.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Win-Clang-arm64-Release-GN_Android.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Win-MSVC-x86-Debug-ANGLE.json b/infra/bots/recipe_modules/compile/example.expected/Build-Win-MSVC-x86-Debug-ANGLE.json
index a8d496f190..a8d496f190 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Win-MSVC-x86-Debug-ANGLE.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Win-MSVC-x86-Debug-ANGLE.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Win-MSVC-x86-Debug-Exceptions.json b/infra/bots/recipe_modules/compile/example.expected/Build-Win-MSVC-x86-Debug-Exceptions.json
index d86b258e66..d86b258e66 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Win-MSVC-x86-Debug-Exceptions.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Win-MSVC-x86-Debug-Exceptions.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Win-MSVC-x86-Debug.json b/infra/bots/recipe_modules/compile/example.expected/Build-Win-MSVC-x86-Debug.json
index 9af4febe59..9af4febe59 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Win-MSVC-x86-Debug.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Win-MSVC-x86-Debug.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Win-MSVC-x86-Release-GDI.json b/infra/bots/recipe_modules/compile/example.expected/Build-Win-MSVC-x86-Release-GDI.json
index 8e2519c16e..8e2519c16e 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Win-MSVC-x86-Release-GDI.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Win-MSVC-x86-Release-GDI.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Win-MSVC-x86-Release-GN.json b/infra/bots/recipe_modules/compile/example.expected/Build-Win-MSVC-x86-Release-GN.json
index 89eef193e0..89eef193e0 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Win-MSVC-x86-Release-GN.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Win-MSVC-x86-Release-GN.json
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Win-MSVC-x86_64-Release-Vulkan.json b/infra/bots/recipe_modules/compile/example.expected/Build-Win-MSVC-x86_64-Release-Vulkan.json
index 7d336f0d6c..7d336f0d6c 100644
--- a/infra/bots/recipes/swarm_compile.expected/Build-Win-MSVC-x86_64-Release-Vulkan.json
+++ b/infra/bots/recipe_modules/compile/example.expected/Build-Win-MSVC-x86_64-Release-Vulkan.json
diff --git a/infra/bots/recipes/swarm_compile.expected/big_issue_number.json b/infra/bots/recipe_modules/compile/example.expected/big_issue_number.json
index f6b1c973c4..f6b1c973c4 100644
--- a/infra/bots/recipes/swarm_compile.expected/big_issue_number.json
+++ b/infra/bots/recipe_modules/compile/example.expected/big_issue_number.json
diff --git a/infra/bots/recipes/swarm_compile.expected/buildbotless_trybot_gerrit.json b/infra/bots/recipe_modules/compile/example.expected/buildbotless_trybot_gerrit.json
index e1d93a11d0..e1d93a11d0 100644
--- a/infra/bots/recipes/swarm_compile.expected/buildbotless_trybot_gerrit.json
+++ b/infra/bots/recipe_modules/compile/example.expected/buildbotless_trybot_gerrit.json
diff --git a/infra/bots/recipes/swarm_compile.expected/buildbotless_trybot_rietveld.json b/infra/bots/recipe_modules/compile/example.expected/buildbotless_trybot_rietveld.json
index b4c1c074e9..b4c1c074e9 100644
--- a/infra/bots/recipes/swarm_compile.expected/buildbotless_trybot_rietveld.json
+++ b/infra/bots/recipe_modules/compile/example.expected/buildbotless_trybot_rietveld.json
diff --git a/infra/bots/recipes/swarm_compile.expected/recipe_with_gerrit_patch.json b/infra/bots/recipe_modules/compile/example.expected/recipe_with_gerrit_patch.json
index 880e0028d4..880e0028d4 100644
--- a/infra/bots/recipes/swarm_compile.expected/recipe_with_gerrit_patch.json
+++ b/infra/bots/recipe_modules/compile/example.expected/recipe_with_gerrit_patch.json
diff --git a/infra/bots/recipe_modules/compile/example.py b/infra/bots/recipe_modules/compile/example.py
new file mode 100644
index 0000000000..6cd948fbe2
--- /dev/null
+++ b/infra/bots/recipe_modules/compile/example.py
@@ -0,0 +1,168 @@
+# Copyright 2016 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+
+# Example recipe w/ coverage.
+
+
+DEPS = [
+ 'compile',
+ 'recipe_engine/path',
+ 'recipe_engine/platform',
+ 'recipe_engine/properties',
+]
+
+
+TEST_BUILDERS = {
+ 'client.skia.compile': {
+ 'skiabot-linux-swarm-000': [
+ 'Build-Mac-Clang-Arm7-Release-iOS',
+ 'Build-Mac-Clang-arm64-Debug-GN_iOS',
+ 'Build-Mac-Clang-mipsel-Debug-GN_Android',
+ 'Build-Mac-Clang-x86_64-Debug-CommandBuffer',
+ 'Build-Mac-Clang-x86_64-Release-GN',
+ 'Build-Ubuntu-Clang-arm64-Release-GN_Android',
+ 'Build-Ubuntu-Clang-arm64-Release-GN_Android_Vulkan',
+ 'Build-Ubuntu-Clang-x86_64-Debug-ASAN',
+ 'Build-Ubuntu-Clang-x86_64-Debug-GN',
+ 'Build-Ubuntu-Clang-arm64-Debug-GN_Android-Trybot',
+ 'Build-Ubuntu-Clang-arm64-Debug-GN_Android_FrameworkDefs',
+ 'Build-Ubuntu-GCC-x86-Debug',
+ 'Build-Ubuntu-GCC-x86_64-Debug-GN',
+ 'Build-Ubuntu-GCC-x86_64-Debug-MSAN',
+ 'Build-Ubuntu-GCC-x86_64-Debug-NoGPU',
+ 'Build-Ubuntu-GCC-x86_64-Debug-SK_USE_DISCARDABLE_SCALEDIMAGECACHE',
+ 'Build-Ubuntu-GCC-x86_64-Release-ANGLE',
+ 'Build-Ubuntu-GCC-x86_64-Release-Fast',
+ 'Build-Ubuntu-GCC-x86_64-Release-Mesa',
+ 'Build-Ubuntu-GCC-x86_64-Release-PDFium',
+ 'Build-Ubuntu-GCC-x86_64-Release-PDFium_SkiaPaths',
+ 'Build-Ubuntu-GCC-x86_64-Release-Valgrind',
+ 'Build-Win-Clang-arm64-Release-GN_Android',
+ 'Build-Win-MSVC-x86-Debug',
+ 'Build-Win-MSVC-x86-Debug-ANGLE',
+ 'Build-Win-MSVC-x86-Debug-Exceptions',
+ 'Build-Win-MSVC-x86-Release-GDI',
+ 'Build-Win-MSVC-x86-Release-GN',
+ 'Build-Win-MSVC-x86_64-Release-Vulkan',
+ ],
+ },
+}
+
+
+def RunSteps(api):
+ api.compile.run()
+
+
+def GenTests(api):
+ for mastername, slaves in TEST_BUILDERS.iteritems():
+ for slavename, builders_by_slave in slaves.iteritems():
+ for builder in builders_by_slave:
+ test = (
+ api.test(builder) +
+ api.properties(buildername=builder,
+ mastername=mastername,
+ slavename=slavename,
+ buildnumber=5,
+ revision='abc123',
+ path_config='kitchen',
+ swarm_out_dir='[SWARM_OUT_DIR]') +
+ api.path.exists(
+ api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
+ )
+ )
+ if 'Win' in builder:
+ test += api.platform('win', 64)
+ elif 'Mac' in builder:
+ test += api.platform('mac', 64)
+ else:
+ test += api.platform('linux', 64)
+ if 'Trybot' in builder:
+ test += api.properties(issue=500,
+ patchset=1,
+ rietveld='https://codereview.chromium.org')
+
+ yield test
+
+ mastername = 'client.skia.compile'
+ slavename = 'skiabot-win-compile-000'
+ buildername = 'Build-Win-MSVC-x86-Debug'
+ yield (
+ api.test('big_issue_number') +
+ api.properties(buildername=buildername,
+ mastername=mastername,
+ slavename=slavename,
+ buildnumber=5,
+ revision='abc123',
+ path_config='kitchen',
+ swarm_out_dir='[SWARM_OUT_DIR]',
+ rietveld='https://codereview.chromium.org',
+ patchset=1,
+ issue=2147533002L) +
+ api.path.exists(
+ api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
+ ) +
+ api.platform('win', 64)
+ )
+
+ yield (
+ api.test('recipe_with_gerrit_patch') +
+ api.properties(
+ buildername=buildername + '-Trybot',
+ mastername=mastername,
+ slavename=slavename,
+ buildnumber=5,
+ path_config='kitchen',
+ swarm_out_dir='[SWARM_OUT_DIR]',
+ revision='abc123',
+ patch_storage='gerrit') +
+ api.properties.tryserver(
+ buildername=buildername + '-Trybot',
+ gerrit_project='skia',
+ gerrit_url='https://skia-review.googlesource.com/',
+ ) +
+ api.platform('win', 64)
+ )
+
+ yield (
+ api.test('buildbotless_trybot_rietveld') +
+ api.properties(
+ repository='skia',
+ buildername=buildername,
+ mastername=mastername,
+ slavename=slavename,
+ buildnumber=5,
+ path_config='kitchen',
+ swarm_out_dir='[SWARM_OUT_DIR]',
+ revision='abc123',
+ nobuildbot='True',
+ issue=500,
+ patchset=1,
+ patch_storage='rietveld',
+ rietveld='https://codereview.chromium.org') +
+ api.platform('win', 64)
+ )
+
+ yield (
+ api.test('buildbotless_trybot_gerrit') +
+ api.properties(
+ repository='skia',
+ buildername=buildername,
+ mastername=mastername,
+ slavename=slavename,
+ buildnumber=5,
+ path_config='kitchen',
+ swarm_out_dir='[SWARM_OUT_DIR]',
+ revision='abc123',
+ nobuildbot='True',
+ patch_issue=500,
+ patch_set=1,
+ patch_storage='gerrit') +
+ api.properties.tryserver(
+ buildername=buildername,
+ gerrit_project='skia',
+ gerrit_url='https://skia-review.googlesource.com/',
+ ) +
+ api.platform('win', 64)
+ )
diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-GN_Android_Vulkan.json b/infra/bots/recipe_modules/perf/example.expected/Perf-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-GN_Android_Vulkan.json
index 4c222d112c..4c222d112c 100644
--- a/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-GN_Android_Vulkan.json
+++ b/infra/bots/recipe_modules/perf/example.expected/Perf-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-GN_Android_Vulkan.json
diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-Nexus5-GPU-Adreno330-arm-Debug-GN_Android.json b/infra/bots/recipe_modules/perf/example.expected/Perf-Android-Clang-Nexus5-GPU-Adreno330-arm-Debug-GN_Android.json
index 199abf21f0..199abf21f0 100644
--- a/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-Nexus5-GPU-Adreno330-arm-Debug-GN_Android.json
+++ b/infra/bots/recipe_modules/perf/example.expected/Perf-Android-Clang-Nexus5-GPU-Adreno330-arm-Debug-GN_Android.json
diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-Nexus6-GPU-Adreno420-arm-Release-GN_Android.json b/infra/bots/recipe_modules/perf/example.expected/Perf-Android-Clang-Nexus6-GPU-Adreno420-arm-Release-GN_Android.json
index f6101b463a..f6101b463a 100644
--- a/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-Nexus6-GPU-Adreno420-arm-Release-GN_Android.json
+++ b/infra/bots/recipe_modules/perf/example.expected/Perf-Android-Clang-Nexus6-GPU-Adreno420-arm-Release-GN_Android.json
diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-Nexus7-GPU-Tegra3-arm-Release-GN_Android.json b/infra/bots/recipe_modules/perf/example.expected/Perf-Android-Clang-Nexus7-GPU-Tegra3-arm-Release-GN_Android.json
index e847a237d6..e847a237d6 100644
--- a/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-Nexus7-GPU-Tegra3-arm-Release-GN_Android.json
+++ b/infra/bots/recipe_modules/perf/example.expected/Perf-Android-Clang-Nexus7-GPU-Tegra3-arm-Release-GN_Android.json
diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Release-GN_Android.json b/infra/bots/recipe_modules/perf/example.expected/Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Release-GN_Android.json
index c4228de6c1..c4228de6c1 100644
--- a/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Release-GN_Android.json
+++ b/infra/bots/recipe_modules/perf/example.expected/Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Release-GN_Android.json
diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-GN_Android.json b/infra/bots/recipe_modules/perf/example.expected/Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-GN_Android.json
index 35b20726c3..35b20726c3 100644
--- a/infra/bots/recipes/swarm_perf.expected/Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-GN_Android.json
+++ b/infra/bots/recipe_modules/perf/example.expected/Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-GN_Android.json
diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Mac-Clang-MacMini6.2-CPU-AVX-x86_64-Release-GN.json b/infra/bots/recipe_modules/perf/example.expected/Perf-Mac-Clang-MacMini6.2-CPU-AVX-x86_64-Release-GN.json
index 9492e955a7..9492e955a7 100644
--- a/infra/bots/recipes/swarm_perf.expected/Perf-Mac-Clang-MacMini6.2-CPU-AVX-x86_64-Release-GN.json
+++ b/infra/bots/recipe_modules/perf/example.expected/Perf-Mac-Clang-MacMini6.2-CPU-AVX-x86_64-Release-GN.json
diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Mac-Clang-MacMini6.2-GPU-HD4000-x86_64-Debug-CommandBuffer.json b/infra/bots/recipe_modules/perf/example.expected/Perf-Mac-Clang-MacMini6.2-GPU-HD4000-x86_64-Debug-CommandBuffer.json
index 16a2734c6e..16a2734c6e 100644
--- a/infra/bots/recipes/swarm_perf.expected/Perf-Mac-Clang-MacMini6.2-GPU-HD4000-x86_64-Debug-CommandBuffer.json
+++ b/infra/bots/recipe_modules/perf/example.expected/Perf-Mac-Clang-MacMini6.2-GPU-HD4000-x86_64-Debug-CommandBuffer.json
diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release-GN.json b/infra/bots/recipe_modules/perf/example.expected/Perf-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release-GN.json
index 3b4b94c675..3b4b94c675 100644
--- a/infra/bots/recipes/swarm_perf.expected/Perf-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release-GN.json
+++ b/infra/bots/recipe_modules/perf/example.expected/Perf-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release-GN.json
diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-ANGLE.json b/infra/bots/recipe_modules/perf/example.expected/Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-ANGLE.json
index 7eda498082..7eda498082 100644
--- a/infra/bots/recipes/swarm_perf.expected/Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-ANGLE.json
+++ b/infra/bots/recipe_modules/perf/example.expected/Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-ANGLE.json
diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind.json b/infra/bots/recipe_modules/perf/example.expected/Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind.json
index ff596e3b53..ff596e3b53 100644
--- a/infra/bots/recipes/swarm_perf.expected/Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind.json
+++ b/infra/bots/recipe_modules/perf/example.expected/Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind.json
diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Debug.json b/infra/bots/recipe_modules/perf/example.expected/Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Debug.json
index f3fd6492cb..f3fd6492cb 100644
--- a/infra/bots/recipes/swarm_perf.expected/Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Debug.json
+++ b/infra/bots/recipe_modules/perf/example.expected/Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Debug.json
diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Release.json b/infra/bots/recipe_modules/perf/example.expected/Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Release.json
index 9a94744ff1..9a94744ff1 100644
--- a/infra/bots/recipes/swarm_perf.expected/Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Release.json
+++ b/infra/bots/recipe_modules/perf/example.expected/Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Release.json
diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Win10-MSVC-NUC-GPU-IntelIris540-x86_64-Release-ANGLE.json b/infra/bots/recipe_modules/perf/example.expected/Perf-Win10-MSVC-NUC-GPU-IntelIris540-x86_64-Release-ANGLE.json
index 4db8b0ba3d..4db8b0ba3d 100644
--- a/infra/bots/recipes/swarm_perf.expected/Perf-Win10-MSVC-NUC-GPU-IntelIris540-x86_64-Release-ANGLE.json
+++ b/infra/bots/recipe_modules/perf/example.expected/Perf-Win10-MSVC-NUC-GPU-IntelIris540-x86_64-Release-ANGLE.json
diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Win8-MSVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE.json b/infra/bots/recipe_modules/perf/example.expected/Perf-Win8-MSVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE.json
index 3e02cdd9f1..3e02cdd9f1 100644
--- a/infra/bots/recipes/swarm_perf.expected/Perf-Win8-MSVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE.json
+++ b/infra/bots/recipe_modules/perf/example.expected/Perf-Win8-MSVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE.json
diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Win8-MSVC-ShuttleB-GPU-HD4600-x86_64-Release-Trybot.json b/infra/bots/recipe_modules/perf/example.expected/Perf-Win8-MSVC-ShuttleB-GPU-HD4600-x86_64-Release-Trybot.json
index c743570a0f..c743570a0f 100644
--- a/infra/bots/recipes/swarm_perf.expected/Perf-Win8-MSVC-ShuttleB-GPU-HD4600-x86_64-Release-Trybot.json
+++ b/infra/bots/recipe_modules/perf/example.expected/Perf-Win8-MSVC-ShuttleB-GPU-HD4600-x86_64-Release-Trybot.json
diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug.json b/infra/bots/recipe_modules/perf/example.expected/Perf-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug.json
index a5c89e7611..a5c89e7611 100644
--- a/infra/bots/recipes/swarm_perf.expected/Perf-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug.json
+++ b/infra/bots/recipe_modules/perf/example.expected/Perf-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug.json
diff --git a/infra/bots/recipes/swarm_perf.expected/big_issue_number.json b/infra/bots/recipe_modules/perf/example.expected/big_issue_number.json
index 2817618709..2817618709 100644
--- a/infra/bots/recipes/swarm_perf.expected/big_issue_number.json
+++ b/infra/bots/recipe_modules/perf/example.expected/big_issue_number.json
diff --git a/infra/bots/recipes/swarm_perf.expected/nobuildbot.json b/infra/bots/recipe_modules/perf/example.expected/nobuildbot.json
index 01b485bc21..01b485bc21 100644
--- a/infra/bots/recipes/swarm_perf.expected/nobuildbot.json
+++ b/infra/bots/recipe_modules/perf/example.expected/nobuildbot.json
diff --git a/infra/bots/recipes/swarm_perf.expected/recipe_with_gerrit_patch.json b/infra/bots/recipe_modules/perf/example.expected/recipe_with_gerrit_patch.json
index ed45dac5ab..ed45dac5ab 100644
--- a/infra/bots/recipes/swarm_perf.expected/recipe_with_gerrit_patch.json
+++ b/infra/bots/recipe_modules/perf/example.expected/recipe_with_gerrit_patch.json
diff --git a/infra/bots/recipe_modules/perf/example.py b/infra/bots/recipe_modules/perf/example.py
new file mode 100644
index 0000000000..16cde3b5d9
--- /dev/null
+++ b/infra/bots/recipe_modules/perf/example.py
@@ -0,0 +1,157 @@
+# Copyright 2016 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+
+# Example recipe w/ coverage.
+
+
+DEPS = [
+ 'perf',
+ 'recipe_engine/path',
+ 'recipe_engine/platform',
+ 'recipe_engine/properties',
+ 'recipe_engine/raw_io',
+]
+
+
+TEST_BUILDERS = {
+ 'client.skia': {
+ 'skiabot-linux-swarm-000': [
+ ('Perf-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug' +
+ '-GN_Android_Vulkan'),
+ 'Perf-Android-Clang-Nexus5-GPU-Adreno330-arm-Debug-GN_Android',
+ 'Perf-Android-Clang-Nexus6-GPU-Adreno420-arm-Release-GN_Android',
+ 'Perf-Android-Clang-Nexus7-GPU-Tegra3-arm-Release-GN_Android',
+ 'Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Release-GN_Android',
+ 'Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-GN_Android',
+ 'Perf-Mac-Clang-MacMini6.2-CPU-AVX-x86_64-Release-GN',
+ 'Perf-Mac-Clang-MacMini6.2-GPU-HD4000-x86_64-Debug-CommandBuffer',
+ 'Perf-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release-GN',
+ 'Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind',
+ 'Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-ANGLE',
+ 'Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Debug',
+ 'Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Release',
+ 'Perf-Win10-MSVC-NUC-GPU-IntelIris540-x86_64-Release-ANGLE',
+ 'Perf-Win8-MSVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE',
+ 'Perf-Win8-MSVC-ShuttleB-GPU-HD4600-x86_64-Release-Trybot',
+ 'Perf-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug',
+ ],
+ },
+}
+
+
+def RunSteps(api):
+ api.perf.run()
+
+
+def GenTests(api):
+ for mastername, slaves in TEST_BUILDERS.iteritems():
+ for slavename, builders_by_slave in slaves.iteritems():
+ for builder in builders_by_slave:
+ test = (
+ api.test(builder) +
+ api.properties(buildername=builder,
+ mastername=mastername,
+ slavename=slavename,
+ buildnumber=5,
+ revision='abc123',
+ path_config='kitchen',
+ swarm_out_dir='[SWARM_OUT_DIR]') +
+ api.path.exists(
+ api.path['start_dir'].join('skia'),
+ api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
+ 'skimage', 'VERSION'),
+ api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
+ 'skp', 'VERSION'),
+ api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
+ )
+ )
+ if 'Trybot' in builder:
+ test += api.properties(issue=500,
+ patchset=1,
+ rietveld='https://codereview.chromium.org')
+ if 'Win' in builder:
+ test += api.platform('win', 64)
+
+ yield test
+
+ builder = 'Perf-Win8-MSVC-ShuttleB-GPU-HD4600-x86_64-Release-Trybot'
+ yield (
+ api.test('big_issue_number') +
+ api.properties(buildername=builder,
+ mastername='client.skia.compile',
+ slavename='skiabot-linux-swarm-000',
+ buildnumber=5,
+ revision='abc123',
+ path_config='kitchen',
+ swarm_out_dir='[SWARM_OUT_DIR]',
+ rietveld='https://codereview.chromium.org',
+ patchset=1,
+ issue=2147533002L) +
+ api.path.exists(
+ api.path['start_dir'].join('skia'),
+ api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
+ 'skimage', 'VERSION'),
+ api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
+ 'skp', 'VERSION'),
+ api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
+ 'svg', 'VERSION'),
+ api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
+ ) +
+ api.platform('win', 64)
+ )
+
+ builder = ('Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind-'
+ 'Trybot')
+ yield (
+ api.test('recipe_with_gerrit_patch') +
+ api.properties(
+ buildername=builder,
+ mastername='client.skia',
+ slavename='skiabot-linux-swarm-000',
+ buildnumber=5,
+ path_config='kitchen',
+ swarm_out_dir='[SWARM_OUT_DIR]',
+ revision='abc123',
+ patch_storage='gerrit') +
+ api.properties.tryserver(
+ buildername=builder,
+ gerrit_project='skia',
+ gerrit_url='https://skia-review.googlesource.com/',
+ )
+ )
+
+ builder = 'Perf-Win8-MSVC-ShuttleB-GPU-HD4600-x86_64-Release-Trybot'
+ yield (
+ api.test('nobuildbot') +
+ api.properties(
+ buildername=builder,
+ mastername='client.skia',
+ slavename='skiabot-linux-swarm-000',
+ buildnumber=5,
+ revision='abc123',
+ path_config='kitchen',
+ nobuildbot='True',
+ swarm_out_dir='[SWARM_OUT_DIR]',
+ patch_storage='gerrit') +
+ api.properties.tryserver(
+ buildername=builder,
+ gerrit_project='skia',
+ gerrit_url='https://skia-review.googlesource.com/',
+ ) +
+ api.path.exists(
+ api.path['start_dir'].join('skia'),
+ api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
+ 'skimage', 'VERSION'),
+ api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
+ 'skp', 'VERSION'),
+ api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
+ 'svg', 'VERSION'),
+ api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
+ ) +
+ api.platform('win', 64) +
+ api.step_data('get swarming bot id',
+ stdout=api.raw_io.output('skia-bot-123')) +
+ api.step_data('get swarming task id', stdout=api.raw_io.output('123456'))
+ )
diff --git a/infra/bots/recipe_modules/skpbench/example.expected/Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-GN_Android_Skpbench.json b/infra/bots/recipe_modules/skpbench/example.expected/Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-GN_Android_Skpbench.json
new file mode 100644
index 0000000000..6353575a6c
--- /dev/null
+++ b/infra/bots/recipe_modules/skpbench/example.expected/Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-GN_Android_Skpbench.json
@@ -0,0 +1,290 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport sys, os\npath = sys.argv[1]\nmode = int(sys.argv[2])\nif not os.path.isdir(path):\n if os.path.exists(path):\n print \"%s exists but is not a dir\" % path\n sys.exit(1)\n os.makedirs(path, mode)\n",
+ "[START_DIR]/tmp",
+ "511"
+ ],
+ "name": "makedirs tmp_dir",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@import sys, os@@@",
+ "@@@STEP_LOG_LINE@python.inline@path = sys.argv[1]@@@",
+ "@@@STEP_LOG_LINE@python.inline@mode = int(sys.argv[2])@@@",
+ "@@@STEP_LOG_LINE@python.inline@if not os.path.isdir(path):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(path):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ print \"%s exists but is not a dir\" % path@@@",
+ "@@@STEP_LOG_LINE@python.inline@ sys.exit(1)@@@",
+ "@@@STEP_LOG_LINE@python.inline@ os.makedirs(path, mode)@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "adb",
+ "shell",
+ "mkdir",
+ "-p",
+ "/sdcard/revenge_of_the_skiabot/resources"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[START_DIR]/skia/infra/bots/assets/skp/VERSION",
+ "/path/to/tmp/"
+ ],
+ "name": "Get downloaded SKP VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "42",
+ "[START_DIR]/tmp/SKP_VERSION"
+ ],
+ "name": "write SKP_VERSION"
+ },
+ {
+ "cmd": [
+ "adb",
+ "shell",
+ "cat",
+ "/sdcard/revenge_of_the_skiabot/SKP_VERSION"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "name": "read /sdcard/revenge_of_the_skiabot/SKP_VERSION",
+ "stdout": "/path/to/tmp/"
+ },
+ {
+ "cmd": [
+ "adb",
+ "shell",
+ "rm",
+ "-f",
+ "/sdcard/revenge_of_the_skiabot/SKP_VERSION"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "name": "rm /sdcard/revenge_of_the_skiabot/SKP_VERSION"
+ },
+ {
+ "cmd": [
+ "adb",
+ "shell",
+ "rm",
+ "-rf",
+ "/sdcard/revenge_of_the_skiabot/skps"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "name": "rm /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
+ "cmd": [
+ "adb",
+ "shell",
+ "mkdir",
+ "-p",
+ "/sdcard/revenge_of_the_skiabot/skps"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "[START_DIR]/skp",
+ "/sdcard/revenge_of_the_skiabot/skps"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@import os@@@",
+ "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
+ "@@@STEP_LOG_LINE@python.inline@import sys@@@",
+ "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
+ "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
+ "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ continue@@@",
+ "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
+ "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['adb', 'push',@@@",
+ "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
+ "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "adb",
+ "push",
+ "[START_DIR]/tmp/SKP_VERSION",
+ "/sdcard/revenge_of_the_skiabot/SKP_VERSION"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "name": "push [START_DIR]/tmp/SKP_VERSION /sdcard/revenge_of_the_skiabot/SKP_VERSION"
+ },
+ {
+ "cmd": [
+ "adb",
+ "push",
+ "[START_DIR]/out/Release/skpbench",
+ "/data/local/tmp/"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "name": "push skpbench"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/skia/tools/skpbench/skpbench.py",
+ "/data/local/tmp/skpbench",
+ "/sdcard/revenge_of_the_skiabot/skps",
+ "--adb",
+ "--resultsfile",
+ "[CUSTOM_[SWARM_OUT_DIR]]/table",
+ "--config",
+ "gpu,esinst4"
+ ],
+ "name": "skpbench"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "import os\nprint os.environ.get('SWARMING_BOT_ID', '')\n"
+ ],
+ "name": "get swarming bot id",
+ "stdout": "/path/to/tmp/",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@import os@@@",
+ "@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_BOT_ID', '')@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "import os\nprint os.environ.get('SWARMING_TASK_ID', '')\n"
+ ],
+ "name": "get swarming task id",
+ "stdout": "/path/to/tmp/",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@import os@@@",
+ "@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_TASK_ID', '')@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport sys, os\npath = sys.argv[1]\nmode = int(sys.argv[2])\nif not os.path.isdir(path):\n if os.path.exists(path):\n print \"%s exists but is not a dir\" % path\n sys.exit(1)\n os.makedirs(path, mode)\n",
+ "[CUSTOM_[SWARM_OUT_DIR]]/perfdata/Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-GN_Android_Skpbench/data",
+ "511"
+ ],
+ "name": "makedirs perf_dir",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@import sys, os@@@",
+ "@@@STEP_LOG_LINE@python.inline@path = sys.argv[1]@@@",
+ "@@@STEP_LOG_LINE@python.inline@mode = int(sys.argv[2])@@@",
+ "@@@STEP_LOG_LINE@python.inline@if not os.path.isdir(path):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(path):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ print \"%s exists but is not a dir\" % path@@@",
+ "@@@STEP_LOG_LINE@python.inline@ sys.exit(1)@@@",
+ "@@@STEP_LOG_LINE@python.inline@ os.makedirs(path, mode)@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/skia/tools/skpbench/skiaperf.py",
+ "[CUSTOM_[SWARM_OUT_DIR]]/table",
+ "--properties",
+ "gitHash",
+ "abc123",
+ "build_number",
+ "5",
+ "no_buildbot",
+ "True",
+ "swarming_bot_id",
+ "skia-bot-123",
+ "swarming_task_id",
+ "123456",
+ "--outfile",
+ "[CUSTOM_[SWARM_OUT_DIR]]/perfdata/Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-GN_Android_Skpbench/data/skpbench_abc123_1337000001.json",
+ "--key",
+ "arch",
+ "arm64",
+ "compiler",
+ "Clang",
+ "cpu_or_gpu",
+ "GPU",
+ "cpu_or_gpu_value",
+ "TegraX1",
+ "extra_config",
+ "GN_Android_Skpbench",
+ "model",
+ "PixelC",
+ "os",
+ "Android"
+ ],
+ "name": "Parse skpbench output into Perf json"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport os\nimport subprocess\nimport sys\nout = sys.argv[1]\nlog = subprocess.check_output(['adb', 'logcat', '-d'])\nfor line in log.split('\\n'):\n tokens = line.split()\n if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':\n addr, path = tokens[-2:]\n local = os.path.join(out, os.path.basename(path))\n if os.path.exists(local):\n sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])\n line = line.replace(addr, addr + ' ' + sym.strip())\n print line\n",
+ "[START_DIR]/out/Release"
+ ],
+ "name": "dump log",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@import os@@@",
+ "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
+ "@@@STEP_LOG_LINE@python.inline@import sys@@@",
+ "@@@STEP_LOG_LINE@python.inline@out = sys.argv[1]@@@",
+ "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output(['adb', 'logcat', '-d'])@@@",
+ "@@@STEP_LOG_LINE@python.inline@for line in log.split('\\n'):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ tokens = line.split()@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@",
+ "@@@STEP_LOG_LINE@python.inline@ addr, path = tokens[-2:]@@@",
+ "@@@STEP_LOG_LINE@python.inline@ local = os.path.join(out, os.path.basename(path))@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(local):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])@@@",
+ "@@@STEP_LOG_LINE@python.inline@ line = line.replace(addr, addr + ' ' + sym.strip())@@@",
+ "@@@STEP_LOG_LINE@python.inline@ print line@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "adb",
+ "kill-server"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "name": "kill adb server"
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipes/swarm_skpbench.expected/Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-GN_Android_Vulkan_Skpbench.json b/infra/bots/recipe_modules/skpbench/example.expected/Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-GN_Android_Vulkan_Skpbench.json
index 5a54a616b7..5a54a616b7 100644
--- a/infra/bots/recipes/swarm_skpbench.expected/Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-GN_Android_Vulkan_Skpbench.json
+++ b/infra/bots/recipe_modules/skpbench/example.expected/Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-GN_Android_Vulkan_Skpbench.json
diff --git a/infra/bots/recipe_modules/skpbench/example.py b/infra/bots/recipe_modules/skpbench/example.py
new file mode 100644
index 0000000000..4acf916524
--- /dev/null
+++ b/infra/bots/recipe_modules/skpbench/example.py
@@ -0,0 +1,56 @@
+# Copyright 2016 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+
+# Example recipe w/ coverage.
+
+
+DEPS = [
+ 'recipe_engine/path',
+ 'recipe_engine/properties',
+ 'recipe_engine/raw_io',
+ 'skpbench',
+]
+
+
+TEST_BUILDERS = {
+ 'client.skia': {
+ 'skiabot-linux-swarm-000': [
+ 'Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-GN_Android_Skpbench',
+ ('Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-' +
+ 'GN_Android_Vulkan_Skpbench'),
+ ],
+ },
+}
+
+
+def RunSteps(api):
+ api.skpbench.run()
+
+
+def GenTests(api):
+ for mastername, slaves in TEST_BUILDERS.iteritems():
+ for slavename, builders_by_slave in slaves.iteritems():
+ for builder in builders_by_slave:
+ test = (
+ api.test(builder) +
+ api.properties(buildername=builder,
+ mastername=mastername,
+ slavename=slavename,
+ buildnumber=5,
+ revision='abc123',
+ path_config='kitchen',
+ swarm_out_dir='[SWARM_OUT_DIR]') +
+ api.path.exists(
+ api.path['start_dir'].join('skia'),
+ api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
+ 'skp', 'VERSION'),
+ ) +
+ api.step_data('get swarming bot id',
+ stdout=api.raw_io.output('skia-bot-123')) +
+ api.step_data('get swarming task id',
+ stdout=api.raw_io.output('123456'))
+ )
+
+ yield test
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Android-Clang-AndroidOne-CPU-MT6582-arm-Release-GN_Android.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-AndroidOne-CPU-MT6582-arm-Release-GN_Android.json
index c59ee494f9..c59ee494f9 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Android-Clang-AndroidOne-CPU-MT6582-arm-Release-GN_Android.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-AndroidOne-CPU-MT6582-arm-Release-GN_Android.json
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-GN_Android.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-GN_Android.json
index ecbcaa405d..ecbcaa405d 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-GN_Android.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-GN_Android.json
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Android-Clang-GalaxyS7-GPU-Adreno530-arm64-Debug-GN_Android.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-GalaxyS7-GPU-Adreno530-arm64-Debug-GN_Android.json
index 58c5ed4937..58c5ed4937 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Android-Clang-GalaxyS7-GPU-Adreno530-arm64-Debug-GN_Android.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-GalaxyS7-GPU-Adreno530-arm64-Debug-GN_Android.json
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-GN_Android.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-GN_Android.json
index 93b342782c..93b342782c 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-GN_Android.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-GN_Android.json
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Android-Clang-Nexus10-GPU-MaliT604-arm-Release-GN_Android.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-Nexus10-GPU-MaliT604-arm-Release-GN_Android.json
index 9973f36018..9973f36018 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Android-Clang-Nexus10-GPU-MaliT604-arm-Release-GN_Android.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-Nexus10-GPU-MaliT604-arm-Release-GN_Android.json
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Android-Clang-Nexus5-GPU-Adreno330-arm-Release-Android.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-Nexus5-GPU-Adreno330-arm-Release-Android.json
index c78cf86253..c78cf86253 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Android-Clang-Nexus5-GPU-Adreno330-arm-Release-Android.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-Nexus5-GPU-Adreno330-arm-Release-Android.json
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Android-Clang-Nexus6-GPU-Adreno420-arm-Debug-GN_Android.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-Nexus6-GPU-Adreno420-arm-Debug-GN_Android.json
index 1cdac304b8..1cdac304b8 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Android-Clang-Nexus6-GPU-Adreno420-arm-Debug-GN_Android.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-Nexus6-GPU-Adreno420-arm-Debug-GN_Android.json
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Android-Clang-Nexus6p-GPU-Adreno430-arm64-Debug-GN_Android_Vulkan.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-Nexus6p-GPU-Adreno430-arm64-Debug-GN_Android_Vulkan.json
index bb07359b71..bb07359b71 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Android-Clang-Nexus6p-GPU-Adreno430-arm64-Debug-GN_Android_Vulkan.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-Nexus6p-GPU-Adreno430-arm64-Debug-GN_Android_Vulkan.json
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-GN_Android.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-GN_Android.json
index d2a87aa9d2..d2a87aa9d2 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-GN_Android.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-GN_Android.json
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Android-Clang-NexusPlayer-CPU-SSE4-x86-Release-GN_Android.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-NexusPlayer-CPU-SSE4-x86-Release-GN_Android.json
index 2b9b16d0da..2b9b16d0da 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Android-Clang-NexusPlayer-CPU-SSE4-x86-Release-GN_Android.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-NexusPlayer-CPU-SSE4-x86-Release-GN_Android.json
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Android-Clang-PixelC-GPU-TegraX1-arm64-Debug-GN_Android.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-PixelC-GPU-TegraX1-arm64-Debug-GN_Android.json
index 8f15d1b1ea..8f15d1b1ea 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Android-Clang-PixelC-GPU-TegraX1-arm64-Debug-GN_Android.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Android-Clang-PixelC-GPU-TegraX1-arm64-Debug-GN_Android.json
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Mac-Clang-MacMini4.1-GPU-GeForce320M-x86_64-Debug.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Mac-Clang-MacMini4.1-GPU-GeForce320M-x86_64-Debug.json
index 0e52cc3856..0e52cc3856 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Mac-Clang-MacMini4.1-GPU-GeForce320M-x86_64-Debug.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Mac-Clang-MacMini4.1-GPU-GeForce320M-x86_64-Debug.json
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Mac-Clang-MacMini6.2-CPU-AVX-x86_64-Debug.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Mac-Clang-MacMini6.2-CPU-AVX-x86_64-Debug.json
index f3af2a3e24..f3af2a3e24 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Mac-Clang-MacMini6.2-CPU-AVX-x86_64-Debug.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Mac-Clang-MacMini6.2-CPU-AVX-x86_64-Debug.json
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Mac-Clang-MacMini6.2-GPU-HD4000-x86_64-Debug-CommandBuffer.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Mac-Clang-MacMini6.2-GPU-HD4000-x86_64-Debug-CommandBuffer.json
index 21e42dc0e2..21e42dc0e2 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Mac-Clang-MacMini6.2-GPU-HD4000-x86_64-Debug-CommandBuffer.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Mac-Clang-MacMini6.2-GPU-HD4000-x86_64-Debug-CommandBuffer.json
diff --git a/infra/bots/recipe_modules/sktest/example.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Debug.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Debug.json
new file mode 100644
index 0000000000..0a14eb6b28
--- /dev/null
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Debug.json
@@ -0,0 +1,527 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[START_DIR]/skia/infra/bots/assets/skp/VERSION",
+ "/path/to/tmp/"
+ ],
+ "name": "Get downloaded SKP VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "42",
+ "[START_DIR]/tmp/SKP_VERSION"
+ ],
+ "name": "write SKP_VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[START_DIR]/skia/infra/bots/assets/skimage/VERSION",
+ "/path/to/tmp/"
+ ],
+ "name": "Get downloaded skimage VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "42",
+ "[START_DIR]/tmp/SK_IMAGE_VERSION"
+ ],
+ "name": "write SK_IMAGE_VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[START_DIR]/skia/infra/bots/assets/svg/VERSION",
+ "/path/to/tmp/"
+ ],
+ "name": "Get downloaded SVG VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "42",
+ "[START_DIR]/tmp/SVG_VERSION"
+ ],
+ "name": "write SVG_VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport os, sys\nfrom common import chromium_utils # Error? See https://crbug.com/584783.\n\n\nif os.path.exists(sys.argv[1]):\n chromium_utils.RemoveDirectory(sys.argv[1])\n",
+ "[CUSTOM_[SWARM_OUT_DIR]]/dm"
+ ],
+ "env": {
+ "PYTHONPATH": "[START_DIR]/skia/infra/bots/.recipe_deps/build/scripts"
+ },
+ "name": "rmtree dm",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@import os, sys@@@",
+ "@@@STEP_LOG_LINE@python.inline@from common import chromium_utils # Error? See https://crbug.com/584783.@@@",
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@if os.path.exists(sys.argv[1]):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ chromium_utils.RemoveDirectory(sys.argv[1])@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport sys, os\npath = sys.argv[1]\nmode = int(sys.argv[2])\nif not os.path.isdir(path):\n if os.path.exists(path):\n print \"%s exists but is not a dir\" % path\n sys.exit(1)\n os.makedirs(path, mode)\n",
+ "[CUSTOM_[SWARM_OUT_DIR]]/dm",
+ "511"
+ ],
+ "name": "makedirs dm",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@import sys, os@@@",
+ "@@@STEP_LOG_LINE@python.inline@path = sys.argv[1]@@@",
+ "@@@STEP_LOG_LINE@python.inline@mode = int(sys.argv[2])@@@",
+ "@@@STEP_LOG_LINE@python.inline@if not os.path.isdir(path):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(path):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ print \"%s exists but is not a dir\" % path@@@",
+ "@@@STEP_LOG_LINE@python.inline@ sys.exit(1)@@@",
+ "@@@STEP_LOG_LINE@python.inline@ os.makedirs(path, mode)@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport sys, os\npath = sys.argv[1]\nmode = int(sys.argv[2])\nif not os.path.isdir(path):\n if os.path.exists(path):\n print \"%s exists but is not a dir\" % path\n sys.exit(1)\n os.makedirs(path, mode)\n",
+ "[START_DIR]/tmp",
+ "511"
+ ],
+ "name": "makedirs tmp_dir",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@import sys, os@@@",
+ "@@@STEP_LOG_LINE@python.inline@path = sys.argv[1]@@@",
+ "@@@STEP_LOG_LINE@python.inline@mode = int(sys.argv[2])@@@",
+ "@@@STEP_LOG_LINE@python.inline@if not os.path.isdir(path):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(path):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ print \"%s exists but is not a dir\" % path@@@",
+ "@@@STEP_LOG_LINE@python.inline@ sys.exit(1)@@@",
+ "@@@STEP_LOG_LINE@python.inline@ os.makedirs(path, mode)@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport contextlib\nimport math\nimport socket\nimport sys\nimport time\nimport urllib2\n\nHASHES_URL = 'https://gold.skia.org/_/hashes'\nRETRIES = 5\nTIMEOUT = 60\nWAIT_BASE = 15\n\nsocket.setdefaulttimeout(TIMEOUT)\nfor retry in range(RETRIES):\n try:\n with contextlib.closing(\n urllib2.urlopen(HASHES_URL, timeout=TIMEOUT)) as w:\n hashes = w.read()\n with open(sys.argv[1], 'w') as f:\n f.write(hashes)\n break\n except Exception as e:\n print 'Failed to get uninteresting hashes from %s:' % HASHES_URL\n print e\n if retry == RETRIES:\n raise\n waittime = WAIT_BASE * math.pow(2, retry)\n print 'Retry in %d seconds.' % waittime\n time.sleep(waittime)\n",
+ "[START_DIR]/tmp/uninteresting_hashes.txt"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Debug",
+ "CHROME_HEADLESS": "1",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "name": "get uninteresting hashes",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@import contextlib@@@",
+ "@@@STEP_LOG_LINE@python.inline@import math@@@",
+ "@@@STEP_LOG_LINE@python.inline@import socket@@@",
+ "@@@STEP_LOG_LINE@python.inline@import sys@@@",
+ "@@@STEP_LOG_LINE@python.inline@import time@@@",
+ "@@@STEP_LOG_LINE@python.inline@import urllib2@@@",
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@HASHES_URL = 'https://gold.skia.org/_/hashes'@@@",
+ "@@@STEP_LOG_LINE@python.inline@RETRIES = 5@@@",
+ "@@@STEP_LOG_LINE@python.inline@TIMEOUT = 60@@@",
+ "@@@STEP_LOG_LINE@python.inline@WAIT_BASE = 15@@@",
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@socket.setdefaulttimeout(TIMEOUT)@@@",
+ "@@@STEP_LOG_LINE@python.inline@for retry in range(RETRIES):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ try:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ with contextlib.closing(@@@",
+ "@@@STEP_LOG_LINE@python.inline@ urllib2.urlopen(HASHES_URL, timeout=TIMEOUT)) as w:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ hashes = w.read()@@@",
+ "@@@STEP_LOG_LINE@python.inline@ with open(sys.argv[1], 'w') as f:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ f.write(hashes)@@@",
+ "@@@STEP_LOG_LINE@python.inline@ break@@@",
+ "@@@STEP_LOG_LINE@python.inline@ except Exception as e:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ print 'Failed to get uninteresting hashes from %s:' % HASHES_URL@@@",
+ "@@@STEP_LOG_LINE@python.inline@ print e@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if retry == RETRIES:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ raise@@@",
+ "@@@STEP_LOG_LINE@python.inline@ waittime = WAIT_BASE * math.pow(2, retry)@@@",
+ "@@@STEP_LOG_LINE@python.inline@ print 'Retry in %d seconds.' % waittime@@@",
+ "@@@STEP_LOG_LINE@python.inline@ time.sleep(waittime)@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "catchsegv",
+ "[START_DIR]/out/Debug/dm",
+ "--undefok",
+ "--resourcePath",
+ "[START_DIR]/skia/resources",
+ "--skps",
+ "[START_DIR]/skp",
+ "--images",
+ "[START_DIR]/skimage/dm",
+ "--colorImages",
+ "[START_DIR]/skimage/colorspace",
+ "--nameByHash",
+ "--properties",
+ "gitHash",
+ "abc123",
+ "master",
+ "client.skia",
+ "builder",
+ "Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Debug",
+ "build_number",
+ "5",
+ "--svgs",
+ "[START_DIR]/svg",
+ "--key",
+ "arch",
+ "x86",
+ "compiler",
+ "GCC",
+ "configuration",
+ "Debug",
+ "cpu_or_gpu",
+ "CPU",
+ "cpu_or_gpu_value",
+ "AVX2",
+ "model",
+ "GCE",
+ "os",
+ "Ubuntu",
+ "--uninterestingHashesFile",
+ "[START_DIR]/tmp/uninteresting_hashes.txt",
+ "--writePath",
+ "[CUSTOM_[SWARM_OUT_DIR]]/dm",
+ "--nogpu",
+ "--threads",
+ "4",
+ "--config",
+ "8888",
+ "srgb",
+ "gpu",
+ "gpudft",
+ "gpusrgb",
+ "pdf",
+ "msaa16",
+ "565",
+ "f16",
+ "sp-8888",
+ "2ndpic-8888",
+ "lite-8888",
+ "serialize-8888",
+ "tiles_rt-8888",
+ "pic-8888",
+ "--src",
+ "tests",
+ "gm",
+ "image",
+ "colorImage",
+ "svg",
+ "--blacklist",
+ "f16",
+ "_",
+ "_",
+ "dstreadshuffle",
+ "f16",
+ "image",
+ "_",
+ "_",
+ "gpusrgb",
+ "image",
+ "_",
+ "_",
+ "8888",
+ "image",
+ "_",
+ "_",
+ "serialize-8888",
+ "gm",
+ "_",
+ "bleed_image",
+ "serialize-8888",
+ "gm",
+ "_",
+ "c_gms",
+ "serialize-8888",
+ "gm",
+ "_",
+ "colortype",
+ "serialize-8888",
+ "gm",
+ "_",
+ "colortype_xfermodes",
+ "serialize-8888",
+ "gm",
+ "_",
+ "drawfilter",
+ "serialize-8888",
+ "gm",
+ "_",
+ "fontmgr_bounds_0.75_0",
+ "serialize-8888",
+ "gm",
+ "_",
+ "fontmgr_bounds_1_-0.25",
+ "serialize-8888",
+ "gm",
+ "_",
+ "fontmgr_bounds",
+ "serialize-8888",
+ "gm",
+ "_",
+ "fontmgr_match",
+ "serialize-8888",
+ "gm",
+ "_",
+ "fontmgr_iter",
+ "serialize-8888",
+ "gm",
+ "_",
+ "imagemasksubset",
+ "serialize-8888",
+ "gm",
+ "_",
+ "bitmapfilters",
+ "serialize-8888",
+ "gm",
+ "_",
+ "bitmapshaders",
+ "serialize-8888",
+ "gm",
+ "_",
+ "bleed",
+ "serialize-8888",
+ "gm",
+ "_",
+ "bleed_alpha_bmp",
+ "serialize-8888",
+ "gm",
+ "_",
+ "bleed_alpha_bmp_shader",
+ "serialize-8888",
+ "gm",
+ "_",
+ "convex_poly_clip",
+ "serialize-8888",
+ "gm",
+ "_",
+ "extractalpha",
+ "serialize-8888",
+ "gm",
+ "_",
+ "filterbitmap_checkerboard_32_32_g8",
+ "serialize-8888",
+ "gm",
+ "_",
+ "filterbitmap_image_mandrill_64",
+ "serialize-8888",
+ "gm",
+ "_",
+ "shadows",
+ "serialize-8888",
+ "gm",
+ "_",
+ "simpleaaclip_aaclip",
+ "serialize-8888",
+ "gm",
+ "_",
+ "composeshader_bitmap",
+ "serialize-8888",
+ "gm",
+ "_",
+ "scaled_tilemodes_npot",
+ "serialize-8888",
+ "gm",
+ "_",
+ "scaled_tilemodes",
+ "serialize-8888",
+ "gm",
+ "_",
+ "typefacerendering_pfaMac",
+ "serialize-8888",
+ "gm",
+ "_",
+ "parsedpaths",
+ "serialize-8888",
+ "gm",
+ "_",
+ "ImageGeneratorExternal_rect",
+ "serialize-8888",
+ "gm",
+ "_",
+ "ImageGeneratorExternal_shader",
+ "serialize-8888",
+ "gm",
+ "_",
+ "bleed_alpha_image",
+ "serialize-8888",
+ "gm",
+ "_",
+ "bleed_alpha_image_shader",
+ "sp-8888",
+ "gm",
+ "_",
+ "drawfilter",
+ "pic-8888",
+ "gm",
+ "_",
+ "drawfilter",
+ "2ndpic-8888",
+ "gm",
+ "_",
+ "drawfilter",
+ "lite-8888",
+ "gm",
+ "_",
+ "drawfilter",
+ "sp-8888",
+ "gm",
+ "_",
+ "image-cacherator-from-picture",
+ "pic-8888",
+ "gm",
+ "_",
+ "image-cacherator-from-picture",
+ "2ndpic-8888",
+ "gm",
+ "_",
+ "image-cacherator-from-picture",
+ "serialize-8888",
+ "gm",
+ "_",
+ "image-cacherator-from-picture",
+ "sp-8888",
+ "gm",
+ "_",
+ "image-cacherator-from-raster",
+ "pic-8888",
+ "gm",
+ "_",
+ "image-cacherator-from-raster",
+ "2ndpic-8888",
+ "gm",
+ "_",
+ "image-cacherator-from-raster",
+ "serialize-8888",
+ "gm",
+ "_",
+ "image-cacherator-from-raster",
+ "sp-8888",
+ "gm",
+ "_",
+ "image-cacherator-from-ctable",
+ "pic-8888",
+ "gm",
+ "_",
+ "image-cacherator-from-ctable",
+ "2ndpic-8888",
+ "gm",
+ "_",
+ "image-cacherator-from-ctable",
+ "serialize-8888",
+ "gm",
+ "_",
+ "image-cacherator-from-ctable",
+ "sp-8888",
+ "gm",
+ "_",
+ "gamut",
+ "pic-8888",
+ "gm",
+ "_",
+ "gamut",
+ "lite-8888",
+ "gm",
+ "_",
+ "gamut",
+ "2ndpic-8888",
+ "gm",
+ "_",
+ "gamut",
+ "serialize-8888",
+ "gm",
+ "_",
+ "gamut",
+ "sp-8888",
+ "gm",
+ "_",
+ "complexclip4_bw",
+ "pic-8888",
+ "gm",
+ "_",
+ "complexclip4_bw",
+ "lite-8888",
+ "gm",
+ "_",
+ "complexclip4_bw",
+ "2ndpic-8888",
+ "gm",
+ "_",
+ "complexclip4_bw",
+ "serialize-8888",
+ "gm",
+ "_",
+ "complexclip4_bw",
+ "sp-8888",
+ "gm",
+ "_",
+ "complexclip4_aa",
+ "pic-8888",
+ "gm",
+ "_",
+ "complexclip4_aa",
+ "lite-8888",
+ "gm",
+ "_",
+ "complexclip4_aa",
+ "2ndpic-8888",
+ "gm",
+ "_",
+ "complexclip4_aa",
+ "serialize-8888",
+ "gm",
+ "_",
+ "complexclip4_aa",
+ "tiles_rt-8888",
+ "gm",
+ "_",
+ "complexclip4_bw",
+ "tiles_rt-8888",
+ "gm",
+ "_",
+ "complexclip4_aa"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "name": "dm"
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-ASAN.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-ASAN.json
index ac6c632dec..ac6c632dec 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-ASAN.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-ASAN.json
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-MSAN.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-MSAN.json
index 7e8aa79910..7e8aa79910 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-MSAN.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-MSAN.json
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug.json
index 6f0279b216..6f0279b216 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug.json
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Shared.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Shared.json
index 5ce3a9108f..5ce3a9108f 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Shared.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Shared.json
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-TSAN.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-TSAN.json
index 1fc060b727..1fc060b727 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-TSAN.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-TSAN.json
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind.json
index 41a5b7c034..41a5b7c034 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind.json
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Win10-MSVC-NUC-GPU-IntelIris540-x86_64-Debug-ANGLE.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Win10-MSVC-NUC-GPU-IntelIris540-x86_64-Debug-ANGLE.json
index 4472f5443d..4472f5443d 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Win10-MSVC-NUC-GPU-IntelIris540-x86_64-Debug-ANGLE.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Win10-MSVC-NUC-GPU-IntelIris540-x86_64-Debug-ANGLE.json
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Win10-MSVC-ShuttleA-GPU-GTX660-x86_64-Debug-Vulkan.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Win10-MSVC-ShuttleA-GPU-GTX660-x86_64-Debug-Vulkan.json
index b44fc614c1..b44fc614c1 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Win10-MSVC-ShuttleA-GPU-GTX660-x86_64-Debug-Vulkan.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Win10-MSVC-ShuttleA-GPU-GTX660-x86_64-Debug-Vulkan.json
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Win10-MSVC-ZBOX-GPU-GTX1070-x86_64-Debug-Vulkan.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Win10-MSVC-ZBOX-GPU-GTX1070-x86_64-Debug-Vulkan.json
index 0e17c8c4d5..0e17c8c4d5 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Win10-MSVC-ZBOX-GPU-GTX1070-x86_64-Debug-Vulkan.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Win10-MSVC-ZBOX-GPU-GTX1070-x86_64-Debug-Vulkan.json
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Win8-MSVC-ShuttleB-CPU-AVX2-x86_64-Release-Trybot.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Win8-MSVC-ShuttleB-CPU-AVX2-x86_64-Release-Trybot.json
index 85f4bd7727..85f4bd7727 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Win8-MSVC-ShuttleB-CPU-AVX2-x86_64-Release-Trybot.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Win8-MSVC-ShuttleB-CPU-AVX2-x86_64-Release-Trybot.json
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Win8-MSVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE.json b/infra/bots/recipe_modules/sktest/example.expected/Test-Win8-MSVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE.json
index 7b5a76d0f5..7b5a76d0f5 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Win8-MSVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-Win8-MSVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE.json
diff --git a/infra/bots/recipes/swarm_test.expected/Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug.json b/infra/bots/recipe_modules/sktest/example.expected/Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug.json
index f935ad37fc..f935ad37fc 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug.json
diff --git a/infra/bots/recipes/swarm_test.expected/big_issue_number.json b/infra/bots/recipe_modules/sktest/example.expected/big_issue_number.json
index baa74eb35c..baa74eb35c 100644
--- a/infra/bots/recipes/swarm_test.expected/big_issue_number.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/big_issue_number.json
diff --git a/infra/bots/recipes/swarm_test.expected/failed_dm.json b/infra/bots/recipe_modules/sktest/example.expected/failed_dm.json
index 4ac42919f1..4ac42919f1 100644
--- a/infra/bots/recipes/swarm_test.expected/failed_dm.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/failed_dm.json
diff --git a/infra/bots/recipes/swarm_test.expected/failed_get_hashes.json b/infra/bots/recipe_modules/sktest/example.expected/failed_get_hashes.json
index d8aa3df636..d8aa3df636 100644
--- a/infra/bots/recipes/swarm_test.expected/failed_get_hashes.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/failed_get_hashes.json
diff --git a/infra/bots/recipes/swarm_test.expected/missing_SKP_VERSION_device.json b/infra/bots/recipe_modules/sktest/example.expected/missing_SKP_VERSION_device.json
index 59676385f2..59676385f2 100644
--- a/infra/bots/recipes/swarm_test.expected/missing_SKP_VERSION_device.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/missing_SKP_VERSION_device.json
diff --git a/infra/bots/recipes/swarm_test.expected/nobuildbot.json b/infra/bots/recipe_modules/sktest/example.expected/nobuildbot.json
index 8e69ee7bc6..8e69ee7bc6 100644
--- a/infra/bots/recipes/swarm_test.expected/nobuildbot.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/nobuildbot.json
diff --git a/infra/bots/recipes/swarm_test.expected/recipe_with_gerrit_patch.json b/infra/bots/recipe_modules/sktest/example.expected/recipe_with_gerrit_patch.json
index 6f6b3bd85b..6f6b3bd85b 100644
--- a/infra/bots/recipes/swarm_test.expected/recipe_with_gerrit_patch.json
+++ b/infra/bots/recipe_modules/sktest/example.expected/recipe_with_gerrit_patch.json
diff --git a/infra/bots/recipe_modules/sktest/example.py b/infra/bots/recipe_modules/sktest/example.py
new file mode 100644
index 0000000000..7ea7d6c25e
--- /dev/null
+++ b/infra/bots/recipe_modules/sktest/example.py
@@ -0,0 +1,225 @@
+# Copyright 2016 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+
+# Example recipe w/ coverage.
+
+
+DEPS = [
+ 'recipe_engine/path',
+ 'recipe_engine/platform',
+ 'recipe_engine/properties',
+ 'recipe_engine/raw_io',
+ 'sktest',
+]
+
+
+TEST_BUILDERS = {
+ 'client.skia': {
+ 'skiabot-linux-swarm-000': [
+ 'Test-Android-Clang-AndroidOne-CPU-MT6582-arm-Release-GN_Android',
+ 'Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-GN_Android',
+ 'Test-Android-Clang-GalaxyS7-GPU-Adreno530-arm64-Debug-GN_Android',
+ 'Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-GN_Android',
+ 'Test-Android-Clang-Nexus10-GPU-MaliT604-arm-Release-GN_Android',
+ 'Test-Android-Clang-Nexus5-GPU-Adreno330-arm-Release-Android',
+ 'Test-Android-Clang-Nexus6-GPU-Adreno420-arm-Debug-GN_Android',
+ 'Test-Android-Clang-Nexus6p-GPU-Adreno430-arm64-Debug-GN_Android_Vulkan',
+ 'Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-GN_Android',
+ 'Test-Android-Clang-NexusPlayer-CPU-SSE4-x86-Release-GN_Android',
+ 'Test-Android-Clang-PixelC-GPU-TegraX1-arm64-Debug-GN_Android',
+ 'Test-Mac-Clang-MacMini4.1-GPU-GeForce320M-x86_64-Debug',
+ 'Test-Mac-Clang-MacMini6.2-CPU-AVX-x86_64-Debug',
+ 'Test-Mac-Clang-MacMini6.2-GPU-HD4000-x86_64-Debug-CommandBuffer',
+ 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Debug',
+ 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug',
+ 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-ASAN',
+ 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-MSAN',
+ 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Shared',
+ 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-TSAN',
+ 'Test-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind',
+ 'Test-Win10-MSVC-NUC-GPU-IntelIris540-x86_64-Debug-ANGLE',
+ 'Test-Win10-MSVC-ShuttleA-GPU-GTX660-x86_64-Debug-Vulkan',
+ 'Test-Win10-MSVC-ZBOX-GPU-GTX1070-x86_64-Debug-Vulkan',
+ 'Test-Win8-MSVC-ShuttleB-CPU-AVX2-x86_64-Release-Trybot',
+ 'Test-Win8-MSVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE',
+ 'Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug',
+ ],
+ },
+}
+
+
+def RunSteps(api):
+ api.sktest.run()
+
+
+def GenTests(api):
+ for mastername, slaves in TEST_BUILDERS.iteritems():
+ for slavename, builders_by_slave in slaves.iteritems():
+ for builder in builders_by_slave:
+ test = (
+ api.test(builder) +
+ api.properties(buildername=builder,
+ mastername=mastername,
+ slavename=slavename,
+ buildnumber=5,
+ revision='abc123',
+ path_config='kitchen',
+ swarm_out_dir='[SWARM_OUT_DIR]') +
+ api.path.exists(
+ api.path['start_dir'].join('skia'),
+ api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
+ 'skimage', 'VERSION'),
+ api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
+ 'skp', 'VERSION'),
+ api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
+ 'svg', 'VERSION'),
+ api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
+ )
+ )
+ if 'Trybot' in builder:
+ test += api.properties(issue=500,
+ patchset=1,
+ rietveld='https://codereview.chromium.org')
+ if 'Win' in builder:
+ test += api.platform('win', 64)
+
+
+ yield test
+
+ builder = 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug'
+ yield (
+ api.test('failed_dm') +
+ api.properties(buildername=builder,
+ mastername='client.skia',
+ slavename='skiabot-linux-swarm-000',
+ buildnumber=6,
+ revision='abc123',
+ path_config='kitchen',
+ swarm_out_dir='[SWARM_OUT_DIR]') +
+ api.path.exists(
+ api.path['start_dir'].join('skia'),
+ api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
+ 'skimage', 'VERSION'),
+ api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
+ 'skp', 'VERSION'),
+ api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
+ 'svg', 'VERSION'),
+ api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
+ ) +
+ api.step_data('dm', retcode=1)
+ )
+
+ builder = 'Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-GN_Android'
+ yield (
+ api.test('failed_get_hashes') +
+ api.properties(buildername=builder,
+ mastername='client.skia',
+ slavename='skiabot-linux-swarm-000',
+ buildnumber=6,
+ revision='abc123',
+ path_config='kitchen',
+ swarm_out_dir='[SWARM_OUT_DIR]') +
+ api.path.exists(
+ api.path['start_dir'].join('skia'),
+ api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
+ 'skimage', 'VERSION'),
+ api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
+ 'skp', 'VERSION'),
+ api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
+ 'svg', 'VERSION'),
+ api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
+ ) +
+ api.step_data('get uninteresting hashes', retcode=1)
+ )
+
+ builder = 'Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug'
+ yield (
+ api.test('missing_SKP_VERSION_device') +
+ api.properties(buildername=builder,
+ mastername='client.skia',
+ slavename='skiabot-linux-swarm-000',
+ buildnumber=6,
+ revision='abc123',
+ path_config='kitchen',
+ swarm_out_dir='[SWARM_OUT_DIR]') +
+ api.path.exists(
+ api.path['start_dir'].join('skia'),
+ api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
+ 'skimage', 'VERSION'),
+ api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
+ 'skp', 'VERSION'),
+ api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
+ 'svg', 'VERSION'),
+ api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
+ ) +
+ api.step_data('read SKP_VERSION', retcode=1)
+ )
+
+ builder = 'Test-Win8-MSVC-ShuttleB-CPU-AVX2-x86_64-Release-Trybot'
+ yield (
+ api.test('big_issue_number') +
+ api.properties(buildername=builder,
+ mastername='client.skia.compile',
+ slavename='skiabot-linux-swarm-000',
+ buildnumber=5,
+ revision='abc123',
+ path_config='kitchen',
+ swarm_out_dir='[SWARM_OUT_DIR]',
+ rietveld='https://codereview.chromium.org',
+ patchset=1,
+ issue=2147533002L) +
+ api.path.exists(
+ api.path['start_dir'].join('skia'),
+ api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
+ 'skimage', 'VERSION'),
+ api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
+ 'skp', 'VERSION'),
+ api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
+ 'svg', 'VERSION'),
+ api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
+ ) +
+ api.platform('win', 64)
+ )
+
+ builder = 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Debug-Trybot'
+ yield (
+ api.test('recipe_with_gerrit_patch') +
+ api.properties(
+ buildername=builder,
+ mastername='client.skia',
+ slavename='skiabot-linux-swarm-000',
+ buildnumber=5,
+ path_config='kitchen',
+ swarm_out_dir='[SWARM_OUT_DIR]',
+ revision='abc123',
+ patch_storage='gerrit') +
+ api.properties.tryserver(
+ buildername=builder,
+ gerrit_project='skia',
+ gerrit_url='https://skia-review.googlesource.com/',
+ )
+ )
+
+ yield (
+ api.test('nobuildbot') +
+ api.properties(
+ buildername=builder,
+ mastername='client.skia',
+ slavename='skiabot-linux-swarm-000',
+ buildnumber=5,
+ path_config='kitchen',
+ swarm_out_dir='[SWARM_OUT_DIR]',
+ revision='abc123',
+ nobuildbot='True',
+ patch_storage='gerrit') +
+ api.properties.tryserver(
+ buildername=builder,
+ gerrit_project='skia',
+ gerrit_url='https://skia-review.googlesource.com/',
+ ) +
+ api.step_data('get swarming bot id',
+ stdout=api.raw_io.output('skia-bot-123')) +
+ api.step_data('get swarming task id', stdout=api.raw_io.output('123456'))
+ )
diff --git a/infra/bots/recipes/upload_dm_results.expected/failed_all.json b/infra/bots/recipe_modules/upload_dm_results/example.expected/failed_all.json
index 7ec0362e4d..7ec0362e4d 100644
--- a/infra/bots/recipes/upload_dm_results.expected/failed_all.json
+++ b/infra/bots/recipe_modules/upload_dm_results/example.expected/failed_all.json
diff --git a/infra/bots/recipes/upload_dm_results.expected/failed_once.json b/infra/bots/recipe_modules/upload_dm_results/example.expected/failed_once.json
index b6ed1fe3a9..b6ed1fe3a9 100644
--- a/infra/bots/recipes/upload_dm_results.expected/failed_once.json
+++ b/infra/bots/recipe_modules/upload_dm_results/example.expected/failed_once.json
diff --git a/infra/bots/recipes/upload_dm_results.expected/normal_bot.json b/infra/bots/recipe_modules/upload_dm_results/example.expected/normal_bot.json
index 9ea0d30397..9ea0d30397 100644
--- a/infra/bots/recipes/upload_dm_results.expected/normal_bot.json
+++ b/infra/bots/recipe_modules/upload_dm_results/example.expected/normal_bot.json
diff --git a/infra/bots/recipes/upload_dm_results.expected/recipe_with_gerrit_patch.json b/infra/bots/recipe_modules/upload_dm_results/example.expected/recipe_with_gerrit_patch.json
index 03bb50541a..03bb50541a 100644
--- a/infra/bots/recipes/upload_dm_results.expected/recipe_with_gerrit_patch.json
+++ b/infra/bots/recipe_modules/upload_dm_results/example.expected/recipe_with_gerrit_patch.json
diff --git a/infra/bots/recipes/upload_dm_results.expected/trybot.json b/infra/bots/recipe_modules/upload_dm_results/example.expected/trybot.json
index 3ebc3fa0af..3ebc3fa0af 100644
--- a/infra/bots/recipes/upload_dm_results.expected/trybot.json
+++ b/infra/bots/recipe_modules/upload_dm_results/example.expected/trybot.json
diff --git a/infra/bots/recipe_modules/upload_dm_results/example.py b/infra/bots/recipe_modules/upload_dm_results/example.py
new file mode 100644
index 0000000000..54448458ab
--- /dev/null
+++ b/infra/bots/recipe_modules/upload_dm_results/example.py
@@ -0,0 +1,70 @@
+# Copyright 2016 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+
+# Example recipe w/ coverage.
+
+
+DEPS = [
+ 'upload_dm_results',
+ 'recipe_engine/properties',
+]
+
+
+def RunSteps(api):
+ api.upload_dm_results.run()
+
+
+def GenTests(api):
+ builder = 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug'
+ yield (
+ api.test('normal_bot') +
+ api.properties(buildername=builder,
+ revision='abc123',
+ path_config='kitchen')
+ )
+
+ yield (
+ api.test('failed_once') +
+ api.properties(buildername=builder,
+ revision='abc123',
+ path_config='kitchen') +
+ api.step_data('upload images', retcode=1)
+ )
+
+ yield (
+ api.test('failed_all') +
+ api.properties(buildername=builder,
+ revision='abc123',
+ path_config='kitchen') +
+ api.step_data('upload images', retcode=1) +
+ api.step_data('upload images (attempt 2)', retcode=1) +
+ api.step_data('upload images (attempt 3)', retcode=1) +
+ api.step_data('upload images (attempt 4)', retcode=1) +
+ api.step_data('upload images (attempt 5)', retcode=1)
+ )
+
+ builder = 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-Trybot'
+ yield (
+ api.test('trybot') +
+ api.properties(buildername=builder,
+ revision='abc123',
+ path_config='kitchen',
+ issue='12345',
+ patchset='1002')
+ )
+
+ yield (
+ api.test('recipe_with_gerrit_patch') +
+ api.properties(
+ buildername=builder,
+ revision='abc123',
+ path_config='kitchen',
+ patch_storage='gerrit') +
+ api.properties.tryserver(
+ buildername=builder,
+ gerrit_project='skia',
+ gerrit_url='https://skia-review.googlesource.com/',
+ )
+ )
diff --git a/infra/bots/recipes/upload_nano_results.expected/normal_bot.json b/infra/bots/recipe_modules/upload_nano_results/example.expected/normal_bot.json
index e004853974..e004853974 100644
--- a/infra/bots/recipes/upload_nano_results.expected/normal_bot.json
+++ b/infra/bots/recipe_modules/upload_nano_results/example.expected/normal_bot.json
diff --git a/infra/bots/recipes/upload_nano_results.expected/recipe_with_gerrit_patch.json b/infra/bots/recipe_modules/upload_nano_results/example.expected/recipe_with_gerrit_patch.json
index f55491cf7a..f55491cf7a 100644
--- a/infra/bots/recipes/upload_nano_results.expected/recipe_with_gerrit_patch.json
+++ b/infra/bots/recipe_modules/upload_nano_results/example.expected/recipe_with_gerrit_patch.json
diff --git a/infra/bots/recipes/upload_nano_results.expected/trybot.json b/infra/bots/recipe_modules/upload_nano_results/example.expected/trybot.json
index dd71c716cb..dd71c716cb 100644
--- a/infra/bots/recipes/upload_nano_results.expected/trybot.json
+++ b/infra/bots/recipe_modules/upload_nano_results/example.expected/trybot.json
diff --git a/infra/bots/recipe_modules/upload_nano_results/example.py b/infra/bots/recipe_modules/upload_nano_results/example.py
new file mode 100644
index 0000000000..f97cac86f2
--- /dev/null
+++ b/infra/bots/recipe_modules/upload_nano_results/example.py
@@ -0,0 +1,50 @@
+# Copyright 2016 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+
+# Example recipe w/ coverage.
+
+
+DEPS = [
+ 'recipe_engine/properties',
+ 'upload_nano_results',
+]
+
+
+def RunSteps(api):
+ api.upload_nano_results.run()
+
+
+def GenTests(api):
+ builder = 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug'
+ yield (
+ api.test('normal_bot') +
+ api.properties(buildername=builder,
+ revision='abc123',
+ path_config='kitchen')
+ )
+
+ builder = 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-Trybot'
+ yield (
+ api.test('trybot') +
+ api.properties(buildername=builder,
+ revision='abc123',
+ path_config='kitchen',
+ issue='12345',
+ patchset='1002')
+ )
+
+ yield (
+ api.test('recipe_with_gerrit_patch') +
+ api.properties(
+ buildername=builder,
+ revision='abc123',
+ path_config='kitchen',
+ patch_storage='gerrit') +
+ api.properties.tryserver(
+ buildername=builder,
+ gerrit_project='skia',
+ gerrit_url='https://skia-review.googlesource.com/',
+ )
+ )
diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Mac-Clang-Arm7-Release.json b/infra/bots/recipes/swarm_compile.expected/Build-Mac-Clang-Arm7-Release.json
new file mode 100644
index 0000000000..9a85fed563
--- /dev/null
+++ b/infra/bots/recipes/swarm_compile.expected/Build-Mac-Clang-Arm7-Release.json
@@ -0,0 +1,173 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport sys, os\npath = sys.argv[1]\nmode = int(sys.argv[2])\nif not os.path.isdir(path):\n if os.path.exists(path):\n print \"%s exists but is not a dir\" % path\n sys.exit(1)\n os.makedirs(path, mode)\n",
+ "[CUSTOM_/_B_WORK]",
+ "511"
+ ],
+ "name": "makedirs checkout_path",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@import sys, os@@@",
+ "@@@STEP_LOG_LINE@python.inline@path = sys.argv[1]@@@",
+ "@@@STEP_LOG_LINE@python.inline@mode = int(sys.argv[2])@@@",
+ "@@@STEP_LOG_LINE@python.inline@if not os.path.isdir(path):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(path):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ print \"%s exists but is not a dir\" % path@@@",
+ "@@@STEP_LOG_LINE@python.inline@ sys.exit(1)@@@",
+ "@@@STEP_LOG_LINE@python.inline@ os.makedirs(path, mode)@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
+ "--spec",
+ "cache_dir = '[CUSTOM_/_B_CACHE]'\nsolutions = [{'deps_file': '.DEPS.git', 'managed': False, 'name': 'skia', 'url': 'https://skia.googlesource.com/skia.git'}]",
+ "--patch_root",
+ "skia",
+ "--revision_mapping_file",
+ "{\"skia\": \"got_revision\"}",
+ "--git-cache-dir",
+ "[CUSTOM_/_B_CACHE]",
+ "--output_json",
+ "/path/to/tmp/json",
+ "--revision",
+ "skia@abc123",
+ "--output_manifest"
+ ],
+ "cwd": "[CUSTOM_/_B_WORK]",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[CUSTOM_/_B_WORK]/skia/out/Build-Mac-Clang-Arm7-Release-iOS"
+ },
+ "name": "bot_update",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Some step text@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"did_run\": true, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fixed_revisions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"skia\": \"abc123\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"manifest\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"skia\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"repository\": \"https://fake.org/skia.git\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"revision\": \"9046e2e693bb92a76e972b694580e5d17ad10748\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_root\": \"skia\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"properties\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"got_revision\": \"9046e2e693bb92a76e972b694580e5d17ad10748\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"got_revision_cp\": \"refs/heads/master@{#164710}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"root\": \"skia\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"step_text\": \"Some step text\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@got_revision@\"9046e2e693bb92a76e972b694580e5d17ad10748\"@@@",
+ "@@@SET_BUILD_PROPERTY@got_revision_cp@\"refs/heads/master@{#164710}\"@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CUSTOM_/_B_WORK]/skia/platform_tools/ios/bin/ios_ninja"
+ ],
+ "cwd": "[CUSTOM_/_B_WORK]/skia",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CC": "/usr/bin/clang",
+ "CHROME_HEADLESS": "1",
+ "CXX": "/usr/bin/clang++",
+ "GYP_DEFINES": "skia_arch_type=arm skia_clang_build=1 skia_os=ios skia_warnings_as_errors=1",
+ "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[CUSTOM_/_B_WORK]/skia/out/Build-Mac-Clang-Arm7-Release-iOS"
+ },
+ "name": "build iOSShell"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "import errno\nimport glob\nimport os\nimport shutil\nimport sys\n\nsrc = sys.argv[1]\ndst = sys.argv[2]\nbuild_products_whitelist = ['dm', 'dm.exe', 'get_images_from_skps', 'get_images_from_skps.exe', 'nanobench', 'nanobench.exe', 'skpbench', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'lib/*.so', 'iOSShell.app', 'iOSShell.ipa', 'visualbench', 'visualbench.exe', 'vulkan-1.dll']\n\ntry:\n os.makedirs(dst)\nexcept OSError as e:\n if e.errno != errno.EEXIST:\n raise\n\nfor pattern in build_products_whitelist:\n path = os.path.join(src, pattern)\n for f in glob.glob(path):\n dst_path = os.path.join(dst, os.path.relpath(f, src))\n if not os.path.isdir(os.path.dirname(dst_path)):\n os.makedirs(os.path.dirname(dst_path))\n print 'Copying build product %s to %s' % (f, dst_path)\n shutil.move(f, dst_path)\n",
+ "[CUSTOM_/_B_WORK]/skia/out/Build-Mac-Clang-Arm7-Release-iOS/Release",
+ "[CUSTOM_[SWARM_OUT_DIR]]/out/Release"
+ ],
+ "name": "copy build products",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@import errno@@@",
+ "@@@STEP_LOG_LINE@python.inline@import glob@@@",
+ "@@@STEP_LOG_LINE@python.inline@import os@@@",
+ "@@@STEP_LOG_LINE@python.inline@import shutil@@@",
+ "@@@STEP_LOG_LINE@python.inline@import sys@@@",
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@src = sys.argv[1]@@@",
+ "@@@STEP_LOG_LINE@python.inline@dst = sys.argv[2]@@@",
+ "@@@STEP_LOG_LINE@python.inline@build_products_whitelist = ['dm', 'dm.exe', 'get_images_from_skps', 'get_images_from_skps.exe', 'nanobench', 'nanobench.exe', 'skpbench', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'lib/*.so', 'iOSShell.app', 'iOSShell.ipa', 'visualbench', 'visualbench.exe', 'vulkan-1.dll']@@@",
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@try:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ os.makedirs(dst)@@@",
+ "@@@STEP_LOG_LINE@python.inline@except OSError as e:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if e.errno != errno.EEXIST:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ raise@@@",
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@for pattern in build_products_whitelist:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ path = os.path.join(src, pattern)@@@",
+ "@@@STEP_LOG_LINE@python.inline@ for f in glob.glob(path):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ dst_path = os.path.join(dst, os.path.relpath(f, src))@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if not os.path.isdir(os.path.dirname(dst_path)):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ os.makedirs(os.path.dirname(dst_path))@@@",
+ "@@@STEP_LOG_LINE@python.inline@ print 'Copying build product %s to %s' % (f, dst_path)@@@",
+ "@@@STEP_LOG_LINE@python.inline@ shutil.move(f, dst_path)@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "import errno\nimport glob\nimport os\nimport shutil\nimport sys\n\nsrc = sys.argv[1]\ndst = sys.argv[2]\nbuild_products_whitelist = ['dm', 'dm.exe', 'get_images_from_skps', 'get_images_from_skps.exe', 'nanobench', 'nanobench.exe', 'skpbench', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'lib/*.so', 'iOSShell.app', 'iOSShell.ipa', 'visualbench', 'visualbench.exe', 'vulkan-1.dll']\n\ntry:\n os.makedirs(dst)\nexcept OSError as e:\n if e.errno != errno.EEXIST:\n raise\n\nfor pattern in build_products_whitelist:\n path = os.path.join(src, pattern)\n for f in glob.glob(path):\n dst_path = os.path.join(dst, os.path.relpath(f, src))\n if not os.path.isdir(os.path.dirname(dst_path)):\n os.makedirs(os.path.dirname(dst_path))\n print 'Copying build product %s to %s' % (f, dst_path)\n shutil.move(f, dst_path)\n",
+ "[CUSTOM_/_B_WORK]/skia/xcodebuild/Release-iphoneos",
+ "[CUSTOM_[SWARM_OUT_DIR]]/xcodebuild/Release-iphoneos"
+ ],
+ "name": "copy build products (2)",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@import errno@@@",
+ "@@@STEP_LOG_LINE@python.inline@import glob@@@",
+ "@@@STEP_LOG_LINE@python.inline@import os@@@",
+ "@@@STEP_LOG_LINE@python.inline@import shutil@@@",
+ "@@@STEP_LOG_LINE@python.inline@import sys@@@",
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@src = sys.argv[1]@@@",
+ "@@@STEP_LOG_LINE@python.inline@dst = sys.argv[2]@@@",
+ "@@@STEP_LOG_LINE@python.inline@build_products_whitelist = ['dm', 'dm.exe', 'get_images_from_skps', 'get_images_from_skps.exe', 'nanobench', 'nanobench.exe', 'skpbench', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'lib/*.so', 'iOSShell.app', 'iOSShell.ipa', 'visualbench', 'visualbench.exe', 'vulkan-1.dll']@@@",
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@try:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ os.makedirs(dst)@@@",
+ "@@@STEP_LOG_LINE@python.inline@except OSError as e:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if e.errno != errno.EEXIST:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ raise@@@",
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@for pattern in build_products_whitelist:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ path = os.path.join(src, pattern)@@@",
+ "@@@STEP_LOG_LINE@python.inline@ for f in glob.glob(path):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ dst_path = os.path.join(dst, os.path.relpath(f, src))@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if not os.path.isdir(os.path.dirname(dst_path)):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ os.makedirs(os.path.dirname(dst_path))@@@",
+ "@@@STEP_LOG_LINE@python.inline@ print 'Copying build product %s to %s' % (f, dst_path)@@@",
+ "@@@STEP_LOG_LINE@python.inline@ shutil.move(f, dst_path)@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipes/swarm_compile.py b/infra/bots/recipes/swarm_compile.py
index 2d00bb8523..f54c1b1159 100644
--- a/infra/bots/recipes/swarm_compile.py
+++ b/infra/bots/recipes/swarm_compile.py
@@ -14,155 +14,21 @@ DEPS = [
]
-TEST_BUILDERS = {
- 'client.skia.compile': {
- 'skiabot-linux-swarm-000': [
- 'Build-Mac-Clang-Arm7-Release-iOS',
- 'Build-Mac-Clang-arm64-Debug-GN_iOS',
- 'Build-Mac-Clang-mipsel-Debug-GN_Android',
- 'Build-Mac-Clang-x86_64-Debug-CommandBuffer',
- 'Build-Mac-Clang-x86_64-Release-GN',
- 'Build-Ubuntu-Clang-arm64-Release-GN_Android',
- 'Build-Ubuntu-Clang-arm64-Release-GN_Android_Vulkan',
- 'Build-Ubuntu-Clang-x86_64-Debug-ASAN',
- 'Build-Ubuntu-Clang-x86_64-Debug-GN',
- 'Build-Ubuntu-Clang-arm64-Debug-GN_Android-Trybot',
- 'Build-Ubuntu-Clang-arm64-Debug-GN_Android_FrameworkDefs',
- 'Build-Ubuntu-GCC-x86-Debug',
- 'Build-Ubuntu-GCC-x86_64-Debug-GN',
- 'Build-Ubuntu-GCC-x86_64-Debug-MSAN',
- 'Build-Ubuntu-GCC-x86_64-Debug-NoGPU',
- 'Build-Ubuntu-GCC-x86_64-Debug-SK_USE_DISCARDABLE_SCALEDIMAGECACHE',
- 'Build-Ubuntu-GCC-x86_64-Release-ANGLE',
- 'Build-Ubuntu-GCC-x86_64-Release-Fast',
- 'Build-Ubuntu-GCC-x86_64-Release-Mesa',
- 'Build-Ubuntu-GCC-x86_64-Release-PDFium',
- 'Build-Ubuntu-GCC-x86_64-Release-PDFium_SkiaPaths',
- 'Build-Ubuntu-GCC-x86_64-Release-Valgrind',
- 'Build-Win-Clang-arm64-Release-GN_Android',
- 'Build-Win-MSVC-x86-Debug',
- 'Build-Win-MSVC-x86-Debug-ANGLE',
- 'Build-Win-MSVC-x86-Debug-Exceptions',
- 'Build-Win-MSVC-x86-Release-GDI',
- 'Build-Win-MSVC-x86-Release-GN',
- 'Build-Win-MSVC-x86_64-Release-Vulkan',
- ],
- },
-}
-
-
def RunSteps(api):
api.compile.run()
def GenTests(api):
- for mastername, slaves in TEST_BUILDERS.iteritems():
- for slavename, builders_by_slave in slaves.iteritems():
- for builder in builders_by_slave:
- test = (
- api.test(builder) +
- api.properties(buildername=builder,
- mastername=mastername,
- slavename=slavename,
- buildnumber=5,
- revision='abc123',
- path_config='kitchen',
- swarm_out_dir='[SWARM_OUT_DIR]') +
- api.path.exists(
- api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
- )
- )
- if 'Win' in builder:
- test += api.platform('win', 64)
- elif 'Mac' in builder:
- test += api.platform('mac', 64)
- else:
- test += api.platform('linux', 64)
- if 'Trybot' in builder:
- test += api.properties(issue=500,
- patchset=1,
- rietveld='https://codereview.chromium.org')
-
- yield test
-
- mastername = 'client.skia.compile'
- slavename = 'skiabot-win-compile-000'
- buildername = 'Build-Win-MSVC-x86-Debug'
- yield (
- api.test('big_issue_number') +
- api.properties(buildername=buildername,
- mastername=mastername,
- slavename=slavename,
- buildnumber=5,
- revision='abc123',
- path_config='kitchen',
- swarm_out_dir='[SWARM_OUT_DIR]',
- rietveld='https://codereview.chromium.org',
- patchset=1,
- issue=2147533002L) +
- api.path.exists(
- api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
- ) +
- api.platform('win', 64)
- )
-
- yield (
- api.test('recipe_with_gerrit_patch') +
- api.properties(
- buildername=buildername + '-Trybot',
- mastername=mastername,
- slavename=slavename,
- buildnumber=5,
- path_config='kitchen',
- swarm_out_dir='[SWARM_OUT_DIR]',
- revision='abc123',
- patch_storage='gerrit') +
- api.properties.tryserver(
- buildername=buildername + '-Trybot',
- gerrit_project='skia',
- gerrit_url='https://skia-review.googlesource.com/',
- ) +
- api.platform('win', 64)
- )
-
- yield (
- api.test('buildbotless_trybot_rietveld') +
- api.properties(
- repository='skia',
- buildername=buildername,
- mastername=mastername,
- slavename=slavename,
- buildnumber=5,
- path_config='kitchen',
- swarm_out_dir='[SWARM_OUT_DIR]',
- revision='abc123',
- nobuildbot='True',
- issue=500,
- patchset=1,
- patch_storage='rietveld',
- rietveld='https://codereview.chromium.org') +
- api.platform('win', 64)
- )
-
yield (
- api.test('buildbotless_trybot_gerrit') +
- api.properties(
- repository='skia',
- buildername=buildername,
- mastername=mastername,
- slavename=slavename,
- buildnumber=5,
- path_config='kitchen',
- swarm_out_dir='[SWARM_OUT_DIR]',
- revision='abc123',
- nobuildbot='True',
- patch_issue=500,
- patch_set=1,
- patch_storage='gerrit') +
- api.properties.tryserver(
- buildername=buildername,
- gerrit_project='skia',
- gerrit_url='https://skia-review.googlesource.com/',
- ) +
- api.platform('win', 64)
+ api.test('Build-Mac-Clang-Arm7-Release') +
+ api.properties(buildername='Build-Mac-Clang-Arm7-Release-iOS',
+ mastername='fake-master',
+ slavename='fake-slave',
+ buildnumber=5,
+ revision='abc123',
+ path_config='kitchen',
+ swarm_out_dir='[SWARM_OUT_DIR]') +
+ api.path.exists(
+ api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
+ )
)
diff --git a/infra/bots/recipes/swarm_perf.expected/Perf-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release.json b/infra/bots/recipes/swarm_perf.expected/Perf-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release.json
new file mode 100644
index 0000000000..64bc9ad556
--- /dev/null
+++ b/infra/bots/recipes/swarm_perf.expected/Perf-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release.json
@@ -0,0 +1,206 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[START_DIR]/skia/infra/bots/assets/skp/VERSION",
+ "/path/to/tmp/"
+ ],
+ "name": "Get downloaded SKP VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "42",
+ "[START_DIR]/tmp/SKP_VERSION"
+ ],
+ "name": "write SKP_VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[START_DIR]/skia/infra/bots/assets/skimage/VERSION",
+ "/path/to/tmp/"
+ ],
+ "name": "Get downloaded skimage VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "42",
+ "[START_DIR]/tmp/SK_IMAGE_VERSION"
+ ],
+ "name": "write SK_IMAGE_VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[START_DIR]/skia/infra/bots/assets/svg/VERSION",
+ "/path/to/tmp/"
+ ],
+ "name": "Get downloaded SVG VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "42",
+ "[START_DIR]/tmp/SVG_VERSION"
+ ],
+ "name": "write SVG_VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport os, sys\nfrom common import chromium_utils # Error? See https://crbug.com/584783.\n\n\nif os.path.exists(sys.argv[1]):\n chromium_utils.RemoveDirectory(sys.argv[1])\n",
+ "[CUSTOM_[SWARM_OUT_DIR]]/perfdata/Perf-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release/data"
+ ],
+ "env": {
+ "PYTHONPATH": "[START_DIR]/skia/infra/bots/.recipe_deps/build/scripts"
+ },
+ "name": "rmtree data",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@import os, sys@@@",
+ "@@@STEP_LOG_LINE@python.inline@from common import chromium_utils # Error? See https://crbug.com/584783.@@@",
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@if os.path.exists(sys.argv[1]):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ chromium_utils.RemoveDirectory(sys.argv[1])@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport sys, os\npath = sys.argv[1]\nmode = int(sys.argv[2])\nif not os.path.isdir(path):\n if os.path.exists(path):\n print \"%s exists but is not a dir\" % path\n sys.exit(1)\n os.makedirs(path, mode)\n",
+ "[CUSTOM_[SWARM_OUT_DIR]]/perfdata/Perf-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release/data",
+ "511"
+ ],
+ "name": "makedirs data",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@import sys, os@@@",
+ "@@@STEP_LOG_LINE@python.inline@path = sys.argv[1]@@@",
+ "@@@STEP_LOG_LINE@python.inline@mode = int(sys.argv[2])@@@",
+ "@@@STEP_LOG_LINE@python.inline@if not os.path.isdir(path):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(path):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ print \"%s exists but is not a dir\" % path@@@",
+ "@@@STEP_LOG_LINE@python.inline@ sys.exit(1)@@@",
+ "@@@STEP_LOG_LINE@python.inline@ os.makedirs(path, mode)@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "catchsegv",
+ "[START_DIR]/out/Release/nanobench",
+ "--undefok",
+ "-i",
+ "[START_DIR]/skia/resources",
+ "--skps",
+ "[START_DIR]/skp",
+ "--images",
+ "[START_DIR]/skimage/nanobench",
+ "--svgs",
+ "[START_DIR]/svg",
+ "--nogpu",
+ "--pre_log",
+ "--scales",
+ "1.0",
+ "1.1",
+ "--config",
+ "8888",
+ "gpu",
+ "nonrendering",
+ "hwui",
+ "f16",
+ "srgb",
+ "565",
+ "msaa16",
+ "nvpr16",
+ "nvprdit16",
+ "--match",
+ "~inc0.gif",
+ "~inc1.gif",
+ "~incInterlaced.gif",
+ "~inc0.jpg",
+ "~incGray.jpg",
+ "~inc0.wbmp",
+ "~inc1.wbmp",
+ "~inc0.webp",
+ "~inc1.webp",
+ "~inc0.ico",
+ "~inc1.ico",
+ "~inc0.png",
+ "~inc1.png",
+ "~inc2.png",
+ "~inc12.png",
+ "~inc13.png",
+ "~inc14.png",
+ "~inc0.webp",
+ "~inc1.webp",
+ "--outResultsFile",
+ "[CUSTOM_[SWARM_OUT_DIR]]/perfdata/Perf-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release/data/nanobench_abc123_1337000001.json",
+ "--properties",
+ "gitHash",
+ "abc123",
+ "build_number",
+ "5",
+ "--key",
+ "arch",
+ "x86_64",
+ "compiler",
+ "Clang",
+ "cpu_or_gpu",
+ "CPU",
+ "cpu_or_gpu_value",
+ "AVX2",
+ "model",
+ "GCE",
+ "os",
+ "Ubuntu"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "name": "nanobench"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport sys, os\npath = sys.argv[1]\nmode = int(sys.argv[2])\nif not os.path.isdir(path):\n if os.path.exists(path):\n print \"%s exists but is not a dir\" % path\n sys.exit(1)\n os.makedirs(path, mode)\n",
+ "[CUSTOM_[SWARM_OUT_DIR]]/perfdata/Perf-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release/data",
+ "511"
+ ],
+ "name": "makedirs perf_dir",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@import sys, os@@@",
+ "@@@STEP_LOG_LINE@python.inline@path = sys.argv[1]@@@",
+ "@@@STEP_LOG_LINE@python.inline@mode = int(sys.argv[2])@@@",
+ "@@@STEP_LOG_LINE@python.inline@if not os.path.isdir(path):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(path):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ print \"%s exists but is not a dir\" % path@@@",
+ "@@@STEP_LOG_LINE@python.inline@ sys.exit(1)@@@",
+ "@@@STEP_LOG_LINE@python.inline@ os.makedirs(path, mode)@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipes/swarm_perf.py b/infra/bots/recipes/swarm_perf.py
index 643c6d128d..4246a69cca 100644
--- a/infra/bots/recipes/swarm_perf.py
+++ b/infra/bots/recipes/swarm_perf.py
@@ -15,143 +15,26 @@ DEPS = [
]
-TEST_BUILDERS = {
- 'client.skia': {
- 'skiabot-linux-swarm-000': [
- ('Perf-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug' +
- '-GN_Android_Vulkan'),
- 'Perf-Android-Clang-Nexus5-GPU-Adreno330-arm-Debug-GN_Android',
- 'Perf-Android-Clang-Nexus6-GPU-Adreno420-arm-Release-GN_Android',
- 'Perf-Android-Clang-Nexus7-GPU-Tegra3-arm-Release-GN_Android',
- 'Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Release-GN_Android',
- 'Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-GN_Android',
- 'Perf-Mac-Clang-MacMini6.2-CPU-AVX-x86_64-Release-GN',
- 'Perf-Mac-Clang-MacMini6.2-GPU-HD4000-x86_64-Debug-CommandBuffer',
- 'Perf-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release-GN',
- 'Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind',
- 'Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-ANGLE',
- 'Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Debug',
- 'Perf-Win-MSVC-GCE-CPU-AVX2-x86_64-Release',
- 'Perf-Win10-MSVC-NUC-GPU-IntelIris540-x86_64-Release-ANGLE',
- 'Perf-Win8-MSVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE',
- 'Perf-Win8-MSVC-ShuttleB-GPU-HD4600-x86_64-Release-Trybot',
- 'Perf-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug',
- ],
- },
-}
-
-
def RunSteps(api):
api.perf.run()
def GenTests(api):
- for mastername, slaves in TEST_BUILDERS.iteritems():
- for slavename, builders_by_slave in slaves.iteritems():
- for builder in builders_by_slave:
- test = (
- api.test(builder) +
- api.properties(buildername=builder,
- mastername=mastername,
- slavename=slavename,
- buildnumber=5,
- revision='abc123',
- path_config='kitchen',
- swarm_out_dir='[SWARM_OUT_DIR]') +
- api.path.exists(
- api.path['start_dir'].join('skia'),
- api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
- 'skimage', 'VERSION'),
- api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
- 'skp', 'VERSION'),
- api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
- )
- )
- if 'Trybot' in builder:
- test += api.properties(issue=500,
- patchset=1,
- rietveld='https://codereview.chromium.org')
- if 'Win' in builder:
- test += api.platform('win', 64)
-
- yield test
-
- builder = 'Perf-Win8-MSVC-ShuttleB-GPU-HD4600-x86_64-Release-Trybot'
yield (
- api.test('big_issue_number') +
- api.properties(buildername=builder,
- mastername='client.skia.compile',
- slavename='skiabot-linux-swarm-000',
+ api.test('Perf-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release') +
+ api.properties(buildername='Perf-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release',
+ mastername='fake-master',
+ slavename='fake-slave',
buildnumber=5,
revision='abc123',
path_config='kitchen',
- swarm_out_dir='[SWARM_OUT_DIR]',
- rietveld='https://codereview.chromium.org',
- patchset=1,
- issue=2147533002L) +
+ swarm_out_dir='[SWARM_OUT_DIR]') +
api.path.exists(
api.path['start_dir'].join('skia'),
api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
- 'skimage', 'VERSION'),
- api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
- 'skp', 'VERSION'),
+ 'skimage', 'VERSION'),
api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
- 'svg', 'VERSION'),
+ 'skp', 'VERSION'),
api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
- ) +
- api.platform('win', 64)
- )
-
- builder = ('Perf-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind-'
- 'Trybot')
- yield (
- api.test('recipe_with_gerrit_patch') +
- api.properties(
- buildername=builder,
- mastername='client.skia',
- slavename='skiabot-linux-swarm-000',
- buildnumber=5,
- path_config='kitchen',
- swarm_out_dir='[SWARM_OUT_DIR]',
- revision='abc123',
- patch_storage='gerrit') +
- api.properties.tryserver(
- buildername=builder,
- gerrit_project='skia',
- gerrit_url='https://skia-review.googlesource.com/',
- )
- )
-
- builder = 'Perf-Win8-MSVC-ShuttleB-GPU-HD4600-x86_64-Release-Trybot'
- yield (
- api.test('nobuildbot') +
- api.properties(
- buildername=builder,
- mastername='client.skia',
- slavename='skiabot-linux-swarm-000',
- buildnumber=5,
- revision='abc123',
- path_config='kitchen',
- nobuildbot='True',
- swarm_out_dir='[SWARM_OUT_DIR]',
- patch_storage='gerrit') +
- api.properties.tryserver(
- buildername=builder,
- gerrit_project='skia',
- gerrit_url='https://skia-review.googlesource.com/',
- ) +
- api.path.exists(
- api.path['start_dir'].join('skia'),
- api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
- 'skimage', 'VERSION'),
- api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
- 'skp', 'VERSION'),
- api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
- 'svg', 'VERSION'),
- api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
- ) +
- api.platform('win', 64) +
- api.step_data('get swarming bot id',
- stdout=api.raw_io.output('skia-bot-123')) +
- api.step_data('get swarming task id', stdout=api.raw_io.output('123456'))
+ )
)
diff --git a/infra/bots/recipes/swarm_skpbench.py b/infra/bots/recipes/swarm_skpbench.py
index 91650b2652..4561f61dc1 100644
--- a/infra/bots/recipes/swarm_skpbench.py
+++ b/infra/bots/recipes/swarm_skpbench.py
@@ -14,43 +14,28 @@ DEPS = [
]
-TEST_BUILDERS = {
- 'client.skia': {
- 'skiabot-linux-swarm-000': [
- 'Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-GN_Android_Skpbench',
- ('Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-' +
- 'GN_Android_Vulkan_Skpbench'),
- ],
- },
-}
-
-
def RunSteps(api):
api.skpbench.run()
def GenTests(api):
- for mastername, slaves in TEST_BUILDERS.iteritems():
- for slavename, builders_by_slave in slaves.iteritems():
- for builder in builders_by_slave:
- test = (
- api.test(builder) +
- api.properties(buildername=builder,
- mastername=mastername,
- slavename=slavename,
- buildnumber=5,
- revision='abc123',
- path_config='kitchen',
- swarm_out_dir='[SWARM_OUT_DIR]') +
- api.path.exists(
- api.path['start_dir'].join('skia'),
- api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
- 'skp', 'VERSION'),
- ) +
- api.step_data('get swarming bot id',
- stdout=api.raw_io.output('skia-bot-123')) +
- api.step_data('get swarming task id',
- stdout=api.raw_io.output('123456'))
- )
-
- yield test
+ b = 'Perf-Android-Clang-PixelC-GPU-TegraX1-arm64-Release-GN_Android_Skpbench'
+ yield (
+ api.test(b) +
+ api.properties(buildername=b,
+ mastername='fake-master',
+ slavename='fake-slave',
+ buildnumber=5,
+ revision='abc123',
+ path_config='kitchen',
+ swarm_out_dir='[SWARM_OUT_DIR]') +
+ api.path.exists(
+ api.path['start_dir'].join('skia'),
+ api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
+ 'skp', 'VERSION'),
+ ) +
+ api.step_data('get swarming bot id',
+ stdout=api.raw_io.output('skia-bot-123')) +
+ api.step_data('get swarming task id',
+ stdout=api.raw_io.output('123456'))
+ )
diff --git a/infra/bots/recipes/swarm_test.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Debug.json b/infra/bots/recipes/swarm_test.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Debug.json
index 0a14eb6b28..29decb96a3 100644
--- a/infra/bots/recipes/swarm_test.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Debug.json
+++ b/infra/bots/recipes/swarm_test.expected/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Debug.json
@@ -191,7 +191,7 @@
"gitHash",
"abc123",
"master",
- "client.skia",
+ "fake-master",
"builder",
"Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Debug",
"build_number",
diff --git a/infra/bots/recipes/swarm_test.py b/infra/bots/recipes/swarm_test.py
index f879f45a4d..2e101ae31c 100644
--- a/infra/bots/recipes/swarm_test.py
+++ b/infra/bots/recipes/swarm_test.py
@@ -15,211 +15,28 @@ DEPS = [
]
-TEST_BUILDERS = {
- 'client.skia': {
- 'skiabot-linux-swarm-000': [
- 'Test-Android-Clang-AndroidOne-CPU-MT6582-arm-Release-GN_Android',
- 'Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-GN_Android',
- 'Test-Android-Clang-GalaxyS7-GPU-Adreno530-arm64-Debug-GN_Android',
- 'Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-GN_Android',
- 'Test-Android-Clang-Nexus10-GPU-MaliT604-arm-Release-GN_Android',
- 'Test-Android-Clang-Nexus5-GPU-Adreno330-arm-Release-Android',
- 'Test-Android-Clang-Nexus6-GPU-Adreno420-arm-Debug-GN_Android',
- 'Test-Android-Clang-Nexus6p-GPU-Adreno430-arm64-Debug-GN_Android_Vulkan',
- 'Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-GN_Android',
- 'Test-Android-Clang-NexusPlayer-CPU-SSE4-x86-Release-GN_Android',
- 'Test-Android-Clang-PixelC-GPU-TegraX1-arm64-Debug-GN_Android',
- 'Test-Mac-Clang-MacMini4.1-GPU-GeForce320M-x86_64-Debug',
- 'Test-Mac-Clang-MacMini6.2-CPU-AVX-x86_64-Debug',
- 'Test-Mac-Clang-MacMini6.2-GPU-HD4000-x86_64-Debug-CommandBuffer',
- 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Debug',
- 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug',
- 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-ASAN',
- 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-MSAN',
- 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Shared',
- 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-TSAN',
- 'Test-Ubuntu-GCC-ShuttleA-GPU-GTX550Ti-x86_64-Release-Valgrind',
- 'Test-Win10-MSVC-NUC-GPU-IntelIris540-x86_64-Debug-ANGLE',
- 'Test-Win10-MSVC-ShuttleA-GPU-GTX660-x86_64-Debug-Vulkan',
- 'Test-Win10-MSVC-ZBOX-GPU-GTX1070-x86_64-Debug-Vulkan',
- 'Test-Win8-MSVC-ShuttleB-CPU-AVX2-x86_64-Release-Trybot',
- 'Test-Win8-MSVC-ShuttleB-GPU-GTX960-x86_64-Debug-ANGLE',
- 'Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug',
- ],
- },
-}
-
-
def RunSteps(api):
api.sktest.run()
def GenTests(api):
- for mastername, slaves in TEST_BUILDERS.iteritems():
- for slavename, builders_by_slave in slaves.iteritems():
- for builder in builders_by_slave:
- test = (
- api.test(builder) +
- api.properties(buildername=builder,
- mastername=mastername,
- slavename=slavename,
- buildnumber=5,
- revision='abc123',
- path_config='kitchen',
- swarm_out_dir='[SWARM_OUT_DIR]') +
- api.path.exists(
- api.path['start_dir'].join('skia'),
- api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
- 'skimage', 'VERSION'),
- api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
- 'skp', 'VERSION'),
- api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
- 'svg', 'VERSION'),
- api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
- )
- )
- if 'Trybot' in builder:
- test += api.properties(issue=500,
- patchset=1,
- rietveld='https://codereview.chromium.org')
- if 'Win' in builder:
- test += api.platform('win', 64)
-
-
- yield test
-
- builder = 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug'
- yield (
- api.test('failed_dm') +
- api.properties(buildername=builder,
- mastername='client.skia',
- slavename='skiabot-linux-swarm-000',
- buildnumber=6,
- revision='abc123',
- path_config='kitchen',
- swarm_out_dir='[SWARM_OUT_DIR]') +
- api.path.exists(
- api.path['start_dir'].join('skia'),
- api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
- 'skimage', 'VERSION'),
- api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
- 'skp', 'VERSION'),
- api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
- 'svg', 'VERSION'),
- api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
- ) +
- api.step_data('dm', retcode=1)
- )
-
- builder = 'Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-GN_Android'
- yield (
- api.test('failed_get_hashes') +
- api.properties(buildername=builder,
- mastername='client.skia',
- slavename='skiabot-linux-swarm-000',
- buildnumber=6,
- revision='abc123',
- path_config='kitchen',
- swarm_out_dir='[SWARM_OUT_DIR]') +
- api.path.exists(
- api.path['start_dir'].join('skia'),
- api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
- 'skimage', 'VERSION'),
- api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
- 'skp', 'VERSION'),
- api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
- 'svg', 'VERSION'),
- api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
- ) +
- api.step_data('get uninteresting hashes', retcode=1)
- )
-
- builder = 'Test-iOS-Clang-iPad4-GPU-SGX554-Arm7-Debug'
yield (
- api.test('missing_SKP_VERSION_device') +
- api.properties(buildername=builder,
- mastername='client.skia',
- slavename='skiabot-linux-swarm-000',
- buildnumber=6,
+ api.test('Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Debug') +
+ api.properties(buildername='Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Debug',
+ mastername='fake-master',
+ slavename='fake-slave',
+ buildnumber=5,
revision='abc123',
path_config='kitchen',
swarm_out_dir='[SWARM_OUT_DIR]') +
api.path.exists(
api.path['start_dir'].join('skia'),
api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
- 'skimage', 'VERSION'),
- api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
- 'skp', 'VERSION'),
- api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
- 'svg', 'VERSION'),
- api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
- ) +
- api.step_data('read SKP_VERSION', retcode=1)
- )
-
- builder = 'Test-Win8-MSVC-ShuttleB-CPU-AVX2-x86_64-Release-Trybot'
- yield (
- api.test('big_issue_number') +
- api.properties(buildername=builder,
- mastername='client.skia.compile',
- slavename='skiabot-linux-swarm-000',
- buildnumber=5,
- revision='abc123',
- path_config='kitchen',
- swarm_out_dir='[SWARM_OUT_DIR]',
- rietveld='https://codereview.chromium.org',
- patchset=1,
- issue=2147533002L) +
- api.path.exists(
- api.path['start_dir'].join('skia'),
- api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
- 'skimage', 'VERSION'),
+ 'skimage', 'VERSION'),
api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
- 'skp', 'VERSION'),
+ 'skp', 'VERSION'),
api.path['start_dir'].join('skia', 'infra', 'bots', 'assets',
- 'svg', 'VERSION'),
+ 'svg', 'VERSION'),
api.path['start_dir'].join('tmp', 'uninteresting_hashes.txt')
- ) +
- api.platform('win', 64)
- )
-
- builder = 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Debug-Trybot'
- yield (
- api.test('recipe_with_gerrit_patch') +
- api.properties(
- buildername=builder,
- mastername='client.skia',
- slavename='skiabot-linux-swarm-000',
- buildnumber=5,
- path_config='kitchen',
- swarm_out_dir='[SWARM_OUT_DIR]',
- revision='abc123',
- patch_storage='gerrit') +
- api.properties.tryserver(
- buildername=builder,
- gerrit_project='skia',
- gerrit_url='https://skia-review.googlesource.com/',
- )
- )
-
- yield (
- api.test('nobuildbot') +
- api.properties(
- buildername=builder,
- mastername='client.skia',
- slavename='skiabot-linux-swarm-000',
- buildnumber=5,
- path_config='kitchen',
- swarm_out_dir='[SWARM_OUT_DIR]',
- revision='abc123',
- nobuildbot='True',
- patch_storage='gerrit') +
- api.properties.tryserver(
- buildername=builder,
- gerrit_project='skia',
- gerrit_url='https://skia-review.googlesource.com/',
- ) +
- api.step_data('get swarming bot id',
- stdout=api.raw_io.output('skia-bot-123')) +
- api.step_data('get swarming task id', stdout=api.raw_io.output('123456'))
+ )
)
diff --git a/infra/bots/recipes/upload_dm_results.expected/upload.json b/infra/bots/recipes/upload_dm_results.expected/upload.json
new file mode 100644
index 0000000000..9ea0d30397
--- /dev/null
+++ b/infra/bots/recipes/upload_dm_results.expected/upload.json
@@ -0,0 +1,111 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport sys, os\npath = sys.argv[1]\nmode = int(sys.argv[2])\nif not os.path.isdir(path):\n if os.path.exists(path):\n print \"%s exists but is not a dir\" % path\n sys.exit(1)\n os.makedirs(path, mode)\n",
+ "[START_DIR]/tmp_upload",
+ "511"
+ ],
+ "name": "makedirs tmp dir",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@import sys, os@@@",
+ "@@@STEP_LOG_LINE@python.inline@path = sys.argv[1]@@@",
+ "@@@STEP_LOG_LINE@python.inline@mode = int(sys.argv[2])@@@",
+ "@@@STEP_LOG_LINE@python.inline@if not os.path.isdir(path):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(path):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ print \"%s exists but is not a dir\" % path@@@",
+ "@@@STEP_LOG_LINE@python.inline@ sys.exit(1)@@@",
+ "@@@STEP_LOG_LINE@python.inline@ os.makedirs(path, mode)@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[START_DIR]/dm/dm.json",
+ "[START_DIR]/tmp_upload"
+ ],
+ "name": "copy dm.json"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[START_DIR]/dm/verbose.log",
+ "[START_DIR]/tmp_upload"
+ ],
+ "name": "copy verbose.log"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport os\nimport sys\nos.remove(sys.argv[1])\n",
+ "[START_DIR]/dm/dm.json"
+ ],
+ "name": "rm old dm.json",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@import os@@@",
+ "@@@STEP_LOG_LINE@python.inline@import sys@@@",
+ "@@@STEP_LOG_LINE@python.inline@os.remove(sys.argv[1])@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport os\nimport sys\nos.remove(sys.argv[1])\n",
+ "[START_DIR]/dm/verbose.log"
+ ],
+ "name": "rm old verbose.log",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@import os@@@",
+ "@@@STEP_LOG_LINE@python.inline@import sys@@@",
+ "@@@STEP_LOG_LINE@python.inline@os.remove(sys.argv[1])@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport glob\nimport sys\nwith open(sys.argv[1], 'w') as f:\n f.write('\\n'.join(glob.glob(sys.argv[2])))\n",
+ "/path/to/tmp/",
+ "[START_DIR]/dm/*"
+ ],
+ "name": "find images"
+ },
+ {
+ "cmd": [
+ "gsutil",
+ "cp",
+ "[START_DIR]/dm/*",
+ "gs://skia-infra-gm/dm-images-v1"
+ ],
+ "name": "upload images"
+ },
+ {
+ "cmd": [
+ "gsutil",
+ "cp",
+ "-z",
+ "json,log",
+ "[START_DIR]/tmp_upload/*",
+ "gs://skia-infra-gm/dm-json-v1/2012/05/14/12/abc123/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug/1337000001"
+ ],
+ "name": "upload JSON and logs"
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipes/upload_dm_results.py b/infra/bots/recipes/upload_dm_results.py
index dd545d2cc7..d495013334 100644
--- a/infra/bots/recipes/upload_dm_results.py
+++ b/infra/bots/recipes/upload_dm_results.py
@@ -17,54 +17,9 @@ def RunSteps(api):
def GenTests(api):
- builder = 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug'
yield (
- api.test('normal_bot') +
- api.properties(buildername=builder,
+ api.test('upload') +
+ api.properties(buildername='Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug',
revision='abc123',
path_config='kitchen')
)
-
- yield (
- api.test('failed_once') +
- api.properties(buildername=builder,
- revision='abc123',
- path_config='kitchen') +
- api.step_data('upload images', retcode=1)
- )
-
- yield (
- api.test('failed_all') +
- api.properties(buildername=builder,
- revision='abc123',
- path_config='kitchen') +
- api.step_data('upload images', retcode=1) +
- api.step_data('upload images (attempt 2)', retcode=1) +
- api.step_data('upload images (attempt 3)', retcode=1) +
- api.step_data('upload images (attempt 4)', retcode=1) +
- api.step_data('upload images (attempt 5)', retcode=1)
- )
-
- builder = 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-Trybot'
- yield (
- api.test('trybot') +
- api.properties(buildername=builder,
- revision='abc123',
- path_config='kitchen',
- issue='12345',
- patchset='1002')
- )
-
- yield (
- api.test('recipe_with_gerrit_patch') +
- api.properties(
- buildername=builder,
- revision='abc123',
- path_config='kitchen',
- patch_storage='gerrit') +
- api.properties.tryserver(
- buildername=builder,
- gerrit_project='skia',
- gerrit_url='https://skia-review.googlesource.com/',
- )
- )
diff --git a/infra/bots/recipes/upload_nano_results.expected/upload.json b/infra/bots/recipes/upload_nano_results.expected/upload.json
new file mode 100644
index 0000000000..e004853974
--- /dev/null
+++ b/infra/bots/recipes/upload_nano_results.expected/upload.json
@@ -0,0 +1,31 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport glob\nimport sys\nwith open(sys.argv[1], 'w') as f:\n f.write('\\n'.join(glob.glob(sys.argv[2])))\n",
+ "/path/to/tmp/",
+ "*.json"
+ ],
+ "cwd": "[START_DIR]/perfdata/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug/data",
+ "name": "find results"
+ },
+ {
+ "cmd": [
+ "gsutil",
+ "cp",
+ "-a",
+ "public-read",
+ "-z",
+ "json",
+ "[START_DIR]/perfdata/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug/data/nanobench_abc123.json",
+ "gs://skia-perf/nano-json-v1/2012/05/14/12/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug/nanobench_abc123.json"
+ ],
+ "name": "upload"
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipes/upload_nano_results.py b/infra/bots/recipes/upload_nano_results.py
index 8894ce3053..26fe666722 100644
--- a/infra/bots/recipes/upload_nano_results.py
+++ b/infra/bots/recipes/upload_nano_results.py
@@ -17,34 +17,9 @@ def RunSteps(api):
def GenTests(api):
- builder = 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug'
yield (
- api.test('normal_bot') +
- api.properties(buildername=builder,
+ api.test('upload') +
+ api.properties(buildername='Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug',
revision='abc123',
path_config='kitchen')
)
-
- builder = 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-Trybot'
- yield (
- api.test('trybot') +
- api.properties(buildername=builder,
- revision='abc123',
- path_config='kitchen',
- issue='12345',
- patchset='1002')
- )
-
- yield (
- api.test('recipe_with_gerrit_patch') +
- api.properties(
- buildername=builder,
- revision='abc123',
- path_config='kitchen',
- patch_storage='gerrit') +
- api.properties.tryserver(
- buildername=builder,
- gerrit_project='skia',
- gerrit_url='https://skia-review.googlesource.com/',
- )
- )