Closed vdye closed 1 year ago
I played around with extending your tests, so I could get a feel of how it works. The result is de0924472e261b8967e8c35763b7c8cc0d7d1e7d, which let me repeat the performance tests, but used a second machine with existing bundles instead of creating new ones from scratch. (Perhaps these should be the same, with the environment variable switching modes at runtime instead of failing without it.)
I ended up making more substantial changes than I initially intended. 😅 Beyond the suggestions in @derrickstolee's review:
setup-go
to use version in go.mod
rather than the stable
.@slow
and not-@slow
, adding the non-@slow
tests to the default end-to-end execution.npm
script per profile, pass the profiles as command line args in run-e2e-tests.sh
.TEST_E2E_PERF
to the more generic E2E_FLAGS
, with documentation for the valid options. If anyone's interested, here's the range-diff!
Closes #23
Summary
This pull request creates a Cucumber/TypeScript end-to-end testing framework for the Git Bundle Server (see #23 for background on the framework & reasoning for why TypeScript was selected). Two classes of tests are created to start with: "basic" tests (demonstrating expected typical workflows) and "performance" tests (comparing performance with & without use of the bundle server on large repositories).
The commits are broken down as follows:
e2e-test
target to theMakefile
test.yml
workflowPerformance results
The performance tests are quite slow, so they aren't run by default in the Actions workflow. For reference, some example results on my machine were:
Note that this only compares the clone time; it also took
torvalds/linux
~10 minutes to clone & generate its 4.1Gb(!) base bundle. Since that scale is more reflective of the monorepos this bundle server would be used with than the small repos used in the "basic" tests, it's probably worth doing some more detailed profiling on the bundle server. Hopefully, we'd find some places where we can improve performance.