skia2/include/effects/BUILD.bazel
Kevin Lubick acab911351 [bazel] Make use of test_on_env to spin up server for gms
In order to extract the PNG files produced by our CanvasKit gms,
we need our JS tests to POST them to a server which can write to
disk. The easiest way to do this is to use the test_on_env
rule defined in the Skia Infra repo for exactly this purpose.

This required https://skia-review.googlesource.com/c/buildbot/+/510717
to be able to configure the binary correctly and
https://skia-review.googlesource.com/c/buildbot/+/511862, for nicer
debugging so the skia-infra dep was updated via the following commands:
$ go get go.skia.org/infra@d8a552a29e
$ go mod download
$ make -C infra/bots train
$ make -C bazel gazelle_update_repo
This caused many automated changes to infra/bots/tasks.json

The flow is:
1. User types bazelisk test :hello_world_test_with_env
2. The test_on_env rule starts gold_test_env and waits
   for the file defined in $ENV_READY_FILE to be created.
3. gold_test_env starts a web server on a random port. It
   writes this port number to $ENV_DIR/port. Then, it
   creates $ENV_READY_FILE to signal ready.
4. test_on_env sees the ready file and then starts the
   karma_test rule. (Reminder: this is a bash script
   which starts karma using the Bazel-bundled chromium).
5. The karma_test rule runs the karma.bazel.js file (which
   has been injected with some JS code to fill in Bazel
   paths and settings) using Bazel-bundled node. This reads
   in the port file and sets up a Karma proxy to redirect
   /gold_rpc/report to http://localhost:PORT/report
6. The JS tests run via Karma (and do assertions via Jasmine).
   Some tests, the gms, make POST requests to the proxy.
7. gold_test_env gets these POST requests writes the images
   to a special Bazel folder on disk as defined by
   $TEST_UNDECLARED_OUTPUTS_DIR.
8. test_on_env identifies that the tests finish (because the
   karma_test script returns 0). It sends SIGINT to gold_test_env.
9. gold_test_env stops the webserver. The special Bazel folder
   will zip up anything inside it and make it available for
   future rules (e.g. a rule that will upload to Gold via goldctl).

