Skip to content

deps: go 1.21 and quic-go v0.41.0 #427

deps: go 1.21 and quic-go v0.41.0

deps: go 1.21 and quic-go v0.41.0 #427

Workflow file for this run

name: CI
on: [push]
jobs:
test:
runs-on: ubuntu-20.04
defaults:
run:
shell: bash
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: "1.21"
- name: Build for multi-platform
run: |
set -xeu
DIST=/tmp/dist
mkdir -p $DIST
# (from: https://www.digitalocean.com/community/tutorials/how-to-build-go-executables-for-multiple-platforms-on-ubuntu-16-04)
platforms=("linux/amd64" "darwin/amd64" "windows/amd64")
for platform in "${platforms[@]}"
do
platform_split=(${platform//\// })
export GOOS=${platform_split[0]}
export GOARCH=${platform_split[1]}
[ $GOOS = "windows" ] && EXTENSION='.exe' || EXTENSION=''
BUILD_PATH=piping-server-check-$GOOS-$GOARCH
mkdir $BUILD_PATH
# Build
CGO_ENABLED=0 go build -o "${BUILD_PATH}/piping-server-check${EXTENSION}" main/main.go
done
# Without this, HTTP/3 client causes an error "failed to sufficiently increase receive buffer size (was: 208 kiB, wanted: 2048 kiB, got: 416 kiB)": https://github.com/quic-go/quic-go/wiki/UDP-Receive-Buffer-Size
- name: UDP receive buffer size seting
run: sudo sysctl -w net.core.rmem_max=2500000
- name: Test
run: go test -v ./...
timeout-minutes: 1
operational_test:
runs-on: ubuntu-20.04
defaults:
run:
shell: bash
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: "1.21"
- name: Build
run: CGO_ENABLED=0 go build -o piping-server-check main/main.go
# Without this, HTTP/3 client causes an error "failed to sufficiently increase receive buffer size (was: 208 kiB, wanted: 2048 kiB, got: 416 kiB)": https://github.com/quic-go/quic-go/wiki/UDP-Receive-Buffer-Size
- name: UDP receive buffer size seting
run: sudo sysctl -w net.core.rmem_max=2500000
- name: Install piping-server to /tmp and create certificates
run: |
set -eu
cd /tmp
# pkg
curl -L https://github.com/nwtgck/piping-server-pkg/releases/download/v1.12.8/piping-server-pkg-linuxstatic-x64.tar.gz | tar xzvf -
mv ./piping-server-pkg-linuxstatic-x64/piping-server .
# Rust
curl -L https://github.com/nwtgck/piping-server-rust/releases/download/v0.16.0/piping-server-x86_64-unknown-linux-musl.tar.gz | tar xzf -
mkdir rust
mv ./piping-server-x86_64-unknown-linux-musl/piping-server ./rust/piping-server
(mkdir ssl_certs && cd ssl_certs && openssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt -days 365 -sha256 -nodes --subj '/CN=localhost/')
- name: Operational test (pkg) (normal case)
run: |
set -eu
./piping-server-check --http1.1 --http1.1-tls --h2 --tls-skip-verify --server-command='exec /tmp/piping-server --http-port=$HTTP_PORT --enable-https --https-port=$HTTPS_PORT --crt-path=/tmp/ssl_certs/server.crt --key-path=/tmp/ssl_certs/server.key' --n-simultaneous-requests 10 --transfer-speed-byte $((1024 * 1024 * 1024 * 1024)) --transfer-span 1s --transfer-span 2s --transfer-span 3s --concurrency 100 --result-jsonl-path=/tmp/result-pkg-normal-case.jsonl
cat /tmp/result-pkg-normal-case.jsonl
timeout-minutes: 2
# Purpose: Find out how the latest piping-server-check affects piping-server-rust
- name: Operational test (Rust) (normal case)
run: |
set -eu
./piping-server-check --http1.1 --http1.1-tls --h2 --tls-skip-verify --compromise post_cancel_post --compromise get_cancel_get --compromise simultaneous_request --server-command='exec /tmp/rust/piping-server --http-port=$HTTP_PORT --enable-https --https-port=$HTTPS_PORT --crt-path=/tmp/ssl_certs/server.crt --key-path=/tmp/ssl_certs/server.key' --n-simultaneous-requests 30 --transfer-speed-byte $((1024 * 1024 * 1024 * 1024)) --transfer-span 1s --transfer-span 2s --transfer-span 3s --concurrency 100 --result-jsonl-path=/tmp/result-rust-normal-case.jsonl
cat /tmp/result-rust-normal-case.jsonl
timeout-minutes: 2
# Purpose: Ensure existing with non-zero code
- name: Operational test (error case)
run: |
set -eu
# Should fail because no --tls-skip-verify
! ./piping-server-check --http1.1 --http1.1-tls --server-command='exec /tmp/piping-server --http-port=$HTTP_PORT --enable-https --https-port=$HTTPS_PORT --crt-path=/tmp/ssl_certs/server.crt --key-path=/tmp/ssl_certs/server.key' --n-simultaneous-requests 1 --concurrency 100 --result-jsonl-path=/tmp/result-pkg-error-case.jsonl
cat /tmp/result-pkg-error-case.jsonl
timeout-minutes: 2