-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 6cbaebd
Showing
444 changed files
with
81,942 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
version: 2.1 | ||
executors: | ||
test-go122: | ||
docker: | ||
- image: "cimg/go:1.22" | ||
environment: | ||
runrace: true | ||
TIMESCALE_FACTOR: 3 | ||
|
||
jobs: | ||
"test": &test | ||
executor: test-go122 | ||
steps: | ||
- checkout | ||
- run: | ||
name: "Build infos" | ||
command: go version | ||
- run: | ||
name: "Run tools tests" | ||
command: go run github.com/onsi/ginkgo/v2/ginkgo -race -r -v -randomize-all -trace integrationtests/tools | ||
- run: | ||
name: "Run self integration tests" | ||
command: go run github.com/onsi/ginkgo/v2/ginkgo -v -randomize-all -trace integrationtests/self | ||
- run: | ||
name: "Run version negotiation tests" | ||
command: go run github.com/onsi/ginkgo/v2/ginkgo -v -randomize-all -trace integrationtests/versionnegotiation | ||
- run: | ||
name: "Run self integration tests with race detector" | ||
command: go run github.com/onsi/ginkgo/v2/ginkgo -race -v -randomize-all -trace integrationtests/self | ||
- run: | ||
name: "Run self integration tests with qlog" | ||
command: go run github.com/onsi/ginkgo/v2/ginkgo -v -randomize-all -trace integrationtests/self -- -qlog | ||
- run: | ||
name: "Run version negotiation tests with qlog" | ||
command: go run github.com/onsi/ginkgo/v2/ginkgo -v -randomize-all -trace integrationtests/versionnegotiation -- -qlog | ||
go122: | ||
<<: *test | ||
|
||
workflows: | ||
workflow: | ||
jobs: | ||
- go122 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
FROM gcr.io/oss-fuzz-base/base-builder-go:v1 | ||
|
||
ARG TARGETPLATFORM | ||
RUN echo "TARGETPLATFORM: ${TARGETPLATFORM}" | ||
|
||
ENV GOVERSION=1.22.0 | ||
|
||
RUN platform=$(echo ${TARGETPLATFORM} | tr '/' '-') && \ | ||
filename="go${GOVERSION}.${platform}.tar.gz" && \ | ||
wget https://dl.google.com/go/${filename} && \ | ||
mkdir temp-go && \ | ||
rm -rf /root/.go/* && \ | ||
tar -C temp-go/ -xzf ${filename} && \ | ||
mv temp-go/go/* /root/.go/ && \ | ||
rm -r ${filename} temp-go | ||
|
||
RUN apt-get update && apt-get install -y make autoconf automake libtool | ||
|
||
COPY . $SRC/quic-go | ||
WORKDIR quic-go | ||
COPY .clusterfuzzlite/build.sh $SRC/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
#!/bin/bash -eu | ||
|
||
export CXX="${CXX} -lresolv" # required by Go 1.20 | ||
|
||
compile_go_fuzzer github.com/quic-go/quic-go/fuzzing/frames Fuzz frame_fuzzer | ||
compile_go_fuzzer github.com/quic-go/quic-go/fuzzing/header Fuzz header_fuzzer | ||
compile_go_fuzzer github.com/quic-go/quic-go/fuzzing/transportparameters Fuzz transportparameter_fuzzer | ||
compile_go_fuzzer github.com/quic-go/quic-go/fuzzing/tokens Fuzz token_fuzzer | ||
compile_go_fuzzer github.com/quic-go/quic-go/fuzzing/handshake Fuzz handshake_fuzzer |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
language: go |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# Git Hooks | ||
|
||
This directory contains useful Git hooks for working with quic-go. | ||
|
||
Install them by running | ||
```bash | ||
git config core.hooksPath .githooks | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
#!/bin/bash | ||
|
||
# Check that test files don't contain focussed test cases. | ||
errored=false | ||
for f in $(git diff --diff-filter=d --cached --name-only); do | ||
if [[ $f != *_test.go ]]; then continue; fi | ||
output=$(git show :"$f" | grep -n -e "FIt(" -e "FContext(" -e "FDescribe(") | ||
if [ $? -eq 0 ]; then | ||
echo "$f contains a focussed test:" | ||
echo "$output" | ||
echo "" | ||
errored=true | ||
fi | ||
done | ||
|
||
pushd ./integrationtests/gomodvendor > /dev/null | ||
go mod tidy | ||
if [[ -n $(git diff --diff-filter=d --name-only -- "go.mod" "go.sum") ]]; then | ||
echo "go.mod / go.sum in integrationtests/gomodvendor not tidied" | ||
errored=true | ||
fi | ||
popd > /dev/null | ||
|
||
# Check that all Go files are properly gofumpt-ed. | ||
output=$(gofumpt -d $(git diff --diff-filter=d --cached --name-only -- '*.go')) | ||
if [ -n "$output" ]; then | ||
echo "Found files that are not properly gofumpt-ed." | ||
echo "$output" | ||
errored=true | ||
fi | ||
|
||
if [ "$errored" = true ]; then | ||
exit 1 | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# These are supported funding model platforms | ||
|
||
github: [marten-seemann] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] | ||
patreon: # Replace with a single Patreon username | ||
open_collective: # Replace with a single Open Collective username | ||
ko_fi: # Replace with a single Ko-fi username | ||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel | ||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry | ||
liberapay: # Replace with a single Liberapay username | ||
issuehunt: # Replace with a single IssueHunt username | ||
otechie: # Replace with a single Otechie username | ||
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry | ||
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
version: 2 | ||
updates: | ||
- package-ecosystem: "github-actions" | ||
directory: "/" | ||
schedule: | ||
interval: "weekly" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
name: Build interop Docker image | ||
on: | ||
push: | ||
branches: | ||
- master | ||
tags: | ||
- 'v*' | ||
|
||
jobs: | ||
interop: | ||
runs-on: ${{ fromJSON(vars['DOCKER_RUNNER_UBUNTU'] || '"ubuntu-latest"') }} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Set up QEMU | ||
uses: docker/setup-qemu-action@v3 | ||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v3 | ||
with: | ||
platforms: linux/amd64,linux/arm64 | ||
- name: Login to Docker Hub | ||
uses: docker/login-action@v3 | ||
with: | ||
username: ${{ secrets.DOCKER_USERNAME }} | ||
password: ${{ secrets.DOCKER_PASSWORD }} | ||
- name: set tag name | ||
id: tag | ||
# Tagged releases won't be picked up by the interop runner automatically, | ||
# but they can be useful when debugging regressions. | ||
run: | | ||
if [[ $GITHUB_REF == refs/tags/* ]]; then | ||
echo "tag=${GITHUB_REF#refs/tags/}" | tee -a $GITHUB_OUTPUT; | ||
echo "gitref=${GITHUB_REF#refs/tags/}" | tee -a $GITHUB_OUTPUT; | ||
else | ||
echo 'tag=latest' | tee -a $GITHUB_OUTPUT; | ||
echo 'gitref=${{ github.sha }}' | tee -a $GITHUB_OUTPUT; | ||
fi | ||
- uses: docker/build-push-action@v5 | ||
with: | ||
context: "{{defaultContext}}:interop" | ||
platforms: linux/amd64,linux/arm64 | ||
push: true | ||
build-args: | | ||
GITREF=${{ steps.tag.outputs.gitref }} | ||
tags: martenseemann/quic-go-interop:${{ steps.tag.outputs.tag }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
name: ClusterFuzzLite PR fuzzing | ||
on: | ||
pull_request: | ||
paths: | ||
- '**' | ||
|
||
permissions: read-all | ||
jobs: | ||
PR: | ||
runs-on: ${{ fromJSON(vars['CLUSTERFUZZ_LITE_RUNNER_UBUNTU'] || '"ubuntu-latest"') }} | ||
concurrency: | ||
group: ${{ github.workflow }}-${{ matrix.sanitizer }}-${{ github.ref }} | ||
cancel-in-progress: true | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
sanitizer: | ||
- address | ||
steps: | ||
- name: Build Fuzzers (${{ matrix.sanitizer }}) | ||
id: build | ||
uses: google/clusterfuzzlite/actions/build_fuzzers@v1 | ||
with: | ||
language: go | ||
github-token: ${{ secrets.GITHUB_TOKEN }} | ||
sanitizer: ${{ matrix.sanitizer }} | ||
# Optional but recommended: used to only run fuzzers that are affected | ||
# by the PR. | ||
# See later section on "Git repo for storage". | ||
# storage-repo: https://${{ secrets.PERSONAL_ACCESS_TOKEN }}@github.com/OWNER/STORAGE-REPO-NAME.git | ||
# storage-repo-branch: main # Optional. Defaults to "main" | ||
# storage-repo-branch-coverage: gh-pages # Optional. Defaults to "gh-pages". | ||
- name: Run Fuzzers (${{ matrix.sanitizer }}) | ||
id: run | ||
uses: google/clusterfuzzlite/actions/run_fuzzers@v1 | ||
with: | ||
github-token: ${{ secrets.GITHUB_TOKEN }} | ||
fuzz-seconds: 480 | ||
mode: 'code-change' | ||
sanitizer: ${{ matrix.sanitizer }} | ||
output-sarif: true | ||
parallel-fuzzing: true | ||
# Optional but recommended: used to download the corpus produced by | ||
# batch fuzzing. | ||
# See later section on "Git repo for storage". | ||
# storage-repo: https://${{ secrets.PERSONAL_ACCESS_TOKEN }}@github.com/OWNER/STORAGE-REPO-NAME.git | ||
# storage-repo-branch: main # Optional. Defaults to "main" | ||
# storage-repo-branch-coverage: gh-pages # Optional. Defaults to "gh-pages". |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
#!/bin/bash | ||
|
||
set -e | ||
|
||
dist="$1" | ||
goos=$(echo "$dist" | cut -d "/" -f1) | ||
goarch=$(echo "$dist" | cut -d "/" -f2) | ||
|
||
# cross-compiling for android is a pain... | ||
if [[ "$goos" == "android" ]]; then exit; fi | ||
# iOS builds require Cgo, see https://github.com/golang/go/issues/43343 | ||
# Cgo would then need a C cross compilation setup. Not worth the hassle. | ||
if [[ "$goos" == "ios" ]]; then exit; fi | ||
|
||
# Write all log output to a temporary file instead of to stdout. | ||
# That allows running this script in parallel, while preserving the correct order of the output. | ||
log_file=$(mktemp) | ||
|
||
error_handler() { | ||
cat "$log_file" >&2 | ||
rm "$log_file" | ||
exit 1 | ||
} | ||
|
||
trap 'error_handler' ERR | ||
|
||
echo "$dist" >> "$log_file" | ||
out="main-$goos-$goarch" | ||
GOOS=$goos GOARCH=$goarch go build -o $out example/main.go >> "$log_file" 2>&1 | ||
rm $out | ||
|
||
cat "$log_file" | ||
rm "$log_file" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
on: [push, pull_request] | ||
jobs: | ||
crosscompile: | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
go: [ "1.21.x", "1.22.x" ] | ||
runs-on: ${{ fromJSON(vars['CROSS_COMPILE_RUNNER_UBUNTU'] || '"ubuntu-latest"') }} | ||
name: "Cross Compilation (Go ${{matrix.go}})" | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/setup-go@v5 | ||
with: | ||
go-version: ${{ matrix.go }} | ||
- name: Install build utils | ||
run: | | ||
sudo apt-get update | ||
sudo apt-get install -y gcc-multilib | ||
- name: Install dependencies | ||
run: go build example/main.go | ||
- name: Run cross compilation | ||
# run in parallel on as many cores as are available on the machine | ||
run: go tool dist list | xargs -I % -P "$(nproc)" .github/workflows/cross-compile.sh % |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
#!/usr/bin/env bash | ||
|
||
set -e | ||
|
||
DIR=$(pwd) | ||
TMP=$(mktemp -d) | ||
cd "$TMP" | ||
cp -r "$DIR" orig | ||
cp -r "$DIR" generated | ||
|
||
cd generated | ||
# delete all go-generated files generated (that adhere to the comment convention) | ||
grep --include \*.go -lrIZ "^// Code generated .* DO NOT EDIT\.$" . | xargs --null rm | ||
|
||
# First regenerate sys_conn_buffers_write.go. | ||
# If it doesn't exist, the following mockgen calls will fail. | ||
go generate -run "sys_conn_buffers_write.go" | ||
# now generate everything | ||
go generate ./... | ||
cd .. | ||
|
||
# don't compare fuzzing corpora | ||
diff --exclude=corpus --exclude=.git -ruN orig generated |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
on: [push, pull_request] | ||
|
||
jobs: | ||
integration: | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
os: [ "ubuntu" ] | ||
go: [ "1.21.x", "1.22.x" ] | ||
include: | ||
- os: "windows" | ||
go: "1.21.x" | ||
- os: "macos" | ||
go: "1.21.x" | ||
runs-on: ${{ fromJSON(vars[format('INTEGRATION_RUNNER_{0}', matrix.os)] || format('"{0}-latest"', matrix.os)) }} | ||
defaults: | ||
run: | ||
shell: bash # by default Windows uses PowerShell, which uses a different syntax for setting environment variables | ||
env: | ||
DEBUG: false # set this to true to export qlogs and save them as artifacts | ||
TIMESCALE_FACTOR: 3 | ||
name: Integration Tests (${{ matrix.os }}, Go ${{ matrix.go }}) | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/setup-go@v5 | ||
with: | ||
go-version: ${{ matrix.go }} | ||
- run: go version | ||
- name: set qlogger | ||
if: env.DEBUG == 'true' | ||
run: echo "QLOGFLAG= -qlog" >> $GITHUB_ENV | ||
- name: Run other tests | ||
run: | | ||
go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace -skip-package self,versionnegotiation integrationtests | ||
go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace integrationtests/versionnegotiation -- ${{ env.QLOGFLAG }} | ||
- name: Run self tests, using QUIC v1 | ||
if: success() || failure() # run this step even if the previous one failed | ||
run: go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace integrationtests/self -- -version=1 ${{ env.QLOGFLAG }} | ||
- name: Run self tests, using QUIC v2 | ||
if: success() || failure() # run this step even if the previous one failed | ||
run: go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace integrationtests/self -- -version=2 ${{ env.QLOGFLAG }} | ||
- name: Run self tests, with GSO disabled | ||
if: ${{ matrix.os == 'ubuntu' && (success() || failure()) }} # run this step even if the previous one failed | ||
env: | ||
QUIC_GO_DISABLE_GSO: true | ||
run: go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace integrationtests/self -- -version=1 ${{ env.QLOGFLAG }} | ||
- name: Run self tests, with ECN disabled | ||
if: ${{ matrix.os == 'ubuntu' && (success() || failure()) }} # run this step even if the previous one failed | ||
env: | ||
QUIC_GO_DISABLE_ECN: true | ||
run: go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace integrationtests/self -- -version=1 ${{ env.QLOGFLAG }} | ||
- name: Run tests (32 bit) | ||
if: ${{ matrix.os != 'macos' && (success() || failure()) }} # run this step even if the previous one failed | ||
env: | ||
GOARCH: 386 | ||
run: | | ||
go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace -skip-package self,versionnegotiation integrationtests | ||
go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace integrationtests/versionnegotiation -- ${{ env.QLOGFLAG }} | ||
go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace integrationtests/self -- ${{ env.QLOGFLAG }} | ||
- name: save qlogs | ||
if: ${{ always() && env.DEBUG == 'true' }} | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: qlogs-${{ matrix.os }}-go${{ matrix.go }} | ||
path: integrationtests/self/*.qlog | ||
retention-days: 7 |
Oops, something went wrong.