From 072d351a5fe0f558d3c5c50eedb952e8159d41a2 Mon Sep 17 00:00:00 2001 From: Laurent Senta Date: Mon, 22 Aug 2022 12:25:07 +0200 Subject: [PATCH] ping/rust: introduce rust cross-version test (#26) * 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 --- .github/actions/setup-testground/action.yml | 2 +- .github/workflows/ping-interop-go.yml | 2 +- .github/workflows/ping-interop-rust.yml | 30 + .github/workflows/ping-interop.yml | 39 + .github/workflows/run-composition.yml | 34 +- README.md | 26 +- ping/_compositions/go-cross-versions.toml | 175 +- .../_compositions/go-rust-interop-latest.toml | 113 + ping/_compositions/go-rust-interop.toml | 141 + ping/_compositions/go.toml | 39 + ping/_compositions/rust-cross-versions.toml | 44 + ping/_compositions/rust.toml | 17 + ping/manifest.toml | 23 + ping/rust/.gitignore | 1 + ping/rust/Cargo.lock | 4081 +++++++++++++++++ ping/rust/Cargo.toml | 26 + ping/rust/Dockerfile | 46 + ping/rust/manifest.toml | 19 + ping/rust/src/main.rs | 230 + 19 files changed, 4970 insertions(+), 118 deletions(-) create mode 100644 .github/workflows/ping-interop-rust.yml create mode 100644 .github/workflows/ping-interop.yml create mode 100644 ping/_compositions/go-rust-interop-latest.toml create mode 100644 ping/_compositions/go-rust-interop.toml create mode 100644 ping/_compositions/go.toml create mode 100644 ping/_compositions/rust-cross-versions.toml create mode 100644 ping/_compositions/rust.toml create mode 100644 ping/manifest.toml create mode 100644 ping/rust/.gitignore create mode 100644 ping/rust/Cargo.lock create mode 100644 ping/rust/Cargo.toml create mode 100644 ping/rust/Dockerfile create mode 100644 ping/rust/manifest.toml create mode 100644 ping/rust/src/main.rs diff --git a/.github/actions/setup-testground/action.yml b/.github/actions/setup-testground/action.yml index 7ea2dd800..446e6d0fe 100644 --- a/.github/actions/setup-testground/action.yml +++ b/.github/actions/setup-testground/action.yml @@ -35,7 +35,7 @@ runs: cat <> ~/testground/.env.toml [daemon.scheduler] - task_timeout_min = 30 + task_timeout_min = 60 EOF testground daemon > testground.out 2> testground.err & fi; \ No newline at end of file diff --git a/.github/workflows/ping-interop-go.yml b/.github/workflows/ping-interop-go.yml index 7a5fcc083..3f92e69aa 100644 --- a/.github/workflows/ping-interop-go.yml +++ b/.github/workflows/ping-interop-go.yml @@ -26,5 +26,5 @@ jobs: with: composition_file: "ping/_compositions/go-cross-versions.toml" custom_git_target: ${{ github.event.inputs.custom_git_target }} # nothing or "some-fork/go-libp2p" - custom_git_reference: ${{ github.event.inputs.custom_git_reference }} # a git reference + custom_git_reference: ${{ github.event.inputs.custom_git_reference }} # a git branch testground_endpoint: ${{ github.event.inputs.testground_endpoint }} diff --git a/.github/workflows/ping-interop-rust.yml b/.github/workflows/ping-interop-rust.yml new file mode 100644 index 000000000..ebf9ba69e --- /dev/null +++ b/.github/workflows/ping-interop-rust.yml @@ -0,0 +1,30 @@ +on: + workflow_dispatch: + inputs: + testground_endpoint: + type: string + required: false + description: testground endpoint + custom_git_reference: + type: string + required: false + description: rust ref + custom_git_target: + type: string + required: false + description: repository to use as replace target + default: github.com/libp2p/rust-libp2p + +name: rust-libp2p ping - rust test with testground. + +jobs: + run-libp2p-test-plans: + # If you intend to use this workflow from another repo, + # you need to pass the repo and the version: + # uses: "libp2p/test-plans/.github/workflows/run-composition.yml@master" + uses: "./.github/workflows/run-composition.yml" + with: + composition_file: "ping/_compositions/rust-cross-versions.toml" + custom_git_target: ${{ github.event.inputs.custom_git_target }} # nothing or "some-fork/go-libp2p" + custom_git_reference: ${{ github.event.inputs.custom_git_reference }} # a git reference + testground_endpoint: ${{ github.event.inputs.testground_endpoint }} diff --git a/.github/workflows/ping-interop.yml b/.github/workflows/ping-interop.yml new file mode 100644 index 000000000..89a489a3d --- /dev/null +++ b/.github/workflows/ping-interop.yml @@ -0,0 +1,39 @@ +on: + workflow_dispatch: + inputs: + testground_endpoint: + type: string + required: false + description: testground endpoint + custom_git_reference: + description: the git commit or branch we're going to use for the custom target + required: false + type: string + custom_git_target: + description: the custom git fork url we're going to use for the custom target (github.com/some-fork/rust-libp2p) + required: false + type: string + custom_interop_target: + description: in the case of cross-implementation testing, the implementation target (go | rust | ...) + required: false + type: string + +name: libp2p ping - go and rust test with testground. + +jobs: + run-ping-latest: + uses: "./.github/workflows/run-composition.yml" + with: + composition_file: "ping/_compositions/go-rust-interop-latest.toml" + custom_git_target: ${{ github.event.inputs.custom_git_target }} # nothing or "some-fork/go-libp2p" + custom_git_reference: ${{ github.event.inputs.custom_git_reference }} # a git reference + custom_interop_target: ${{ github.event.inputs.custom_interop_target }} # go | rust + testground_endpoint: ${{ github.event.inputs.testground_endpoint }} + run-ping-all: + uses: "./.github/workflows/run-composition.yml" + with: + composition_file: "ping/_compositions/go-rust-interop.toml" + custom_git_target: ${{ github.event.inputs.custom_git_target }} # nothing or "some-fork/go-libp2p" + custom_git_reference: ${{ github.event.inputs.custom_git_reference }} # a git reference + custom_interop_target: ${{ github.event.inputs.custom_interop_target }} # go | rust + testground_endpoint: ${{ github.event.inputs.testground_endpoint }} \ No newline at end of file diff --git a/.github/workflows/run-composition.yml b/.github/workflows/run-composition.yml index 6ee55b8d5..5b71a3ebb 100644 --- a/.github/workflows/run-composition.yml +++ b/.github/workflows/run-composition.yml @@ -4,12 +4,19 @@ on: workflow_call: inputs: composition_file: + description: the workflow we're going to run required: true type: string custom_git_reference: + description: the git commit or branch we're going to use for the custom target required: false type: string custom_git_target: + description: the custom git fork url we're going to use for the custom target (github.com/some-fork/rust-libp2p) + required: false + type: string + custom_interop_target: + description: in the case of cross-implementation testing, the implementation target (go | rust | ...) required: false type: string testground_endpoint: @@ -39,12 +46,29 @@ jobs: working-directory: ./test-plans run: | testground plan import --from ./ --name libp2p + - name: Resolve the git references + if: ${{ inputs.custom_git_reference && inputs.custom_git_target }} + id: resolve_reference + working-directory: ./test-plans + run: | + git fetch https://${{ inputs.custom_git_target }} ${{ inputs.custom_git_reference }} + SHA=`git log FETCH_HEAD -n 1 --pretty=format:"%H"` + echo "::set-output name=custom_git_sha::${SHA}" + - name: Build the composition file + working-directory: ./test-plans + run: | + testground build composition \ + -f ${{ inputs.composition_file }} \ + --wait + env: + GitReference: ${{ steps.resolve_reference.outputs.custom_git_sha || inputs.custom_git_reference }} + GitTarget: ${{ inputs.custom_git_target }} + InteropTarget: ${{ inputs.custom_interop_target }} - name: Run the composition file working-directory: ./test-plans + timeout-minutes: 10 run: | - GitReference=${{ inputs.custom_git_reference }} \ - GitTarget=${{ inputs.custom_git_target }} \ - testground run composition \ + testground run composition \ -f ${{ inputs.composition_file }} \ --metadata-repo "${GITHUB_REPOSITORY}" \ --metadata-branch "${GITHUB_REF#refs/heads/}" \ @@ -52,7 +76,9 @@ jobs: --collect-file ./result.tgz \ --collect --wait env: - GitReference: ${{ inputs.custom_git_reference }} + GitReference: ${{ steps.resolve_reference.outputs.custom_git_sha || inputs.custom_git_reference }} + GitTarget: ${{ inputs.custom_git_target }} + InteropTarget: ${{ inputs.custom_interop_target }} - uses: actions/upload-artifact@v3 if: ${{ failure() }} with: diff --git a/README.md b/README.md index 7049134cd..362267b73 100644 --- a/README.md +++ b/README.md @@ -9,10 +9,9 @@ This repository contains Testground test plans for libp2p components. When a new version of libp2p is released, we want to make it permanent in the `ping/go` test folder. -1. In the `ping/_compositions/go-cross-versions.toml` file, - - Find the group for the latest version (`v0.20` for example) and copy it into a new group (`v0.21` for example). - - Update the `selectors` (go tags) and `modfile` options. Update the `build_base_image` if needed. - - Increment the `total_instances` flag (near line 7). +1. In the `ping/_compositions/go.toml` file, + - copy the `[master]` section and turn it into a `[[groups]]` item + - update the `[master]` section with the future version 2. In the `ping/go` folder, - Add a new compatibility shim in `compat/` if needed, or add your new selector to the latest shim (see `compat/libp2p.v0.17.go` for example). - Create the new mod and sum files (`go.v0.21.mod` for example). Assuming you're updating from `v$A` to `v$B`, a simple way to do this is to: @@ -21,8 +20,23 @@ When a new version of libp2p is released, we want to make it permanent in the `p - update the `go-libp2p` version, go version, and update the code if needed. - then `go get -tags v$B && go mod tidy` 3. Run the test on your machine - - Import the test-plans with `testground plan import ./ --name libp2p` (once, from the test-plans root) - - Run with `testground run composition -f ping/_compositions/go-cross-versions.toml --wait` + - Do once, from the test-plans root: import the test-plans with `testground plan import ./ --name libp2p` + - Run the test with `testground run composition -f ping/_compositions/go-cross-versions.toml --wait` + +## How to add a new version to ping/rust + +When a new version of libp2p is released, we want to make it permanent in the `ping/rust` test folder. + +1. In the `ping/_compositions/rust.toml` file, + - Copy the `[master]` section and turn it into a item in the `[[groups]]` array + - Update the `[master]` section with the new master version +2. In the `ping/rust` folder, + - `Cargo.toml`: update the feature flags `libp2pvxxx` to fix the released version and add the new `master` + - `src/main.rs`: Update the `mod libp2p` definition with the new master + - Run `cargo update` if needed. Try to build with `cargo build --features libp2pvxxx` +3. Run the test on your machine + - Do once, from the test-plans root: import the test-plans with `testground plan import ./ --name libp2p` + - Run the test with `testground run composition -f ping/_compositions/rust-cross-versions.toml --wait` ## License diff --git a/ping/_compositions/go-cross-versions.toml b/ping/_compositions/go-cross-versions.toml index d120b2380..acb855c13 100644 --- a/ping/_compositions/go-cross-versions.toml +++ b/ping/_compositions/go-cross-versions.toml @@ -1,10 +1,9 @@ [metadata] - name = "go-cross-versions {{ .Env.Reference }}" + name = "go-cross-versions {{ .Env.GitReference }}" [global] plan = "libp2p/ping/go" case = "ping" - total_instances = {{ if .Env.GitReference }}7{{ else }}6{{ end }} builder = "docker:go" runner = "local:docker" @@ -14,108 +13,72 @@ go_proxy_mode = "remote" go_proxy_url = "https://proxy.golang.org" -[[groups]] - id = "v0.11" - instances = { count = 1 } - - [groups.build] - selectors = ['v0.11'] - - [groups.build_config] - build_base_image = 'golang:1.14-buster' - modfile = "go.v0.11.mod" - -[[groups]] - id = "v0.17" - instances = { count = 1 } - - [groups.build] - selectors = ['v0.17'] - - [groups.build_config] - build_base_image = 'golang:1.16-buster' - modfile = "go.v0.17.mod" - -[[groups]] - id = "v0.19" - instances = { count = 1 } - - [groups.build] - selectors = ['v0.19'] - - [groups.build_config] - build_base_image = 'golang:1.17-buster' - modfile = "go.v0.19.mod" - -[[groups]] - id = "v0.20" - instances = { count = 1 } - - [groups.build] - selectors = ['v0.20'] - - [groups.build_config] - build_base_image = 'golang:1.18-buster' - modfile = "go.v0.20.mod" - -[[groups]] - id = "v0.21" - instances = { count = 1 } - - [groups.build] - selectors = ['v0.21'] - - [groups.build_config] - build_base_image = 'golang:1.18-buster' - modfile = "go.v0.21.mod" - -[[groups]] - id = "master" - instances = { count = 1 } - - [groups.build] - selectors = ['v0.21'] - - [[groups.build.dependencies]] - module = "github.com/libp2p/go-libp2p" - version = "master" - - [groups.build_config] - build_base_image = 'golang:1.18-buster' - modfile = "go.v0.21.mod" - - [groups.build_config.dockerfile_extensions] - # deal with dependency changes in master until we create the new vx.y.z instance - pre_build = """ -RUN cd ${PLAN_DIR} && \ - go mod download github.com/libp2p/go-libp2p && \ - go mod tidy -compat=1.18 -""" - -{{ if .Env.GitReference }} -[[groups]] - id = "custom" - instances = { count = 1 } - - [groups.build] - selectors = ['v0.20'] - - [[groups.build.dependencies]] - module = "github.com/libp2p/go-libp2p" - version = "{{ .Env.GitReference }}" - {{ if .Env.GitTarget }} - target = "{{ .Env.GitTarget }}" - {{ end }} - - [groups.build_config] - build_base_image = 'golang:1.18-buster' - modfile = "go.v0.20.mod" - - [groups.build_config.dockerfile_extensions] - # deal with dependency changes in master until we create the new vx.y.z instance - pre_build = """ -RUN cd ${PLAN_DIR} && \ - go mod download github.com/libp2p/go-libp2p && \ - go mod tidy -compat=1.18 -""" +{{ with (load_resource "./go.toml" ) }} + {{ range .groups }} + [[groups]] + id = "{{ .Id }}" + instances = { count = 1 } + + [groups.build] + selectors = ['{{ .Selector }}'] + + [groups.build_config] + build_base_image = 'golang:{{ .GoVersion }}-buster' + modfile = "{{ .Modfile }}" + {{ end }} + + {{ with .master }} + [[groups]] + id = "master" + instances = { count = 1 } + + [groups.build] + selectors = ['{{ .Selector }}'] + + [[groups.build.dependencies]] + module = "github.com/libp2p/go-libp2p" + version = "master" + + [groups.build_config] + build_base_image = 'golang:{{ .GoVersion }}-buster' + modfile = "{{ .Modfile }}" + + [groups.build_config.dockerfile_extensions] + # deal with dependency changes in master until we create the new vx.y.z instance + pre_build = """ + RUN cd ${PLAN_DIR} && \ + go mod download github.com/libp2p/go-libp2p && \ + go mod tidy -compat={{ .GoVersion }} + """ + {{ end }} + + {{ if $.Env.GitReference }} + {{ with .custom }} + [[groups]] + id = "custom" + instances = { count = 1 } + + [groups.build] + selectors = ['{{ .Selector }}'] + + [[groups.build.dependencies]] + module = "github.com/libp2p/go-libp2p" + version = "{{ $.Env.GitReference }}" + {{ if $.Env.GitTarget }} + target = "{{ $.Env.GitTarget }}" + {{ end }} + + [groups.build_config] + build_base_image = 'golang:{{ .GoVersion }}-buster' + modfile = "{{ .Modfile }}" + + [groups.build_config.dockerfile_extensions] + # deal with dependency changes in master until we create the new vx.y.z instance + pre_build = """ + RUN cd ${PLAN_DIR} && \ + go mod download github.com/libp2p/go-libp2p && \ + go mod tidy -compat={{ .GoVersion }} + """ + {{ end }} + {{ end }} {{ end }} \ No newline at end of file diff --git a/ping/_compositions/go-rust-interop-latest.toml b/ping/_compositions/go-rust-interop-latest.toml new file mode 100644 index 000000000..b9228b193 --- /dev/null +++ b/ping/_compositions/go-rust-interop-latest.toml @@ -0,0 +1,113 @@ +[metadata] + name = "go-rust-cross-version" + +[global] + plan = "libp2p/ping" + case = "ping" + runner = "local:docker" + concurrent_builds = 1 + + [global.build_config] + enable_go_build_cache = false # see https://github.com/testground/testground/issues/1361 + # disable testground's goproxy which hangs on github runners. + go_proxy_mode = "remote" + go_proxy_url = "https://proxy.golang.org" + +{{ with (load_resource "./go.toml") }} + {{ with .master }} + [[groups]] + id = "go-master" + instances = { count = 1 } + builder = "docker:go" + + [groups.build] + selectors = ['{{ .Selector }}'] + + [[groups.build.dependencies]] + module = "github.com/libp2p/go-libp2p" + version = "master" + + [groups.build_config] + path = "./go/" + build_base_image = 'golang:{{ .GoVersion }}-buster' + modfile = "{{ .Modfile }}" + + [groups.build_config.dockerfile_extensions] + # deal with dependency changes in master until we create the new vx.y.z instance + pre_build = """ + RUN cd ${PLAN_DIR} && \ + go mod download github.com/libp2p/go-libp2p && \ + go mod tidy -compat={{ .GoVersion }} + """ + {{ end }} + + {{ if eq $.Env.InteropTarget "go" }} + {{ if $.Env.GitReference }} + {{ with .custom }} + [[groups]] + id = "custom-go" + instances = { count = 1 } + builder = "docker:go" + + [groups.build] + selectors = ['{{ .Selector }}'] + + [[groups.build.dependencies]] + module = "github.com/libp2p/go-libp2p" + version = "{{ $.Env.GitReference }}" + {{ if $.Env.GitTarget }} + target = "{{ $.Env.GitTarget }}" + {{ end }} + + [groups.build_config] + path = "./go/" + build_base_image = 'golang:{{ .GoVersion }}-buster' + modfile = "{{ .Modfile }}" + + [groups.build_config.dockerfile_extensions] + # deal with dependency changes in master until we create the new vx.y.z instance + pre_build = """ + RUN cd ${PLAN_DIR} && \ + go mod download github.com/libp2p/go-libp2p && \ + go mod tidy -compat={{ .GoVersion }} + """ + {{ end }} + {{ end }} + {{ end }} +{{ end }} + +{{ with (load_resource "./rust.toml") }} + {{ with .master }} + [[groups]] + id = "rust-master" + instances = { count = 1 } + builder = "docker:generic" + + [groups.build_config] + path = "./rust/" + + [groups.build_config.build_args] + CARGO_FEATURES = '{{ .CargoFeatures }}' + {{ end }} + + {{ if eq $.Env.InteropTarget "rust" }} + {{ if $.Env.GitReference }} + {{ with .custom }} + [[groups]] + id = "custom-rust" + instances = { count = 1 } + builder = "docker:generic" + + [groups.build_config] + path = "./rust/" + + [groups.build_config.build_args] + CARGO_FEATURES = '{{ .CargoFeatures }}' + CARGO_REMOVE = '{{ .CargoFeatures }}' + CARGO_PATCH = """ + {{ .CargoFeatures }} = {package = "libp2p", git = "https://{{ or $.Env.GitTarget "github.com/libp2p/rust-libp2p" }}", rev = "{{ $.Env.GitReference }}", default_features = false, features = [ "websocket", "mplex", "yamux", "tcp-async-io", "ping", "noise", "dns-async-std" ], version = "0.47.0", optional = true} + """ + {{ end }} + {{ end }} + {{ end }} +{{ end }} \ No newline at end of file diff --git a/ping/_compositions/go-rust-interop.toml b/ping/_compositions/go-rust-interop.toml new file mode 100644 index 000000000..0e3c57441 --- /dev/null +++ b/ping/_compositions/go-rust-interop.toml @@ -0,0 +1,141 @@ +[metadata] + name = "go-rust-cross-version" + +[global] + plan = "libp2p/ping" + case = "ping" + runner = "local:docker" + concurrent_builds = 1 + + [global.build_config] + enable_go_build_cache = false # see https://github.com/testground/testground/issues/1361 + # disable testground's goproxy which hangs on github runners. + go_proxy_mode = "remote" + go_proxy_url = "https://proxy.golang.org" + +{{ with (load_resource "./go.toml") }} + {{ range .groups }} + [[groups]] + id = "{{ .Id }}" + instances = { count = 1 } + builder = "docker:go" + + [groups.build] + selectors = ['{{ .Selector }}'] + + [groups.build_config] + path = "./go/" + build_base_image = 'golang:{{ .GoVersion }}-buster' + modfile = "{{ .Modfile }}" + {{ end }} + + {{ with .master }} + [[groups]] + id = "master" + instances = { count = 1 } + builder = "docker:go" + + [groups.build] + selectors = ['{{ .Selector }}'] + + [[groups.build.dependencies]] + module = "github.com/libp2p/go-libp2p" + version = "master" + + [groups.build_config] + path = "./go/" + build_base_image = 'golang:{{ .GoVersion }}-buster' + modfile = "{{ .Modfile }}" + + [groups.build_config.dockerfile_extensions] + # deal with dependency changes in master until we create the new vx.y.z instance + pre_build = """ + RUN cd ${PLAN_DIR} && \ + go mod download github.com/libp2p/go-libp2p && \ + go mod tidy -compat={{ .GoVersion }} + """ + {{ end }} + + {{ if eq $.Env.InteropTarget "go" }} + {{ if $.Env.GitReference }} + {{ with .custom }} + [[groups]] + id = "custom-go" + instances = { count = 1 } + builder = "docker:go" + + [groups.build] + selectors = ['{{ .Selector }}'] + + [[groups.build.dependencies]] + module = "github.com/libp2p/go-libp2p" + version = "{{ $.Env.GitReference }}" + {{ if $.Env.GitTarget }} + target = "{{ $.Env.GitTarget }}" + {{ end }} + + [groups.build_config] + path = "./go/" + build_base_image = 'golang:{{ .GoVersion }}-buster' + modfile = "{{ .Modfile }}" + + [groups.build_config.dockerfile_extensions] + # deal with dependency changes in master until we create the new vx.y.z instance + pre_build = """ + RUN cd ${PLAN_DIR} && \ + go mod download github.com/libp2p/go-libp2p && \ + go mod tidy -compat={{ .GoVersion }} + """ + {{ end }} + {{ end }} + {{ end }} +{{ end }} + +{{ with (load_resource "./rust.toml") }} + {{ range .groups }} + [[groups]] + id = "rust-{{ .Id }}" + instances = { count = 1 } + builder = "docker:generic" + + [groups.build_config] + path = "./rust/" + + [groups.build_config.build_args] + CARGO_FEATURES = '{{ .CargoFeatures }}' + {{ end }} + + {{ with .master }} + [[groups]] + id = "rust-master" + instances = { count = 1 } + builder = "docker:generic" + + [groups.build_config] + path = "./rust/" + + [groups.build_config.build_args] + CARGO_FEATURES = '{{ .CargoFeatures }}' + {{ end }} + + {{ if eq $.Env.InteropTarget "rust" }} + {{ if $.Env.GitReference }} + {{ with .custom }} + [[groups]] + id = "custom-rust" + instances = { count = 1 } + builder = "docker:generic" + + [groups.build_config] + path = "./rust/" + + [groups.build_config.build_args] + CARGO_FEATURES = '{{ .CargoFeatures }}' + CARGO_REMOVE = '{{ .CargoFeatures }}' + CARGO_PATCH = """ + {{ .CargoFeatures }} = {package = "libp2p", git = "https://{{ or $.Env.GitTarget "github.com/libp2p/rust-libp2p" }}", rev = "{{ $.Env.GitReference }}", default_features = false, features = [ "websocket", "mplex", "yamux", "tcp-async-io", "ping", "noise", "dns-async-std" ], version = "0.47.0", optional = true} + """ + {{ end }} + {{ end }} + {{ end }} +{{ end }} \ No newline at end of file diff --git a/ping/_compositions/go.toml b/ping/_compositions/go.toml new file mode 100644 index 000000000..7eebd8db7 --- /dev/null +++ b/ping/_compositions/go.toml @@ -0,0 +1,39 @@ +[master] +GoVersion = '1.18' +Modfile = "go.v0.21.mod" +Selector = 'v0.21' + +[custom] +GoVersion = '1.18' +Modfile = "go.v0.21.mod" +Selector = 'v0.21' + +[[groups]] +Id = "v0.11" +GoVersion = '1.14' +Modfile = "go.v0.11.mod" +Selector = 'v0.11' + +[[groups]] +Id = "v0.17" +GoVersion = '1.16' +Modfile = "go.v0.17.mod" +Selector = 'v0.17' + +[[groups]] +Id = "v0.19" +GoVersion = '1.17' +Modfile = "go.v0.19.mod" +Selector = 'v0.19' + +[[groups]] +Id = "v0.20" +GoVersion = '1.18' +Modfile = "go.v0.20.mod" +Selector = 'v0.20' + +[[groups]] +Id = "v0.21" +GoVersion = '1.18' +Modfile = "go.v0.21.mod" +Selector = 'v0.21' diff --git a/ping/_compositions/rust-cross-versions.toml b/ping/_compositions/rust-cross-versions.toml new file mode 100644 index 000000000..63758e898 --- /dev/null +++ b/ping/_compositions/rust-cross-versions.toml @@ -0,0 +1,44 @@ +[metadata] + name = "rust-cross-versions-{{ $.Env.GitReference }}" + +[global] + plan = "libp2p/ping/rust" + case = "ping" + builder = "docker:generic" + runner = "local:docker" + concurrent_builds = 1 + +{{ with (load_resource "./rust.toml" ) }} + {{ range .groups }} + [[groups]] + id = "{{ .Id }}" + instances = { count = 1 } + + [groups.build_config.build_args] + CARGO_FEATURES = '{{ .CargoFeatures }}' + {{ end }} + + {{ with .master }} + [[groups]] + id = "master" + instances = { count = 1 } + + [groups.build_config.build_args] + CARGO_FEATURES = '{{ .CargoFeatures }}' + {{ end }} + + {{ if $.Env.GitReference }} + {{ with .custom }} + [[groups]] + id = "custom" + instances = { count = 1 } + + [groups.build_config.build_args] + CARGO_FEATURES = '{{ .CargoFeatures }}' + CARGO_REMOVE = '{{ .CargoFeatures }}' + CARGO_PATCH = """ + {{ .CargoFeatures }} = {package = "libp2p", git = "https://{{ or $.Env.GitTarget "github.com/libp2p/rust-libp2p" }}", rev = "{{ $.Env.GitReference }}", default_features = false, features = [ "websocket", "mplex", "yamux", "tcp-async-io", "ping", "noise", "dns-async-std" ], version = "0.47.0", optional = true} + """ + {{ end }} + {{ end }} +{{ end }} diff --git a/ping/_compositions/rust.toml b/ping/_compositions/rust.toml new file mode 100644 index 000000000..64b2980a7 --- /dev/null +++ b/ping/_compositions/rust.toml @@ -0,0 +1,17 @@ +[[groups]] +Id = "v0.44.0" +CargoFeatures = 'libp2pv0440' + +[[groups]] +Id = "v0.45.1" +CargoFeatures = 'libp2pv0450' + +[[groups]] +Id = "v0.46.0" +CargoFeatures = 'libp2pv0460' + +[master] +CargoFeatures = 'libp2pv0470' + +[custom] +CargoFeatures = 'libp2pv0470' diff --git a/ping/manifest.toml b/ping/manifest.toml new file mode 100644 index 000000000..cecdb7647 --- /dev/null +++ b/ping/manifest.toml @@ -0,0 +1,23 @@ +name = "compatibility-rust-and-go" + +[defaults] +builder = "docker:generic" +runner = "local:docker" + +[builders."docker:generic"] +enabled = true + +[builders."docker:go"] +enabled = true + +[runners."local:docker"] +enabled = true + +[[testcases]] +name = "ping" +instances = { min = 2, max = 10000, default = 5 } + + [testcases.params] + secure_channel = { type = "enum", desc = "secure channel used", values = ["noise"], default = "noise" } + max_latency_ms = { type = "int", desc = "maximum value for random local link latency", unit = "ms", default = 1000 } + iterations = { type = "int", desc = "number of ping iterations we'll run against each peer", unit = "count", default = 5 } diff --git a/ping/rust/.gitignore b/ping/rust/.gitignore new file mode 100644 index 000000000..ea8c4bf7f --- /dev/null +++ b/ping/rust/.gitignore @@ -0,0 +1 @@ +/target diff --git a/ping/rust/Cargo.lock b/ping/rust/Cargo.lock new file mode 100644 index 000000000..fa3b7b562 --- /dev/null +++ b/ping/rust/Cargo.lock @@ -0,0 +1,4081 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aead" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877" +dependencies = [ + "generic-array", +] + +[[package]] +name = "aes" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", + "opaque-debug", +] + +[[package]] +name = "aes-gcm" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df5f85a83a7d8b0442b6aa7b504b8212c1733da07b98aae43d4bc21b2cb3cdf6" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "subtle", +] + +[[package]] +name = "aho-corasick" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +dependencies = [ + "memchr", +] + +[[package]] +name = "anyhow" +version = "1.0.62" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1485d4d2cc45e7b201ee3767015c96faa5904387c9d87c6efdd0fb511f12d305" + +[[package]] +name = "arrayref" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" + +[[package]] +name = "asn1_der" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22d1f4b888c298a027c99dc9048015fac177587de20fc30232a057dfbe24a21" + +[[package]] +name = "async-attributes" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "async-channel" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14485364214912d3b19cc3435dde4df66065127f05fa0d75c712f36f12c2f28" +dependencies = [ + "concurrent-queue", + "event-listener", + "futures-core", +] + +[[package]] +name = "async-executor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "871f9bb5e0a22eeb7e8cf16641feb87c9dc67032ccf8ff49e772eb9941d3a965" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "once_cell", + "slab", +] + +[[package]] +name = "async-global-executor" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5262ed948da60dd8956c6c5aca4d4163593dddb7b32d73267c93dab7b2e98940" +dependencies = [ + "async-channel", + "async-executor", + "async-io", + "async-lock", + "blocking", + "futures-lite", + "num_cpus", + "once_cell", + "tokio", +] + +[[package]] +name = "async-io" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ab006897723d9352f63e2b13047177c3982d8d79709d713ce7747a8f19fd1b0" +dependencies = [ + "autocfg", + "concurrent-queue", + "futures-lite", + "libc", + "log", + "once_cell", + "parking", + "polling", + "slab", + "socket2", + "waker-fn", + "winapi", +] + +[[package]] +name = "async-lock" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e97a171d191782fba31bb902b14ad94e24a68145032b7eedf871ab0bc0d077b6" +dependencies = [ + "event-listener", +] + +[[package]] +name = "async-process" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf2c06e30a24e8c78a3987d07f0930edf76ef35e027e7bdb063fccafdad1f60c" +dependencies = [ + "async-io", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "libc", + "once_cell", + "signal-hook", + "winapi", +] + +[[package]] +name = "async-std" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" +dependencies = [ + "async-attributes", + "async-channel", + "async-global-executor", + "async-io", + "async-lock", + "async-process", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite 0.2.9", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + +[[package]] +name = "async-std-resolver" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f2f8a4a203be3325981310ab243a28e6e4ea55b6519bffce05d41ab60e09ad8" +dependencies = [ + "async-std", + "async-trait", + "futures-io", + "futures-util", + "pin-utils", + "socket2", + "trust-dns-resolver", +] + +[[package]] +name = "async-task" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524" + +[[package]] +name = "async-trait" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76464446b8bc32758d7e88ee1a804d9914cd9b1cb264c029899680b0be29826f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "asynchronous-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0de5164e5edbf51c45fb8c2d9664ae1c095cce1b265ecf7569093c0d66ef690" +dependencies = [ + "bytes", + "futures-sink", + "futures-util", + "memchr", + "pin-project-lite 0.2.9", +] + +[[package]] +name = "atomic" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b88d82667eca772c4aa12f0f1348b3ae643424c8876448f3f7bd5787032e234c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "atomic-waker" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2a" + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "base64" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "blake2" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9cf849ee05b2ee5fba5e36f97ff8ec2533916700fc0758d40d92136a42f3388" +dependencies = [ + "digest 0.10.3", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blocking" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6ccb65d468978a086b69884437ded69a90faab3bbe6e67f242173ea728acccc" +dependencies = [ + "async-channel", + "async-task", + "atomic-waker", + "fastrand", + "futures-lite", + "once_cell", +] + +[[package]] +name = "bs58" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" + +[[package]] +name = "bumpalo" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ad822118d20d2c234f427000d5acc36eabe1e29a348c89b63dd60b13f28e5d" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" + +[[package]] +name = "cache-padded" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" + +[[package]] +name = "cc" +version = "1.0.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chacha20" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c80e5460aa66fe3b91d40bcbdab953a597b60053e34d684ac6903f863b680a6" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", + "zeroize", +] + +[[package]] +name = "chacha20poly1305" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18446b09be63d457bbec447509e85f662f32952b035ce892290396bc0b0cff5" +dependencies = [ + "aead", + "chacha20", + "cipher", + "poly1305", + "zeroize", +] + +[[package]] +name = "chrono" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfd4d1b31faaa3a89d7934dbded3111da0d2ef28e3ebccdb4f0179f5929d1ef1" +dependencies = [ + "num-integer", + "num-traits", + "serde", +] + +[[package]] +name = "cipher" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" +dependencies = [ + "generic-array", +] + +[[package]] +name = "clap" +version = "3.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29e724a68d9319343bb3328c9cc2dfde263f4b3142ee1059a9980580171c954b" +dependencies = [ + "bitflags", + "clap_derive", + "clap_lex", + "indexmap", + "once_cell", + "textwrap", +] + +[[package]] +name = "clap_derive" +version = "3.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13547f7012c01ab4a0e8f8967730ada8f9fdf419e8b6c792788f39cf4e46eefa" +dependencies = [ + "heck 0.4.0", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "cmake" +version = "0.1.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8ad8cef104ac57b68b89df3208164d228503abbdce70f6880ffa3d970e7443a" +dependencies = [ + "cc", +] + +[[package]] +name = "concurrent-queue" +version = "1.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af4780a44ab5696ea9e28294517f1fffb421a83a25af521333c838635509db9c" +dependencies = [ + "cache-padded", +] + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + +[[package]] +name = "core2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" +dependencies = [ + "memchr", +] + +[[package]] +name = "cpufeatures" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1079fb8528d9f9c888b1e8aa651e6e079ade467323d58f75faf1d30b1808f540" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "ctor" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdffe87e1d521a10f9696f833fe502293ea446d7f256c06128293a4119bdf4cb" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "ctr" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" +dependencies = [ + "cipher", +] + +[[package]] +name = "curve25519-dalek" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek" +version = "4.0.0-pre.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12dc3116fe595d7847c701796ac1b189bd86b81f4f593c6f775f9d80fb2e29f4" +dependencies = [ + "byteorder", + "digest 0.10.3", + "rand_core 0.6.3", + "subtle", + "zeroize", +] + +[[package]] +name = "darling" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4529658bdda7fd6769b8614be250cdcfc3aeb0ee72fe66f9e41e5e5eb73eac02" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "649c91bc01e8b1eac09fb91e8dbc7d517684ca6be8ebc75bb9cafc894f9fdb6f" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddfc69c5bfcbd2fc09a0f38451d2daf0e372e367986a83906d1b0dbc88134fb5" +dependencies = [ + "darling_core", + "quote", + "syn", +] + +[[package]] +name = "data-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57" + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" +dependencies = [ + "block-buffer 0.10.2", + "crypto-common", + "subtle", +] + +[[package]] +name = "dtoa" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6053ff46b5639ceb91756a85a4c8914668393a03170efd79c8884a529d80656" + +[[package]] +name = "ed25519" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9c280362032ea4203659fc489832d0204ef09f247a0506f170dafcac08c369" +dependencies = [ + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +dependencies = [ + "curve25519-dalek 3.2.1", + "ed25519", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "zeroize", +] + +[[package]] +name = "either" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" + +[[package]] +name = "encoding_rs" +version = "0.8.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enum-as-inner" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21cdad81446a7f7dc43f6a77409efeb9733d2fa65553efef6018ef257c959b73" +dependencies = [ + "heck 0.4.0", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "env_logger" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "fastrand" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +dependencies = [ + "instant", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flate2" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6" +dependencies = [ + "crc32fast", + "libz-sys", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +dependencies = [ + "matches", + "percent-encoding", +] + +[[package]] +name = "futures" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab30e97ab6aacfe635fad58f22c2bb06c8b685f7421eb1e064a729e2a5f481fa" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bfc52cbddcfd745bf1740338492bb0bd83d76c67b445f91c5fb29fae29ecaa1" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2acedae88d38235936c3922476b10fced7b2b68136f5e3c03c2d5be348a1115" + +[[package]] +name = "futures-executor" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d11aa21b5b587a64682c0094c2bdd4df0076c5324961a40cc3abd7f37930528" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", + "num_cpus", +] + +[[package]] +name = "futures-io" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93a66fc6d035a26a3ae255a6d2bca35eda63ae4c5512bef54449113f7a1228e5" + +[[package]] +name = "futures-lite" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite 0.2.9", + "waker-fn", +] + +[[package]] +name = "futures-macro" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0db9cce532b0eae2ccf2766ab246f114b56b9cf6d445e00c2549fbc100ca045d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-rustls" +version = "0.22.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2411eed028cdf8c8034eaf21f9915f956b6c3abec4d4c7949ee67f0721127bd" +dependencies = [ + "futures-io", + "rustls", + "webpki", +] + +[[package]] +name = "futures-sink" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca0bae1fe9752cf7fd9b0064c674ae63f97b37bc714d745cbde0afb7ec4e6765" + +[[package]] +name = "futures-task" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "842fc63b931f4056a24d59de13fb1272134ce261816e063e634ad0c15cdc5306" + +[[package]] +name = "futures-timer" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" + +[[package]] +name = "futures-util" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0828a5471e340229c11c77ca80017937ce3c58cb788a17e5f1c2d5c485a9577" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite 0.2.9", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "ghash" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99" +dependencies = [ + "opaque-debug", + "polyval", +] + +[[package]] +name = "gloo-timers" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fb7d06c1c8cc2a29bee7ec961009a0b2caa0793ee4900c2ffb348734ba1c8f9" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "h2" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca32592cf21ac7ccab1825cd87f6c9b3d9022c44d086172ed0966bec8af30be" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "heck" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hostname" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" +dependencies = [ + "libc", + "match_cfg", + "winapi", +] + +[[package]] +name = "http" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes", + "http", + "pin-project-lite 0.2.9", +] + +[[package]] +name = "httparse" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04c" + +[[package]] +name = "httpdate" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "0.14.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02c929dc5c39e335a03c405292728118860721b10190d98c2a0f0efd5baafbac" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite 0.2.9", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "if-addrs" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbc0fa01ffc752e9dbc72818cdb072cd028b86be5e09dd04c5a643704fe101a9" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "if-watch" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "015a7df1eb6dda30df37f34b63ada9b7b352984b0e84de2a20ed526345000791" +dependencies = [ + "async-io", + "core-foundation", + "fnv", + "futures", + "if-addrs", + "ipnet", + "log", + "rtnetlink", + "system-configuration", + "windows", +] + +[[package]] +name = "indexmap" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "influxdb" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39023407f0546c3b30607950f8b600c7db4ef7621fbaa0159de733d73e68b23f" +dependencies = [ + "chrono", + "futures-util", + "http", + "influxdb_derive", + "lazy_static", + "regex", + "reqwest", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "influxdb_derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d81efbf97cec06c647f05a8b5edcbc52434cdf980d8d4ace68e1028c90241d3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ipconfig" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "723519edce41262b05d4143ceb95050e4c614f483e78e9fd9e39a8275a84ad98" +dependencies = [ + "socket2", + "widestring", + "winapi", + "winreg 0.7.0", +] + +[[package]] +name = "ipnet" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b" + +[[package]] +name = "ipnetwork" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f84f1612606f3753f205a4e9a2efd6fe5b4c573a6269b2cc6c3003d44a0d127" +dependencies = [ + "serde", +] + +[[package]] +name = "ipnetwork" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf466541e9d546596ee94f9f69590f89473455f88372423e0008fc1a7daf100e" +dependencies = [ + "serde", +] + +[[package]] +name = "itertools" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754" + +[[package]] +name = "js-sys" +version = "0.3.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "258451ab10b34f8af53416d1fdab72c22e805f0c92a1136d59470ec0b11138b2" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.132" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8371e4e5341c3a96db127eb2465ac681ced4c433e01dd0e938adbef26ba93ba5" + +[[package]] +name = "libp2p" +version = "0.44.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "475ce2ac4a9727e53a519f6ee05b38abfcba8f0d39c4d24f103d184e36fd5b0f" +dependencies = [ + "atomic", + "bytes", + "futures", + "futures-timer", + "getrandom 0.2.7", + "instant", + "lazy_static", + "libp2p-core 0.32.1", + "libp2p-dns 0.32.1", + "libp2p-metrics 0.5.0", + "libp2p-mplex 0.32.0", + "libp2p-noise 0.35.0", + "libp2p-ping 0.35.0", + "libp2p-swarm 0.35.0", + "libp2p-swarm-derive 0.27.2", + "libp2p-tcp 0.32.0", + "libp2p-websocket 0.34.0", + "libp2p-yamux 0.36.0", + "multiaddr", + "parking_lot", + "pin-project 1.0.12", + "rand 0.7.3", + "smallvec", +] + +[[package]] +name = "libp2p" +version = "0.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41726ee8f662563fafba2d2d484b14037cc8ecb8c953fbfc8439d4ce3a0a9029" +dependencies = [ + "bytes", + "futures", + "futures-timer", + "getrandom 0.2.7", + "instant", + "lazy_static", + "libp2p-core 0.33.0", + "libp2p-dns 0.33.0", + "libp2p-metrics 0.6.1", + "libp2p-mplex 0.33.0", + "libp2p-noise 0.36.0", + "libp2p-ping 0.36.0", + "libp2p-swarm 0.36.1", + "libp2p-swarm-derive 0.27.2", + "libp2p-tcp 0.33.0", + "libp2p-websocket 0.35.0", + "libp2p-yamux 0.37.0", + "multiaddr", + "parking_lot", + "pin-project 1.0.12", + "rand 0.7.3", + "smallvec", +] + +[[package]] +name = "libp2p" +version = "0.46.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81327106887e42d004fbdab1fef93675be2e2e07c1b95fce45e2cc813485611d" +dependencies = [ + "bytes", + "futures", + "futures-timer", + "getrandom 0.2.7", + "instant", + "lazy_static", + "libp2p-core 0.34.0", + "libp2p-dns 0.34.0", + "libp2p-metrics 0.7.0", + "libp2p-mplex 0.34.0", + "libp2p-noise 0.37.0", + "libp2p-ping 0.37.0", + "libp2p-swarm 0.37.0", + "libp2p-swarm-derive 0.28.0", + "libp2p-tcp 0.34.0", + "libp2p-websocket 0.36.0", + "libp2p-yamux 0.38.0", + "multiaddr", + "parking_lot", + "pin-project 1.0.12", + "rand 0.7.3", + "smallvec", +] + +[[package]] +name = "libp2p" +version = "0.47.0" +source = "git+https://github.com/libp2p/rust-libp2p?branch=master#8931860b2f35e55316860a5fc0affb264c447c61" +dependencies = [ + "bytes", + "futures", + "futures-timer", + "getrandom 0.2.7", + "instant", + "lazy_static", + "libp2p-core 0.35.0", + "libp2p-dns 0.35.0", + "libp2p-metrics 0.8.0", + "libp2p-mplex 0.35.0", + "libp2p-noise 0.38.0", + "libp2p-ping 0.38.0", + "libp2p-swarm 0.38.0", + "libp2p-swarm-derive 0.29.0", + "libp2p-tcp 0.35.0", + "libp2p-websocket 0.37.0", + "libp2p-yamux 0.39.0", + "multiaddr", + "parking_lot", + "pin-project 1.0.12", + "rand 0.7.3", + "smallvec", +] + +[[package]] +name = "libp2p-core" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db5b02602099fb75cb2d16f9ea860a320d6eb82ce41e95ab680912c454805cd5" +dependencies = [ + "asn1_der", + "bs58", + "ed25519-dalek", + "either", + "fnv", + "futures", + "futures-timer", + "instant", + "lazy_static", + "log", + "multiaddr", + "multihash", + "multistream-select 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot", + "pin-project 1.0.12", + "prost 0.9.0", + "prost-build 0.9.0", + "rand 0.8.5", + "ring", + "rw-stream-sink 0.2.1", + "sha2 0.10.2", + "smallvec", + "thiserror", + "unsigned-varint", + "void", + "zeroize", +] + +[[package]] +name = "libp2p-core" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d46fca305dee6757022e2f5a4f6c023315084d0ed7441c3ab244e76666d979" +dependencies = [ + "asn1_der", + "bs58", + "ed25519-dalek", + "either", + "fnv", + "futures", + "futures-timer", + "instant", + "lazy_static", + "log", + "multiaddr", + "multihash", + "multistream-select 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot", + "pin-project 1.0.12", + "prost 0.10.4", + "prost-build 0.10.4", + "rand 0.8.5", + "ring", + "rw-stream-sink 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.10.2", + "smallvec", + "thiserror", + "unsigned-varint", + "void", + "zeroize", +] + +[[package]] +name = "libp2p-core" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf9b94cefab7599b2d3dff2f93bee218c6621d68590b23ede4485813cbcece6" +dependencies = [ + "asn1_der", + "bs58", + "ed25519-dalek", + "either", + "fnv", + "futures", + "futures-timer", + "instant", + "lazy_static", + "log", + "multiaddr", + "multihash", + "multistream-select 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot", + "pin-project 1.0.12", + "prost 0.10.4", + "prost-build 0.10.4", + "rand 0.8.5", + "ring", + "rw-stream-sink 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.10.2", + "smallvec", + "thiserror", + "unsigned-varint", + "void", + "zeroize", +] + +[[package]] +name = "libp2p-core" +version = "0.35.0" +source = "git+https://github.com/libp2p/rust-libp2p?branch=master#8931860b2f35e55316860a5fc0affb264c447c61" +dependencies = [ + "asn1_der", + "bs58", + "ed25519-dalek", + "either", + "fnv", + "futures", + "futures-timer", + "instant", + "lazy_static", + "log", + "multiaddr", + "multihash", + "multistream-select 0.11.0 (git+https://github.com/libp2p/rust-libp2p?branch=master)", + "parking_lot", + "pin-project 1.0.12", + "prost 0.11.0", + "prost-build 0.11.1", + "rand 0.8.5", + "ring", + "rw-stream-sink 0.3.0 (git+https://github.com/libp2p/rust-libp2p?branch=master)", + "sha2 0.10.2", + "smallvec", + "thiserror", + "unsigned-varint", + "void", + "zeroize", +] + +[[package]] +name = "libp2p-dns" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "066e33e854e10b5c93fc650458bf2179c7e0d143db260b0963e44a94859817f1" +dependencies = [ + "async-std-resolver", + "futures", + "libp2p-core 0.32.1", + "log", + "smallvec", + "trust-dns-resolver", +] + +[[package]] +name = "libp2p-dns" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbb462ec3a51fab457b4b44ac295e8b0a4b04dc175127e615cf996b1f0f1a268" +dependencies = [ + "async-std-resolver", + "futures", + "libp2p-core 0.33.0", + "log", + "parking_lot", + "smallvec", + "trust-dns-resolver", +] + +[[package]] +name = "libp2p-dns" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cbf54723250fa5d521383be789bf60efdabe6bacfb443f87da261019a49b4b5" +dependencies = [ + "async-std-resolver", + "futures", + "libp2p-core 0.34.0", + "log", + "parking_lot", + "smallvec", + "trust-dns-resolver", +] + +[[package]] +name = "libp2p-dns" +version = "0.35.0" +source = "git+https://github.com/libp2p/rust-libp2p?branch=master#8931860b2f35e55316860a5fc0affb264c447c61" +dependencies = [ + "async-std-resolver", + "futures", + "libp2p-core 0.35.0", + "log", + "parking_lot", + "smallvec", + "trust-dns-resolver", +] + +[[package]] +name = "libp2p-metrics" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985be799bb3796e0c136c768208c3c06604a38430571906a13dcfeda225a3b9d" +dependencies = [ + "libp2p-core 0.32.1", + "libp2p-ping 0.35.0", + "libp2p-swarm 0.35.0", + "prometheus-client 0.15.1", +] + +[[package]] +name = "libp2p-metrics" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "564a7e5284d7d9b3140fdfc3cb6567bc32555e86a21de5604c2ec85da05cf384" +dependencies = [ + "libp2p-core 0.33.0", + "libp2p-ping 0.36.0", + "libp2p-swarm 0.36.1", + "prometheus-client 0.16.0", +] + +[[package]] +name = "libp2p-metrics" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef8aff4a1abef42328fbb30b17c853fff9be986dc39af17ee39f9c5f755c5e0c" +dependencies = [ + "libp2p-core 0.34.0", + "libp2p-ping 0.37.0", + "libp2p-swarm 0.37.0", + "prometheus-client 0.16.0", +] + +[[package]] +name = "libp2p-metrics" +version = "0.8.0" +source = "git+https://github.com/libp2p/rust-libp2p?branch=master#8931860b2f35e55316860a5fc0affb264c447c61" +dependencies = [ + "libp2p-core 0.35.0", + "libp2p-ping 0.38.0", + "libp2p-swarm 0.38.0", + "prometheus-client 0.18.0", +] + +[[package]] +name = "libp2p-mplex" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "442eb0c9fff0bf22a34f015724b4143ce01877e079ed0963c722d94c07c72160" +dependencies = [ + "asynchronous-codec", + "bytes", + "futures", + "libp2p-core 0.32.1", + "log", + "nohash-hasher", + "parking_lot", + "rand 0.7.3", + "smallvec", + "unsigned-varint", +] + +[[package]] +name = "libp2p-mplex" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ff9c893f2367631a711301d703c47432af898c9bb8253bea0e2c051a13f7640" +dependencies = [ + "asynchronous-codec", + "bytes", + "futures", + "libp2p-core 0.33.0", + "log", + "nohash-hasher", + "parking_lot", + "rand 0.7.3", + "smallvec", + "unsigned-varint", +] + +[[package]] +name = "libp2p-mplex" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61fd1b20638ec209c5075dfb2e8ce6a7ea4ec3cd3ad7b77f7a477c06d53322e2" +dependencies = [ + "asynchronous-codec", + "bytes", + "futures", + "libp2p-core 0.34.0", + "log", + "nohash-hasher", + "parking_lot", + "rand 0.7.3", + "smallvec", + "unsigned-varint", +] + +[[package]] +name = "libp2p-mplex" +version = "0.35.0" +source = "git+https://github.com/libp2p/rust-libp2p?branch=master#8931860b2f35e55316860a5fc0affb264c447c61" +dependencies = [ + "asynchronous-codec", + "bytes", + "futures", + "libp2p-core 0.35.0", + "log", + "nohash-hasher", + "parking_lot", + "rand 0.7.3", + "smallvec", + "unsigned-varint", +] + +[[package]] +name = "libp2p-noise" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd7e0c94051cda67123be68cf6b65211ba3dde7277be9068412de3e7ffd63ef" +dependencies = [ + "bytes", + "curve25519-dalek 3.2.1", + "futures", + "lazy_static", + "libp2p-core 0.32.1", + "log", + "prost 0.9.0", + "prost-build 0.9.0", + "rand 0.8.5", + "sha2 0.10.2", + "snow", + "static_assertions", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "libp2p-noise" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf2cee1dad1c83325bbd182a8e94555778699cec8a9da00086efb7522c4c15ad" +dependencies = [ + "bytes", + "curve25519-dalek 3.2.1", + "futures", + "lazy_static", + "libp2p-core 0.33.0", + "log", + "prost 0.10.4", + "prost-build 0.10.4", + "rand 0.8.5", + "sha2 0.10.2", + "snow", + "static_assertions", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "libp2p-noise" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "762408cb5d84b49a600422d7f9a42c18012d8da6ebcd570f9a4a4290ba41fb6f" +dependencies = [ + "bytes", + "curve25519-dalek 3.2.1", + "futures", + "lazy_static", + "libp2p-core 0.34.0", + "log", + "prost 0.10.4", + "prost-build 0.10.4", + "rand 0.8.5", + "sha2 0.10.2", + "snow", + "static_assertions", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "libp2p-noise" +version = "0.38.0" +source = "git+https://github.com/libp2p/rust-libp2p?branch=master#8931860b2f35e55316860a5fc0affb264c447c61" +dependencies = [ + "bytes", + "curve25519-dalek 3.2.1", + "futures", + "lazy_static", + "libp2p-core 0.35.0", + "log", + "prost 0.11.0", + "prost-build 0.11.1", + "rand 0.8.5", + "sha2 0.10.2", + "snow", + "static_assertions", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "libp2p-ping" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf57a3c2e821331dda9fe612d4654d676ab6e33d18d9434a18cced72630df6ad" +dependencies = [ + "futures", + "futures-timer", + "instant", + "libp2p-core 0.32.1", + "libp2p-swarm 0.35.0", + "log", + "rand 0.7.3", + "void", +] + +[[package]] +name = "libp2p-ping" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d41516c82fe8dd148ec925eead0c5ec08a0628f7913597e93e126e4dfb4e0787" +dependencies = [ + "futures", + "futures-timer", + "instant", + "libp2p-core 0.33.0", + "libp2p-swarm 0.36.1", + "log", + "rand 0.7.3", + "void", +] + +[[package]] +name = "libp2p-ping" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "100a6934ae1dbf8a693a4e7dd1d730fd60b774dafc45688ed63b554497c6c925" +dependencies = [ + "futures", + "futures-timer", + "instant", + "libp2p-core 0.34.0", + "libp2p-swarm 0.37.0", + "log", + "rand 0.7.3", + "void", +] + +[[package]] +name = "libp2p-ping" +version = "0.38.0" +source = "git+https://github.com/libp2p/rust-libp2p?branch=master#8931860b2f35e55316860a5fc0affb264c447c61" +dependencies = [ + "futures", + "futures-timer", + "instant", + "libp2p-core 0.35.0", + "libp2p-swarm 0.38.0", + "log", + "rand 0.7.3", + "void", +] + +[[package]] +name = "libp2p-swarm" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f0c69ad9e8f7c5fc50ad5ad9c7c8b57f33716532a2b623197f69f93e374d14c" +dependencies = [ + "either", + "fnv", + "futures", + "futures-timer", + "instant", + "libp2p-core 0.32.1", + "log", + "pin-project 1.0.12", + "rand 0.7.3", + "smallvec", + "thiserror", + "void", +] + +[[package]] +name = "libp2p-swarm" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f4bb21c5abadbf00360c734f16bf87f1712ed4f23cd46148f625d2ddb867346" +dependencies = [ + "either", + "fnv", + "futures", + "futures-timer", + "instant", + "libp2p-core 0.33.0", + "log", + "pin-project 1.0.12", + "rand 0.7.3", + "smallvec", + "thiserror", + "void", +] + +[[package]] +name = "libp2p-swarm" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95ac5be6c2de2d1ff3f7693fda6faf8a827b1f3e808202277783fea9f527d114" +dependencies = [ + "either", + "fnv", + "futures", + "futures-timer", + "instant", + "libp2p-core 0.34.0", + "log", + "pin-project 1.0.12", + "rand 0.7.3", + "smallvec", + "thiserror", + "void", +] + +[[package]] +name = "libp2p-swarm" +version = "0.38.0" +source = "git+https://github.com/libp2p/rust-libp2p?branch=master#8931860b2f35e55316860a5fc0affb264c447c61" +dependencies = [ + "either", + "fnv", + "futures", + "futures-timer", + "instant", + "libp2p-core 0.35.0", + "log", + "pin-project 1.0.12", + "rand 0.7.3", + "smallvec", + "thiserror", + "void", +] + +[[package]] +name = "libp2p-swarm-derive" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f693c8c68213034d472cbb93a379c63f4f307d97c06f1c41e4985de481687a5" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "libp2p-swarm-derive" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f54a64b6957249e0ce782f8abf41d97f69330d02bf229f0672d864f0650cc76" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "libp2p-swarm-derive" +version = "0.29.0" +source = "git+https://github.com/libp2p/rust-libp2p?branch=master#8931860b2f35e55316860a5fc0affb264c447c61" +dependencies = [ + "heck 0.4.0", + "quote", + "syn", +] + +[[package]] +name = "libp2p-tcp" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "193447aa729c85aac2376828df76d171c1a589c9e6b58fcc7f9d9a020734122c" +dependencies = [ + "async-io", + "futures", + "futures-timer", + "if-watch", + "ipnet", + "libc", + "libp2p-core 0.32.1", + "log", + "socket2", +] + +[[package]] +name = "libp2p-tcp" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f4933e38ef21b50698aefc87799c24f2a365c9d3f6cf50471f3f6a0bc410892" +dependencies = [ + "async-io", + "futures", + "futures-timer", + "if-watch", + "ipnet", + "libc", + "libp2p-core 0.33.0", + "log", + "socket2", +] + +[[package]] +name = "libp2p-tcp" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a6771dc19aa3c65d6af9a8c65222bfc8fcd446630ddca487acd161fa6096f3b" +dependencies = [ + "async-io", + "futures", + "futures-timer", + "if-watch", + "ipnet", + "libc", + "libp2p-core 0.34.0", + "log", + "socket2", +] + +[[package]] +name = "libp2p-tcp" +version = "0.35.0" +source = "git+https://github.com/libp2p/rust-libp2p?branch=master#8931860b2f35e55316860a5fc0affb264c447c61" +dependencies = [ + "async-io", + "futures", + "futures-timer", + "if-watch", + "ipnet", + "libc", + "libp2p-core 0.35.0", + "log", + "socket2", +] + +[[package]] +name = "libp2p-websocket" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c932834c3754501c368d1bf3d0fb458487a642b90fc25df082a3a2f3d3b32e37" +dependencies = [ + "either", + "futures", + "futures-rustls", + "libp2p-core 0.32.1", + "log", + "quicksink", + "rw-stream-sink 0.2.1", + "soketto", + "url", + "webpki-roots", +] + +[[package]] +name = "libp2p-websocket" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39d398fbb29f432c4128fabdaac2ed155c3bcaf1b9bd40eeeb10a471eefacbf5" +dependencies = [ + "either", + "futures", + "futures-rustls", + "libp2p-core 0.33.0", + "log", + "parking_lot", + "quicksink", + "rw-stream-sink 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "soketto", + "url", + "webpki-roots", +] + +[[package]] +name = "libp2p-websocket" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9808e57e81be76ff841c106b4c5974fb4d41a233a7bdd2afbf1687ac6def3818" +dependencies = [ + "either", + "futures", + "futures-rustls", + "libp2p-core 0.34.0", + "log", + "parking_lot", + "quicksink", + "rw-stream-sink 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "soketto", + "url", + "webpki-roots", +] + +[[package]] +name = "libp2p-websocket" +version = "0.37.0" +source = "git+https://github.com/libp2p/rust-libp2p?branch=master#8931860b2f35e55316860a5fc0affb264c447c61" +dependencies = [ + "either", + "futures", + "futures-rustls", + "libp2p-core 0.35.0", + "log", + "parking_lot", + "quicksink", + "rw-stream-sink 0.3.0 (git+https://github.com/libp2p/rust-libp2p?branch=master)", + "soketto", + "url", + "webpki-roots", +] + +[[package]] +name = "libp2p-yamux" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be902ebd89193cd020e89e89107726a38cfc0d16d18f613f4a37d046e92c7517" +dependencies = [ + "futures", + "libp2p-core 0.32.1", + "parking_lot", + "thiserror", + "yamux", +] + +[[package]] +name = "libp2p-yamux" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fe653639ad74877c759720febb0cbcbf4caa221adde4eed2d3126ce5c6f381f" +dependencies = [ + "futures", + "libp2p-core 0.33.0", + "parking_lot", + "thiserror", + "yamux", +] + +[[package]] +name = "libp2p-yamux" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6dea686217a06072033dc025631932810e2f6ad784e4fafa42e27d311c7a81c" +dependencies = [ + "futures", + "libp2p-core 0.34.0", + "parking_lot", + "thiserror", + "yamux", +] + +[[package]] +name = "libp2p-yamux" +version = "0.39.0" +source = "git+https://github.com/libp2p/rust-libp2p?branch=master#8931860b2f35e55316860a5fc0affb264c447c61" +dependencies = [ + "futures", + "libp2p-core 0.35.0", + "parking_lot", + "thiserror", + "yamux", +] + +[[package]] +name = "libz-sys" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "lock_api" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", + "value-bag", +] + +[[package]] +name = "lru-cache" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "match_cfg" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" + +[[package]] +name = "matches" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "mime" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" + +[[package]] +name = "miniz_oxide" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf" +dependencies = [ + "libc", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys", +] + +[[package]] +name = "multiaddr" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c580bfdd8803cce319b047d239559a22f809094aaea4ac13902a1fdcfcd4261" +dependencies = [ + "arrayref", + "bs58", + "byteorder", + "data-encoding", + "multihash", + "percent-encoding", + "serde", + "static_assertions", + "unsigned-varint", + "url", +] + +[[package]] +name = "multihash" +version = "0.16.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c346cf9999c631f002d8f977c4eaeaa0e6386f16007202308d0b3757522c2cc" +dependencies = [ + "core2", + "digest 0.10.3", + "multihash-derive", + "sha2 0.10.2", + "unsigned-varint", +] + +[[package]] +name = "multihash-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc076939022111618a5026d3be019fd8b366e76314538ff9a1b59ffbcbf98bcd" +dependencies = [ + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "multimap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" + +[[package]] +name = "multistream-select" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "363a84be6453a70e63513660f4894ef815daf88e3356bffcda9ca27d810ce83b" +dependencies = [ + "bytes", + "futures", + "log", + "pin-project 1.0.12", + "smallvec", + "unsigned-varint", +] + +[[package]] +name = "multistream-select" +version = "0.11.0" +source = "git+https://github.com/libp2p/rust-libp2p?branch=master#8931860b2f35e55316860a5fc0affb264c447c61" +dependencies = [ + "bytes", + "futures", + "log", + "pin-project 1.0.12", + "smallvec", + "unsigned-varint", +] + +[[package]] +name = "netlink-packet-core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "345b8ab5bd4e71a2986663e88c56856699d060e78e152e6e9d7966fcd5491297" +dependencies = [ + "anyhow", + "byteorder", + "libc", + "netlink-packet-utils", +] + +[[package]] +name = "netlink-packet-route" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9ea4302b9759a7a88242299225ea3688e63c85ea136371bb6cf94fd674efaab" +dependencies = [ + "anyhow", + "bitflags", + "byteorder", + "libc", + "netlink-packet-core", + "netlink-packet-utils", +] + +[[package]] +name = "netlink-packet-utils" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25af9cf0dc55498b7bd94a1508af7a78706aa0ab715a73c5169273e03c84845e" +dependencies = [ + "anyhow", + "byteorder", + "paste", + "thiserror", +] + +[[package]] +name = "netlink-proto" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65b4b14489ab424703c092062176d52ba55485a89c076b4f9db05092b7223aa6" +dependencies = [ + "bytes", + "futures", + "log", + "netlink-packet-core", + "netlink-sys", + "thiserror", + "tokio", +] + +[[package]] +name = "netlink-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92b654097027250401127914afb37cb1f311df6610a9891ff07a757e94199027" +dependencies = [ + "async-io", + "bytes", + "futures", + "libc", + "log", +] + +[[package]] +name = "nix" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "195cdbc1741b8134346d515b3a56a1c94b0912758009cfd53f99ea0f57b065fc" +dependencies = [ + "bitflags", + "cfg-if", + "libc", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "once_cell" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "074864da206b4973b84eb91683020dbefd6a8c3f0f38e054d93954e891935e4e" + +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" + +[[package]] +name = "os_str_bytes" +version = "6.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff" + +[[package]] +name = "owning_ref" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ff55baddef9e4ad00f88b6c743a2a8062d4c6ade126c2a528644b8e444d52ce" +dependencies = [ + "stable_deref_trait", +] + +[[package]] +name = "parking" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-sys", +] + +[[package]] +name = "paste" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9423e2b32f7a043629287a536f21951e8c6a82482d0acb1eeebfc90bc2225b22" + +[[package]] +name = "percent-encoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" + +[[package]] +name = "petgraph" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5014253a1331579ce62aa67443b4a658c5e7dd03d4bc6d302b94474888143" +dependencies = [ + "fixedbitset", + "indexmap", +] + +[[package]] +name = "pin-project" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ef0f924a5ee7ea9cbcea77529dba45f8a9ba9f622419fe3386ca581a3ae9d5a" +dependencies = [ + "pin-project-internal 0.4.30", +] + +[[package]] +name = "pin-project" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +dependencies = [ + "pin-project-internal 1.0.12", +] + +[[package]] +name = "pin-project-internal" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "851c8d0ce9bebe43790dedfc86614c23494ac9f423dd618d3a61fc693eafe61e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777" + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" + +[[package]] +name = "polling" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685404d509889fade3e86fe3a5803bca2ec09b0c0778d5ada6ec8bf7a8de5259" +dependencies = [ + "cfg-if", + "libc", + "log", + "wepoll-ffi", + "winapi", +] + +[[package]] +name = "poly1305" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "048aeb476be11a4b6ca432ca569e375810de9294ae78f4774e78ea98a9246ede" +dependencies = [ + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "polyval" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" + +[[package]] +name = "proc-macro-crate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" +dependencies = [ + "once_cell", + "thiserror", + "toml", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prometheus-client" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9a896938cc6018c64f279888b8c7559d3725210d5db9a3a1ee6bc7188d51d34" +dependencies = [ + "dtoa", + "itoa", + "owning_ref", + "prometheus-client-derive-text-encode 0.2.0", +] + +[[package]] +name = "prometheus-client" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac1abe0255c04d15f571427a2d1e00099016506cf3297b53853acd2b7eb87825" +dependencies = [ + "dtoa", + "itoa", + "owning_ref", + "prometheus-client-derive-text-encode 0.2.0", +] + +[[package]] +name = "prometheus-client" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c473049631c233933d6286c88bbb7be30e62ec534cf99a9ae0079211f7fa603" +dependencies = [ + "dtoa", + "itoa", + "parking_lot", + "prometheus-client-derive-text-encode 0.3.0", +] + +[[package]] +name = "prometheus-client-derive-text-encode" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8e12d01b9d66ad9eb4529c57666b6263fc1993cb30261d83ead658fdd932652" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "prometheus-client-derive-text-encode" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66a455fbcb954c1a7decf3c586e860fd7889cddf4b8e164be736dbac95a953cd" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "prost" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" +dependencies = [ + "bytes", + "prost-derive 0.9.0", +] + +[[package]] +name = "prost" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71adf41db68aa0daaefc69bb30bcd68ded9b9abaad5d1fbb6304c4fb390e083e" +dependencies = [ + "bytes", + "prost-derive 0.10.1", +] + +[[package]] +name = "prost" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "399c3c31cdec40583bb68f0b18403400d01ec4289c383aa047560439952c4dd7" +dependencies = [ + "bytes", + "prost-derive 0.11.0", +] + +[[package]] +name = "prost-build" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5" +dependencies = [ + "bytes", + "heck 0.3.3", + "itertools", + "lazy_static", + "log", + "multimap", + "petgraph", + "prost 0.9.0", + "prost-types 0.9.0", + "regex", + "tempfile", + "which", +] + +[[package]] +name = "prost-build" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae5a4388762d5815a9fc0dea33c56b021cdc8dde0c55e0c9ca57197254b0cab" +dependencies = [ + "bytes", + "cfg-if", + "cmake", + "heck 0.4.0", + "itertools", + "lazy_static", + "log", + "multimap", + "petgraph", + "prost 0.10.4", + "prost-types 0.10.1", + "regex", + "tempfile", + "which", +] + +[[package]] +name = "prost-build" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f835c582e6bd972ba8347313300219fed5bfa52caf175298d860b61ff6069bb" +dependencies = [ + "bytes", + "heck 0.4.0", + "itertools", + "lazy_static", + "log", + "multimap", + "petgraph", + "prost 0.11.0", + "prost-types 0.11.1", + "regex", + "tempfile", + "which", +] + +[[package]] +name = "prost-derive" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "prost-derive" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b670f45da57fb8542ebdbb6105a925fe571b67f9e7ed9f47a06a84e72b4e7cc" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "prost-derive" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7345d5f0e08c0536d7ac7229952590239e77abf0a0100a1b1d890add6ea96364" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "prost-types" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a" +dependencies = [ + "bytes", + "prost 0.9.0", +] + +[[package]] +name = "prost-types" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d0a014229361011dc8e69c8a1ec6c2e8d0f2af7c91e3ea3f5b2170298461e68" +dependencies = [ + "bytes", + "prost 0.10.4", +] + +[[package]] +name = "prost-types" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dfaa718ad76a44b3415e6c4d53b17c8f99160dcb3a99b10470fce8ad43f6e3e" +dependencies = [ + "bytes", + "prost 0.11.0", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quicksink" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77de3c815e5a160b1539c6592796801df2043ae35e123b46d73380cfa57af858" +dependencies = [ + "futures-core", + "futures-sink", + "pin-project-lite 0.1.12", +] + +[[package]] +name = "quote" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.3", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.3", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +dependencies = [ + "getrandom 0.2.7", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" + +[[package]] +name = "remove_dir_all" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +dependencies = [ + "winapi", +] + +[[package]] +name = "reqwest" +version = "0.11.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b75aa69a3f06bbcc66ede33af2af253c6f7a86b1ca0033f60c580a27074fbf92" +dependencies = [ + "base64", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "ipnet", + "js-sys", + "lazy_static", + "log", + "mime", + "percent-encoding", + "pin-project-lite 0.2.9", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg 0.10.1", +] + +[[package]] +name = "resolv-conf" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" +dependencies = [ + "hostname", + "quick-error", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin", + "untrusted", + "web-sys", + "winapi", +] + +[[package]] +name = "rtnetlink" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "322c53fd76a18698f1c27381d58091de3a043d356aa5bd0d510608b565f469a0" +dependencies = [ + "async-global-executor", + "futures", + "log", + "netlink-packet-route", + "netlink-proto", + "nix", + "thiserror", +] + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rustls" +version = "0.20.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aab8ee6c7097ed6057f43c187a62418d0c05a4bd5f18b3571db50ee0f9ce033" +dependencies = [ + "log", + "ring", + "sct", + "webpki", +] + +[[package]] +name = "rw-stream-sink" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4da5fcb054c46f5a5dff833b129285a93d3f0179531735e6c866e8cc307d2020" +dependencies = [ + "futures", + "pin-project 0.4.30", + "static_assertions", +] + +[[package]] +name = "rw-stream-sink" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26338f5e09bb721b85b135ea05af7767c90b52f6de4f087d4f4a3a9d64e7dc04" +dependencies = [ + "futures", + "pin-project 1.0.12", + "static_assertions", +] + +[[package]] +name = "rw-stream-sink" +version = "0.3.0" +source = "git+https://github.com/libp2p/rust-libp2p?branch=master#8931860b2f35e55316860a5fc0affb264c447c61" +dependencies = [ + "futures", + "pin-project 1.0.12", + "static_assertions", +] + +[[package]] +name = "ryu" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "sct" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "semver" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93f6841e709003d68bb2deee8c343572bf446003ec20a583e76f7b15cebf3711" + +[[package]] +name = "serde" +version = "1.0.143" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53e8e5d5b70924f74ff5c6d64d9a5acd91422117c60f48c4e07855238a254553" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.143" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3d8e8de557aee63c26b85b947f5e59b690d0454c753f3adeb5cd7835ab88391" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38dd04e3c8279e75b31ef29dbdceebfe5ad89f4d0937213c53f7d49d01b3d5a7" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fe39d9fbb0ebf5eb2c7cb7e2a47e4f462fad1379f1166b8ae49ad9eae89a7ca" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89df7a26519371a3cce44fbb914c2819c84d9b897890987fa3ab096491cc0ea8" +dependencies = [ + "serde", + "serde_with_macros", +] + +[[package]] +name = "serde_with_macros" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de337f322382fcdfbb21a014f7c224ee041a23785651db67b9827403178f698f" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "sha-1" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.3", +] + +[[package]] +name = "signal-hook" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a253b5e89e2698464fc26b545c9edceb338e18a89effeeecfea192c3025be29d" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0ea32af43239f0d353a7dd75a22d94c329c8cdaafdcb4c1c1335aa10c298a4a" + +[[package]] +name = "slab" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" + +[[package]] +name = "snow" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "774d05a3edae07ce6d68ea6984f3c05e9bba8927e3dd591e3b479e5b03213d0d" +dependencies = [ + "aes-gcm", + "blake2", + "chacha20poly1305", + "curve25519-dalek 4.0.0-pre.2", + "rand_core 0.6.3", + "ring", + "rustc_version", + "sha2 0.10.2", + "subtle", +] + +[[package]] +name = "socket2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "soketto" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" +dependencies = [ + "base64", + "bytes", + "flate2", + "futures", + "httparse", + "log", + "rand 0.8.5", + "sha-1", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + +[[package]] +name = "syn" +version = "1.0.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "unicode-xid", +] + +[[package]] +name = "system-configuration" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75182f12f490e953596550b65ee31bda7c8e043d9386174b353bda50838c3fd" +dependencies = [ + "bitflags", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tempfile" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +dependencies = [ + "cfg-if", + "fastrand", + "libc", + "redox_syscall", + "remove_dir_all", + "winapi", +] + +[[package]] +name = "termcolor" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "testground" +version = "0.4.0" +source = "git+https://github.com/testground/sdk-rust?branch=master#b6aa70a32cdb31d27ee14a73b9e6fd325cf5fe1f" +dependencies = [ + "clap", + "futures", + "if-addrs", + "influxdb", + "ipnetwork 0.20.0", + "log", + "serde", + "serde_json", + "serde_repr", + "serde_with", + "soketto", + "thiserror", + "tokio", + "tokio-stream", + "tokio-util", +] + +[[package]] +name = "testplan" +version = "0.1.0" +dependencies = [ + "async-std", + "env_logger", + "futures", + "if-addrs", + "ipnetwork 0.19.0", + "libp2p 0.44.0", + "libp2p 0.45.1", + "libp2p 0.46.1", + "libp2p 0.47.0", + "log", + "rand 0.8.5", + "serde", + "serde_json", + "soketto", + "testground", + "thiserror", + "tokio", + "tokio-stream", + "tokio-util", +] + +[[package]] +name = "textwrap" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" + +[[package]] +name = "thiserror" +version = "1.0.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5f6586b7f764adc0231f4c79be7b920e766bb2f3e51b3661cdb263828f19994" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12bafc5b54507e0149cdf1b145a5d80ab80a90bcd9275df43d4fff68460f6c21" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] +name = "tokio" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a8325f63a7d4774dd041e363b2409ed1c5cbbd0f867795e661df066b2b0a581" +dependencies = [ + "autocfg", + "bytes", + "libc", + "memchr", + "mio", + "num_cpus", + "once_cell", + "pin-project-lite 0.2.9", + "socket2", + "tokio-macros", + "winapi", +] + +[[package]] +name = "tokio-macros" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-stream" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df54d54117d6fdc4e4fea40fe1e4e566b3505700e148a6827e59b34b0d2600d9" +dependencies = [ + "futures-core", + "pin-project-lite 0.2.9", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc463cd8deddc3770d20f9852143d50bf6094e640b485cb2e189a2099085ff45" +dependencies = [ + "bytes", + "futures-core", + "futures-io", + "futures-sink", + "pin-project-lite 0.2.9", + "tokio", + "tracing", +] + +[[package]] +name = "toml" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" +dependencies = [ + "serde", +] + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307" +dependencies = [ + "cfg-if", + "pin-project-lite 0.2.9", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7" +dependencies = [ + "once_cell", +] + +[[package]] +name = "trust-dns-proto" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c31f240f59877c3d4bb3b3ea0ec5a6a0cff07323580ff8c7a605cd7d08b255d" +dependencies = [ + "async-trait", + "cfg-if", + "data-encoding", + "enum-as-inner", + "futures-channel", + "futures-io", + "futures-util", + "idna", + "ipnet", + "lazy_static", + "log", + "rand 0.8.5", + "smallvec", + "thiserror", + "tinyvec", + "url", +] + +[[package]] +name = "trust-dns-resolver" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4ba72c2ea84515690c9fcef4c6c660bb9df3036ed1051686de84605b74fd558" +dependencies = [ + "cfg-if", + "futures-util", + "ipconfig", + "lazy_static", + "log", + "lru-cache", + "parking_lot", + "resolv-conf", + "smallvec", + "thiserror", + "trust-dns-proto", +] + +[[package]] +name = "try-lock" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" + +[[package]] +name = "typenum" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" + +[[package]] +name = "unicode-bidi" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" + +[[package]] +name = "unicode-ident" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aaf" + +[[package]] +name = "unicode-normalization" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" + +[[package]] +name = "unicode-xid" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04" + +[[package]] +name = "universal-hash" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "unsigned-varint" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d86a8dc7f45e4c1b0d30e43038c38f274e77af056aa5f74b93c2cf9eb3c1c836" +dependencies = [ + "asynchronous-codec", + "bytes", +] + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "url" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" +dependencies = [ + "form_urlencoded", + "idna", + "matches", + "percent-encoding", +] + +[[package]] +name = "value-bag" +version = "1.0.0-alpha.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55" +dependencies = [ + "ctor", + "version_check", +] + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + +[[package]] +name = "waker-fn" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" + +[[package]] +name = "want" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +dependencies = [ + "log", + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7652e3f6c4706c8d9cd54832c4a4ccb9b5336e2c3bd154d5cccfbf1c1f5f7d" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "662cd44805586bd52971b9586b1df85cdbbd9112e4ef4d8f41559c334dc6ac3f" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa76fb221a1f8acddf5b54ace85912606980ad661ac7a503b4570ffd3a624dad" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b260f13d3012071dfb1512849c033b1925038373aea48ced3012c09df952c602" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be8e654bdd9b79216c2929ab90721aa82faf65c48cdf08bdc4e7f51357b80da" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6598dd0bd3c7d51095ff6531a5b23e02acdc81804e30d8f07afb77b7215a140a" + +[[package]] +name = "web-sys" +version = "0.3.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed055ab27f941423197eb86b2035720b1a3ce40504df082cac2ecc6ed73335a1" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "webpki-roots" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1c760f0d366a6c24a02ed7816e23e691f5d92291f94d15e836006fd11b04daf" +dependencies = [ + "webpki", +] + +[[package]] +name = "wepoll-ffi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fb" +dependencies = [ + "cc", +] + +[[package]] +name = "which" +version = "4.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c4fb54e6113b6a8772ee41c3404fb0301ac79604489467e0a9ce1f3e97c24ae" +dependencies = [ + "either", + "lazy_static", + "libc", +] + +[[package]] +name = "widestring" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45296b64204227616fdbf2614cefa4c236b98ee64dfaaaa435207ed99fe7829f" +dependencies = [ + "windows_aarch64_msvc 0.34.0", + "windows_i686_gnu 0.34.0", + "windows_i686_msvc 0.34.0", + "windows_x86_64_gnu 0.34.0", + "windows_x86_64_msvc 0.34.0", +] + +[[package]] +name = "windows-sys" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +dependencies = [ + "windows_aarch64_msvc 0.36.1", + "windows_i686_gnu 0.36.1", + "windows_i686_msvc 0.36.1", + "windows_x86_64_gnu 0.36.1", + "windows_x86_64_msvc 0.36.1", +] + +[[package]] +name = "windows_aarch64_msvc" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881d" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" + +[[package]] +name = "windows_i686_gnu" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688ed" + +[[package]] +name = "windows_i686_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" + +[[package]] +name = "windows_i686_msvc" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956" + +[[package]] +name = "windows_i686_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" + +[[package]] +name = "winreg" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" +dependencies = [ + "winapi", +] + +[[package]] +name = "winreg" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +dependencies = [ + "winapi", +] + +[[package]] +name = "x25519-dalek" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2392b6b94a576b4e2bf3c5b2757d63f10ada8020a2e4d08ac849ebcf6ea8e077" +dependencies = [ + "curve25519-dalek 3.2.1", + "rand_core 0.5.1", + "zeroize", +] + +[[package]] +name = "yamux" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d9ba232399af1783a58d8eb26f6b5006fbefe2dc9ef36bd283324792d03ea5" +dependencies = [ + "futures", + "log", + "nohash-hasher", + "parking_lot", + "rand 0.8.5", + "static_assertions", +] + +[[package]] +name = "zeroize" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] diff --git a/ping/rust/Cargo.toml b/ping/rust/Cargo.toml new file mode 100644 index 000000000..60efb7131 --- /dev/null +++ b/ping/rust/Cargo.toml @@ -0,0 +1,26 @@ +[package] +edition = "2021" +name = "testplan" +version = "0.1.0" + +[dependencies] +async-std = {version = "1.10", features = ["attributes", "tokio1"]} +env_logger = "0.9.0" +if-addrs = "0.7.0" +ipnetwork = {version = "0.19.0", default-features = false, features = ["serde"]} +log = "0.4" +rand = "0.8" +serde = {version = "1", features = ["derive"]} +serde_json = "1" +soketto = "0.7.1" +testground = {git = "https://github.com/testground/sdk-rust", branch = "master", version = "0.4.0"} +thiserror = "1" +tokio = { version = "1", default-features = false, features = ["sync", "rt-multi-thread", "macros", "net"] } +tokio-stream = { version = "0.1", default-features = false, features = [] } +tokio-util = { version = "0.7", default-features = false, features = ["compat"] } +futures = "0.3.1" + +libp2pv0440 = {package = "libp2p", default_features = false, features = [ "websocket", "mplex", "yamux", "tcp-async-io", "ping", "noise", "dns-async-std" ], version = "0.44.0", optional = true} +libp2pv0450 = {package = "libp2p", default_features = false, features = [ "websocket", "mplex", "yamux", "tcp-async-io", "ping", "noise", "dns-async-std" ], version = "0.45.0", optional = true} +libp2pv0460 = {package = "libp2p", default_features = false, features = [ "websocket", "mplex", "yamux", "tcp-async-io", "ping", "noise", "dns-async-std" ], version = "0.46.0", optional = true} +libp2pv0470 = {package = "libp2p", git = "https://github.com/libp2p/rust-libp2p", branch = "master", default_features = false, features = [ "websocket", "mplex", "yamux", "tcp-async-io", "ping", "noise", "dns-async-std" ], version = "0.47.0", optional = true} diff --git a/ping/rust/Dockerfile b/ping/rust/Dockerfile new file mode 100644 index 000000000..57e20999e --- /dev/null +++ b/ping/rust/Dockerfile @@ -0,0 +1,46 @@ +FROM rust:1.62-bullseye as builder +WORKDIR /usr/src/testplan + +RUN apt-get update && apt-get install -y cmake protobuf-compiler + +ARG PLAN_PATH="./" + +# Cache dependencies between test runs, see testground examples. +RUN mkdir -p ./plan/src/ +RUN echo "fn main() { println!(\"If you see this message, you may want to clean up the target directory or the Docker build cache.\") }" > ./plan/src/main.rs +COPY ./plan/${PLAN_PATH}/Cargo.lock ./plan/${PLAN_PATH}/Cargo.toml ./plan/ + +RUN cd ./plan/ && \ + cargo update --dry-run && \ + cargo fetch && \ + # use a default feature to rely on docker caching. + cargo build --release --features "libp2pv0450" + +ARG CARGO_PATCH="" +ARG CARGO_REMOVE="" + +RUN if [ ! -z "${CARGO_REMOVE}" ]; then sed -i "s/^${CARGO_REMOVE}.*//" ./plan/Cargo.toml; fi +RUN echo "${CARGO_PATCH}" >> ./plan/Cargo.toml + +# Backup Cargo file to preserve patches. +RUN cp ./plan/Cargo.toml ./plan/Cargo.lock /tmp/ + +COPY ./plan/${PLAN_PATH} ./plan + +# This is in order to make sure `main.rs`s mtime timestamp is updated to avoid the dummy `main` +# remaining in the release binary. +# https://github.com/rust-lang/cargo/issues/9598 +RUN touch ./plan/src/main.rs + +RUN mv /tmp/Cargo.toml /tmp/Cargo.lock ./plan + +ARG CARGO_FEATURES="" + +RUN cd ./plan/ && \ + cargo build --release --features="${CARGO_FEATURES}" + +FROM debian:bullseye-slim +COPY --from=builder /usr/src/testplan/plan/target/release/testplan /usr/local/bin/testplan +EXPOSE 6060 +ENV RUST_BACKTRACE=1 +ENTRYPOINT ["testplan"] \ No newline at end of file diff --git a/ping/rust/manifest.toml b/ping/rust/manifest.toml new file mode 100644 index 000000000..f87e77afe --- /dev/null +++ b/ping/rust/manifest.toml @@ -0,0 +1,19 @@ +name = "compatibility-rust" + +[defaults] +builder = "docker:generic" +runner = "local:docker" + +[builders."docker:generic"] +enabled = true + +[runners."local:docker"] +enabled = true + +[[testcases]] +name = "ping" +instances = { min = 2, max = 10000, default = 5 } + + [testcases.params] + max_latency_ms = { type = "int", desc = "maximum value for random local link latency", unit = "ms", default = 1000 } + iterations = { type = "int", desc = "number of ping iterations we'll run against each peer", unit = "count", default = 5 } \ No newline at end of file diff --git a/ping/rust/src/main.rs b/ping/rust/src/main.rs new file mode 100644 index 000000000..7c96037ea --- /dev/null +++ b/ping/rust/src/main.rs @@ -0,0 +1,230 @@ +use std::borrow::Cow; +use std::collections::HashSet; +use std::str::FromStr; +use std::time::Duration; + +use env_logger::Env; +use log::info; +use rand::Rng; +use testground::network_conf::{ + FilterAction, LinkShape, NetworkConfiguration, RoutingPolicyType, DEFAULT_DATA_NETWORK, +}; + +pub mod libp2p { + #[cfg(all(feature = "libp2pv0470",))] + pub use libp2pv0470::*; + + #[cfg(all(feature = "libp2pv0460",))] + pub use libp2pv0460::*; + + #[cfg(all(feature = "libp2pv0450",))] + pub use libp2pv0450::*; + + #[cfg(all(feature = "libp2pv0440",))] + pub use libp2pv0440::*; +} + +use libp2p::futures::future::ready; +use libp2p::futures::{FutureExt, StreamExt}; +use libp2p::swarm::{Swarm, SwarmEvent}; +use libp2p::{development_transport, identity, multiaddr::Protocol, ping, Multiaddr, PeerId}; + +const LISTENING_PORT: u16 = 1234; + +#[async_std::main] +async fn main() -> Result<(), Box> { + env_logger::Builder::from_env(Env::default().default_filter_or("info")).init(); + + let client = testground::client::Client::new_and_init().await?; + + let mut swarm = { + let local_key = identity::Keypair::generate_ed25519(); + let local_peer_id = PeerId::from(local_key.public()); + info!("Local peer id: {:?}", local_peer_id); + + Swarm::new( + development_transport(local_key).await?, + ping::Behaviour::new( + ping::Config::new() + .with_interval(Duration::from_secs(10)) + .with_keep_alive(true), + ), + local_peer_id, + ) + }; + + let local_addr: Multiaddr = { + let ip_addr = match if_addrs::get_if_addrs() + .unwrap() + .into_iter() + .find(|iface| iface.name == "eth1") + .unwrap() + .addr + .ip() + { + std::net::IpAddr::V4(addr) => addr, + std::net::IpAddr::V6(_) => unimplemented!(), + }; + + Multiaddr::empty() + .with(Protocol::Ip4(ip_addr)) + .with(Protocol::Tcp(LISTENING_PORT)) + }; + + info!( + "Test instance, listening for incoming connections on: {:?}.", + local_addr + ); + swarm.listen_on(local_addr.clone())?; + match swarm.next().await.unwrap() { + SwarmEvent::NewListenAddr { address, .. } if address == local_addr => {} + e => panic!("Unexpected event {:?}", e), + } + + let mut address_stream = client + .subscribe("peers") + .await + .take(client.run_parameters().test_instance_count as usize) + .map(|a| { + let value = a.unwrap(); + let addr = value["Addrs"][0].as_str().unwrap(); + Multiaddr::from_str(addr).unwrap() + }) + // Note: we sidestep simultaneous connect issues by ONLY connecting to peers + // who published their addresses before us (this is enough to dedup and avoid + // two peers dialling each other at the same time). + // + // We can do this because sync service pubsub is ordered. + .take_while(|a| ready(a != &local_addr)); + + let payload = serde_json::json!({ + "ID": swarm.local_peer_id().to_string(), + "Addrs": [ + local_addr.to_string(), + ], + }); + + client.publish("peers", Cow::Owned(payload)).await?; + + while let Some(addr) = address_stream.next().await { + swarm.dial(addr).unwrap(); + } + + // Otherwise the testground background task gets blocked sending + // subscription upgrades to the backpressured channel. + drop(address_stream); + + info!("Wait to connect to each peer."); + let mut connected = HashSet::new(); + while connected.len() < client.run_parameters().test_instance_count as usize - 1 { + let event = swarm.next().await.unwrap(); + info!("Event: {:?}", event); + if let SwarmEvent::ConnectionEstablished { peer_id, .. } = event { + connected.insert(peer_id); + } + } + + signal_wait_and_drive_swarm(&client, &mut swarm, "connected".to_string()).await?; + + ping(&client, &mut swarm, "initial".to_string()).await?; + + let iterations: usize = client + .run_parameters() + .test_instance_params + .get("iterations") + .unwrap() + .parse() + .unwrap(); + let max_latency_ms: u64 = client + .run_parameters() + .test_instance_params + .get("max_latency_ms") + .unwrap() + .parse() + .unwrap(); + + for i in 1..iterations + 1 { + client.record_message(format!("⚡️ ITERATION ROUND {}", i)); + + let latency = Duration::from_millis(rand::thread_rng().gen_range(0..max_latency_ms)) + .as_nanos() + .try_into() + .unwrap(); + + let network_conf = NetworkConfiguration { + network: DEFAULT_DATA_NETWORK.to_owned(), + ipv4: None, + ipv6: None, + enable: true, + default: LinkShape { + latency, + jitter: 0, + bandwidth: 0, + filter: FilterAction::Accept, + loss: 0.0, + corrupt: 0.0, + corrupt_corr: 0.0, + reorder: 0.0, + reorder_corr: 0.0, + duplicate: 0.0, + duplicate_corr: 0.0, + }, + rules: None, + callback_state: format!("network-configured-{}", i), + callback_target: Some(client.run_parameters().test_instance_count), + routing_policy: RoutingPolicyType::AllowAll, + }; + + client.configure_network(network_conf).await.unwrap(); + + ping(&client, &mut swarm, format!("done-{}", i)).await?; + } + + client.record_success().await?; + + Ok(()) +} + +async fn ping( + client: &testground::client::Client, + swarm: &mut Swarm, + tag: String, +) -> Result<(), Box> { + info!("Wait to receive ping from each peer."); + let mut pinged = HashSet::new(); + while pinged.len() < client.run_parameters().test_instance_count as usize - 1 { + let event = swarm.next().await.unwrap(); + info!("Event: {:?}", event); + if let SwarmEvent::Behaviour(ping::PingEvent { + peer, + result: Ok(ping::PingSuccess::Ping { .. }), + }) = event + { + pinged.insert(peer); + } + } + + signal_wait_and_drive_swarm(client, swarm, tag).await +} + +async fn signal_wait_and_drive_swarm( + client: &testground::client::Client, + swarm: &mut Swarm, + tag: String, +) -> Result<(), Box> { + info!( + "Signal and wait for all peers to signal being done with \"{}\".", + tag + ); + swarm + .take_until( + client + .signal_and_wait(tag, client.run_parameters().test_instance_count) + .boxed_local(), + ) + .map(|event| info!("Event: {:?}", event)) + .collect::>() + .await; + + Ok(()) +}