Open lacasseio opened 2 years ago
Here is the preliminary decision on each component for this spike:
RemoteProject
.So far, essentially finished the BuildExperimentRunner
which can be used for both Gradle and Xcode. We can capture the data series from Gradle Profiler.
What we are missing is the reporting capability of the data outside the performance tests. There are several ways we can achieve this but none of objectively the best solution. We will most likely use two-stage reporting. First, we will generate an agnostic test result using a custom Test
task implementation. We will most likely mirror JUnit XML test report, e.g. TEST-com.example.SomeTest.xml
, with something like SCENARIO-com.example.SomePerfTest.xml
. Then we will use another task to process those results into something our performance dashboard will like which should include Git commit ID, some URL back to commit and build, etc. Finally, the result will most likely be published in a Git repository to further processing which includes history performance comparison.
Our solution is similar to Gradle performance infrastructure. The major difference is leaning toward a single build experiment runner that has a pluggable executor for its backend. This means we can plug any other build system in the runner. We also ignored the cross-version/cross-build runners as they simply boil down to having multiple build experiment runners and collecting the result together. It's better this way as these cross runners would be too inflexible for our need, i.e. comparing Gradle core plugins with Nokee plugins or comparing Nokee plugin versions on the same Gradle version.
We developed our build experiment runner to feel like our current improved GradleRunner
as well as to live side-by-side meaning other plugin authors should be able to benefit from this work. It will take some months to get to a point we offer the new runner and a performance testing plugin with the toolbox but we intent to move that code over there.
This issue will spike one build experiment test (performance) end-to-end. It will include the test, the results and dashboard generation. We are focusing on the process not the accuracy at this stage.
There should be around 5 distinct components to this spike: