We want to run a "simple" test (ping) that verifies interoperability between versions and implementations.
This test should run at least before every (go|rust) libp2p release.
Use case:
Test cross-version compatibility for Go
Test cross-version compatibility for Rust
Test cross-implementation compatibility for Rust and Go
We're aiming for:
a single ping test implemented in different languages (go + rust)
running interop + cross version for every PR on the go-libp2p repo
running interop + cross version for every PR on the rust-libp2p repo
@mxinden and @marten-seemann agreed to run this test if
it takes < 30 minutes
it's stable (aiming for < 1% failure rate)
they want "reasonable" run time in the future
my goal right now is < 15 minutes which is the go test runtime on ubuntu,
I'm trying to push it down to ~ 5 minutes with caching. There is a O(n) relationship between build time & the number of tested versions and caching would make it O(1).
we're going to timebox this effort for a week, then discuss how far we want to go.
Can we get rid of the building step when we use a test from another implementation:
We need to make sure an update in a repo doesn't break another, it's very important for stability during do cross-implementation interop tests. Fixes like the one in https://github.com/libp2p/test-plans/pull/45 might be working, but it's hard to make sure we're covering all cases where a build might fail.
We don't want to "pin forever" the test artifacts either because a test specification might change (for example, how we sync instances).
What if we built every artifact for every known version on merges to libp2p/test-plans?
Then reuse these artifacts during test runs?
This way implementation langX-libp2p never attempt to build a test for langY-libp2p.
Another important point is how to deal with new feature:
"as a langX-libp2p maintainer, I want to create a test in this plan than will be used by langY-libp2p"
It might be a feature that only exists on master,
It might be a feature that doesn't exist in previous versions (we're only testing ping at the moment).
We want to run a "simple" test (ping) that verifies interoperability between versions and implementations. This test should run at least before every (go|rust) libp2p release.
Use case:
We're aiming for:
a single ping test implemented in different languages (go + rust)
running interop + cross version for every PR on the go-libp2p repo
running interop + cross version for every PR on the rust-libp2p repo
@mxinden and @marten-seemann agreed to run this test if
they want "reasonable" run time in the future
Todo
References: