diff --git a/.github/workflows/add-new-impl-versions.yml b/.github/workflows/add-new-impl-versions.yml new file mode 100644 index 000000000..fc62f4223 --- /dev/null +++ b/.github/workflows/add-new-impl-versions.yml @@ -0,0 +1,71 @@ +name: Add new implementation versions + +on: + workflow_dispatch: + schedule: + # “At minute 36 past every 24th hour.” - https://crontab.guru/#36_*/24_*_*_* + - cron: '36 */24 * * *' + +defaults: + run: + shell: bash + +permissions: + contents: write + pull-requests: write + actions: write + +jobs: + go: + runs-on: ubuntu-latest + env: + DIR: perf/impl/go-libp2p + REPO: libp2p/go-libp2p + BRANCH: perf/go-libp2p + steps: + - name: Checkout test-plans + uses: actions/checkout@v3 + - name: Configure git + run: | + git fetch origin $BRANCH && git checkout $BRANCH || git checkout -b $BRANCH + git rebase $GITHUB_REF -X theirs || git rebase --abort + git config --global user.email $GITHUB_ACTOR@users.noreply.github.com + git config --global user.name $GITHUB_ACTOR + - id: go + uses: actions/setup-go@v3 + with: + go-version: stable + - name: Get the latest version (local) + id: local + run: ls -d v* | sort -V | tail -n-1 | xargs -I{} echo "version={}" | tee -a $GITHUB_OUTPUT + working-directory: ${{ env.DIR }} + - name: Get the latest version (remote) + id: remote + env: + GITHUB_TOKEN: ${{ github.token }} + run: gh api repos/$REPO/releases/latest --jq '.tag_name' | xargs -I{} echo "version={}" | tee -a $GITHUB_OUTPUT + - name: Add the latest version + if: ${{ !startsWith(steps.remote.outputs.version, steps.local.outputs.version) }} + env: + LOCAL_VERSION: ${{ steps.local.outputs.version }} + REMOTE_VERSION: ${{ steps.remote.outputs.version }} + GO_VERSION: ${{ steps.go.outputs.go-version }} + GITHUB_TOKEN: ${{ github.token }} + run: | + majorMinorRemoteVersion=$(echo $REMOTE_VERSION | sed 's/\.[0-9]*$//') + majorMinorGoVersion=$(echo $GO_VERSION | sed 's/\.[0-9]*$//') + cp -r $LOCAL_VERSION $majorMinorRemoteVersion + cd $majorMinorRemoteVersion + sed -i "1s/$LOCAL_VERSION/$majorMinorRemoteVersion/g" go.mod + go mod tidy -go=$majorMinorGoVersion + go mod tidy + go get github.com/libp2p/go-libp2p@$REMOTE_VERSION + git add . + git commit -m "chore: add go-libp2p@$REMOTE_VERSION to $DIR" + git push origin $BRANCH --force + # create a PR if an open one doesn't exist yet + if [[ $(gh pr list --state open --base $GITHUB_REF --head $BRANCH | wc -l) -eq 0 ]]; then + gh pr create --title "chore: add go-libp2p@$REMOTE_VERSION to $DIR" --body "This PR adds go-libp2p@$REMOTE_VERSION to $DIR" --head $BRANCH --base $GITHUB_REF + fi + gh workflow run perf.yml --ref $BRANCH + working-directory: ${{ env.DIR }} diff --git a/.github/workflows/multidim-interop.yml b/.github/workflows/multidim-interop.yml index d65f54af3..b3ca55b47 100644 --- a/.github/workflows/multidim-interop.yml +++ b/.github/workflows/multidim-interop.yml @@ -1,9 +1,13 @@ on: workflow_dispatch: pull_request: + paths: + - 'multidim-interop/**' push: branches: - "master" + paths: + - 'multidim-interop/**' name: libp2p multidimensional interop test diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 17f513f55..ab0767ee6 100644 --- a/.github/workflows/perf.yml +++ b/.github/workflows/perf.yml @@ -84,10 +84,13 @@ jobs: working-directory: perf/runner - name: Push if: github.event.inputs.push == 'true' + env: + GITHUB_TOKEN: ${{ github.token }} run: | git add benchmark-results.json git commit -m "perf: update benchmark results" git push + gh pr comment --body "See new metrics at https://observablehq.com/@libp2p-workspace/performance-dashboard?branch=$(git rev-parse HEAD)" || true working-directory: perf/runner - name: Archive if: github.event.intputs.push == 'false' diff --git a/README.md b/README.md index fe9463a3b..b032a0705 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,17 @@ -# Interoperabilty and end to end test-plans for libp2p +# Interoperability/end to end test-plans & performance benchmarking for libp2p -[![Interop Dashboard](https://github.com/libp2p/test-plans/workflows/libp2p%20multidimensional%20interop%20test/badge.svg?branch=master)](https://github.com/libp2p/test-plans/actions/runs/5836246193/attempts/2#summary-15833587518) +[![Interop Dashboard](https://github.com/libp2p/test-plans/workflows/libp2p%20multidimensional%20interop%20test/badge.svg?branch=master)](https://github.com/libp2p/test-plans/actions/runs/6105882311/attempts/1#summary-16570044582) [![Made by Protocol Labs](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](http://protocol.ai) -This repository contains interoperability and end to end tests for libp2p modules across different implementations and versions. +This repository contains: +* interoperability and end to end tests for libp2p modules across different implementations and versions +* components to run performance benchmarks for different libp2p implementations -## Specs +## Multidimensional Interop +### Specs -Please see our first specification for interoperability tests between transports, multiplexers, and secure channels here: [Interoperability Test Specs](https://github.com/libp2p/test-plans/blob/master/multidim-interop/README.md) +Please see our first specification for interoperability tests between transports, multiplexers, and secure channels here: [Interoperability Test Specs](./multidim-interop/README.md) More specs to come soon! @@ -16,6 +19,10 @@ More specs to come soon! These test-plans historically used Testground. To read why we're now using `docker compose` instead please see: [Why we're moving away from Testground](https://github.com/libp2p/test-plans/issues/103) +## Performance Benchmarking + +Please see the [benchmarking README](./perf#libp2p-performance-benchmarking). + ## Roadmap Our roadmap for test-plans can be found here: https://github.com/libp2p/test-plans/blob/master/ROADMAP.md diff --git a/multidim-interop/README.md b/multidim-interop/README.md index 3dc23e2bb..ac190c6b4 100644 --- a/multidim-interop/README.md +++ b/multidim-interop/README.md @@ -30,6 +30,7 @@ The test should do two different things depending on if it's the dialer or listener. ## Running Locally + In some cases you may want to run locally when debugging, such as modifying internal dependencies. 1. To run the test locally, you'll also need to have docker installed in order to run the redis instance. Once docker is running, you can run the following command to start the redis instance: @@ -43,20 +44,20 @@ This will start a redis instance on port 6379. 2. Next, you'll need to install the dependencies and build the implementation for the test. In this and the next step we are using a JS implementation as an example, so you would run the following command: ```bash -cd impl/js/v0.xx.xx/ && npm i && npm run build +cd impl/js/v0.xx.xx/ && make ``` -3. Then you can run a dialer by running the following command, ensure that you pass the required environment variables, as well as any that may be of use for debugging: +3. Then you can run a listener by running the following command in this case we are running a rust listener: ```bash -DEBUG=*:yamux:trace transport=tcp muxer=yamux security=noise is_dialer=true npm run test -- -t node -``` + RUST_LOG=yamux=trace transport=tcp muxer=yamux security=noise is_dialer=false ip="0.0.0.0" redis_addr=localhost:6379 cargo run --package interop-tests + ``` -4. Finally you can run a listener by running the following command in this case where a running a rust listener: +3. Finally you can run a dialer by running the following command, ensure that you pass the required environment variables, as well as any that may be of use for debugging: ```bash - RUST_LOG=yamux=trace transport=tcp muxer=yamux security=noise is_dialer=false ip="0.0.0.0" redis_addr=localhost:6379 cargo run --package interop-tests - ``` +DEBUG=*:yamux:trace transport=tcp muxer=yamux security=noise is_dialer=true npm run test -- -t node +``` For more details on how to run a dialer vs a listener, see the sections below. diff --git a/multidim-interop/impl/go/v0.27/version.lock b/multidim-interop/impl/go/v0.27/version.lock deleted file mode 100644 index f8772f521..000000000 --- a/multidim-interop/impl/go/v0.27/version.lock +++ /dev/null @@ -1 +0,0 @@ -c8791847f0be31a1bc922ce396d77efe62dba491b3a884017662030027304c3d go-libp2p-0.27.9.zip diff --git a/multidim-interop/impl/go/v0.28/version.lock b/multidim-interop/impl/go/v0.28/version.lock deleted file mode 100644 index 3b6888316..000000000 --- a/multidim-interop/impl/go/v0.28/version.lock +++ /dev/null @@ -1 +0,0 @@ -0f71bbb4d1485a548e50d266ec8a31dbefb9339306c26e8b21691e94782c5075 go-libp2p-0.28.3.zip diff --git a/multidim-interop/impl/go/v0.28/Makefile b/multidim-interop/impl/go/v0.30/Makefile similarity index 95% rename from multidim-interop/impl/go/v0.28/Makefile rename to multidim-interop/impl/go/v0.30/Makefile index 266684b9e..67b913a6f 100644 --- a/multidim-interop/impl/go/v0.28/Makefile +++ b/multidim-interop/impl/go/v0.30/Makefile @@ -1,5 +1,5 @@ -image_name := go-v0.28 -version := 0.28.3 +image_name := go-v0.30 +version := 0.30.0 all: image.json diff --git a/multidim-interop/impl/go/v0.30/version.lock b/multidim-interop/impl/go/v0.30/version.lock new file mode 100644 index 000000000..4a4bba573 --- /dev/null +++ b/multidim-interop/impl/go/v0.30/version.lock @@ -0,0 +1 @@ +ce648ef713f6c68f9edf88e725605702ceb665ddc4c8a1b528f738a8689db1f3 go-libp2p-0.30.0.zip diff --git a/multidim-interop/impl/go/v0.27/Makefile b/multidim-interop/impl/go/v0.31/Makefile similarity index 95% rename from multidim-interop/impl/go/v0.27/Makefile rename to multidim-interop/impl/go/v0.31/Makefile index 7117881ce..9ff2dc1c8 100644 --- a/multidim-interop/impl/go/v0.27/Makefile +++ b/multidim-interop/impl/go/v0.31/Makefile @@ -1,5 +1,5 @@ -image_name := go-v0.27 -version := 0.27.9 +image_name := go-v0.31 +version := 0.31.0 all: image.json @@ -29,3 +29,4 @@ clean: rm image.json rm go-libp2p-*.zip rm -rf go-libp2p-* + diff --git a/multidim-interop/impl/go/v0.31/version.lock b/multidim-interop/impl/go/v0.31/version.lock new file mode 100644 index 000000000..ada269118 --- /dev/null +++ b/multidim-interop/impl/go/v0.31/version.lock @@ -0,0 +1 @@ +fab332959e47bc8c7c5ed870f1f138d782c169f75ecf35eb274b46fefa83e29b go-libp2p-0.31.0.zip diff --git a/multidim-interop/impl/rust/v0.52/Makefile b/multidim-interop/impl/rust/v0.52/Makefile index c18066738..87d2e8ee5 100644 --- a/multidim-interop/impl/rust/v0.52/Makefile +++ b/multidim-interop/impl/rust/v0.52/Makefile @@ -1,35 +1,23 @@ image_name := rust-v0.52 -version := 0.52.2 +commitSha := 54fa53af393adac83f9aab273c3d30efbc31ba57 all: image.json chromium-image.json -chromium-image.json: verify-checksum rust-libp2p-${version} - cd rust-libp2p-${version} && IMAGE_NAME=${image_name} ../../../../dockerBuildWrapper.sh -f interop-tests/Dockerfile.chromium . +chromium-image.json: rust-libp2p-${commitSha} + cd rust-libp2p-${commitSha} && IMAGE_NAME=${image_name} ../../../../dockerBuildWrapper.sh -f interop-tests/Dockerfile.chromium . docker image inspect ${image_name} -f "{{.Id}}" | \ xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ -image.json: verify-checksum rust-libp2p-${version} - cd rust-libp2p-${version} && IMAGE_NAME=${image_name} ../../../../dockerBuildWrapper.sh -f interop-tests/Dockerfile.native . +image.json: rust-libp2p-${commitSha} + cd rust-libp2p-${commitSha} && IMAGE_NAME=${image_name} ../../../../dockerBuildWrapper.sh -f interop-tests/Dockerfile.native . docker image inspect ${image_name} -f "{{.Id}}" | \ xargs -I {} echo "{\"imageID\": \"{}\"}" > $@ -rust-libp2p-${version}: rust-libp2p-${version}.zip - unzip -o rust-libp2p-${version}.zip - mv rust-libp2p-libp2p-v${version} rust-libp2p-${version} +rust-libp2p-${commitSha}: rust-libp2p-${commitSha}.zip + unzip -o rust-libp2p-${commitSha}.zip -rust-libp2p-${version}.zip: - wget -O $@ "https://github.com/libp2p/rust-libp2p/archive/libp2p-v${version}.zip" - -# Run `make version.lock` to generate this lock file. This file should be commited. -# This locks the exact contents of the specified version. This lets us use the -# human readable name while still making sure the contents don't change. -version.lock: rust-libp2p-${version}.zip - shasum -a 256 rust-libp2p-${version}.zip > $@ - -verify-checksum: rust-libp2p-${version}.zip - shasum -a 256 -c version.lock - -.PHONY: clean all verify-checksum +rust-libp2p-${commitSha}.zip: + wget -O $@ "https://github.com/libp2p/rust-libp2p/archive/${commitSha}.zip" clean: rm image.json diff --git a/multidim-interop/impl/rust/v0.52/version.lock b/multidim-interop/impl/rust/v0.52/version.lock deleted file mode 100644 index a0b372ad6..000000000 --- a/multidim-interop/impl/rust/v0.52/version.lock +++ /dev/null @@ -1 +0,0 @@ -d6235033673b133eead02b40ec56cb913da454c4113696d1e63283550aef9155 rust-libp2p-0.52.2.zip diff --git a/multidim-interop/versions.ts b/multidim-interop/versions.ts index 109830f82..162335406 100644 --- a/multidim-interop/versions.ts +++ b/multidim-interop/versions.ts @@ -84,31 +84,31 @@ export const versions: Array = [ { id: "chromium-js-v0.46", containerImageID: browserImageIDLookup, - transports: [{ name: "webtransport", onlyDial: true }, { name: "wss", onlyDial: true }, { name: "webrtc-direct", onlyDial: true }, "webrtc"], + transports: [{ name: "webtransport", onlyDial: true }, { name: "wss", onlyDial: true }, { name: "webrtc-direct", onlyDial: true }], secureChannels: ["noise"], muxers: ["mplex", "yamux"], }, { id: "firefox-js-v0.46", containerImageID: browserImageIDLookup, - transports: [{ name: "wss", onlyDial: true }, { name: "webrtc-direct", onlyDial: true }, "webrtc"], + transports: [{ name: "wss", onlyDial: true }, { name: "webrtc-direct", onlyDial: true }], secureChannels: ["noise"], muxers: ["mplex", "yamux"], }, { - id: "go-v0.29", - transports: ["tcp", "ws", "quic", "quic-v1", "webtransport"], + id: "go-v0.31", + transports: ["tcp", "ws", "quic-v1", "webtransport"], secureChannels: ["tls", "noise"], - muxers: ["mplex", "yamux"], + muxers: ["yamux"], }, { - id: "go-v0.28", - transports: ["tcp", "ws", "quic", "quic-v1", "webtransport"], + id: "go-v0.30", + transports: ["tcp", "ws", "quic-v1", "webtransport"], secureChannels: ["tls", "noise"], - muxers: ["mplex", "yamux"], + muxers: ["yamux"], }, { - id: "go-v0.27", + id: "go-v0.29", transports: ["tcp", "ws", "quic", "quic-v1", "webtransport"], secureChannels: ["tls", "noise"], muxers: ["mplex", "yamux"], diff --git a/perf/README.md b/perf/README.md index f063facb7..8ae94832d 100644 --- a/perf/README.md +++ b/perf/README.md @@ -15,7 +15,14 @@ Benchmark results can be visualized with https://observablehq.com/@libp2p-worksp 3. Wait for action run to finish and to push a commit to your branch. 4. Visualize results on https://observablehq.com/@libp2p-workspace/performance-dashboard. -## Running via local machine +## Running manually + +### Prerequisites + +- Terraform 1.5.4 or later +- Node.js 18 or later +- [an AWS IAM user](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html) + ### Provision infrastructure @@ -26,13 +33,27 @@ Benchmark results can be visualized with https://observablehq.com/@libp2p-worksp 5. `CLIENT_IP=$(terraform output -raw client_ip)` 6. `SERVER_IP=$(terraform output -raw server_ip)` -### Build and run implementations +**Notes** +- While running terraform you may encounter the following error: + ```bash + Error: collecting instance settings: reading EC2 Launch Template versions: couldn't find resource + │ + │ with module.short_lived_server[0].aws_instance.perf, + │ on ../../modules/short_lived/main.tf line 15, in resource "aws_instance" "perf": + │ 15: resource "aws_instance" "perf" { + ``` +- This implies that you haven't deployed the long-lived infrastructure on your AWS account. To do so along with each short-lived deployment, you can set *TF_VAR* [`long_lived_enabled`](./terraform/configs/local/terraform.tf#L42) env variable to default to `true`. Terraform should then spin up the long-lived resources that are required for the short-lived resources to be created. + +- It's best to destroy the infrastructure after you're done with your testing, you can do that by running `terraform destroy`. + +### Build and run libp2p implementations -_WARNING_: Running the perf tests might take a while. +Given you have provisioned your infrastructure, you can now build and run the libp2p implementations on the AWS instances. 1. `cd runner` 2. `npm ci` -3. `npm run start -- --client-public-ip $CLIENT_IP --server-public-ip $SERVER_IP` +3. `npm run start -- --client-public-ip $CLIENT_IP --server-public-ip $SERVER_IP` + * Note: The default number of iterations that perf will run is 10; desired iterations can be set with the `--iterations ` option. ### Deprovision infrastructure @@ -41,27 +62,28 @@ _WARNING_: Running the perf tests might take a while. ## Adding a new implementation or a new version -1. Add implementation to `impl/`. - - For a new implementation, create a folder `impl//` +1. Add the implementation to new subdirectory in [`impl/*`](./impl/). + - For a new implementation, create a folder `impl//` e.g. `go-libp2p` - For a new version of an existing implementation, create a folder `impl//`. - In that folder include a `Makefile` that builds an executable and stores it next to the `Makefile` under the name `perf`. - Requirements for the executable: - - Running as a libp2p-perf server - - Command line flags - - `--run-server` + - Running as a libp2p-perf server: + - The perf server must not exit as it will be closed by the test runner. + - The executable must accept the command flag `--run-server` which indicates it's running as server. - Running as a libp2p-perf client + - Given that perf is a client driven set of benchmarks, the performance will be measured by the client. - Input via command line - - `--server-ip-address` - - `--transport` (see `runner/versions.ts` for possible variants) + - `--server-address` + - `--transport` (see [`runner/versions.ts`](./runner/src/versions.ts#L7-L43) for possible variants) - `--upload-bytes` number of bytes to upload per stream. - `--download-bytes` number of bytes to download per stream. - Output - - Logging MUST go to stderr. - - Measurement output is printed to stdout as JSON in the form of: + - Logging MUST go to `stderr`. + - Measurement output is printed to `stdout` as JSON in the form of: ```json {"latency": 0.246442851} ``` Note that the measurement includes the time to (1) establish the connection, (2) upload the bytes and (3) download the bytes. -2. For a new implementation, in `impl/Makefile` include your implementation in the `all` target. -3. For a new version, reference version in `runner/src/versions.ts`. +2. For a new implementation, in [`impl/Makefile` include your implementation in the `all` target.](./impl/Makefile#L7) +3. For a new version, reference version in [`runner/src/versions.ts`](./runner/src/versions.ts#L7-L43). diff --git a/perf/impl/Makefile b/perf/impl/Makefile index 749f3a9a7..9f8006fab 100644 --- a/perf/impl/Makefile +++ b/perf/impl/Makefile @@ -1,15 +1,12 @@ GO_SUBDIRS := $(wildcard go-libp2p/*/.) RUST_SUBDIRS := $(wildcard rust-libp2p/*/.) -RUST_QUINN_SUBDIRS := $(wildcard rust-libp2p-quinn/*/.) HTTPS_SUBDIRS := $(wildcard https/*/.) QUIC_GO_SUBDIRS := $(wildcard quic-go/*/.) NIM_SUBDIRS := $(wildcard nim-libp2p/*/.) -all: $(RUST_SUBDIRS) $(RUST_QUINN_SUBDIRS) $(GO_SUBDIRS) $(HTTPS_SUBDIRS) $(QUIC_GO_SUBDIRS) +all: $(RUST_SUBDIRS) $(GO_SUBDIRS) $(HTTPS_SUBDIRS) $(QUIC_GO_SUBDIRS) $(RUST_SUBDIRS): $(MAKE) -C $@ -$(RUST_QUINN_SUBDIRS): - $(MAKE) -C $@ $(GO_SUBDIRS): $(MAKE) -C $@ $(HTTPS_SUBDIRS): @@ -19,9 +16,9 @@ $(QUIC_GO_SUBDIRS): $(NIM_SUBDIRS): $(MAKE) -C $@ -clean: $(RUST_SUBDIRS:%=%clean) $(RUST_QUINN_SUBDIRS:%=%clean) $(GO_SUBDIRS:%=%clean) $(HTTPS_SUBDIRS:%=%clean) $(QUIC_GO_SUBDIRS:%=%clean) $(NIM_SUBDIRS:%=%clean) +clean: $(RUST_SUBDIRS:%=%clean) $(GO_SUBDIRS:%=%clean) $(HTTPS_SUBDIRS:%=%clean) $(QUIC_GO_SUBDIRS:%=%clean) $(NIM_SUBDIRS:%=%clean) %clean: $(MAKE) -C $* clean -.PHONY: $(RUST_SUBDIRS) $(RUST_QUINN_SUBDIRS) $(GO_SUBDIRS) $(HTTPS_SUBDIRS) $(QUIC_GO_SUBDIRS) $(QUIC_GO_SUBDIRS) $(NIM_SUBDIRS) all clean +.PHONY: $(RUST_SUBDIRS) $(GO_SUBDIRS) $(HTTPS_SUBDIRS) $(QUIC_GO_SUBDIRS) $(NIM_SUBDIRS) all clean diff --git a/perf/impl/go-libp2p/v0.28/.gitignore b/perf/impl/go-libp2p/v0.28/.gitignore index 79512b46d..10cdd063f 100644 --- a/perf/impl/go-libp2p/v0.28/.gitignore +++ b/perf/impl/go-libp2p/v0.28/.gitignore @@ -1,3 +1,2 @@ perf .cache -v0.28 diff --git a/perf/impl/go-libp2p/v0.28/Dockerfile b/perf/impl/go-libp2p/v0.28/Dockerfile deleted file mode 100644 index 5bb5b5aae..000000000 --- a/perf/impl/go-libp2p/v0.28/Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -# Build Go Binary -FROM golang:1.20-alpine AS builder - -WORKDIR /app -COPY go.mod go.sum ./ -RUN go mod download -COPY *.go ./ -RUN go build -o perf . - -FROM alpine - -COPY --from=builder /app/perf /app/perf - -ENTRYPOINT [ "/app/perf" ] diff --git a/perf/impl/go-libp2p/v0.28/Makefile b/perf/impl/go-libp2p/v0.28/Makefile index b107948be..0b074b44a 100644 --- a/perf/impl/go-libp2p/v0.28/Makefile +++ b/perf/impl/go-libp2p/v0.28/Makefile @@ -3,11 +3,10 @@ GO_FILES := $(wildcard *.go) all: perf perf: $(GO_FILES) - docker run --rm --user "$(shell id -u):$(shell id -g)" -v "$(shell pwd)":/usr/src/myapp -w /usr/src/myapp -e GOCACHE=/usr/src/myapp/.cache golang:1.20 go build -o perf . + docker run --rm --user "$(shell id -u):$(shell id -g)" -v "$(shell pwd)":/usr/src/myapp -w /usr/src/myapp -e GOCACHE=/usr/src/myapp/.cache golang:$(shell awk '/^go [0-9]+(\.[0-9]+)?$$/ {print $$2}' go.mod) go build -o perf . clean: rm perf rm .cache - rm v0.28 .PHONY: all clean diff --git a/perf/impl/go-libp2p/v0.29/.gitignore b/perf/impl/go-libp2p/v0.29/.gitignore index a95b09721..10cdd063f 100644 --- a/perf/impl/go-libp2p/v0.29/.gitignore +++ b/perf/impl/go-libp2p/v0.29/.gitignore @@ -1,3 +1,2 @@ perf .cache -v0.29 diff --git a/perf/impl/go-libp2p/v0.29/Dockerfile b/perf/impl/go-libp2p/v0.29/Dockerfile deleted file mode 100644 index 5bb5b5aae..000000000 --- a/perf/impl/go-libp2p/v0.29/Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -# Build Go Binary -FROM golang:1.20-alpine AS builder - -WORKDIR /app -COPY go.mod go.sum ./ -RUN go mod download -COPY *.go ./ -RUN go build -o perf . - -FROM alpine - -COPY --from=builder /app/perf /app/perf - -ENTRYPOINT [ "/app/perf" ] diff --git a/perf/impl/go-libp2p/v0.29/Makefile b/perf/impl/go-libp2p/v0.29/Makefile index d9e79b069..a0207ada4 100644 --- a/perf/impl/go-libp2p/v0.29/Makefile +++ b/perf/impl/go-libp2p/v0.29/Makefile @@ -3,10 +3,9 @@ GO_FILES := $(wildcard *.go) all: perf perf: $(GO_FILES) - docker run --rm --user "$(shell id -u):$(shell id -g)" -v "$(shell pwd)":/usr/src/myapp -w /usr/src/myapp -e GOCACHE=/usr/src/myapp/.cache golang:1.20 go build -o perf . + docker run --rm --user "$(shell id -u):$(shell id -g)" -v "$(shell pwd)":/usr/src/myapp -w /usr/src/myapp -e GOCACHE=/usr/src/myapp/.cache golang:$(shell awk '/^go [0-9]+\.[0-9]+$$/ {print $$2}' go.mod) go build -o perf . clean: - rm v0.29 rm -r .cache rm perf diff --git a/perf/impl/go-libp2p/v0.31/.gitignore b/perf/impl/go-libp2p/v0.31/.gitignore new file mode 100644 index 000000000..10cdd063f --- /dev/null +++ b/perf/impl/go-libp2p/v0.31/.gitignore @@ -0,0 +1,2 @@ +perf +.cache diff --git a/perf/impl/go-libp2p/v0.31/Makefile b/perf/impl/go-libp2p/v0.31/Makefile new file mode 100644 index 000000000..a0207ada4 --- /dev/null +++ b/perf/impl/go-libp2p/v0.31/Makefile @@ -0,0 +1,12 @@ +GO_FILES := $(wildcard *.go) + +all: perf + +perf: $(GO_FILES) + docker run --rm --user "$(shell id -u):$(shell id -g)" -v "$(shell pwd)":/usr/src/myapp -w /usr/src/myapp -e GOCACHE=/usr/src/myapp/.cache golang:$(shell awk '/^go [0-9]+\.[0-9]+$$/ {print $$2}' go.mod) go build -o perf . + +clean: + rm -r .cache + rm perf + +.PHONY: all clean diff --git a/perf/impl/go-libp2p/v0.31/go.mod b/perf/impl/go-libp2p/v0.31/go.mod new file mode 100644 index 000000000..a18e78fbf --- /dev/null +++ b/perf/impl/go-libp2p/v0.31/go.mod @@ -0,0 +1,96 @@ +module github.com/libp2p/test-plans/perf/impl/go-libp2p/v0.31 + +go 1.21 + +toolchain go1.21.0 + +require ( + github.com/ipfs/go-log/v2 v2.5.1 + github.com/libp2p/go-buffer-pool v0.1.0 + github.com/libp2p/go-libp2p v0.31.0 + github.com/multiformats/go-multiaddr v0.11.0 +) + +require ( + github.com/benbjohnson/clock v1.3.5 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/containerd/cgroups v1.1.0 // indirect + github.com/coreos/go-systemd/v22 v22.5.0 // indirect + github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect + github.com/docker/go-units v0.5.0 // indirect + github.com/elastic/gosigar v0.14.2 // indirect + github.com/flynn/noise v1.0.0 // indirect + github.com/francoispqt/gojay v1.2.13 // indirect + github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect + github.com/godbus/dbus/v5 v5.1.0 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/mock v1.6.0 // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/google/gopacket v1.1.19 // indirect + github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b // indirect + github.com/gorilla/websocket v1.5.0 // indirect + github.com/huin/goupnp v1.2.0 // indirect + github.com/ipfs/go-cid v0.4.1 // indirect + github.com/jackpal/go-nat-pmp v1.0.2 // indirect + github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect + github.com/klauspost/compress v1.16.7 // indirect + github.com/klauspost/cpuid/v2 v2.2.5 // indirect + github.com/koron/go-ssdp v0.0.4 // indirect + github.com/libp2p/go-cidranger v1.1.0 // indirect + github.com/libp2p/go-flow-metrics v0.1.0 // indirect + github.com/libp2p/go-libp2p-asn-util v0.3.0 // indirect + github.com/libp2p/go-msgio v0.3.0 // indirect + github.com/libp2p/go-nat v0.2.0 // indirect + github.com/libp2p/go-netroute v0.2.1 // indirect + github.com/libp2p/go-reuseport v0.4.0 // indirect + github.com/libp2p/go-yamux/v4 v4.0.1 // indirect + github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect + github.com/mattn/go-isatty v0.0.19 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/miekg/dns v1.1.55 // indirect + github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect + github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect + github.com/minio/sha256-simd v1.0.1 // indirect + github.com/mr-tron/base58 v1.2.0 // indirect + github.com/multiformats/go-base32 v0.1.0 // indirect + github.com/multiformats/go-base36 v0.2.0 // indirect + github.com/multiformats/go-multiaddr-dns v0.3.1 // indirect + github.com/multiformats/go-multiaddr-fmt v0.1.0 // indirect + github.com/multiformats/go-multibase v0.2.0 // indirect + github.com/multiformats/go-multicodec v0.9.0 // indirect + github.com/multiformats/go-multihash v0.2.3 // indirect + github.com/multiformats/go-multistream v0.4.1 // indirect + github.com/multiformats/go-varint v0.0.7 // indirect + github.com/onsi/ginkgo/v2 v2.11.0 // indirect + github.com/opencontainers/runtime-spec v1.1.0 // indirect + github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/prometheus/client_golang v1.14.0 // indirect + github.com/prometheus/client_model v0.4.0 // indirect + github.com/prometheus/common v0.42.0 // indirect + github.com/prometheus/procfs v0.9.0 // indirect + github.com/quic-go/qpack v0.4.0 // indirect + github.com/quic-go/qtls-go1-19 v0.3.2 // indirect + github.com/quic-go/qtls-go1-20 v0.3.3 // indirect + github.com/quic-go/quic-go v0.38.1 // indirect + github.com/quic-go/webtransport-go v0.5.3 // indirect + github.com/raulk/go-watchdog v1.3.0 // indirect + github.com/spaolacci/murmur3 v1.1.0 // indirect + go.uber.org/atomic v1.11.0 // indirect + go.uber.org/dig v1.17.0 // indirect + go.uber.org/fx v1.20.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.25.0 // indirect + golang.org/x/crypto v0.12.0 // indirect + golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect + golang.org/x/mod v0.12.0 // indirect + golang.org/x/net v0.14.0 // indirect + golang.org/x/sync v0.3.0 // indirect + golang.org/x/sys v0.11.0 // indirect + golang.org/x/text v0.12.0 // indirect + golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 // indirect + google.golang.org/protobuf v1.30.0 // indirect + lukechampine.com/blake3 v1.2.1 // indirect +) diff --git a/perf/impl/go-libp2p/v0.31/go.sum b/perf/impl/go-libp2p/v0.31/go.sum new file mode 100644 index 000000000..2405febeb --- /dev/null +++ b/perf/impl/go-libp2p/v0.31/go.sum @@ -0,0 +1,487 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.37.0/go.mod h1:TS1dMSSfndXH133OKGwekG838Om/cQT0BUHV3HcBgoo= +dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= +dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= +dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= +dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= +git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= +github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= +github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/containerd/cgroups v0.0.0-20201119153540-4cbc285b3327/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= +github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= +github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= +github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= +github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c h1:pFUpOrbxDR6AkioZ1ySsx5yxlDQZ8stG2b88gTPxgJU= +github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6UhI8N9EjYm1c2odKpFpAYeR8dsBeM7PtzQhRgxRr9U= +github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= +github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/elastic/gosigar v0.12.0/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= +github.com/elastic/gosigar v0.14.2 h1:Dg80n8cr90OZ7x+bAax/QjoW/XqTI11RmA79ZwIm9/4= +github.com/elastic/gosigar v0.14.2/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= +github.com/flynn/noise v1.0.0 h1:DlTHqmzmvcEiKj+4RYo/imoswx/4r6iBlCMfVtrMXpQ= +github.com/flynn/noise v1.0.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= +github.com/francoispqt/gojay v1.2.13 h1:d2m3sFjloqoIUQU3TsHBgj6qg/BVGlTBeHDUmyJnXKk= +github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= +github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8= +github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8 h1:n6vlPhxsA+BW/XsS5+uqi7GyzaLa5MH7qlSLBZtRdiA= +github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8/go.mod h1:Jh3hGz2jkYak8qXPD19ryItVnUgpgeqzdkY/D0EaeuA= +github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b h1:h9U78+dx9a4BKdQkBBos92HalKpaGKHrp+3Uo6yTodo= +github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= +github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= +github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/huin/goupnp v1.2.0 h1:uOKW26NG1hsSSbXIZ1IR7XP9Gjd1U8pnLaCMgntmkmY= +github.com/huin/goupnp v1.2.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= +github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= +github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk= +github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ6cOk= +github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps= +github.com/ipfs/go-log/v2 v2.5.1 h1:1XdUzF7048prq4aBjDQQ4SL5RxftpRGdXhNRwKSAlcY= +github.com/ipfs/go-log/v2 v2.5.1/go.mod h1:prSpmC1Gpllc9UYWxDiZDreBYw7zp4Iqp1kOLU9U5UI= +github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= +github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/jbenet/go-temp-err-catcher v0.1.0 h1:zpb3ZH6wIE8Shj2sKS+khgRvf7T7RABoLk/+KKHggpk= +github.com/jbenet/go-temp-err-catcher v0.1.0/go.mod h1:0kJRvmDZXNMIiJirNPEYfhpPwbGVtZVWC34vc5WLsDk= +github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I= +github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= +github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/koron/go-ssdp v0.0.4 h1:1IDwrghSKYM7yLf7XCzbByg2sJ/JcNOZRXS2jczTwz0= +github.com/koron/go-ssdp v0.0.4/go.mod h1:oDXq+E5IL5q0U8uSBcoAXzTzInwy5lEgC91HoKtbmZk= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= +github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= +github.com/libp2p/go-cidranger v1.1.0 h1:ewPN8EZ0dd1LSnrtuwd4709PXVcITVeuwbag38yPW7c= +github.com/libp2p/go-cidranger v1.1.0/go.mod h1:KWZTfSr+r9qEo9OkI9/SIEeAtw+NNoU0dXIXt15Okic= +github.com/libp2p/go-flow-metrics v0.1.0 h1:0iPhMI8PskQwzh57jB9WxIuIOQ0r+15PChFGkx3Q3WM= +github.com/libp2p/go-flow-metrics v0.1.0/go.mod h1:4Xi8MX8wj5aWNDAZttg6UPmc0ZrnFNsMtpsYUClFtro= +github.com/libp2p/go-libp2p v0.29.0 h1:QduJ2XQr/Crg4EnloueWDL0Jj86N3Ezhyyj7XH+XwHI= +github.com/libp2p/go-libp2p v0.29.0/go.mod h1:iNKL7mEnZ9wAss+03IjAwM9ZAQXfVUAPUUmOACQfQ/g= +github.com/libp2p/go-libp2p v0.31.0 h1:LFShhP8F6xthWiBBq3euxbKjZsoRajVEyBS9snfHxYg= +github.com/libp2p/go-libp2p v0.31.0/go.mod h1:W/FEK1c/t04PbRH3fA9i5oucu5YcgrG0JVoBWT1B7Eg= +github.com/libp2p/go-libp2p-asn-util v0.3.0 h1:gMDcMyYiZKkocGXDQ5nsUQyquC9+H+iLEQHwOCZ7s8s= +github.com/libp2p/go-libp2p-asn-util v0.3.0/go.mod h1:B1mcOrKUE35Xq/ASTmQ4tN3LNzVVaMNmq2NACuqyB9w= +github.com/libp2p/go-libp2p-testing v0.12.0 h1:EPvBb4kKMWO29qP4mZGyhVzUyR25dvfUIK5WDu6iPUA= +github.com/libp2p/go-libp2p-testing v0.12.0/go.mod h1:KcGDRXyN7sQCllucn1cOOS+Dmm7ujhfEyXQL5lvkcPg= +github.com/libp2p/go-msgio v0.3.0 h1:mf3Z8B1xcFN314sWX+2vOTShIE0Mmn2TXn3YCUQGNj0= +github.com/libp2p/go-msgio v0.3.0/go.mod h1:nyRM819GmVaF9LX3l03RMh10QdOroF++NBbxAb0mmDM= +github.com/libp2p/go-nat v0.2.0 h1:Tyz+bUFAYqGyJ/ppPPymMGbIgNRH+WqC5QrT5fKrrGk= +github.com/libp2p/go-nat v0.2.0/go.mod h1:3MJr+GRpRkyT65EpVPBstXLvOlAPzUVlG6Pwg9ohLJk= +github.com/libp2p/go-netroute v0.2.1 h1:V8kVrpD8GK0Riv15/7VN6RbUQ3URNZVosw7H2v9tksU= +github.com/libp2p/go-netroute v0.2.1/go.mod h1:hraioZr0fhBjG0ZRXJJ6Zj2IVEVNx6tDTFQfSmcq7mQ= +github.com/libp2p/go-reuseport v0.3.0 h1:iiZslO5byUYZEg9iCwJGf5h+sf1Agmqx2V2FDjPyvUw= +github.com/libp2p/go-reuseport v0.3.0/go.mod h1:laea40AimhtfEqysZ71UpYj4S+R9VpH8PgqLo7L+SwI= +github.com/libp2p/go-reuseport v0.4.0 h1:nR5KU7hD0WxXCJbmw7r2rhRYruNRl2koHw8fQscQm2s= +github.com/libp2p/go-reuseport v0.4.0/go.mod h1:ZtI03j/wO5hZVDFo2jKywN6bYKWLOy8Se6DrI2E1cLU= +github.com/libp2p/go-yamux/v4 v4.0.1 h1:FfDR4S1wj6Bw2Pqbc8Uz7pCxeRBPbwsBbEdfwiCypkQ= +github.com/libp2p/go-yamux/v4 v4.0.1/go.mod h1:NWjl8ZTLOGlozrXSOZ/HlfG++39iKNnM5wwmtQP1YB4= +github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= +github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd h1:br0buuQ854V8u83wA0rVZ8ttrq5CpaPZdvrK0LP2lOk= +github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd/go.mod h1:QuCEs1Nt24+FYQEqAAncTDPJIuGs+LxK1MCiFL25pMU= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= +github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= +github.com/miekg/dns v1.1.55 h1:GoQ4hpsj0nFLYe+bWiCToyrBEJXkQfOOIvFGFy0lEgo= +github.com/miekg/dns v1.1.55/go.mod h1:uInx36IzPl7FYnDcMeVWxj9byh7DutNykX4G9Sj60FY= +github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c h1:bzE/A84HN25pxAuk9Eej1Kz9OUelF97nAc82bDquQI8= +github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c/go.mod h1:0SQS9kMwD2VsyFEB++InYyBJroV/FRmBgcydeSUcJms= +github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b h1:z78hV3sbSMAUoyUMM0I83AUIT6Hu17AWfgjzIbtrYFc= +github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b/go.mod h1:lxPUiZwKoFL8DUUmalo2yJJUCxbPKtm8OKfqr2/FTNU= +github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc h1:PTfri+PuQmWDqERdnNMiD9ZejrlswWrCpBEZgWOiTrc= +github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc/go.mod h1:cGKTAVKx4SxOuR/czcZ/E2RSJ3sfHs8FpHhQ5CWMf9s= +github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= +github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= +github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= +github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= +github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= +github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI= +github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0= +github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= +github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo= +github.com/multiformats/go-multiaddr v0.2.0/go.mod h1:0nO36NvPpyV4QzvTLi/lafl2y95ncPj0vFwVF6k6wJ4= +github.com/multiformats/go-multiaddr v0.10.1 h1:HghtFrWyZEPrpTvgAMFJi6gFdgHfs2cb0pyfDsk+lqU= +github.com/multiformats/go-multiaddr v0.10.1/go.mod h1:jLEZsA61rwWNZQTHHnqq2HNa+4os/Hz54eqiRnsRqYQ= +github.com/multiformats/go-multiaddr v0.11.0 h1:XqGyJ8ufbCE0HmTDwx2kPdsrQ36AGPZNZX6s6xfJH10= +github.com/multiformats/go-multiaddr v0.11.0/go.mod h1:gWUm0QLR4thQ6+ZF6SXUw8YjtwQSPapICM+NmCkxHSM= +github.com/multiformats/go-multiaddr-dns v0.3.1 h1:QgQgR+LQVt3NPTjbrLLpsaT2ufAA2y0Mkk+QRVJbW3A= +github.com/multiformats/go-multiaddr-dns v0.3.1/go.mod h1:G/245BRQ6FJGmryJCrOuTdB37AMA5AMOVuO6NY3JwTk= +github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E= +github.com/multiformats/go-multiaddr-fmt v0.1.0/go.mod h1:hGtDIW4PU4BqJ50gW2quDuPVjyWNZxToGUh/HwTZYJo= +github.com/multiformats/go-multibase v0.2.0 h1:isdYCVLvksgWlMW9OZRYJEa9pZETFivncJHmHnnd87g= +github.com/multiformats/go-multibase v0.2.0/go.mod h1:bFBZX4lKCA/2lyOFSAoKH5SS6oPyjtnzK/XTFDPkNuk= +github.com/multiformats/go-multicodec v0.9.0 h1:pb/dlPnzee/Sxv/j4PmkDRxCOi3hXTz3IbPKOXWJkmg= +github.com/multiformats/go-multicodec v0.9.0/go.mod h1:L3QTQvMIaVBkXOXXtVmYE+LI16i14xuaojr/H7Ai54k= +github.com/multiformats/go-multihash v0.0.8/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= +github.com/multiformats/go-multihash v0.2.3 h1:7Lyc8XfX/IY2jWb/gI7JP+o7JEq9hOa7BFvVU9RSh+U= +github.com/multiformats/go-multihash v0.2.3/go.mod h1:dXgKXCXjBzdscBLk9JkjINiEsCKRVch90MdaGiKsvSM= +github.com/multiformats/go-multistream v0.4.1 h1:rFy0Iiyn3YT0asivDUIR05leAdwZq3de4741sbiSdfo= +github.com/multiformats/go-multistream v0.4.1/go.mod h1:Mz5eykRVAjJWckE2U78c6xqdtyNUEhKSM0Lwar2p77Q= +github.com/multiformats/go-varint v0.0.1/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= +github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= +github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= +github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= +github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU= +github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM= +github.com/onsi/gomega v1.27.8 h1:gegWiwZjBsf2DgiSbf5hpokZ98JVDMcWkUiigk6/KXc= +github.com/onsi/gomega v1.27.8/go.mod h1:2J8vzI/s+2shY9XHRApDkdgPo1TKT7P2u6fXeJKFnNQ= +github.com/opencontainers/runtime-spec v1.0.2 h1:UfAcuLBJB9Coz72x1hgl8O5RVzTdNiaglX6v2DM6FI0= +github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.1.0 h1:HHUyrt9mwHUjtasSbXSMvs4cyFxh+Bll4AjJ9odEGpg= +github.com/opencontainers/runtime-spec v1.1.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= +github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0= +github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= +github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= +github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= +github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= +github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= +github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= +github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= +github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= +github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= +github.com/quic-go/qtls-go1-19 v0.3.2 h1:tFxjCFcTQzK+oMxG6Zcvp4Dq8dx4yD3dDiIiyc86Z5U= +github.com/quic-go/qtls-go1-19 v0.3.2/go.mod h1:ySOI96ew8lnoKPtSqx2BlI5wCpUVPT05RMAlajtnyOI= +github.com/quic-go/qtls-go1-20 v0.2.2 h1:WLOPx6OY/hxtTxKV1Zrq20FtXtDEkeY00CGQm8GEa3E= +github.com/quic-go/qtls-go1-20 v0.2.2/go.mod h1:JKtK6mjbAVcUTN/9jZpvLbGxvdWIKS8uT7EiStoU1SM= +github.com/quic-go/qtls-go1-20 v0.3.3 h1:17/glZSLI9P9fDAeyCHBFSWSqJcwx1byhLwP5eUIDCM= +github.com/quic-go/qtls-go1-20 v0.3.3/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k= +github.com/quic-go/quic-go v0.36.2 h1:ZX/UNQ4gvpCv2RmwdbA6lrRjF6EBm5yZ7TMoT4NQVrA= +github.com/quic-go/quic-go v0.36.2/go.mod h1:zPetvwDlILVxt15n3hr3Gf/I3mDf7LpLKPhR4Ez0AZQ= +github.com/quic-go/quic-go v0.38.1 h1:M36YWA5dEhEeT+slOu/SwMEucbYd0YFidxG3KlGPZaE= +github.com/quic-go/quic-go v0.38.1/go.mod h1:ijnZM7JsFIkp4cRyjxJNIzdSfCLmUMg9wdyhGmg+SN4= +github.com/quic-go/webtransport-go v0.5.3 h1:5XMlzemqB4qmOlgIus5zB45AcZ2kCgCy2EptUrfOPWU= +github.com/quic-go/webtransport-go v0.5.3/go.mod h1:OhmmgJIzTTqXK5xvtuX0oBpLV2GkLWNDA+UeTGJXErU= +github.com/raulk/go-watchdog v1.3.0 h1:oUmdlHxdkXRJlwfG0O9omj8ukerm8MEQavSiDTEtBsk= +github.com/raulk/go-watchdog v1.3.0/go.mod h1:fIvOnLbF0b0ZwkB9YU4mOW9Did//4vPZtDqv66NfsMU= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= +github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= +github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0= +github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= +github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= +github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw= +github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI= +github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= +github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= +github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg= +github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw= +github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y= +github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= +github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q= +github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ= +github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I= +github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0= +github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= +github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk= +github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= +github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= +github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= +github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= +github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= +github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= +github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/dig v1.17.0 h1:5Chju+tUvcC+N7N6EV08BJz41UZuO3BmHcN4A287ZLI= +go.uber.org/dig v1.17.0/go.mod h1:rTxpf7l5I0eBTlE6/9RL+lDybC7WFwY2QH55ZSjy1mU= +go.uber.org/fx v1.20.0 h1:ZMC/pnRvhsthOZh9MZjMq5U8Or3mA9zBSPaLnzs3ihQ= +go.uber.org/fx v1.20.0/go.mod h1:qCUj0btiR3/JnanEr1TYEePfSw6o/4qYJscgvzQ5Ub0= +go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= +go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= +go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= +go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= +go.uber.org/zap v1.25.0 h1:4Hvk6GtkucQ790dqmj7l1eEnRdKm3k3ZUrUMS2d5+5c= +go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk= +go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= +golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= +golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200602180216-279210d13fed/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= +golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= +golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1 h1:MGwJjxBy0HJshjDNfLsYO8xppfqWlA5ZT9OhtUUhTNw= +golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= +golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 h1:m64FZMko/V45gv0bNmrNYoDEq8U5YUhetc9cBWKS1TQ= +golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63/go.mod h1:0v4NqG35kSWCMzLaMeX+IQrlSnVE/bqGSyC2cz/9Le8= +golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190313220215-9f648a60d977/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= +golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= +golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sys v0.0.0-20180810173357-98c5dad5d1a0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190316082340-a2f829d7f35f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= +golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= +golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.11.0 h1:EMCa6U9S2LtZXLAMoWiR/R8dAQFRqbAitmbJ2UKhoi8= +golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= +golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 h1:Vve/L0v7CXXuxUmaMGIEK/dEeq7uiqb5qBgQrZzIE7E= +golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= +google.golang.org/genproto v0.0.0-20190306203927-b5d61aea6440/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI= +lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= +sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= +sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/perf/impl/go-libp2p/v0.31/main.go b/perf/impl/go-libp2p/v0.31/main.go new file mode 100644 index 000000000..cd05a205e --- /dev/null +++ b/perf/impl/go-libp2p/v0.31/main.go @@ -0,0 +1,114 @@ +package main + +import ( + "context" + "encoding/json" + "flag" + "fmt" + "net" + "time" + + "github.com/libp2p/go-libp2p" + "github.com/libp2p/go-libp2p/core/crypto" + "github.com/libp2p/go-libp2p/core/peer" + "github.com/multiformats/go-multiaddr" +) + +func main() { + runServer := flag.Bool("run-server", false, "Should run as server") + serverAddr := flag.String("server-address", "", "Server address") + transport := flag.String("transport", "tcp", "Transport to use") + uploadBytes := flag.Uint64("upload-bytes", 0, "Upload bytes") + downloadBytes := flag.Uint64("download-bytes", 0, "Download bytes") + flag.Parse() + + host, port, err := net.SplitHostPort(*serverAddr) + if err != nil { + log.Fatal(err) + } + + tcpMultiAddrStr := fmt.Sprintf("/ip4/%s/tcp/%s", host, port) + quicMultiAddrStr := fmt.Sprintf("/ip4/%s/udp/%s/quic-v1", host, port) + + var opts []libp2p.Option + if *runServer { + opts = append(opts, libp2p.ListenAddrStrings(tcpMultiAddrStr, quicMultiAddrStr)) + + // Generate stable fake identity. + // + // Using a stable identity (i.e. peer ID) allows the client to + // connect to the server without a prior exchange of the + // server's peer ID. + priv, _, err := crypto.GenerateEd25519Key(&simpleReader{seed: 0}) + if err != nil { + log.Fatalf("failed to generate key: %s", err) + } + opts = append(opts, libp2p.Identity(priv)) + } + + h, err := libp2p.New(opts...) + if err != nil { + log.Fatalf("failed to instantiate libp2p: %s", err) + } + + perf := NewPerfService(h) + if *runServer { + for _, a := range h.Addrs() { + fmt.Println(a.Encapsulate(multiaddr.StringCast("/p2p/" + h.ID().String()))) + } + + select {} // run forever, exit on interrupt + } + + var multiAddrStr string + switch *transport { + case "tcp": + multiAddrStr = tcpMultiAddrStr + case "quic-v1": + multiAddrStr = quicMultiAddrStr + default: + fmt.Println("Invalid transport. Accepted values: 'tcp' or 'quic-v1'") + return + } + // Peer ID corresponds to the above fake identity. + multiAddrStr = multiAddrStr + "/p2p/12D3KooWDpJ7As7BWAwRMfu1VU2WCqNjvq387JEYKDBj4kx6nXTN" + serverInfo, err := peer.AddrInfoFromString(multiAddrStr) + if err != nil { + log.Fatalf("failed to build address info: %s", err) + } + + start := time.Now() + err = h.Connect(context.Background(), *serverInfo) + if err != nil { + log.Fatalf("failed to dial peer: %s", err) + } + + err = perf.RunPerf(context.Background(), serverInfo.ID, uint64(*uploadBytes), uint64(*downloadBytes)) + if err != nil { + log.Fatalf("failed to execute perf: %s", err) + } + + jsonB, err := json.Marshal(Result{ + Latency: time.Since(start).Seconds(), + }) + if err != nil { + log.Fatalf("failed to marshal perf result: %s", err) + } + + fmt.Println(string(jsonB)) +} + +type Result struct { + Latency float64 `json:"latency"` +} + +type simpleReader struct { + seed uint8 +} + +func (r *simpleReader) Read(p []byte) (n int, err error) { + for i := range p { + p[i] = r.seed + } + return len(p), nil +} diff --git a/perf/impl/go-libp2p/v0.31/perf.go b/perf/impl/go-libp2p/v0.31/perf.go new file mode 100644 index 000000000..55f8ad38b --- /dev/null +++ b/perf/impl/go-libp2p/v0.31/perf.go @@ -0,0 +1,114 @@ +package main + +import ( + "context" + "encoding/binary" + "fmt" + "io" + + logging "github.com/ipfs/go-log/v2" + pool "github.com/libp2p/go-buffer-pool" + "github.com/libp2p/go-libp2p/core/host" + "github.com/libp2p/go-libp2p/core/network" + "github.com/libp2p/go-libp2p/core/peer" +) + +var log = logging.Logger("perf") + +const ( + ID = "/perf/1.0.0" + blockSize = 64 << 10 +) + +type PerfService struct { + Host host.Host +} + +func NewPerfService(h host.Host) *PerfService { + ps := &PerfService{h} + h.SetStreamHandler(ID, ps.PerfHandler) + return ps +} + +func (ps *PerfService) PerfHandler(s network.Stream) { + u64Buf := make([]byte, 8) + if _, err := io.ReadFull(s, u64Buf); err != nil { + log.Errorw("err", err) + s.Reset() + return + } + + bytesToSend := binary.BigEndian.Uint64(u64Buf) + + if _, err := drainStream(s); err != nil { + log.Errorw("err", err) + s.Reset() + return + } + + if err := sendBytes(s, bytesToSend); err != nil { + log.Errorw("err", err) + s.Reset() + return + } + s.CloseWrite() +} + +func (ps *PerfService) RunPerf(ctx context.Context, p peer.ID, bytesToSend uint64, bytesToRecv uint64) error { + s, err := ps.Host.NewStream(ctx, p, ID) + if err != nil { + return err + } + + sizeBuf := make([]byte, 8) + binary.BigEndian.PutUint64(sizeBuf, bytesToRecv) + + _, err = s.Write(sizeBuf) + if err != nil { + return err + } + + if err := sendBytes(s, bytesToSend); err != nil { + return err + } + s.CloseWrite() + + recvd, err := drainStream(s) + if err != nil { + return err + } + + if recvd != bytesToRecv { + return fmt.Errorf("expected to recv %d bytes, got %d", bytesToRecv, recvd) + } + + return nil +} + +func sendBytes(s io.Writer, bytesToSend uint64) error { + buf := pool.Get(blockSize) + defer pool.Put(buf) + + for bytesToSend > 0 { + toSend := buf + if bytesToSend < blockSize { + toSend = buf[:bytesToSend] + } + + n, err := s.Write(toSend) + if err != nil { + return err + } + bytesToSend -= uint64(n) + } + return nil +} + +func drainStream(s io.Reader) (uint64, error) { + var recvd int64 + recvd, err := io.Copy(io.Discard, s) + if err != nil && err != io.EOF { + return uint64(recvd), err + } + return uint64(recvd), nil +} diff --git a/perf/impl/rust-libp2p/master/Makefile b/perf/impl/rust-libp2p/master/Makefile deleted file mode 100644 index d56c78750..000000000 --- a/perf/impl/rust-libp2p/master/Makefile +++ /dev/null @@ -1,22 +0,0 @@ -commitSha := c86b665a653626f5eca30c4f8811a2a08c3fbb20 - -all: perf - -perf: rust-libp2p-${commitSha}/target/release/perf - cp ./rust-libp2p-${commitSha}/target/release/perf . - -rust-libp2p-${commitSha}/target/release/perf: rust-libp2p-${commitSha} - docker run --rm --user "$(shell id -u):$(shell id -g)" -v "$(shell pwd)/rust-libp2p-${commitSha}":/usr/src/myapp -w /usr/src/myapp rust:1.69 cargo build --release --bin perf - -rust-libp2p-${commitSha}: rust-libp2p-${commitSha}.zip - unzip -o rust-libp2p-${commitSha}.zip - -rust-libp2p-${commitSha}.zip: - wget -O $@ "https://github.com/libp2p/rust-libp2p/archive/${commitSha}.zip" - -clean: - rm rust-libp2p-*.zip - rm -rf rust-libp2p-* - rm perf - -.PHONY: all clean diff --git a/perf/impl/rust-libp2p/v0.52/Makefile b/perf/impl/rust-libp2p/v0.52/Makefile index 02a7e2557..eb8361581 100644 --- a/perf/impl/rust-libp2p/v0.52/Makefile +++ b/perf/impl/rust-libp2p/v0.52/Makefile @@ -1,4 +1,4 @@ -commitSha := 73dbde1519f71aa8d76f4c5fa018860ddcd2a8ea +commitSha := e8759c85c278006f5fc94e823c2a3620abaaf697 all: perf diff --git a/perf/runner/benchmark-results.json b/perf/runner/benchmark-results.json index f37478db2..19d5d1b38 100644 --- a/perf/runner/benchmark-results.json +++ b/perf/runner/benchmark-results.json @@ -7,34 +7,34 @@ { "result": [ { - "latency": 1.052884135 + "latency": 1.069808773 }, { - "latency": 1.065750351 + "latency": 1.068974425 }, { - "latency": 1.043928127 + "latency": 1.05246824 }, { - "latency": 1.036718893 + "latency": 1.059426271 }, { - "latency": 1.018817351 + "latency": 1.060714404 }, { - "latency": 1.0097616170000001 + "latency": 1.105976356 }, { - "latency": 1.066964079 + "latency": 1.063294805 }, { - "latency": 1.072774058 + "latency": 1.039221186 }, { - "latency": 1.015344624 + "latency": 1.5582718500000001 }, { - "latency": 1.038971885 + "latency": 1.117925932 } ], "implementation": "quic-go", @@ -44,34 +44,34 @@ { "result": [ { - "latency": 40.662866009 + "latency": 40.963301232 }, { - "latency": 39.531526971 + "latency": 39.842533193 }, { - "latency": 43.777353966 + "latency": 43.211159997 }, { - "latency": 43.02876717 + "latency": 40.012522532 }, { - "latency": 47.306148818 + "latency": 43.977106528 }, { - "latency": 48.372909199 + "latency": 39.593077414 }, { - "latency": 40.992934747 + "latency": 43.835719172 }, { - "latency": 40.47231855 + "latency": 40.555517792 }, { - "latency": 43.154900438 + "latency": 41.423759309 }, { - "latency": 42.474273187 + "latency": 40.927947773 } ], "implementation": "rust-libp2p", @@ -81,34 +81,34 @@ { "result": [ { - "latency": 11.916374606 + "latency": 1.431392641 }, { - "latency": 13.794893907 + "latency": 1.446828354 }, { - "latency": 17.633767905 + "latency": 1.478981117 }, { - "latency": 11.258712512 + "latency": 1.56085776 }, { - "latency": 8.601415054 + "latency": 1.3621435 }, { - "latency": 14.211001743 + "latency": 1.528179877 }, { - "latency": 10.571754677 + "latency": 1.459333013 }, { - "latency": 18.081094185 + "latency": 1.423208791 }, { - "latency": 15.025979421 + "latency": 1.556941122 }, { - "latency": 17.474682583 + "latency": 1.415487446 } ], "implementation": "rust-libp2p", @@ -118,108 +118,34 @@ { "result": [ { - "latency": 41.780755003 + "latency": 1.028256667 }, { - "latency": 44.580921021 + "latency": 1.034582561 }, { - "latency": 41.341151579 + "latency": 1.093731928 }, { - "latency": 40.57763509 + "latency": 1.034250468 }, { - "latency": 43.261339634 + "latency": 1.075050985 }, { - "latency": 45.720769697 + "latency": 1.093446291 }, { - "latency": 45.03268626 + "latency": 1.170405777 }, { - "latency": 45.237944783 + "latency": 1.002280506 }, { - "latency": 40.714547352 + "latency": 1.514568286 }, { - "latency": 41.64617823 - } - ], - "implementation": "rust-libp2p", - "version": "master", - "transportStack": "tcp" - }, - { - "result": [ - { - "latency": 1.484538175 - }, - { - "latency": 1.5155802779999998 - }, - { - "latency": 1.529857229 - }, - { - "latency": 1.490526319 - }, - { - "latency": 1.405239405 - }, - { - "latency": 1.389681481 - }, - { - "latency": 1.375352694 - }, - { - "latency": 1.511157525 - }, - { - "latency": 1.540184738 - }, - { - "latency": 1.508019606 - } - ], - "implementation": "rust-libp2p", - "version": "master", - "transportStack": "quic-v1" - }, - { - "result": [ - { - "latency": 1.084108276 - }, - { - "latency": 1.029797754 - }, - { - "latency": 1.075915672 - }, - { - "latency": 0.955071454 - }, - { - "latency": 1.023611699 - }, - { - "latency": 1.105959325 - }, - { - "latency": 1.193762587 - }, - { - "latency": 1.053198537 - }, - { - "latency": 1.088745676 - }, - { - "latency": 1.006476984 + "latency": 1.045007919 } ], "implementation": "https", @@ -229,34 +155,34 @@ { "result": [ { - "latency": 1.763873388 + "latency": 1.923693073 }, { - "latency": 1.873883781 + "latency": 1.986048638 }, { - "latency": 2.143635426 + "latency": 1.92065329 }, { - "latency": 2.032742967 + "latency": 2.303950064 }, { - "latency": 2.065593944 + "latency": 2.045802696 }, { - "latency": 2.016057692 + "latency": 1.944307617 }, { - "latency": 1.946649485 + "latency": 2.008217842 }, { - "latency": 1.8695887820000001 + "latency": 1.8688378289999998 }, { - "latency": 1.954830119 + "latency": 1.9854102120000001 }, { - "latency": 2.005976724 + "latency": 1.846998812 } ], "implementation": "go-libp2p", @@ -266,34 +192,34 @@ { "result": [ { - "latency": 1.508804196 + "latency": 1.570431917 }, { - "latency": 1.3978938699999999 + "latency": 1.4574192959999999 }, { - "latency": 1.626927158 + "latency": 1.486040074 }, { - "latency": 1.477753404 + "latency": 1.5033044389999999 }, { - "latency": 1.450042654 + "latency": 1.462121421 }, { - "latency": 1.510901584 + "latency": 1.450275419 }, { - "latency": 1.52414106 + "latency": 1.524738452 }, { - "latency": 1.4624027179999999 + "latency": 1.500232881 }, { - "latency": 1.41044825 + "latency": 1.414139472 }, { - "latency": 1.469768138 + "latency": 1.5072497729999998 } ], "implementation": "go-libp2p", @@ -303,34 +229,34 @@ { "result": [ { - "latency": 1.819601316 + "latency": 1.934407996 }, { - "latency": 2.510864506 + "latency": 1.9039303159999998 }, { - "latency": 2.021181212 + "latency": 2.353251813 }, { - "latency": 1.828923598 + "latency": 1.910734357 }, { - "latency": 2.222789992 + "latency": 1.987509906 }, { - "latency": 2.261356477 + "latency": 2.102763189 }, { - "latency": 1.877714568 + "latency": 2.11894893 }, { - "latency": 2.161167909 + "latency": 2.045441411 }, { - "latency": 2.272402658 + "latency": 2.295640747 }, { - "latency": 1.9979343360000001 + "latency": 1.96604055 } ], "implementation": "go-libp2p", @@ -340,34 +266,34 @@ { "result": [ { - "latency": 6.027315993 + "latency": 1.5290971880000002 }, { - "latency": 1.411392206 + "latency": 1.504285396 }, { - "latency": 1.500705821 + "latency": 1.375032299 }, { - "latency": 1.526349278 + "latency": 1.509087993 }, { - "latency": 1.368757475 + "latency": 1.4361929039999999 }, { - "latency": 1.5080839419999998 + "latency": 1.473124457 }, { - "latency": 1.5218455450000001 + "latency": 1.5242370360000002 }, { - "latency": 1.361056326 + "latency": 1.390976916 }, { - "latency": 1.418208576 + "latency": 1.490091117 }, { - "latency": 1.5048425399999998 + "latency": 1.690275721 } ], "implementation": "go-libp2p", @@ -377,34 +303,34 @@ { "result": [ { - "latency": 2.194353657 + "latency": 1.856931949 }, { - "latency": 1.920767919 + "latency": 1.844912334 }, { - "latency": 3.145007956 + "latency": 1.837280348 }, { - "latency": 1.991083212 + "latency": 2.073171344 }, { - "latency": 1.91127788 + "latency": 1.802518345 }, { - "latency": 2.068609611 + "latency": 1.856788366 }, { - "latency": 1.869687812 + "latency": 3.465497247 }, { - "latency": 2.342458177 + "latency": 1.96831616 }, { - "latency": 1.9405771170000001 + "latency": 1.919492812 }, { - "latency": 1.766691257 + "latency": 2.009868515 } ], "implementation": "go-libp2p", @@ -414,34 +340,34 @@ { "result": [ { - "latency": 1.464548384 + "latency": 1.448104359 }, { - "latency": 1.519650747 + "latency": 1.531275258 }, { - "latency": 1.510837259 + "latency": 1.474197502 }, { - "latency": 1.5269521350000002 + "latency": 1.476674789 }, { - "latency": 1.458262891 + "latency": 1.410728255 }, { - "latency": 1.508160352 + "latency": 1.504066232 }, { - "latency": 1.450292557 + "latency": 1.509311007 }, { - "latency": 1.486547748 + "latency": 1.502312138 }, { - "latency": 1.39545732 + "latency": 1.477634724 }, { - "latency": 1.433584663 + "latency": 1.462259129 } ], "implementation": "go-libp2p", @@ -461,34 +387,34 @@ { "result": [ { - "latency": 1.092571003 + "latency": 1.155862814 }, { - "latency": 1.144806402 + "latency": 1.168274874 }, { - "latency": 1.135816387 + "latency": 1.145109054 }, { - "latency": 1.129554019 + "latency": 1.19630729 }, { - "latency": 1.109745976 + "latency": 1.126112348 }, { - "latency": 1.131141303 + "latency": 1.108205795 }, { - "latency": 1.084650852 + "latency": 1.120811285 }, { - "latency": 1.092214745 + "latency": 1.148234637 }, { - "latency": 1.143462296 + "latency": 1.102314363 }, { - "latency": 1.102519185 + "latency": 1.140069263 } ], "implementation": "quic-go", @@ -498,34 +424,34 @@ { "result": [ { - "latency": 44.839554619 + "latency": 41.026262065 }, { - "latency": 44.610392355 + "latency": 41.981392981 }, { - "latency": 41.832345745 + "latency": 41.902890671 }, { - "latency": 47.948004859 + "latency": 41.24939108 }, { - "latency": 45.093980622 + "latency": 39.765622305 }, { - "latency": 43.127978925 + "latency": 41.098928841 }, { - "latency": 45.153741077 + "latency": 39.742317908 }, { - "latency": 44.559105426 + "latency": 41.987601565 }, { - "latency": 45.652845896 + "latency": 35.273551879 }, { - "latency": 44.87057545 + "latency": 42.939710779 } ], "implementation": "rust-libp2p", @@ -535,34 +461,34 @@ { "result": [ { - "latency": 9.201543852 + "latency": 1.427211088 }, { - "latency": 13.052179628 + "latency": 1.379406712 }, { - "latency": 21.022093154 + "latency": 1.480765991 }, { - "latency": 12.345328594 + "latency": 1.564807367 }, { - "latency": 17.426189199 + "latency": 1.4873107 }, { - "latency": 18.058773679 + "latency": 1.49802044 }, { - "latency": 10.737394105 + "latency": 1.5472956469999999 }, { - "latency": 12.182455084 + "latency": 1.400840421 }, { - "latency": 6.422171011 + "latency": 1.439561136 }, { - "latency": 7.436500029 + "latency": 1.465375981 } ], "implementation": "rust-libp2p", @@ -572,108 +498,34 @@ { "result": [ { - "latency": 31.568151261 - }, - { - "latency": 43.433740541 - }, - { - "latency": 46.025653343 - }, - { - "latency": 45.400184366 - }, - { - "latency": 45.712772875 - }, - { - "latency": 42.190952319 - }, - { - "latency": 42.599957544 - }, - { - "latency": 46.43032056 - }, - { - "latency": 45.501509134 - }, - { - "latency": 50.463023056 - } - ], - "implementation": "rust-libp2p", - "version": "master", - "transportStack": "tcp" - }, - { - "result": [ - { - "latency": 1.444988124 - }, - { - "latency": 1.480882165 - }, - { - "latency": 1.397425873 - }, - { - "latency": 1.484990721 - }, - { - "latency": 1.457119734 - }, - { - "latency": 6.461707914 - }, - { - "latency": 1.468906278 - }, - { - "latency": 1.414275478 - }, - { - "latency": 1.41523553 - }, - { - "latency": 1.413140235 - } - ], - "implementation": "rust-libp2p", - "version": "master", - "transportStack": "quic-v1" - }, - { - "result": [ - { - "latency": 1.125656814 + "latency": 1.062469316 }, { - "latency": 1.0496441970000001 + "latency": 1.120125574 }, { - "latency": 1.033562019 + "latency": 1.107592904 }, { - "latency": 1.038606932 + "latency": 1.040648607 }, { - "latency": 1.083717531 + "latency": 1.196970892 }, { - "latency": 1.05530385 + "latency": 1.103263591 }, { - "latency": 1.164856718 + "latency": 1.14497551 }, { - "latency": 1.142843935 + "latency": 1.249468889 }, { - "latency": 1.405741621 + "latency": 1.083586904 }, { - "latency": 1.022449963 + "latency": 2.175479519 } ], "implementation": "https", @@ -683,34 +535,34 @@ { "result": [ { - "latency": 2.936799691 + "latency": 1.873628388 }, { - "latency": 2.32122928 + "latency": 1.903518675 }, { - "latency": 1.909258716 + "latency": 1.887607179 }, { - "latency": 1.925757817 + "latency": 2.026096356 }, { - "latency": 1.7898720190000001 + "latency": 1.776873702 }, { - "latency": 2.092698074 + "latency": 1.990230717 }, { - "latency": 2.109807315 + "latency": 2.070837984 }, { - "latency": 2.208732426 + "latency": 2.067061086 }, { - "latency": 2.131914235 + "latency": 1.93889237 }, { - "latency": 1.899722299 + "latency": 2.127344674 } ], "implementation": "go-libp2p", @@ -720,34 +572,34 @@ { "result": [ { - "latency": 1.485309609 + "latency": 1.508633577 }, { - "latency": 1.398150253 + "latency": 1.521717251 }, { - "latency": 1.458928593 + "latency": 1.529467921 }, { - "latency": 1.481749511 + "latency": 1.43339751 }, { - "latency": 1.407338781 + "latency": 1.440211936 }, { - "latency": 1.491950163 + "latency": 1.446231758 }, { - "latency": 1.47174852 + "latency": 1.523071718 }, { - "latency": 1.520387626 + "latency": 1.507688463 }, { - "latency": 1.450940017 + "latency": 1.5110429079999999 }, { - "latency": 1.454417933 + "latency": 1.5243171009999998 } ], "implementation": "go-libp2p", @@ -757,34 +609,34 @@ { "result": [ { - "latency": 2.302867524 + "latency": 2.118094824 }, { - "latency": 1.842932843 + "latency": 1.9873454050000001 }, { - "latency": 1.874795596 + "latency": 1.778891948 }, { - "latency": 2.204284538 + "latency": 2.056998983 }, { - "latency": 1.873564205 + "latency": 2.132116317 }, { - "latency": 1.841792009 + "latency": 2.025766157 }, { - "latency": 2.092849703 + "latency": 2.215489867 }, { - "latency": 1.746428724 + "latency": 1.890248196 }, { - "latency": 2.238217675 + "latency": 2.13437695 }, { - "latency": 1.8803908740000002 + "latency": 1.8459371789999999 } ], "implementation": "go-libp2p", @@ -794,34 +646,34 @@ { "result": [ { - "latency": 1.401659042 + "latency": 1.546842673 }, { - "latency": 1.5155865020000001 + "latency": 1.451364716 }, { - "latency": 1.450247478 + "latency": 1.437784414 }, { - "latency": 1.364301854 + "latency": 1.509324636 }, { - "latency": 1.537716503 + "latency": 1.5115649260000001 }, { - "latency": 1.428895913 + "latency": 1.4976381380000001 }, { - "latency": 1.509912174 + "latency": 1.437970625 }, { - "latency": 1.530548042 + "latency": 1.44083626 }, { - "latency": 1.5303195490000001 + "latency": 1.510602182 }, { - "latency": 1.411123622 + "latency": 1.542167144 } ], "implementation": "go-libp2p", @@ -831,34 +683,34 @@ { "result": [ { - "latency": 1.84981693 + "latency": 2.021162618 }, { - "latency": 2.309084421 + "latency": 1.9066974129999998 }, { - "latency": 1.765839173 + "latency": 2.009186142 }, { - "latency": 2.12153091 + "latency": 2.026995987 }, { - "latency": 2.048463786 + "latency": 2.052105878 }, { - "latency": 2.5787981970000002 + "latency": 2.083127239 }, { - "latency": 1.865466362 + "latency": 1.844681047 }, { - "latency": 1.824835551 + "latency": 1.9853520420000002 }, { - "latency": 1.9230435350000001 + "latency": 1.9423147200000002 }, { - "latency": 1.8756345909999999 + "latency": 1.917711049 } ], "implementation": "go-libp2p", @@ -868,34 +720,34 @@ { "result": [ { - "latency": 1.465985167 + "latency": 1.546090109 }, { - "latency": 1.506649068 + "latency": 1.464090657 }, { - "latency": 1.5093898239999999 + "latency": 1.5337355480000001 }, { - "latency": 1.435547831 + "latency": 1.471362802 }, { - "latency": 1.421698498 + "latency": 1.681067437 }, { - "latency": 1.634586648 + "latency": 1.449763277 }, { - "latency": 1.520014368 + "latency": 1.5018904119999998 }, { - "latency": 1.43770965 + "latency": 1.511257526 }, { - "latency": 1.5659333069999999 + "latency": 1.484508342 }, { - "latency": 1.528900858 + "latency": 1.509053954 } ], "implementation": "go-libp2p", @@ -915,304 +767,304 @@ { "result": [ { - "latency": 0.12378762 + "latency": 0.131005688 }, { - "latency": 0.123704344 + "latency": 0.129749089 }, { - "latency": 0.120364136 + "latency": 0.115831438 }, { - "latency": 0.129310051 + "latency": 0.129083779 }, { - "latency": 0.126229205 + "latency": 0.118184096 }, { - "latency": 0.121228802 + "latency": 0.129780848 }, { - "latency": 0.11877413 + "latency": 0.129939482 }, { - "latency": 0.139828136 + "latency": 0.130507763 }, { - "latency": 0.12350522 + "latency": 0.127989477 }, { - "latency": 0.116722518 + "latency": 0.126668852 }, { - "latency": 0.130042156 + "latency": 0.122625948 }, { - "latency": 0.115673328 + "latency": 0.12989395 }, { - "latency": 0.128073393 + "latency": 0.117276456 }, { - "latency": 0.118883329 + "latency": 0.13053748 }, { - "latency": 0.125904665 + "latency": 0.126421575 }, { - "latency": 0.126266327 + "latency": 0.129354551 }, { - "latency": 0.127429896 + "latency": 0.127623362 }, { - "latency": 0.129362759 + "latency": 0.120449257 }, { - "latency": 0.119431482 + "latency": 0.126477722 }, { - "latency": 0.129328718 + "latency": 0.127595937 }, { - "latency": 0.122600841 + "latency": 0.116937159 }, { - "latency": 0.126564197 + "latency": 0.125263358 }, { - "latency": 0.130104402 + "latency": 0.129433685 }, { - "latency": 0.119273564 + "latency": 0.125854495 }, { - "latency": 0.121498234 + "latency": 0.127901051 }, { - "latency": 0.130451385 + "latency": 0.130892606 }, { - "latency": 0.12781487 + "latency": 0.129854823 }, { - "latency": 0.125316214 + "latency": 0.124160167 }, { - "latency": 0.124510929 + "latency": 0.131380438 }, { - "latency": 0.129465175 + "latency": 0.132401031 }, { - "latency": 0.142027054 + "latency": 0.12003756 }, { - "latency": 0.117636762 + "latency": 0.126313478 }, { - "latency": 0.138208301 + "latency": 0.124766455 }, { - "latency": 0.12741351 + "latency": 0.129706364 }, { - "latency": 0.126213372 + "latency": 0.122799831 }, { - "latency": 0.124759503 + "latency": 0.127856106 }, { - "latency": 0.122926988 + "latency": 0.12983606 }, { - "latency": 0.127296873 + "latency": 0.128048215 }, { - "latency": 0.12339985 + "latency": 0.128535738 }, { - "latency": 0.124168562 + "latency": 0.121519925 }, { - "latency": 0.126221485 + "latency": 0.126385986 }, { - "latency": 0.125780529 + "latency": 0.128555807 }, { - "latency": 0.124173903 + "latency": 0.116024459 }, { - "latency": 0.12272758 + "latency": 0.129915529 }, { - "latency": 0.126211963 + "latency": 0.125028528 }, { - "latency": 0.125856531 + "latency": 0.129740094 }, { - "latency": 0.130087007 + "latency": 0.124703679 }, { - "latency": 0.123198224 + "latency": 0.126534182 }, { - "latency": 0.120326356 + "latency": 0.130150277 }, { - "latency": 0.122160729 + "latency": 0.132175362 }, { - "latency": 0.123333994 + "latency": 0.122448312 }, { - "latency": 0.127428436 + "latency": 0.12452444 }, { - "latency": 0.126870277 + "latency": 0.129436001 }, { - "latency": 0.117259141 + "latency": 0.128359268 }, { - "latency": 0.12406504 + "latency": 0.126734722 }, { - "latency": 0.12022506 + "latency": 0.122671857 }, { - "latency": 0.128684503 + "latency": 0.123260149 }, { - "latency": 0.127383949 + "latency": 0.128652813 }, { - "latency": 0.118880619 + "latency": 0.123245107 }, { - "latency": 0.123637461 + "latency": 0.125926306 }, { - "latency": 0.12530464 + "latency": 0.125206889 }, { - "latency": 0.12400959 + "latency": 0.12703264 }, { - "latency": 0.117081074 + "latency": 0.12327109 }, { - "latency": 0.122725805 + "latency": 0.125297061 }, { - "latency": 0.144034654 + "latency": 0.123657854 }, { - "latency": 0.118742422 + "latency": 0.130556162 }, { - "latency": 0.12256658 + "latency": 0.126488887 }, { - "latency": 0.120712408 + "latency": 0.123272524 }, { - "latency": 0.132277199 + "latency": 0.124674348 }, { - "latency": 0.123414734 + "latency": 0.124395983 }, { - "latency": 0.127669201 + "latency": 0.123605475 }, { - "latency": 0.124484619 + "latency": 0.127996894 }, { - "latency": 0.117859588 + "latency": 0.125310218 }, { - "latency": 0.142177863 + "latency": 0.126485679 }, { - "latency": 0.124127836 + "latency": 0.12781779 }, { - "latency": 0.119946384 + "latency": 0.130448967 }, { - "latency": 0.120105776 + "latency": 0.124382344 }, { - "latency": 0.123729628 + "latency": 0.129704202 }, { - "latency": 0.128344131 + "latency": 0.127541428 }, { - "latency": 0.125941944 + "latency": 0.131036198 }, { - "latency": 0.126083531 + "latency": 0.13116667 }, { - "latency": 0.124587089 + "latency": 0.123620503 }, { - "latency": 0.119002792 + "latency": 0.126784136 }, { - "latency": 0.12504049 + "latency": 0.125550665 }, { - "latency": 0.126380058 + "latency": 0.127360828 }, { - "latency": 0.123439895 + "latency": 0.129671905 }, { - "latency": 0.130235617 + "latency": 0.13108539 }, { - "latency": 0.125564819 + "latency": 0.131449166 }, { - "latency": 0.115959122 + "latency": 0.130359808 }, { - "latency": 0.11995524 + "latency": 0.124787705 }, { - "latency": 0.120044051 + "latency": 0.124409608 }, { - "latency": 0.122015693 + "latency": 0.130785843 }, { - "latency": 0.123370243 + "latency": 0.130980599 }, { - "latency": 0.122667099 + "latency": 0.123789248 }, { - "latency": 0.123082916 + "latency": 0.129362618 }, { - "latency": 0.116630144 + "latency": 0.121717965 }, { - "latency": 0.122785366 + "latency": 0.131184967 }, { - "latency": 0.121483285 + "latency": 0.127991499 }, { - "latency": 0.125976176 + "latency": 0.129156556 }, { - "latency": 0.118833704 + "latency": 0.126162693 } ], "implementation": "quic-go", @@ -1222,304 +1074,304 @@ { "result": [ { - "latency": 0.181929628 + "latency": 0.19076756 }, { - "latency": 0.177392276 + "latency": 0.184748953 }, { - "latency": 0.184055241 + "latency": 0.171542012 }, { - "latency": 0.18805504 + "latency": 0.183294957 }, { - "latency": 0.18461806 + "latency": 0.184813566 }, { - "latency": 0.181452626 + "latency": 0.192053632 }, { - "latency": 0.183210988 + "latency": 0.186123702 }, { - "latency": 0.195207406 + "latency": 0.183414967 }, { - "latency": 0.192402017 + "latency": 0.190072695 }, { - "latency": 0.192200731 + "latency": 0.191681837 }, { - "latency": 0.189639208 + "latency": 0.1849185 }, { - "latency": 0.173133426 + "latency": 0.18651935 }, { - "latency": 0.186460096 + "latency": 0.187795092 }, { - "latency": 0.177654493 + "latency": 0.173090744 }, { - "latency": 0.178783241 + "latency": 0.183340678 }, { - "latency": 0.215267616 + "latency": 0.181355208 }, { - "latency": 0.182046344 + "latency": 0.179933986 }, { - "latency": 0.175499833 + "latency": 0.175113139 }, { - "latency": 0.18064917 + "latency": 0.190607271 }, { - "latency": 0.180690466 + "latency": 0.187336485 }, { - "latency": 0.189015776 + "latency": 0.1848259 }, { - "latency": 0.193577292 + "latency": 0.183057504 }, { - "latency": 0.189244493 + "latency": 0.184695366 }, { - "latency": 0.176550997 + "latency": 0.184997572 }, { - "latency": 0.184450096 + "latency": 0.182705194 }, { - "latency": 0.178040681 + "latency": 0.195855942 }, { - "latency": 0.186304244 + "latency": 0.194888312 }, { - "latency": 0.18912546 + "latency": 0.187612881 }, { - "latency": 0.182471827 + "latency": 0.182787943 }, { - "latency": 0.18571143 + "latency": 0.181857978 }, { - "latency": 0.183177865 + "latency": 0.195587912 }, { - "latency": 0.181536037 + "latency": 0.183538908 }, { - "latency": 0.19267852 + "latency": 0.192478694 }, { - "latency": 0.197861982 + "latency": 0.189842104 }, { - "latency": 0.184609687 + "latency": 0.180296385 }, { - "latency": 0.185597019 + "latency": 0.18214531 }, { - "latency": 0.179797217 + "latency": 0.194882149 }, { - "latency": 0.192241083 + "latency": 0.176856636 }, { - "latency": 0.192339295 + "latency": 0.187450516 }, { - "latency": 0.181572523 + "latency": 0.189481989 }, { - "latency": 0.174916433 + "latency": 0.17987246 }, { - "latency": 0.189577399 + "latency": 0.185981022 }, { - "latency": 0.192032682 + "latency": 0.183160588 }, { - "latency": 0.185459586 + "latency": 0.194167378 }, { - "latency": 0.193897324 + "latency": 0.18374848 }, { - "latency": 0.184026639 + "latency": 0.184270805 }, { - "latency": 0.200697719 + "latency": 0.19324497 }, { - "latency": 0.193983186 + "latency": 0.191863065 }, { - "latency": 0.18340453 + "latency": 0.190766705 }, { - "latency": 0.196854901 + "latency": 0.187647565 }, { - "latency": 0.185264401 + "latency": 0.176507715 }, { - "latency": 0.185566883 + "latency": 0.174055388 }, { - "latency": 0.185003158 + "latency": 0.190806534 }, { - "latency": 0.183761478 + "latency": 0.184774303 }, { - "latency": 0.18295871 + "latency": 0.178279397 }, { - "latency": 0.18498837 + "latency": 0.193696796 }, { - "latency": 0.184555865 + "latency": 0.187858881 }, { - "latency": 0.181567585 + "latency": 0.193636801 }, { - "latency": 0.190596533 + "latency": 0.185841377 }, { - "latency": 0.174764646 + "latency": 0.189394847 }, { - "latency": 0.184821549 + "latency": 0.171692634 }, { - "latency": 0.195456911 + "latency": 0.187959491 }, { - "latency": 0.180444255 + "latency": 0.191704602 }, { - "latency": 0.183090228 + "latency": 0.192446002 }, { - "latency": 0.191748866 + "latency": 0.190788403 }, { - "latency": 0.181275724 + "latency": 0.186079984 }, { - "latency": 0.184289119 + "latency": 0.18705036 }, { - "latency": 0.198843528 + "latency": 0.187712248 }, { - "latency": 0.194606802 + "latency": 0.185169027 }, { - "latency": 0.19145948 + "latency": 0.188891636 }, { - "latency": 0.190599189 + "latency": 0.196817154 }, { - "latency": 0.189949093 + "latency": 0.184780892 }, { - "latency": 0.19653179 + "latency": 0.194753081 }, { - "latency": 0.178237686 + "latency": 0.190822166 }, { - "latency": 0.19290937 + "latency": 0.192048476 }, { - "latency": 0.187276164 + "latency": 0.178237477 }, { - "latency": 0.200298278 + "latency": 0.181809504 }, { - "latency": 0.181656932 + "latency": 0.192213544 }, { - "latency": 0.192423877 + "latency": 0.187183687 }, { - "latency": 0.176987461 + "latency": 0.192287359 }, { - "latency": 0.181589609 + "latency": 0.184229898 }, { - "latency": 0.182412446 + "latency": 0.186071387 }, { - "latency": 0.174747831 + "latency": 0.192749511 }, { - "latency": 0.18457724 + "latency": 0.187225542 }, { - "latency": 0.185976283 + "latency": 0.174957164 }, { - "latency": 0.18955163 + "latency": 0.178409046 }, { - "latency": 0.178882749 + "latency": 0.17990841 }, { - "latency": 0.179921717 + "latency": 0.190212417 }, { - "latency": 0.187132054 + "latency": 0.189820023 }, { - "latency": 0.192930244 + "latency": 0.180267068 }, { - "latency": 0.189472616 + "latency": 0.183050255 }, { - "latency": 0.179270547 + "latency": 0.192015804 }, { - "latency": 0.179795097 + "latency": 0.181929278 }, { - "latency": 0.184761303 + "latency": 0.183103318 }, { - "latency": 0.182136466 + "latency": 0.190414201 }, { - "latency": 0.175657317 + "latency": 0.187830499 }, { - "latency": 0.175444396 + "latency": 0.191100983 }, { - "latency": 0.183513193 + "latency": 0.184895623 }, { - "latency": 0.191525766 + "latency": 0.174995332 }, { - "latency": 0.183296366 + "latency": 0.190065615 } ], "implementation": "rust-libp2p", @@ -1529,304 +1381,304 @@ { "result": [ { - "latency": 0.128609093 + "latency": 0.124516077 }, { - "latency": 0.120197955 + "latency": 0.122855331 }, { - "latency": 0.125699708 + "latency": 0.128317348 }, { - "latency": 0.124415922 + "latency": 0.127977078 }, { - "latency": 0.118911466 + "latency": 0.129615746 }, { - "latency": 0.115683631 + "latency": 0.131077349 }, { - "latency": 0.133607561 + "latency": 0.128055522 }, { - "latency": 0.124485625 + "latency": 0.12994424 }, { - "latency": 0.121302537 + "latency": 0.130909392 }, { - "latency": 0.125608454 + "latency": 0.122914908 }, { - "latency": 0.117961148 + "latency": 0.130696159 }, { - "latency": 0.116846365 + "latency": 0.124749651 }, { - "latency": 0.127037241 + "latency": 0.116414028 }, { - "latency": 0.12460973 + "latency": 0.125497987 }, { - "latency": 0.122548076 + "latency": 0.129524386 }, { - "latency": 0.123853974 + "latency": 0.130790328 }, { - "latency": 0.139411921 + "latency": 0.128458948 }, { - "latency": 0.125484638 + "latency": 0.131206889 }, { - "latency": 0.130776268 + "latency": 0.124323105 }, { - "latency": 0.126640727 + "latency": 0.123672462 }, { - "latency": 0.12488961 + "latency": 0.119561073 }, { - "latency": 0.118991353 + "latency": 0.125828588 }, { - "latency": 0.129782443 + "latency": 0.12508202 }, { - "latency": 0.129145441 + "latency": 0.12810617 }, { - "latency": 0.12855218 + "latency": 0.130986886 }, { - "latency": 0.1277766 + "latency": 0.12984757 }, { - "latency": 0.120271633 + "latency": 0.133092471 }, { - "latency": 0.129034584 + "latency": 0.125236408 }, { - "latency": 0.126700534 + "latency": 0.130788223 }, { - "latency": 0.122548929 + "latency": 0.128113729 }, { - "latency": 0.124486205 + "latency": 0.130040249 }, { - "latency": 0.120711147 + "latency": 0.126405216 }, { - "latency": 0.119149454 + "latency": 0.125062515 }, { - "latency": 0.122151615 + "latency": 0.131901881 }, { - "latency": 0.12097154 + "latency": 0.130440892 }, { - "latency": 0.119256555 + "latency": 0.123027417 }, { - "latency": 0.118821552 + "latency": 0.118609961 }, { - "latency": 0.12381295 + "latency": 0.123976185 }, { - "latency": 0.131484512 + "latency": 0.122828628 }, { - "latency": 0.12452091 + "latency": 0.128002924 }, { - "latency": 0.123876163 + "latency": 0.131774116 }, { - "latency": 0.127608117 + "latency": 0.124948534 }, { - "latency": 0.122664191 + "latency": 0.121514015 }, { - "latency": 0.126570732 + "latency": 0.122672517 }, { - "latency": 0.121958764 + "latency": 0.126705071 }, { - "latency": 0.141397651 + "latency": 0.123957092 }, { - "latency": 0.120675306 + "latency": 0.130450399 }, { - "latency": 0.124740493 + "latency": 0.129568142 }, { - "latency": 0.124543299 + "latency": 0.128531093 }, { - "latency": 0.120579218 + "latency": 0.125824678 }, { - "latency": 0.14486828 + "latency": 0.124659883 }, { - "latency": 0.129355811 + "latency": 0.1304653 }, { - "latency": 0.126068427 + "latency": 0.130207907 }, { - "latency": 0.129730135 + "latency": 0.129724611 }, { - "latency": 0.126218745 + "latency": 0.125554773 }, { - "latency": 0.123986432 + "latency": 0.122939511 }, { - "latency": 0.122654361 + "latency": 0.12427674 }, { - "latency": 0.118759571 + "latency": 0.123431583 }, { - "latency": 0.130219273 + "latency": 0.118575977 }, { - "latency": 0.119300541 + "latency": 0.12387749 }, { - "latency": 0.123565611 + "latency": 0.1278754 }, { - "latency": 0.129547031 + "latency": 0.122814842 }, { - "latency": 0.129726878 + "latency": 0.130707211 }, { - "latency": 0.120550164 + "latency": 0.124054954 }, { - "latency": 0.126959693 + "latency": 0.12650824 }, { - "latency": 0.125795985 + "latency": 0.119840915 }, { - "latency": 0.128800308 + "latency": 0.130954053 }, { - "latency": 0.132205231 + "latency": 0.129778299 }, { - "latency": 0.134036656 + "latency": 0.126053246 }, { - "latency": 0.129075801 + "latency": 0.122795661 }, { - "latency": 0.124653867 + "latency": 0.122362454 }, { - "latency": 0.124334482 + "latency": 0.12875789 }, { - "latency": 0.124472762 + "latency": 0.128563741 }, { - "latency": 0.127861272 + "latency": 0.128228225 }, { - "latency": 0.122478181 + "latency": 0.125166905 }, { - "latency": 0.127825467 + "latency": 0.125330753 }, { - "latency": 0.127759739 + "latency": 0.124681376 }, { - "latency": 0.129955936 + "latency": 0.122916634 }, { - "latency": 0.123237303 + "latency": 0.132548913 }, { - "latency": 0.129680261 + "latency": 0.127659562 }, { - "latency": 0.119520336 + "latency": 0.125844974 }, { - "latency": 0.12211907 + "latency": 0.130130709 }, { - "latency": 0.123458711 + "latency": 0.130981358 }, { - "latency": 0.144718662 + "latency": 0.12764282 }, { - "latency": 0.126499604 + "latency": 0.118491636 }, { - "latency": 0.13085282 + "latency": 0.131200035 }, { - "latency": 0.119095769 + "latency": 0.129132238 }, { - "latency": 0.120711937 + "latency": 0.129546482 }, { - "latency": 0.127741705 + "latency": 0.126274196 }, { - "latency": 0.12205164 + "latency": 0.131747489 }, { - "latency": 0.125028818 + "latency": 0.1310175 }, { - "latency": 0.133655951 + "latency": 0.124976424 }, { - "latency": 0.123178054 + "latency": 0.123645479 }, { - "latency": 0.131044065 + "latency": 0.129710281 }, { - "latency": 0.119017577 + "latency": 0.12643326 }, { - "latency": 0.123276849 + "latency": 0.12399015 }, { - "latency": 0.12457352 + "latency": 0.131305167 }, { - "latency": 0.122718929 + "latency": 0.130011279 }, { - "latency": 0.130247796 + "latency": 0.131310219 }, { - "latency": 0.144150516 + "latency": 0.125209784 } ], "implementation": "rust-libp2p", @@ -1836,918 +1688,304 @@ { "result": [ { - "latency": 0.190965041 - }, - { - "latency": 0.179464933 - }, - { - "latency": 0.182560646 - }, - { - "latency": 0.183362077 - }, - { - "latency": 0.191976178 - }, - { - "latency": 0.181555255 - }, - { - "latency": 0.179869105 - }, - { - "latency": 0.179948824 - }, - { - "latency": 0.176383803 - }, - { - "latency": 0.19267589 - }, - { - "latency": 0.185319887 - }, - { - "latency": 0.181103758 - }, - { - "latency": 0.189418701 - }, - { - "latency": 0.217914689 - }, - { - "latency": 0.187223792 - }, - { - "latency": 0.182058539 - }, - { - "latency": 0.184960291 - }, - { - "latency": 0.178091555 - }, - { - "latency": 0.205225928 - }, - { - "latency": 0.183313446 - }, - { - "latency": 0.182803092 - }, - { - "latency": 0.206613716 - }, - { - "latency": 0.180045179 - }, - { - "latency": 0.190447489 - }, - { - "latency": 0.196653759 - }, - { - "latency": 0.181413467 - }, - { - "latency": 0.190559507 - }, - { - "latency": 0.189083223 - }, - { - "latency": 0.188047505 - }, - { - "latency": 0.186059217 - }, - { - "latency": 0.206171833 - }, - { - "latency": 0.186291224 - }, - { - "latency": 0.184984573 - }, - { - "latency": 0.216322201 - }, - { - "latency": 0.190494338 - }, - { - "latency": 0.187526226 - }, - { - "latency": 0.181350439 - }, - { - "latency": 0.182049804 - }, - { - "latency": 0.175371751 - }, - { - "latency": 0.185945207 - }, - { - "latency": 0.179349359 - }, - { - "latency": 0.190895432 - }, - { - "latency": 0.185165853 - }, - { - "latency": 0.184375268 - }, - { - "latency": 0.182668861 - }, - { - "latency": 0.181561979 - }, - { - "latency": 0.182323924 - }, - { - "latency": 0.180021134 - }, - { - "latency": 0.192479065 - }, - { - "latency": 0.183290157 - }, - { - "latency": 0.177039921 - }, - { - "latency": 0.18382186 - }, - { - "latency": 0.184954265 - }, - { - "latency": 0.172770623 - }, - { - "latency": 0.214090908 - }, - { - "latency": 0.18233389 - }, - { - "latency": 0.180413284 - }, - { - "latency": 0.176331657 - }, - { - "latency": 0.178407782 - }, - { - "latency": 0.19725643 - }, - { - "latency": 0.180947794 - }, - { - "latency": 0.17512023 - }, - { - "latency": 0.184425413 - }, - { - "latency": 0.192091152 - }, - { - "latency": 0.186037606 - }, - { - "latency": 0.173839327 - }, - { - "latency": 0.192581101 - }, - { - "latency": 0.189038532 - }, - { - "latency": 0.173468669 - }, - { - "latency": 0.184185192 - }, - { - "latency": 0.174890333 - }, - { - "latency": 0.175377558 - }, - { - "latency": 0.184162293 - }, - { - "latency": 0.186854575 - }, - { - "latency": 0.184125389 - }, - { - "latency": 0.184674118 - }, - { - "latency": 0.186464923 - }, - { - "latency": 0.191204626 - }, - { - "latency": 0.190571311 - }, - { - "latency": 0.193601003 - }, - { - "latency": 0.182154124 - }, - { - "latency": 0.181953779 - }, - { - "latency": 0.18014519 - }, - { - "latency": 0.188333287 - }, - { - "latency": 0.18424951 - }, - { - "latency": 0.176310991 - }, - { - "latency": 0.18454287 - }, - { - "latency": 0.192177441 - }, - { - "latency": 0.189954567 - }, - { - "latency": 0.183791972 - }, - { - "latency": 0.188364578 - }, - { - "latency": 0.206545537 - }, - { - "latency": 0.188741757 - }, - { - "latency": 0.176952027 - }, - { - "latency": 0.184000075 - }, - { - "latency": 0.194835838 - }, - { - "latency": 0.177184825 - }, - { - "latency": 0.214639191 - }, - { - "latency": 0.205210722 - }, - { - "latency": 0.183609678 - } - ], - "implementation": "rust-libp2p", - "version": "master", - "transportStack": "tcp" - }, - { - "result": [ - { - "latency": 0.124985852 - }, - { - "latency": 0.124897784 - }, - { - "latency": 0.116867377 - }, - { - "latency": 0.119357275 - }, - { - "latency": 0.115942049 - }, - { - "latency": 0.130567972 - }, - { - "latency": 0.121643709 - }, - { - "latency": 0.12528823 - }, - { - "latency": 0.11920387 - }, - { - "latency": 0.125237611 - }, - { - "latency": 0.127641651 - }, - { - "latency": 0.142972187 - }, - { - "latency": 0.130980271 - }, - { - "latency": 0.122302554 - }, - { - "latency": 0.122404067 - }, - { - "latency": 0.125997028 - }, - { - "latency": 0.124245733 - }, - { - "latency": 0.121662989 - }, - { - "latency": 0.129779479 - }, - { - "latency": 0.129970087 - }, - { - "latency": 0.140195006 - }, - { - "latency": 0.127729424 - }, - { - "latency": 0.138253288 - }, - { - "latency": 0.130434252 - }, - { - "latency": 0.126554746 - }, - { - "latency": 0.126922284 - }, - { - "latency": 0.130845819 - }, - { - "latency": 0.125306162 - }, - { - "latency": 0.127861431 - }, - { - "latency": 0.13935822 - }, - { - "latency": 0.126762595 - }, - { - "latency": 0.141954491 - }, - { - "latency": 0.13066807 - }, - { - "latency": 0.130730657 - }, - { - "latency": 0.121009563 - }, - { - "latency": 0.119177249 - }, - { - "latency": 0.127983337 - }, - { - "latency": 0.121600734 - }, - { - "latency": 0.126477091 - }, - { - "latency": 0.127520013 - }, - { - "latency": 0.124779785 - }, - { - "latency": 0.122819082 - }, - { - "latency": 0.144541039 - }, - { - "latency": 0.126971628 - }, - { - "latency": 0.129182336 - }, - { - "latency": 0.12913606 - }, - { - "latency": 0.138968543 - }, - { - "latency": 0.122467077 - }, - { - "latency": 0.126985904 - }, - { - "latency": 0.128889418 - }, - { - "latency": 0.121596853 - }, - { - "latency": 0.127431273 - }, - { - "latency": 0.130369131 - }, - { - "latency": 0.128812229 - }, - { - "latency": 0.11839908 - }, - { - "latency": 0.126726275 - }, - { - "latency": 0.117292781 - }, - { - "latency": 0.119445575 - }, - { - "latency": 0.124057865 - }, - { - "latency": 0.126838895 - }, - { - "latency": 0.117280407 - }, - { - "latency": 0.13175903 - }, - { - "latency": 0.122334931 - }, - { - "latency": 0.124641677 - }, - { - "latency": 0.130123511 - }, - { - "latency": 0.119115634 - }, - { - "latency": 0.123680644 - }, - { - "latency": 0.126551527 - }, - { - "latency": 0.142264055 - }, - { - "latency": 0.136419262 - }, - { - "latency": 0.126691921 - }, - { - "latency": 0.12635038 - }, - { - "latency": 0.125798452 - }, - { - "latency": 0.134378485 - }, - { - "latency": 0.12260542 - }, - { - "latency": 0.124756471 - }, - { - "latency": 0.121187822 - }, - { - "latency": 0.126405865 - }, - { - "latency": 0.130877657 - }, - { - "latency": 0.131583027 - }, - { - "latency": 0.125363758 - }, - { - "latency": 0.129021792 - }, - { - "latency": 0.12410179 - }, - { - "latency": 0.129295074 - }, - { - "latency": 0.1234256 - }, - { - "latency": 0.121474457 - }, - { - "latency": 0.122479316 - }, - { - "latency": 0.125399806 - }, - { - "latency": 0.144443717 - }, - { - "latency": 0.123845519 - }, - { - "latency": 0.131696313 - }, - { - "latency": 0.129748769 - }, - { - "latency": 0.125070669 - }, - { - "latency": 0.131184637 - }, - { - "latency": 0.121380759 - }, - { - "latency": 0.138747142 - }, - { - "latency": 0.131646282 - }, - { - "latency": 0.128584674 - }, - { - "latency": 0.119183386 - }, - { - "latency": 0.125298235 - } - ], - "implementation": "rust-libp2p", - "version": "master", - "transportStack": "quic-v1" - }, - { - "result": [ - { - "latency": 0.189362696 + "latency": 0.193611031 }, { - "latency": 0.184257094 + "latency": 0.184660063 }, { - "latency": 0.176503621 + "latency": 0.174386248 }, { - "latency": 0.186995795 + "latency": 0.182427158 }, { - "latency": 0.207009412 + "latency": 0.195873497 }, { - "latency": 0.181787896 + "latency": 0.184269985 }, { - "latency": 0.179312597 + "latency": 0.190561691 }, { - "latency": 0.187296467 + "latency": 0.19189372 }, { - "latency": 0.215320978 + "latency": 0.185729502 }, { - "latency": 0.182508133 + "latency": 0.189000513 }, { - "latency": 0.186009409 + "latency": 0.190462067 }, { - "latency": 0.191206923 + "latency": 0.191663607 }, { - "latency": 0.194117231 + "latency": 0.190487748 }, { - "latency": 0.190253697 + "latency": 0.187522078 }, { - "latency": 0.18909391 + "latency": 0.181534055 }, { - "latency": 0.170853337 + "latency": 0.185126363 }, { - "latency": 0.175234732 + "latency": 0.178997167 }, { - "latency": 0.182189168 + "latency": 0.179054303 }, { - "latency": 0.195379197 + "latency": 0.18058274 }, { - "latency": 0.177878326 + "latency": 0.18107279 }, { - "latency": 0.187023883 + "latency": 0.183168437 }, { - "latency": 0.18901254 + "latency": 0.187152481 }, { - "latency": 0.185159698 + "latency": 0.194543868 }, { - "latency": 0.192904637 + "latency": 0.185835635 }, { - "latency": 0.188556354 + "latency": 0.193922394 }, { - "latency": 0.179480861 + "latency": 0.189913662 }, { - "latency": 0.180487247 + "latency": 0.192230848 }, { - "latency": 0.189395735 + "latency": 0.189870475 }, { - "latency": 0.183186436 + "latency": 0.190939024 }, { - "latency": 0.182951454 + "latency": 0.184533936 }, { - "latency": 0.183291831 + "latency": 0.184247589 }, { - "latency": 0.182329771 + "latency": 0.184083735 }, { - "latency": 0.178921059 + "latency": 0.184671533 }, { - "latency": 0.170950936 + "latency": 0.193504566 }, { - "latency": 0.185579903 + "latency": 0.191318209 }, { - "latency": 0.178266596 + "latency": 0.181201374 }, { - "latency": 0.181499463 + "latency": 0.188479687 }, { - "latency": 0.185857586 + "latency": 0.191061259 }, { - "latency": 0.192611852 + "latency": 0.181493133 }, { - "latency": 0.188218146 + "latency": 0.191766945 }, { - "latency": 0.184432348 + "latency": 0.183939678 }, { - "latency": 0.185624494 + "latency": 0.18425399 }, { - "latency": 0.188795066 + "latency": 0.18170903 }, { - "latency": 0.182892385 + "latency": 0.175648898 }, { - "latency": 0.191776986 + "latency": 0.192982406 }, { - "latency": 0.188805853 + "latency": 0.192881222 }, { - "latency": 0.182332908 + "latency": 0.191268725 }, { - "latency": 0.172386494 + "latency": 0.190490357 }, { - "latency": 0.177526919 + "latency": 0.19146303 }, { - "latency": 0.184582185 + "latency": 0.193840373 }, { - "latency": 0.185781141 + "latency": 0.19423978 }, { - "latency": 0.194953978 + "latency": 0.1927349 }, { - "latency": 0.176699043 + "latency": 0.195282414 }, { - "latency": 0.178340725 + "latency": 0.179044754 }, { - "latency": 0.181108669 + "latency": 0.185208342 }, { - "latency": 0.182733409 + "latency": 0.184985334 }, { - "latency": 0.191455096 + "latency": 0.193949825 }, { - "latency": 0.199871046 + "latency": 0.184371743 }, { - "latency": 0.182976261 + "latency": 0.174854459 }, { - "latency": 0.177787335 + "latency": 0.182770785 }, { - "latency": 0.192248686 + "latency": 0.182135638 }, { - "latency": 0.184230123 + "latency": 0.174365287 }, { - "latency": 0.183450065 + "latency": 0.193113206 }, { - "latency": 0.214137955 + "latency": 0.184114371 }, { - "latency": 0.190076884 + "latency": 0.195781292 }, { - "latency": 0.181667491 + "latency": 0.188960336 }, { - "latency": 0.185058031 + "latency": 0.186197267 }, { - "latency": 0.189068455 + "latency": 0.191250193 }, { - "latency": 0.186243296 + "latency": 0.17476787 }, { - "latency": 0.181407547 + "latency": 0.184205065 }, { - "latency": 0.18320305 + "latency": 0.191860448 }, { - "latency": 0.178330949 + "latency": 0.19150553 }, { - "latency": 0.182667088 + "latency": 0.18703647 }, { - "latency": 0.184156308 + "latency": 0.189456308 }, { - "latency": 0.191862337 + "latency": 0.189836771 }, { - "latency": 0.187559616 + "latency": 0.186736264 }, { - "latency": 0.193539441 + "latency": 0.191064999 }, { - "latency": 0.185777781 + "latency": 0.191226869 }, { - "latency": 0.184060921 + "latency": 0.193968671 }, { - "latency": 0.182154586 + "latency": 0.19340038 }, { - "latency": 0.188571688 + "latency": 0.193777988 }, { - "latency": 0.189949502 + "latency": 0.182311432 }, { - "latency": 0.186741271 + "latency": 0.193029505 }, { - "latency": 0.175728354 + "latency": 0.190579868 }, { - "latency": 0.181443362 + "latency": 0.188188375 }, { - "latency": 0.179148257 + "latency": 0.189820082 }, { - "latency": 0.184436163 + "latency": 0.192695066 }, { - "latency": 0.185638237 + "latency": 0.184879347 }, { - "latency": 0.186350142 + "latency": 0.188491941 }, { - "latency": 0.182870392 + "latency": 0.177804526 }, { - "latency": 0.180897899 + "latency": 0.184222994 }, { - "latency": 0.185233758 + "latency": 0.189021823 }, { - "latency": 0.179852789 + "latency": 0.19144004 }, { - "latency": 0.188094446 + "latency": 0.174885908 }, { - "latency": 0.175739098 + "latency": 0.190106678 }, { - "latency": 0.17940211 + "latency": 0.189258416 }, { - "latency": 0.185365599 + "latency": 0.192956529 }, { - "latency": 0.174800194 + "latency": 0.184070421 }, { - "latency": 0.180595134 + "latency": 0.19059973 }, { - "latency": 0.191975639 + "latency": 0.185520228 } ], "implementation": "https", @@ -2757,304 +1995,304 @@ { "result": [ { - "latency": 0.323970502 + "latency": 0.326642985 }, { - "latency": 0.309916684 + "latency": 0.382128965 }, { - "latency": 0.301992648 + "latency": 0.382633005 }, { - "latency": 0.373591024 + "latency": 0.368313629 }, { - "latency": 0.327304297 + "latency": 0.292561879 }, { - "latency": 0.310960531 + "latency": 0.310618415 }, { - "latency": 0.361057207 + "latency": 0.380055201 }, { - "latency": 0.311007207 + "latency": 0.373222626 }, { - "latency": 0.36405727 + "latency": 0.358952041 }, { - "latency": 0.295030591 + "latency": 0.365807759 }, { - "latency": 0.295887937 + "latency": 0.307672678 }, { - "latency": 0.343538649 + "latency": 0.356281211 }, { - "latency": 0.307084875 + "latency": 0.371454433 }, { - "latency": 0.309798048 + "latency": 0.382450034 }, { - "latency": 0.3744468 + "latency": 0.386691925 }, { - "latency": 0.307375258 + "latency": 0.316998535 }, { - "latency": 0.307690522 + "latency": 0.316096538 }, { - "latency": 0.307882917 + "latency": 0.316935613 }, { - "latency": 0.314963704 + "latency": 0.366201407 }, { - "latency": 0.306328059 + "latency": 0.362219615 }, { - "latency": 0.358475032 + "latency": 0.364428642 }, { - "latency": 0.351809325 + "latency": 0.377483149 }, { - "latency": 0.30363855 + "latency": 0.374137093 }, { - "latency": 0.351849267 + "latency": 0.342820707 }, { - "latency": 0.32399796 + "latency": 0.361087432 }, { - "latency": 0.369699616 + "latency": 0.326921193 }, { - "latency": 0.357525107 + "latency": 0.305793829 }, { - "latency": 0.304114566 + "latency": 0.299915013 }, { - "latency": 0.388885797 + "latency": 0.307881192 }, { - "latency": 0.358542003 + "latency": 0.323627143 }, { - "latency": 0.348416751 + "latency": 0.381313117 }, { - "latency": 0.309225694 + "latency": 0.365195716 }, { - "latency": 0.319467079 + "latency": 0.31570451 }, { - "latency": 0.379522644 + "latency": 0.377403403 }, { - "latency": 0.37035879 + "latency": 0.306630137 }, { - "latency": 0.292699583 + "latency": 0.368362128 }, { - "latency": 0.319340481 + "latency": 0.364496837 }, { - "latency": 0.359906148 + "latency": 0.388869051 }, { - "latency": 0.305050285 + "latency": 0.382781431 }, { - "latency": 0.307536771 + "latency": 0.325336764 }, { - "latency": 0.379879269 + "latency": 0.2866542 }, { - "latency": 0.372204895 + "latency": 0.387001487 }, { - "latency": 0.37469821 + "latency": 0.386506135 }, { - "latency": 0.294802263 + "latency": 0.345863758 }, { - "latency": 0.301831903 + "latency": 0.391463767 }, { - "latency": 0.382340191 + "latency": 0.364813599 }, { - "latency": 0.362535557 + "latency": 0.384964683 }, { - "latency": 0.307389675 + "latency": 0.379448677 }, { - "latency": 0.303534409 + "latency": 0.382174825 }, { - "latency": 0.295525148 + "latency": 0.38766788 }, { - "latency": 0.367879385 + "latency": 0.323681694 }, { - "latency": 0.293974757 + "latency": 0.367429818 }, { - "latency": 0.342646287 + "latency": 0.35763046 }, { - "latency": 0.324636222 + "latency": 0.322693932 }, { - "latency": 0.299660122 + "latency": 0.303695441 }, { - "latency": 0.360713626 + "latency": 0.362501957 }, { - "latency": 0.366988751 + "latency": 0.384227571 }, { - "latency": 0.364773114 + "latency": 0.388984907 }, { - "latency": 0.366291828 + "latency": 0.377511491 }, { - "latency": 0.317488097 + "latency": 0.319590549 }, { - "latency": 0.352920409 + "latency": 0.315687067 }, { - "latency": 0.374013813 + "latency": 0.310804716 }, { - "latency": 0.366832838 + "latency": 0.302587401 }, { - "latency": 0.3051135 + "latency": 0.323551098 }, { - "latency": 0.320116362 + "latency": 0.372822809 }, { - "latency": 0.323311916 + "latency": 0.374402632 }, { - "latency": 0.291100271 + "latency": 0.369413941 }, { - "latency": 0.296507367 + "latency": 0.306651218 }, { - "latency": 0.315840196 + "latency": 0.385975147 }, { - "latency": 0.298475729 + "latency": 0.320421645 }, { - "latency": 0.298311544 + "latency": 0.369674082 }, { - "latency": 0.368790277 + "latency": 0.388938519 }, { - "latency": 0.354186073 + "latency": 0.383251791 }, { - "latency": 0.328962143 + "latency": 0.376300961 }, { - "latency": 0.320048245 + "latency": 0.310942791 }, { - "latency": 0.309131172 + "latency": 0.356427515 }, { - "latency": 0.3290665 + "latency": 0.314795516 }, { - "latency": 0.305280845 + "latency": 0.371669228 }, { - "latency": 0.301951486 + "latency": 0.365984668 }, { - "latency": 0.366323631 + "latency": 0.303139823 }, { - "latency": 0.324678099 + "latency": 0.316314379 }, { - "latency": 0.321305265 + "latency": 0.367740153 }, { - "latency": 0.386066672 + "latency": 0.313421467 }, { - "latency": 0.309877473 + "latency": 0.376543145 }, { - "latency": 0.311308486 + "latency": 0.305058204 }, { - "latency": 0.310314411 + "latency": 0.388871248 }, { - "latency": 0.308241121 + "latency": 0.357856956 }, { - "latency": 0.347614113 + "latency": 0.356003703 }, { - "latency": 0.368287534 + "latency": 0.317190176 }, { - "latency": 0.304713008 + "latency": 0.31804187 }, { - "latency": 0.324838849 + "latency": 0.373843931 }, { - "latency": 0.39033867 + "latency": 0.366347657 }, { - "latency": 0.423928967 + "latency": 0.362137889 }, { - "latency": 0.29741265 + "latency": 0.315058712 }, { - "latency": 0.304805872 + "latency": 0.373978905 }, { - "latency": 0.303888687 + "latency": 0.292595104 }, { - "latency": 0.350139037 + "latency": 0.309405004 }, { - "latency": 0.307580329 + "latency": 0.379280077 }, { - "latency": 0.324619819 + "latency": 0.383785297 }, { - "latency": 0.320656314 + "latency": 0.32276657 } ], "implementation": "go-libp2p", @@ -3064,304 +2302,304 @@ { "result": [ { - "latency": 0.187597103 + "latency": 0.19853085 }, { - "latency": 0.196279638 + "latency": 0.191951571 }, { - "latency": 0.189995816 + "latency": 0.196744218 }, { - "latency": 0.176864354 + "latency": 0.19878817 }, { - "latency": 0.18174694 + "latency": 0.198305586 }, { - "latency": 0.198002132 + "latency": 0.187257471 }, { - "latency": 0.190365428 + "latency": 0.179576603 }, { - "latency": 0.18248028 + "latency": 0.184635809 }, { - "latency": 0.184812527 + "latency": 0.194149893 }, { - "latency": 0.18851873 + "latency": 0.192645357 }, { - "latency": 0.199783789 + "latency": 0.195224874 }, { - "latency": 0.191322644 + "latency": 0.194654651 }, { - "latency": 0.183950365 + "latency": 0.185751118 }, { - "latency": 0.182659332 + "latency": 0.18536125 }, { - "latency": 0.17918445 + "latency": 0.183733246 }, { - "latency": 0.188746941 + "latency": 0.181846098 }, { - "latency": 0.187504577 + "latency": 0.18655796 }, { - "latency": 0.196185475 + "latency": 0.19349144 }, { - "latency": 0.177248839 + "latency": 0.1854633 }, { - "latency": 0.193007814 + "latency": 0.184603442 }, { - "latency": 0.18677512 + "latency": 0.183947076 }, { - "latency": 0.193230978 + "latency": 0.189303137 }, { - "latency": 0.179355531 + "latency": 0.185171673 }, { - "latency": 0.192254091 + "latency": 0.180910972 }, { - "latency": 0.184693387 + "latency": 0.199831597 }, { - "latency": 0.187841578 + "latency": 0.17931698 }, { - "latency": 0.185456225 + "latency": 0.192798633 }, { - "latency": 0.18223529 + "latency": 0.188465335 }, { - "latency": 0.188663302 + "latency": 0.182358784 }, { - "latency": 0.178476938 + "latency": 0.195169958 }, { - "latency": 0.189090935 + "latency": 0.187779531 }, { - "latency": 0.198484438 + "latency": 0.188490543 }, { - "latency": 0.190066311 + "latency": 0.192851927 }, { - "latency": 0.183263412 + "latency": 0.188556506 }, { - "latency": 0.190992334 + "latency": 0.188289409 }, { - "latency": 0.183704317 + "latency": 0.196786666 }, { - "latency": 0.188910202 + "latency": 0.188474472 }, { - "latency": 0.194702861 + "latency": 0.191316752 }, { - "latency": 0.216875004 + "latency": 0.193773401 }, { - "latency": 0.186074537 + "latency": 0.194873596 }, { - "latency": 0.192235958 + "latency": 0.190567914 }, { - "latency": 0.193910739 + "latency": 0.191033043 }, { - "latency": 0.191484569 + "latency": 0.17756521 }, { - "latency": 0.200675437 + "latency": 0.185146202 }, { - "latency": 0.180173493 + "latency": 0.194994976 }, { - "latency": 0.185077357 + "latency": 0.197001556 }, { - "latency": 0.191398024 + "latency": 0.185050768 }, { - "latency": 0.190708418 + "latency": 0.190907375 }, { - "latency": 0.20013402 + "latency": 0.197024951 }, { - "latency": 0.192550262 + "latency": 0.19264056 }, { - "latency": 0.191522206 + "latency": 0.198918362 }, { - "latency": 0.179174138 + "latency": 0.193241221 }, { - "latency": 0.177678109 + "latency": 0.187322511 }, { - "latency": 0.188171671 + "latency": 0.195177338 }, { - "latency": 0.17671662 + "latency": 0.184254421 }, { - "latency": 0.191066823 + "latency": 0.1885689 }, { - "latency": 0.200189244 + "latency": 0.186470531 }, { - "latency": 0.184217157 + "latency": 0.195276456 }, { - "latency": 0.190078418 + "latency": 0.196542236 }, { - "latency": 0.193130807 + "latency": 0.188911706 }, { - "latency": 0.192039628 + "latency": 0.194738979 }, { - "latency": 0.185675781 + "latency": 0.197516242 }, { - "latency": 0.188020378 + "latency": 0.187462058 }, { - "latency": 0.184364786 + "latency": 0.183623367 }, { - "latency": 0.192651868 + "latency": 0.187014343 }, { - "latency": 0.194280008 + "latency": 0.187832065 }, { - "latency": 0.193003562 + "latency": 0.190963263 }, { - "latency": 0.196006829 + "latency": 0.184141457 }, { - "latency": 0.192922236 + "latency": 0.190229586 }, { - "latency": 0.212420771 + "latency": 0.187780326 }, { - "latency": 0.191183956 + "latency": 0.190306321 }, { - "latency": 0.199057548 + "latency": 0.186595011 }, { - "latency": 0.193245455 + "latency": 0.195811047 }, { - "latency": 0.185154486 + "latency": 0.184423533 }, { - "latency": 0.185283582 + "latency": 0.198022439 }, { - "latency": 0.19323918 + "latency": 0.19259082 }, { - "latency": 0.185524517 + "latency": 0.190088074 }, { - "latency": 0.17511149 + "latency": 0.193167557 }, { - "latency": 0.190227327 + "latency": 0.182914897 }, { - "latency": 0.192747827 + "latency": 0.185911916 }, { - "latency": 0.183481662 + "latency": 0.190459947 }, { - "latency": 0.192717315 + "latency": 0.196192782 }, { - "latency": 0.185316465 + "latency": 0.186435365 }, { - "latency": 0.196271668 + "latency": 0.194391889 }, { - "latency": 0.189420979 + "latency": 0.177498802 }, { - "latency": 0.195711152 + "latency": 0.186500701 }, { - "latency": 0.180161333 + "latency": 0.184695789 }, { - "latency": 0.184140021 + "latency": 0.197436724 }, { - "latency": 0.187223318 + "latency": 0.186572966 }, { - "latency": 0.191340119 + "latency": 0.189725159 }, { - "latency": 0.191383577 + "latency": 0.198527726 }, { - "latency": 0.188396841 + "latency": 0.19676299 }, { - "latency": 0.19106931 + "latency": 0.187725343 }, { - "latency": 0.196102799 + "latency": 0.192208653 }, { - "latency": 0.175272283 + "latency": 0.185790419 }, { - "latency": 0.177065915 + "latency": 0.196811234 }, { - "latency": 0.175353437 + "latency": 0.19967613 }, { - "latency": 0.196867511 + "latency": 0.188468107 }, { - "latency": 0.190127213 + "latency": 0.195264373 }, { - "latency": 0.188496134 + "latency": 0.187427635 } ], "implementation": "go-libp2p", @@ -3371,304 +2609,304 @@ { "result": [ { - "latency": 0.351869658 + "latency": 0.383354411 }, { - "latency": 0.376485149 + "latency": 0.366816651 }, { - "latency": 0.311982626 + "latency": 0.328934918 }, { - "latency": 0.314650798 + "latency": 0.365064326 }, { - "latency": 0.306716237 + "latency": 0.365016592 }, { - "latency": 0.30774713 + "latency": 0.307933276 }, { - "latency": 0.303041712 + "latency": 0.319791938 }, { - "latency": 0.317237514 + "latency": 0.342454758 }, { - "latency": 0.370115785 + "latency": 0.365654216 }, { - "latency": 0.31146742 + "latency": 0.304068076 }, { - "latency": 0.357660454 + "latency": 0.37767816 }, { - "latency": 0.324299113 + "latency": 0.294282389 }, { - "latency": 0.322060353 + "latency": 0.377660035 }, { - "latency": 0.320258551 + "latency": 0.358838836 }, { - "latency": 0.31253544 + "latency": 0.389185164 }, { - "latency": 0.301881737 + "latency": 0.31235974 }, { - "latency": 0.385654611 + "latency": 0.370765935 }, { - "latency": 0.371849673 + "latency": 0.309285955 }, { - "latency": 0.369514975 + "latency": 0.357791323 }, { - "latency": 0.350550134 + "latency": 0.371534496 }, { - "latency": 0.374873127 + "latency": 0.377605652 }, { - "latency": 0.308019059 + "latency": 0.325101275 }, { - "latency": 0.347812084 + "latency": 0.370972364 }, { - "latency": 0.322232014 + "latency": 0.361257444 }, { - "latency": 0.289885524 + "latency": 0.303450385 }, { - "latency": 0.295782889 + "latency": 0.3099033 }, { - "latency": 0.357506589 + "latency": 0.362091645 }, { - "latency": 0.368892204 + "latency": 0.368709051 }, { - "latency": 0.322265242 + "latency": 0.371797336 }, { - "latency": 0.310472445 + "latency": 0.317477431 }, { - "latency": 0.388126303 + "latency": 0.320209375 }, { - "latency": 0.309615806 + "latency": 0.366449578 }, { - "latency": 0.301141527 + "latency": 0.312837107 }, { - "latency": 0.300713435 + "latency": 0.362088938 }, { - "latency": 0.315909454 + "latency": 0.322673769 }, { - "latency": 0.346338297 + "latency": 0.298409835 }, { - "latency": 0.31193979 + "latency": 0.381481983 }, { - "latency": 0.369797465 + "latency": 0.307941419 }, { - "latency": 0.321800404 + "latency": 0.30481143 }, { - "latency": 0.341164036 + "latency": 0.362213437 }, { - "latency": 0.342333523 + "latency": 0.322065902 }, { - "latency": 0.31536072 + "latency": 0.36534702 }, { - "latency": 0.293935652 + "latency": 0.368212981 }, { - "latency": 0.375302396 + "latency": 0.368098176 }, { - "latency": 0.362037028 + "latency": 0.381261102 }, { - "latency": 0.30585923 + "latency": 0.374552206 }, { - "latency": 0.304930234 + "latency": 0.307148136 }, { - "latency": 0.294736793 + "latency": 0.320847756 }, { - "latency": 0.307913307 + "latency": 0.361920242 }, { - "latency": 0.311921018 + "latency": 0.383390092 }, { - "latency": 0.357657661 + "latency": 0.363395437 }, { - "latency": 0.319735546 + "latency": 0.312823797 }, { - "latency": 0.38855903 + "latency": 0.365473538 }, { - "latency": 0.309608615 + "latency": 0.374926851 }, { - "latency": 0.415282013 + "latency": 0.373341145 }, { - "latency": 0.316993856 + "latency": 0.387062726 }, { - "latency": 0.364499244 + "latency": 0.372851035 }, { - "latency": 0.36947909 + "latency": 0.315866412 }, { - "latency": 0.361720028 + "latency": 0.355494599 }, { - "latency": 0.365485112 + "latency": 0.362169366 }, { - "latency": 0.348124335 + "latency": 0.355557861 }, { - "latency": 0.318444781 + "latency": 0.345662766 }, { - "latency": 0.390227271 + "latency": 0.313603083 }, { - "latency": 0.305337182 + "latency": 0.318680088 }, { - "latency": 0.324338219 + "latency": 0.379584798 }, { - "latency": 0.307885463 + "latency": 0.327404264 }, { - "latency": 0.298455361 + "latency": 0.387499798 }, { - "latency": 0.385485419 + "latency": 0.302968258 }, { - "latency": 0.325140821 + "latency": 0.321333849 }, { - "latency": 0.320687387 + "latency": 0.320520299 }, { - "latency": 0.311021872 + "latency": 0.327151293 }, { - "latency": 0.372952035 + "latency": 0.32689379 }, { - "latency": 0.319044286 + "latency": 0.327384378 }, { - "latency": 0.377765478 + "latency": 0.310947497 }, { - "latency": 0.32888675 + "latency": 0.359837608 }, { - "latency": 0.324665421 + "latency": 0.369577121 }, { - "latency": 0.324323474 + "latency": 0.39110906 }, { - "latency": 0.358180678 + "latency": 0.327293819 }, { - "latency": 0.321043611 + "latency": 0.321047436 }, { - "latency": 0.328765631 + "latency": 0.389024536 }, { - "latency": 0.306846369 + "latency": 0.3654893 }, { - "latency": 0.295398661 + "latency": 0.319259566 }, { - "latency": 0.325407015 + "latency": 0.379048626 }, { - "latency": 0.306803604 + "latency": 0.306746446 }, { - "latency": 0.32986049 + "latency": 0.364681807 }, { - "latency": 0.352041963 + "latency": 0.390550047 }, { - "latency": 0.329502926 + "latency": 0.319888392 }, { - "latency": 0.359705264 + "latency": 0.382336969 }, { - "latency": 0.317227145 + "latency": 0.382389333 }, { - "latency": 0.303529362 + "latency": 0.372704517 }, { - "latency": 0.297706118 + "latency": 0.369953622 }, { - "latency": 0.298701161 + "latency": 0.386991329 }, { - "latency": 0.383135423 + "latency": 0.299920378 }, { - "latency": 0.296446878 + "latency": 0.374502949 }, { - "latency": 0.303204225 + "latency": 0.385906111 }, { - "latency": 0.365743047 + "latency": 0.367151205 }, { - "latency": 0.309496779 + "latency": 0.378992 }, { - "latency": 0.37939236 + "latency": 0.30874927 }, { - "latency": 0.37422072 + "latency": 0.378343198 }, { - "latency": 0.316416604 + "latency": 0.373400133 } ], "implementation": "go-libp2p", @@ -3678,304 +2916,304 @@ { "result": [ { - "latency": 0.19629022 + "latency": 0.18164596 }, { - "latency": 0.187001075 + "latency": 0.187975739 }, { - "latency": 0.179767514 + "latency": 0.184909926 }, { - "latency": 0.188408475 + "latency": 0.187988911 }, { - "latency": 0.188961261 + "latency": 0.193614279 }, { - "latency": 0.190347867 + "latency": 0.196632928 }, { - "latency": 0.196091358 + "latency": 0.196804677 }, { - "latency": 0.187183621 + "latency": 0.184270079 }, { - "latency": 0.193111181 + "latency": 0.198264294 }, { - "latency": 0.193604102 + "latency": 0.199770761 }, { - "latency": 0.18321434 + "latency": 0.186949992 }, { - "latency": 0.220825642 + "latency": 0.186684323 }, { - "latency": 0.1883771 + "latency": 0.193110607 }, { - "latency": 0.192538493 + "latency": 0.193462672 }, { - "latency": 0.194356077 + "latency": 0.19213016 }, { - "latency": 0.180357692 + "latency": 0.179027353 }, { - "latency": 0.178765396 + "latency": 0.197059468 }, { - "latency": 0.187093119 + "latency": 0.189630128 }, { - "latency": 0.194790956 + "latency": 0.19355475 }, { - "latency": 0.185257228 + "latency": 0.1864852 }, { - "latency": 0.186657161 + "latency": 0.186230566 }, { - "latency": 0.184526102 + "latency": 0.187028891 }, { - "latency": 0.180423732 + "latency": 0.189110288 }, { - "latency": 0.18318373 + "latency": 0.196271372 }, { - "latency": 0.18554741 + "latency": 0.187361413 }, { - "latency": 0.192829947 + "latency": 0.178855995 }, { - "latency": 0.19225247 + "latency": 0.180070146 }, { - "latency": 0.181898031 + "latency": 0.186968288 }, { - "latency": 0.179637036 + "latency": 0.188734299 }, { - "latency": 0.191005015 + "latency": 0.195630242 }, { - "latency": 0.180926366 + "latency": 0.186446175 }, { - "latency": 0.191032901 + "latency": 0.187452985 }, { - "latency": 0.183364352 + "latency": 0.194053033 }, { - "latency": 0.192909982 + "latency": 0.18000757 }, { - "latency": 0.178122379 + "latency": 0.18449408 }, { - "latency": 0.205654815 + "latency": 0.183675693 }, { - "latency": 0.186808222 + "latency": 0.192823949 }, { - "latency": 0.187572635 + "latency": 0.189609147 }, { - "latency": 0.187370367 + "latency": 0.193913161 }, { - "latency": 0.18821567 + "latency": 0.186455409 }, { - "latency": 0.219318251 + "latency": 0.192653258 }, { - "latency": 0.188323635 + "latency": 0.196055379 }, { - "latency": 0.190714656 + "latency": 0.194033994 }, { - "latency": 0.188822158 + "latency": 0.190903175 }, { - "latency": 0.190579106 + "latency": 0.195374901 }, { - "latency": 0.198091137 + "latency": 0.196660413 }, { - "latency": 0.185814518 + "latency": 0.183951786 }, { - "latency": 0.179998196 + "latency": 0.183778267 }, { - "latency": 0.185087108 + "latency": 0.188222015 }, { - "latency": 0.18096715 + "latency": 0.197452812 }, { - "latency": 0.186716423 + "latency": 0.185979118 }, { - "latency": 0.191247233 + "latency": 0.194846035 }, { - "latency": 0.19776406 + "latency": 0.196704179 }, { - "latency": 0.187274419 + "latency": 0.196638518 }, { - "latency": 0.17736317 + "latency": 0.196027389 }, { - "latency": 0.192872979 + "latency": 0.181103275 }, { - "latency": 0.192659136 + "latency": 0.178721863 }, { - "latency": 0.188058286 + "latency": 0.194372236 }, { - "latency": 0.181201981 + "latency": 0.192735118 }, { - "latency": 0.193834514 + "latency": 0.196912673 }, { - "latency": 0.193836492 + "latency": 0.197476286 }, { - "latency": 0.186670494 + "latency": 0.194221575 }, { - "latency": 0.181267894 + "latency": 0.191864327 }, { - "latency": 0.174725537 + "latency": 0.190107094 }, { - "latency": 0.179303438 + "latency": 0.194835352 }, { - "latency": 0.19707318 + "latency": 0.177541172 }, { - "latency": 0.18719948 + "latency": 0.188553412 }, { - "latency": 0.185780103 + "latency": 0.191058966 }, { - "latency": 0.189762667 + "latency": 0.192228689 }, { - "latency": 0.189705561 + "latency": 0.17715968 }, { - "latency": 0.183736509 + "latency": 0.189566842 }, { - "latency": 0.19622505 + "latency": 0.19307595 }, { - "latency": 0.193052294 + "latency": 0.175073926 }, { - "latency": 0.186647795 + "latency": 0.194255278 }, { - "latency": 0.192048807 + "latency": 0.194501552 }, { - "latency": 0.194186347 + "latency": 0.196267246 }, { - "latency": 0.189358745 + "latency": 0.185917226 }, { - "latency": 0.176707634 + "latency": 0.193930219 }, { - "latency": 0.187674826 + "latency": 0.190562062 }, { - "latency": 0.183741366 + "latency": 0.185694726 }, { - "latency": 0.179041728 + "latency": 0.182792591 }, { - "latency": 0.174911566 + "latency": 0.19044984 }, { - "latency": 0.186887471 + "latency": 0.187497867 }, { - "latency": 0.182805234 + "latency": 0.185433222 }, { - "latency": 0.194119563 + "latency": 0.185661393 }, { - "latency": 0.183598894 + "latency": 0.193818521 }, { - "latency": 0.178822455 + "latency": 0.182724084 }, { - "latency": 0.195920955 + "latency": 0.185260831 }, { - "latency": 0.186705309 + "latency": 0.193413862 }, { - "latency": 0.195055306 + "latency": 0.197040171 }, { - "latency": 0.198703289 + "latency": 0.200338944 }, { - "latency": 0.18055214 + "latency": 0.19173311 }, { - "latency": 0.19007139 + "latency": 0.186999838 }, { - "latency": 0.207543499 + "latency": 0.189388805 }, { - "latency": 0.187531291 + "latency": 0.195165794 }, { - "latency": 0.187249022 + "latency": 0.178312572 }, { - "latency": 0.185995906 + "latency": 0.197916075 }, { - "latency": 0.176783898 + "latency": 0.19224727 }, { - "latency": 0.193466232 + "latency": 0.1834961 }, { - "latency": 0.189616842 + "latency": 0.198492033 } ], "implementation": "go-libp2p", @@ -3985,304 +3223,304 @@ { "result": [ { - "latency": 0.31130565 + "latency": 0.383221342 }, { - "latency": 0.290791867 + "latency": 0.363032673 }, { - "latency": 0.358702163 + "latency": 0.371665426 }, { - "latency": 0.311724998 + "latency": 0.358986065 }, { - "latency": 0.348408822 + "latency": 0.380072656 }, { - "latency": 0.298547645 + "latency": 0.377170464 }, { - "latency": 0.291047819 + "latency": 0.366706463 }, { - "latency": 0.428828565 + "latency": 0.357285429 }, { - "latency": 0.303396912 + "latency": 0.375125939 }, { - "latency": 0.32450014 + "latency": 0.378020724 }, { - "latency": 0.315082888 + "latency": 0.385126198 }, { - "latency": 0.316377738 + "latency": 0.365271474 }, { - "latency": 0.316372061 + "latency": 0.383492052 }, { - "latency": 0.29806649 + "latency": 0.368646362 }, { - "latency": 0.308031097 + "latency": 0.368561643 }, { - "latency": 0.312963543 + "latency": 0.294565016 }, { - "latency": 0.291305718 + "latency": 0.389165484 }, { - "latency": 0.317463995 + "latency": 0.373988431 }, { - "latency": 0.305102069 + "latency": 0.303618113 }, { - "latency": 0.290991176 + "latency": 0.318978965 }, { - "latency": 0.300952793 + "latency": 0.384901579 }, { - "latency": 0.307942447 + "latency": 0.384162438 }, { - "latency": 0.312192009 + "latency": 0.378562913 }, { - "latency": 0.299690706 + "latency": 0.379444295 }, { - "latency": 0.304377781 + "latency": 0.371834607 }, { - "latency": 0.317515938 + "latency": 0.385141592 }, { - "latency": 0.310633015 + "latency": 0.305031374 }, { - "latency": 0.325152223 + "latency": 0.384000562 }, { - "latency": 0.358521025 + "latency": 0.377519194 }, { - "latency": 0.321610139 + "latency": 0.382266489 }, { - "latency": 0.311453165 + "latency": 0.369993695 }, { - "latency": 0.344774641 + "latency": 0.388742882 }, { - "latency": 0.311075809 + "latency": 0.378357412 }, { - "latency": 0.305930169 + "latency": 0.384665648 }, { - "latency": 0.358986802 + "latency": 0.381758582 }, { - "latency": 0.311977947 + "latency": 0.368602919 }, { - "latency": 0.38670615 + "latency": 0.384514779 }, { - "latency": 0.372412255 + "latency": 0.364451477 }, { - "latency": 0.352266113 + "latency": 0.358430276 }, { - "latency": 0.307235184 + "latency": 0.371150371 }, { - "latency": 0.308365765 + "latency": 0.369536683 }, { - "latency": 0.362346726 + "latency": 0.313253158 }, { - "latency": 0.295038167 + "latency": 0.321031693 }, { - "latency": 0.297006144 + "latency": 0.369393694 }, { - "latency": 0.311722693 + "latency": 0.36350781 }, { - "latency": 0.294714911 + "latency": 0.367825446 }, { - "latency": 0.306590816 + "latency": 0.374814549 }, { - "latency": 0.371685948 + "latency": 0.370153977 }, { - "latency": 0.310133924 + "latency": 0.321387502 }, { - "latency": 0.306721522 + "latency": 0.373677918 }, { - "latency": 0.312533819 + "latency": 0.372745902 }, { - "latency": 0.362230143 + "latency": 0.363886654 }, { - "latency": 0.317343766 + "latency": 0.373905013 }, { - "latency": 0.383187768 + "latency": 0.385710683 }, { - "latency": 0.313338151 + "latency": 0.362352581 }, { - "latency": 0.311272096 + "latency": 0.325588313 }, { - "latency": 0.296399592 + "latency": 0.379165371 }, { - "latency": 0.294147567 + "latency": 0.388658952 }, { - "latency": 0.305763269 + "latency": 0.375733955 }, { - "latency": 0.288914063 + "latency": 0.382696816 }, { - "latency": 0.308968062 + "latency": 0.31496335 }, { - "latency": 0.304753424 + "latency": 0.378387934 }, { - "latency": 0.370149556 + "latency": 0.34945633 }, { - "latency": 0.31759314 + "latency": 0.323574583 }, { - "latency": 0.346034315 + "latency": 0.371780903 }, { - "latency": 0.362867113 + "latency": 0.368607958 }, { - "latency": 0.29197554 + "latency": 0.384967982 }, { - "latency": 0.383088744 + "latency": 0.364362417 }, { - "latency": 0.310756004 + "latency": 0.305291989 }, { - "latency": 0.3163066 + "latency": 0.389465598 }, { - "latency": 0.391833927 + "latency": 0.309318308 }, { - "latency": 0.296525565 + "latency": 0.387807831 }, { - "latency": 0.309019472 + "latency": 0.367300238 }, { - "latency": 0.371879069 + "latency": 0.386920075 }, { - "latency": 0.36313776 + "latency": 0.377826176 }, { - "latency": 0.310576904 + "latency": 0.353705451 }, { - "latency": 0.293507908 + "latency": 0.387449147 }, { - "latency": 0.313890356 + "latency": 0.378633567 }, { - "latency": 0.305297133 + "latency": 0.385679576 }, { - "latency": 0.322964199 + "latency": 0.37316501 }, { - "latency": 0.312283986 + "latency": 0.381431852 }, { - "latency": 0.311419245 + "latency": 0.383373022 }, { - "latency": 0.386074354 + "latency": 0.389626915 }, { - "latency": 0.358105407 + "latency": 0.378953742 }, { - "latency": 0.372295958 + "latency": 0.379272034 }, { - "latency": 0.324820032 + "latency": 0.382800116 }, { - "latency": 0.294003887 + "latency": 0.366150005 }, { - "latency": 0.311542065 + "latency": 0.390299455 }, { - "latency": 0.38318013 + "latency": 0.369149726 }, { - "latency": 0.375134453 + "latency": 0.365047744 }, { - "latency": 0.314124059 + "latency": 0.367821906 }, { - "latency": 0.321043117 + "latency": 0.328677693 }, { - "latency": 0.370243599 + "latency": 0.376992921 }, { - "latency": 0.303152535 + "latency": 0.38903856 }, { - "latency": 0.296826954 + "latency": 0.384376625 }, { - "latency": 0.312899013 + "latency": 0.35748855 }, { - "latency": 0.309085875 + "latency": 0.313877225 }, { - "latency": 0.358053435 + "latency": 0.376060233 }, { - "latency": 0.377894704 + "latency": 0.382368198 }, { - "latency": 0.378516792 + "latency": 0.35990768 } ], "implementation": "go-libp2p", @@ -4292,304 +3530,304 @@ { "result": [ { - "latency": 0.185282475 + "latency": 0.189066747 }, { - "latency": 0.196513664 + "latency": 0.191939025 }, { - "latency": 0.193169519 + "latency": 0.18417586 }, { - "latency": 0.182970524 + "latency": 0.181385514 }, { - "latency": 0.183457687 + "latency": 0.187469568 }, { - "latency": 0.187902673 + "latency": 0.199513844 }, { - "latency": 0.18193149 + "latency": 0.197259841 }, { - "latency": 0.187652787 + "latency": 0.194940883 }, { - "latency": 0.187864741 + "latency": 0.192797339 }, { - "latency": 0.183309425 + "latency": 0.193108537 }, { - "latency": 0.186887222 + "latency": 0.190361763 }, { - "latency": 0.189614316 + "latency": 0.18969558 }, { - "latency": 0.182120428 + "latency": 0.19985248 }, { - "latency": 0.178550567 + "latency": 0.195440493 }, { - "latency": 0.1800982 + "latency": 0.195083307 }, { - "latency": 0.173695866 + "latency": 0.187402731 }, { - "latency": 0.197290251 + "latency": 0.199933994 }, { - "latency": 0.178608653 + "latency": 0.186781202 }, { - "latency": 0.198513617 + "latency": 0.200948162 }, { - "latency": 0.187057687 + "latency": 0.193845375 }, { - "latency": 0.18988332 + "latency": 0.192063212 }, { - "latency": 0.179905841 + "latency": 0.187550725 }, { - "latency": 0.195326819 + "latency": 0.190476769 }, { - "latency": 0.178386583 + "latency": 0.18798918 }, { - "latency": 0.19336312 + "latency": 0.194836979 }, { - "latency": 0.181438781 + "latency": 0.186459885 }, { - "latency": 0.180239293 + "latency": 0.180777148 }, { - "latency": 0.187454127 + "latency": 0.195649761 }, { - "latency": 0.188442668 + "latency": 0.186763655 }, { - "latency": 0.192710613 + "latency": 0.194598871 }, { - "latency": 0.194083705 + "latency": 0.17933727 }, { - "latency": 0.187065331 + "latency": 0.192170327 }, { - "latency": 0.189658178 + "latency": 0.198062071 }, { - "latency": 0.189537337 + "latency": 0.196364891 }, { - "latency": 0.176685588 + "latency": 0.187548269 }, { - "latency": 0.185425852 + "latency": 0.193009532 }, { - "latency": 0.183586327 + "latency": 0.188453664 }, { - "latency": 0.178124846 + "latency": 0.197320105 }, { - "latency": 0.18479762 + "latency": 0.188718973 }, { - "latency": 0.1873116 + "latency": 0.184237135 }, { - "latency": 0.188570114 + "latency": 0.189048287 }, { - "latency": 0.176527692 + "latency": 0.195555384 }, { - "latency": 0.191324912 + "latency": 0.183404527 }, { - "latency": 0.177020188 + "latency": 0.194438718 }, { - "latency": 0.196669797 + "latency": 0.195190411 }, { - "latency": 0.187722307 + "latency": 0.190358715 }, { - "latency": 0.181572356 + "latency": 0.197476734 }, { - "latency": 0.192115493 + "latency": 0.189813437 }, { - "latency": 0.189029781 + "latency": 0.191265747 }, { - "latency": 0.189163516 + "latency": 0.19242237 }, { - "latency": 0.19470198 + "latency": 0.199490411 }, { - "latency": 0.183609028 + "latency": 0.198071672 }, { - "latency": 0.184423062 + "latency": 0.183927373 }, { - "latency": 0.184898657 + "latency": 0.182517807 }, { - "latency": 0.187606622 + "latency": 0.194453487 }, { - "latency": 0.193305069 + "latency": 0.194710413 }, { - "latency": 0.189575537 + "latency": 0.191449435 }, { - "latency": 0.193374476 + "latency": 0.19350173 }, { - "latency": 0.180208156 + "latency": 0.193023109 }, { - "latency": 0.185895855 + "latency": 0.189648339 }, { - "latency": 0.188594668 + "latency": 0.182030069 }, { - "latency": 0.190078053 + "latency": 0.194282232 }, { - "latency": 0.180508403 + "latency": 0.197804082 }, { - "latency": 0.186718044 + "latency": 0.183650455 }, { - "latency": 0.179009061 + "latency": 0.196465928 }, { - "latency": 0.183511573 + "latency": 0.198509654 }, { - "latency": 0.184923526 + "latency": 0.19635332 }, { - "latency": 0.19010724 + "latency": 0.194642761 }, { - "latency": 0.185568719 + "latency": 0.19800444 }, { - "latency": 0.185596227 + "latency": 0.193491677 }, { - "latency": 0.186638411 + "latency": 0.18375984 }, { - "latency": 0.194082369 + "latency": 0.191360679 }, { - "latency": 0.196643614 + "latency": 0.192599365 }, { - "latency": 0.188558364 + "latency": 0.190551907 }, { - "latency": 0.178408939 + "latency": 0.186426734 }, { - "latency": 0.185022568 + "latency": 0.192667863 }, { - "latency": 0.18975773 + "latency": 0.188913521 }, { - "latency": 0.183665657 + "latency": 0.191869947 }, { - "latency": 0.173080171 + "latency": 0.189590614 }, { - "latency": 0.184522563 + "latency": 0.181036904 }, { - "latency": 0.194608691 + "latency": 0.200274197 }, { - "latency": 0.195952292 + "latency": 0.198928676 }, { - "latency": 0.188120972 + "latency": 0.190733396 }, { - "latency": 0.186907956 + "latency": 0.182077742 }, { - "latency": 0.181792265 + "latency": 0.188001832 }, { - "latency": 0.177877233 + "latency": 0.183062732 }, { - "latency": 0.174940561 + "latency": 0.185176062 }, { - "latency": 0.189418477 + "latency": 0.193874244 }, { - "latency": 0.192652511 + "latency": 0.195927905 }, { - "latency": 0.189784236 + "latency": 0.198821369 }, { - "latency": 0.18697218 + "latency": 0.197162723 }, { - "latency": 0.18192311 + "latency": 0.186764936 }, { - "latency": 0.184812629 + "latency": 0.183798445 }, { - "latency": 0.188187149 + "latency": 0.196401512 }, { - "latency": 0.188091535 + "latency": 0.183762009 }, { - "latency": 0.191142765 + "latency": 0.188860878 }, { - "latency": 0.182026162 + "latency": 0.190315794 }, { - "latency": 0.186947315 + "latency": 0.189521516 }, { - "latency": 0.191653532 + "latency": 0.188429086 }, { - "latency": 0.187021643 + "latency": 0.192119177 } ], "implementation": "go-libp2p", @@ -4606,173 +3844,173 @@ "pings": { "unit": "s", "results": [ - 0.088, - 0.061, - 0.0611, - 0.060899999999999996, - 0.061, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.0613, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.061200000000000004, - 0.060899999999999996, - 0.060899999999999996, - 0.061200000000000004, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.0631, - 0.061399999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.0613, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.061, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.061, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.061, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.0611, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.060899999999999996, - 0.061, - 0.061, - 0.060899999999999996, - 0.061, - 0.061, - 0.060899999999999996, - 0.060899999999999996, - 0.061, - 0.060899999999999996, - 0.060899999999999996 + 0.0637, + 0.0636, + 0.0689, + 0.0689, + 0.0689, + 0.0689, + 0.0689, + 0.0689, + 0.0689, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0639, + 0.0638, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0637, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0639, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0637, + 0.0636, + 0.0636, + 0.064, + 0.0636, + 0.0636, + 0.0639, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636, + 0.0636 ] }, "iperf": { "unit": "bit/s", "results": [ + 1250000000, + 2150000000, + 2130000000, + 1940000000, + 1560000000, + 1650000000, + 1660000000, + 1710000000, + 1770000000, + 1750000000, + 1800000000, + 1810000000, + 1820000000, + 1860000000, + 1830000000, + 1850000000, + 1860000000, + 1710000000, + 1340000000, + 1380000000, + 1420000000, + 1460000000, + 1480000000, + 1500000000, + 1530000000, + 1540000000, + 1560000000, + 1560000000, + 1570000000, + 1580000000, + 1580000000, + 1580000000, + 1580000000, + 1580000000, + 1580000000, + 1570000000, + 1580000000, + 1590000000, + 1590000000, + 1600000000, + 1600000000, + 1620000000, + 1640000000, + 1650000000, + 1680000000, + 1710000000, + 1740000000, + 1780000000, + 1820000000, + 1880000000, + 1930000000, + 2000000000, + 2080000000, + 2160000000, + 2250000000, + 2350000000, + 2450000000, + 2590000000, 2280000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4780000000, - 4740000000, - 4720000000 + 2000000000, + 1750000000, + 1740000000 ] } -} \ No newline at end of file +} diff --git a/perf/runner/src/benchmark-result-type.ts b/perf/runner/src/benchmark-result-type.ts index 34d1088ef..7645ecb16 100644 --- a/perf/runner/src/benchmark-result-type.ts +++ b/perf/runner/src/benchmark-result-type.ts @@ -36,9 +36,7 @@ export type Result = { }; export type ResultValue = { - connectionEstablishedSeconds: number, - uploadSeconds: number, - downloadSeconds: number, + latency: number }; export type Comparison = { diff --git a/perf/runner/src/index.ts b/perf/runner/src/index.ts index 1f6020331..8f78c103f 100644 --- a/perf/runner/src/index.ts +++ b/perf/runner/src/index.ts @@ -4,9 +4,9 @@ import yargs from 'yargs'; import fs from 'fs'; import { BenchmarkResults, Benchmark, Result, IperfResults, PingResults, ResultValue } from './benchmark-result-type'; -async function main(clientPublicIP: string, serverPublicIP: string) { - const pings = runPing(clientPublicIP, serverPublicIP); - const iperf = runIPerf(clientPublicIP, serverPublicIP); +async function main(clientPublicIP: string, serverPublicIP: string, testing: boolean) { + const pings = runPing(clientPublicIP, serverPublicIP, testing); + const iperf = runIPerf(clientPublicIP, serverPublicIP, testing); copyAndBuildPerfImplementations(serverPublicIP); copyAndBuildPerfImplementations(clientPublicIP); @@ -19,7 +19,7 @@ async function main(clientPublicIP: string, serverPublicIP: string) { uploadBytes: 100 << 20, downloadBytes: 0, unit: "bit/s", - iterations: 10, + iterations: testing ? 1 : 10, }), runBenchmarkAcrossVersions({ name: "Single Connection throughput – Download 100 MiB", @@ -28,7 +28,7 @@ async function main(clientPublicIP: string, serverPublicIP: string) { uploadBytes: 0, downloadBytes: 100 << 20, unit: "bit/s", - iterations: 10, + iterations: testing ? 1 : 10, }), runBenchmarkAcrossVersions({ name: "Connection establishment + 1 byte round trip latencies", @@ -37,7 +37,7 @@ async function main(clientPublicIP: string, serverPublicIP: string) { uploadBytes: 1, downloadBytes: 1, unit: "s", - iterations: 100, + iterations: testing ? 1 : 100, }), ]; @@ -53,10 +53,11 @@ async function main(clientPublicIP: string, serverPublicIP: string) { console.error("== done"); } -function runPing(clientPublicIP: string, serverPublicIP: string): PingResults { - console.error(`= run 100 pings from client to server`); +function runPing(clientPublicIP: string, serverPublicIP: string, testing: boolean): PingResults { + const pingCount = testing ? 1 : 100; + console.error(`= run ${pingCount} pings from client to server`); - const cmd = `ssh -o StrictHostKeyChecking=no ec2-user@${clientPublicIP} 'ping -c 100 ${serverPublicIP}'`; + const cmd = `ssh -o StrictHostKeyChecking=no ec2-user@${clientPublicIP} 'ping -c ${pingCount} ${serverPublicIP}'`; const stdout = execCommand(cmd).toString(); // Extract the time from each ping @@ -71,9 +72,9 @@ function runPing(clientPublicIP: string, serverPublicIP: string): PingResults { return { unit: "s", results: times } } -function runIPerf(clientPublicIP: string, serverPublicIP: string): IperfResults { - const iterations = 60; - console.error(`= run ${iterations} iPerf TCP from client to server`); +function runIPerf(clientPublicIP: string, serverPublicIP: string, testing: boolean): IperfResults { + const iPerfIterations = testing ? 1 : 60; + console.error(`= run ${iPerfIterations} iPerf TCP from client to server`); const killCMD = `ssh -o StrictHostKeyChecking=no ec2-user@${serverPublicIP} 'kill $(cat pidfile); rm pidfile; rm server.log || true'`; const killSTDOUT = execCommand(killCMD); @@ -83,7 +84,7 @@ function runIPerf(clientPublicIP: string, serverPublicIP: string): IperfResults const serverSTDOUT = execCommand(serverCMD); console.error(serverSTDOUT); - const cmd = `ssh -o StrictHostKeyChecking=no ec2-user@${clientPublicIP} 'iperf3 -c ${serverPublicIP} -b 25g -t ${iterations}'`; + const cmd = `ssh -o StrictHostKeyChecking=no ec2-user@${clientPublicIP} 'iperf3 -c ${serverPublicIP} -b 25g -t ${iPerfIterations}'`; const stdout = execSync(cmd).toString(); // Extract the bitrate from each relevant line @@ -232,8 +233,14 @@ const argv = yargs demandOption: true, description: 'Server public IP address', }, + 'testing': { + type: 'boolean', + default: false, + description: 'Run in testing mode', + demandOption: false, + } }) .command('help', 'Print usage information', yargs.help) .parseSync(); -main(argv['client-public-ip'] as string, argv['server-public-ip'] as string); +main(argv['client-public-ip'] as string, argv['server-public-ip'] as string, argv['testing'] as boolean); diff --git a/perf/runner/src/versions.ts b/perf/runner/src/versions.ts index 2a81d81bc..7306bd106 100644 --- a/perf/runner/src/versions.ts +++ b/perf/runner/src/versions.ts @@ -1,6 +1,6 @@ export type Version = { id: string, - implementation: "go-libp2p" | "js-libp2p" | "nim-libp2p" | "rust-libp2p" | "rust-libp2p-quinn" | "zig-libp2p" | "https" | "quic-go", + implementation: "go-libp2p" | "js-libp2p" | "nim-libp2p" | "rust-libp2p" | "zig-libp2p" | "https" | "quic-go", transportStacks: string[], } @@ -15,11 +15,6 @@ export const versions: Array = [ implementation: "rust-libp2p", transportStacks: ["tcp", "quic-v1"] }, - { - id: "master", - implementation: "rust-libp2p", - transportStacks: ["tcp", "quic-v1"] - }, { id: "v0.1", implementation: "https", diff --git a/perf/terraform/configs/local/terraform.tf b/perf/terraform/configs/local/terraform.tf index 22c745f5a..1575068be 100644 --- a/perf/terraform/configs/local/terraform.tf +++ b/perf/terraform/configs/local/terraform.tf @@ -67,7 +67,7 @@ module "long_lived_server" { source = "../../modules/long_lived" region = "us-west-2" - ami = "ami-0747e613a2a1ff483" + ami = "ami-002829755fa238bfa" providers = { aws = aws.us-west-2 @@ -80,7 +80,7 @@ module "long_lived_client" { source = "../../modules/long_lived" region = "us-east-1" - ami = "ami-06e46074ae430fba6" + ami = "ami-051f7e7f6c2f40dc1" providers = { aws = aws.us-east-1 diff --git a/perf/terraform/configs/remote/.terraform.lock.hcl b/perf/terraform/configs/remote/.terraform.lock.hcl index e490491e1..32564df51 100644 --- a/perf/terraform/configs/remote/.terraform.lock.hcl +++ b/perf/terraform/configs/remote/.terraform.lock.hcl @@ -5,6 +5,7 @@ provider "registry.terraform.io/hashicorp/archive" { version = "2.3.0" hashes = [ "h1:NaDbOqAcA9d8DiAS5/6+5smXwN3/+twJGb3QRiz6pNw=", + "h1:OmE1tPjiST8iQp6fC0N3Xzur+q2RvgvD7Lz0TpKSRBw=", "zh:0869128d13abe12b297b0cd13b8767f10d6bf047f5afc4215615aabc39c2eb4f", "zh:481ed837d63ba3aa45dd8736da83e911e3509dee0e7961bf5c00ed2644f807b3", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", @@ -25,6 +26,7 @@ provider "registry.terraform.io/hashicorp/aws" { constraints = "4.67.0" hashes = [ "h1:5Zfo3GfRSWBaXs4TGQNOflr1XaYj6pRnVJLX5VAjFX4=", + "h1:dCRc4GqsyfqHEMjgtlM1EympBcgTmcTkWaJmtd91+KA=", "zh:0843017ecc24385f2b45f2c5fce79dc25b258e50d516877b3affee3bef34f060", "zh:19876066cfa60de91834ec569a6448dab8c2518b8a71b5ca870b2444febddac6", "zh:24995686b2ad88c1ffaa242e36eee791fc6070e6144f418048c4ce24d0ba5183", diff --git a/perf/terraform/modules/long_lived/files/user-data.sh b/perf/terraform/modules/long_lived/files/user-data.sh index 1791a8259..22bb01fae 100644 --- a/perf/terraform/modules/long_lived/files/user-data.sh +++ b/perf/terraform/modules/long_lived/files/user-data.sh @@ -6,6 +6,7 @@ sudo yum -y install iperf3 # Bump UDP receive buffer size. See https://github.com/quic-go/quic-go/wiki/UDP-Receive-Buffer-Size. sudo sysctl -w net.core.rmem_max=2500000 +sudo sysctl -w net.core.wmem_max=2500000 # Set maximum TCP send and receive window to bandwidth-delay-product. # @@ -20,3 +21,9 @@ sudo yum install docker -y sudo systemctl enable docker sudo systemctl start docker sudo usermod -aG docker ec2-user + +# Taken from https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-up-node-on-ec2-instance.html +# +# Adapted to work with user-data according to https://repost.aws/questions/QUhS4f3j8jT6uW5OHAzi0-Wg/nodejs-not-installed-successfully-in-aws-ec2-inside-user-data +sudo -u ec2-user sh -c 'curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash' +sudo -u ec2-user sh -c '. ~/.nvm/nvm.sh && nvm install --lts' diff --git a/perf/terraform/modules/long_lived/main.tf b/perf/terraform/modules/long_lived/main.tf index 3eb01f5a6..9a04c9dde 100644 --- a/perf/terraform/modules/long_lived/main.tf +++ b/perf/terraform/modules/long_lived/main.tf @@ -94,7 +94,7 @@ resource "aws_security_group" "restricted_inbound" { resource "aws_launch_template" "perf" { name = "perf-node" image_id = var.ami - instance_type = "m5n.8xlarge" + instance_type = "m5.xlarge" # Debug via: # - /var/log/cloud-init.log and @@ -117,4 +117,6 @@ resource "aws_launch_template" "perf" { delete_on_termination = true } } + + update_default_version = true } diff --git a/perf/terraform/modules/short_lived/main.tf b/perf/terraform/modules/short_lived/main.tf index 228368f00..17782a51c 100644 --- a/perf/terraform/modules/short_lived/main.tf +++ b/perf/terraform/modules/short_lived/main.tf @@ -19,7 +19,6 @@ resource "aws_instance" "perf" { launch_template { name = "perf-node" - version = "3" } key_name = aws_key_pair.perf.key_name