Change all subprojects to use 'implementation' dependencies This includes: - All projects now explicitly declare all dependencies to other subprojects. This makes issues more visible, guards for accidental addition of new dependencies, and leaks much less transitive dependencies on the compile classpathes. - All usages of 'runtime' to declare dependencies have been replaced with 'runtimeOnly' - All projects are now `java-library` (and declare this explicitly) - Most remaining Groovy scripts are translated to Kotlin - The old 'compile' and 'runtime' configurations are not configured/created anymore for the 'testFixture' and 'integTest' source sets. - Some obsolete dependencies (see previous commits) are removed - 'api' is used scarcely on purpose as the current project structure is not well designed for this. The projects contain code for several concerns of the build tool and thus putting complete projects on the API of others exposes too much. They should be split up along functional concerns first.
Rerun distributed performance test in RERUNNER step (#8801) After the improvement of automatically rerunning and tagging, we want to manage performance test in the same way:
- Only run each performance test scenario once. - If it fails, `GRADLE_RERUNNER` will kick in and rerun the failed scenario. The good thing is that it might be scheduled to another build agent, which mitigates the effect of bad agent.
This PR does: - Remove all `Retry` from performance tests. - Add `GRADLE_RERUNNER` to performance tests and refactor some code. - Add tests for `PerformanceTest`. - Since `GRADLE_RERUNNER` depends on reading of test binary result, write binary test result file in `RerunableDistributedPerformanceTest`.