Suggested Review Order:
 - bazel/karma_test.bzl to see the test_on_env rule bundled into
   the karma_test macro. I chose to put it there because it might
   be confusing to have to define both a karma_test and test_on_env
   rule in the same package but not be able to call one because it
   will fail to talk to the server.
 - gold_test_env.go to see how the appropriate files are written
   to signal the environment is ready and the handlers are set up.
 - karma.bazel.js to see how we make our own proxy given the
   port from the env binary. The fact that we could not create
   our own proxy with the existing karma_test rule was why the
   chain ending in https://skia-review.googlesource.com/c/skia/+/508797
   had to be abandoned.
 - tests/*.js to see how the environment is probed via /healthz
   and then used to make POST requests with data.
 - Everything else.

Change-Id: I32a90def41796ca94cf187d640cfff8e262f85f6
BUG: skia:12541
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/510737
Reviewed-by: Leandro Lovisolo <lovisolo@google.com>
2022-02-28 14:05:54 +00:00

219 lines
5.6 KiB
Python

load("//bazel:macros.bzl", "generated_cc_atom")
generated_cc_atom(
name = "Sk1DPathEffect_hdr",
hdrs = ["Sk1DPathEffect.h"],
visibility = ["//:__subpackages__"],
deps = ["//include/core:SkPathEffect_hdr"],
)
generated_cc_atom(
name = "Sk2DPathEffect_hdr",
hdrs = ["Sk2DPathEffect.h"],
visibility = ["//:__subpackages__"],
deps = ["//include/core:SkPathEffect_hdr"],
)
generated_cc_atom(
name = "SkBlenders_hdr",
hdrs = ["SkBlenders.h"],
visibility = ["//:__subpackages__"],
deps = ["//include/core:SkBlender_hdr"],
)
generated_cc_atom(
name = "SkBlurDrawLooper_hdr",
hdrs = ["SkBlurDrawLooper.h"],
visibility = ["//:__subpackages__"],
deps = ["//include/core:SkDrawLooper_hdr"],
)
generated_cc_atom(
name = "SkBlurMaskFilter_hdr",
hdrs = ["SkBlurMaskFilter.h"],
visibility = ["//:__subpackages__"],
deps = [
"//include/core:SkBlurTypes_hdr",
"//include/core:SkMaskFilter_hdr",
"//include/core:SkRect_hdr",
"//include/core:SkScalar_hdr",
],
)
generated_cc_atom(
name = "SkColorMatrixFilter_hdr",
hdrs = ["SkColorMatrixFilter.h"],
visibility = ["//:__subpackages__"],
deps = [
":SkColorMatrix_hdr",
"//include/core:SkColorFilter_hdr",
],
)
generated_cc_atom(
name = "SkColorMatrix_hdr",
hdrs = ["SkColorMatrix.h"],
visibility = ["//:__subpackages__"],
deps = ["//include/core:SkImageInfo_hdr"],
)
generated_cc_atom(
name = "SkCornerPathEffect_hdr",
hdrs = ["SkCornerPathEffect.h"],
visibility = ["//:__subpackages__"],
deps = ["//include/core:SkPathEffect_hdr"],
)
generated_cc_atom(
name = "SkDashPathEffect_hdr",
hdrs = ["SkDashPathEffect.h"],
visibility = ["//:__subpackages__"],
deps = ["//include/core:SkPathEffect_hdr"],
)
generated_cc_atom(
name = "SkDiscretePathEffect_hdr",
hdrs = ["SkDiscretePathEffect.h"],
visibility = ["//:__subpackages__"],
deps = ["//include/core:SkPathEffect_hdr"],
)
generated_cc_atom(
name = "SkGradientShader_hdr",
hdrs = ["SkGradientShader.h"],
visibility = ["//:__subpackages__"],
deps = ["//include/core:SkShader_hdr"],
)
generated_cc_atom(
name = "SkHighContrastFilter_hdr",
hdrs = ["SkHighContrastFilter.h"],
visibility = ["//:__subpackages__"],
deps = ["//include/core:SkColorFilter_hdr"],
)
generated_cc_atom(
name = "SkImageFilters_hdr",
hdrs = ["SkImageFilters.h"],
visibility = ["//:__subpackages__"],
deps = [
":SkRuntimeEffect_hdr",
"//include/core:SkBlendMode_hdr",
"//include/core:SkColor_hdr",
"//include/core:SkImageFilter_hdr",
"//include/core:SkImage_hdr",
"//include/core:SkPicture_hdr",
"//include/core:SkRect_hdr",
"//include/core:SkTileMode_hdr",
"//include/core:SkTypes_hdr",
],
)
generated_cc_atom(
name = "SkLayerDrawLooper_hdr",
hdrs = ["SkLayerDrawLooper.h"],
visibility = ["//:__subpackages__"],
deps = [
"//include/core:SkBlendMode_hdr",
"//include/core:SkDrawLooper_hdr",
"//include/core:SkPaint_hdr",
"//include/core:SkPoint_hdr",
],
)
generated_cc_atom(
name = "SkLumaColorFilter_hdr",
hdrs = ["SkLumaColorFilter.h"],
visibility = ["//:__subpackages__"],
deps = ["//include/core:SkColorFilter_hdr"],
)
generated_cc_atom(
name = "SkOpPathEffect_hdr",
hdrs = ["SkOpPathEffect.h"],
visibility = ["//:__subpackages__"],
deps = [
"//include/core:SkMatrix_hdr",
"//include/core:SkPaint_hdr",
"//include/core:SkPathEffect_hdr",
"//include/pathops:SkPathOps_hdr",
],
)
generated_cc_atom(
name = "SkOverdrawColorFilter_hdr",
hdrs = ["SkOverdrawColorFilter.h"],
visibility = ["//:__subpackages__"],
deps = [
"//include/core:SkColorFilter_hdr",
"//include/core:SkFlattenable_hdr",
],
)
generated_cc_atom(
name = "SkPerlinNoiseShader_hdr",
hdrs = ["SkPerlinNoiseShader.h"],
visibility = ["//:__subpackages__"],
deps = ["//include/core:SkShader_hdr"],
)
generated_cc_atom(
name = "SkRuntimeEffect_hdr",
hdrs = ["SkRuntimeEffect.h"],
visibility = ["//:__subpackages__"],
deps = [
"//include/core:SkBlender_hdr",
"//include/core:SkColorFilter_hdr",
"//include/core:SkData_hdr",
"//include/core:SkImageInfo_hdr",
"//include/core:SkMatrix_hdr",
"//include/core:SkShader_hdr",
"//include/core:SkSpan_hdr",
"//include/core:SkString_hdr",
"//include/private:SkOnce_hdr",
"//include/private:SkSLSampleUsage_hdr",
],
)
generated_cc_atom(
name = "SkShaderMaskFilter_hdr",
hdrs = ["SkShaderMaskFilter.h"],
visibility = ["//:__subpackages__"],
deps = ["//include/core:SkMaskFilter_hdr"],
)
generated_cc_atom(
name = "SkStrokeAndFillPathEffect_hdr",
hdrs = ["SkStrokeAndFillPathEffect.h"],
visibility = ["//:__subpackages__"],
deps = [
"//include/core:SkPaint_hdr",
"//include/core:SkPathEffect_hdr",
"//include/pathops:SkPathOps_hdr",
],
)
generated_cc_atom(
name = "SkTableColorFilter_hdr",
hdrs = ["SkTableColorFilter.h"],
visibility = ["//:__subpackages__"],
deps = ["//include/core:SkColorFilter_hdr"],
)
generated_cc_atom(
name = "SkTableMaskFilter_hdr",
hdrs = ["SkTableMaskFilter.h"],
visibility = ["//:__subpackages__"],
deps = [
"//include/core:SkMaskFilter_hdr",
"//include/core:SkScalar_hdr",
],
)
generated_cc_atom(
name = "SkTrimPathEffect_hdr",
hdrs = ["SkTrimPathEffect.h"],
visibility = ["//:__subpackages__"],
deps = ["//include/core:SkPathEffect_hdr"],
)