When building the `master` image we would previously mistakingly set the
ref to the PR commit hash.
This surfaced when testing a pull request from a fork. `master` would be
pointed at the forks HEAD commit hash, but not the fork URL. Thus the
build could not find the commit and would fail. See
https://github.com/libp2p/rust-libp2p/pull/3154
By having one Rust binary per version, we can vary the actual binary from
version to version and f.e. fix deprecated API calls. It does introduce a bit of
duplication between the different versions but I'd rather have that then not
being able to adapt the tests to new APIs.
Instead of activating a feature per libp2p version, we add them all as
dependencies. This ensures all transitive dependencies are properly tracked in
`Cargo.lock`. Additionally, this gives us a single place we are can activate all
the feature.
For `master` and pull-request builds, we replace the git target or rev with the
one coming from the CI build. Once we trigger a build, `cargo` will update and
resolve the necessary dependencies before that, thus fixing problems such as
https://github.com/libp2p/rust-libp2p/pull/2972.
* ping/rust: remove unused dependencies
* README: fix import instructions
* ping/rust: set channel capacity to # of instances
* ping/rust: use testground-v0.4.0 from crates.io
* ping/go: fix composition name
* ping/rust: introduce the ping/rust test
* Showcase version selection through features
Can be run with `cargo check --features libp2pv0450` or `cargo check --features
libp2pv0440`.
* Peer programming session
* ping/rust: experiment with master & current groups
* ping/rust/src/main: Simplify import across versions
* ping/rust/src/main: Remove commented out code
* ping/rust/src/main: Clean up
* ping/rust/Dockerfile: Update crates.io index in separate step
Potentially allows caching.
* ping/rust/Dockerfile: Don't both build and install
Building the binary in release mode is enough.
* ping/rust/src/main: Clean up log lines
* ping/rust: Implement iterations with latency
* ping/rust/src/main: Extract signal and wait logic into fn
* ping/rust/Dockerfile: import caching fixes
* ping/: add cross-version composition
* ping/rust: add json payloads fix
* ping/rust: match iterations id with go
* ping/rust/Dockerfile: improve caching
* ci: introduce workflow ping-interop-rust
* ping/interop: update latest versions
* ping/_compositions: add full ping interop
* ci: resolve git reference to sha
* ping/rust/Dockerfile: drop cargo output
* ping/rust: drop version indirection
* ping/rust/Dockerfile: fix features to support caching
* ping/rust/Dockerfile: do not cache the rewritten package
* ping/_compositions/*: use concurrent_builds
* ping/_compositions/*: drop test_instances count
* ci: build composition then run
* ping: introduce InteropTarget option
* ci: fix interop target & build
* ping/_compositions/*: introduce load_resource
* ci: 10 minutes timeout for the run step
* README: add update instruction for rust & clean go
* ping/rust/Dockerfile: add protocol buffer compiler
* ping/rust/Cargo.lock: cargo update packages
* .github: increase testground timeout
Co-authored-by: Max Inden <mail@max-inden.de>