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>
* ping/go: tidy with compat flag to prevent errors in CI
```
unused github.com/whyrusleeping/multiaddr-filter
unused golang.org/x/xerrors
go: downloading github.com/google/go-cmp v0.5.6
github.com/libp2p/test-plans/ping/go imports
github.com/testground/sdk-go/sync imports
nhooyr.io/websocket tested by
nhooyr.io/websocket.test imports
nhooyr.io/websocket/internal/test/assert imports
github.com/google/go-cmp/cmp loaded from github.com/google/go-cmp@v0.5.5,
but go 1.16 would select v0.5.6
...
```
* ping/go: update to go1.18
* refactor baseline test out of private repo
* rm references to attackers
* fix default plan name & add widget to override
* add configs for local runners
* update runner notebook intro text
* fix build tags
* increase setup time in saved configs