Previously, most of the tests were targeting a local Datastore emulator, started via Gradle's ExecFork plugin. It was a decent solution, but it had its downsides:
ExecFork plugin was not too configurable in terms of wiring it with our execution flow — Gradle complained on its implicit dependencies.
Once tests failed for some reason, or, in some cases, if all of them pass, the emulator was not stopped. Such a behaviour is still observed even with the most recent version of ExecFork plugin.
Apparently, partly due to p.2 we were maintaining an ExecFork fork (so to speak), which took time to manage. As of now, our fork is really outdated, comparing to ExecFork's master branch.
This changeset migrates the repository tests to using a Docker-based Datastore emulator via testcontainers/GCloud module.
Now, to launch a build, one should have a local Docker up and running.
As to GH Actions, its environment provides some container-related functionality, which is apparently sufficient for Testcontainers to work.
Also, some slow tests on catch-up functionality were disabled, as they were is the past. It helps to reduce the build time.
Previously, most of the tests were targeting a local Datastore emulator, started via Gradle's
ExecFork
plugin. It was a decent solution, but it had its downsides:ExecFork
plugin was not too configurable in terms of wiring it with our execution flow — Gradle complained on its implicit dependencies.Once tests failed for some reason, or, in some cases, if all of them pass, the emulator was not stopped. Such a behaviour is still observed even with the most recent version of
ExecFork
plugin.Apparently, partly due to p.2 we were maintaining an
ExecFork
fork (so to speak), which took time to manage. As of now, our fork is really outdated, comparing toExecFork
'smaster
branch.This changeset migrates the repository tests to using a Docker-based Datastore emulator via
testcontainers/GCloud
module.Now, to launch a build, one should have a local Docker up and running.
As to GH Actions, its environment provides some container-related functionality, which is apparently sufficient for Testcontainers to work.
Also, some slow tests on catch-up functionality were disabled, as they were is the past. It helps to reduce the build time.