diff --git a/.travis.yml b/.travis.yml index 1642d2ef..21e372e9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,4 @@ -dist: trusty +dist: xenial group: travis_latest language: go @@ -13,8 +13,11 @@ env: global: - TIMESCALE_FACTOR=20 - GO111MODULE=on + # FUZZIT_API_KEY + - secure: "eb4Z/iUit+B6KTcKOKxfBQUyTUK+X2HiEXmT8pdReDnC1Q4ciq7NaW/v0nYq6aGMhbOFCVb1XEpST99+LlCxSyJYfH5ZYe/QtwT6/SoRkHyREhkk5UHxu/6CCozgZum9LN1YIi9piUMSKuC6Vh1hiRk5/DQUtTGukbiSmynj+PZddeO71f75EuZpa45cT0kd62HCcr6GRAtkx4BIH00JaMRihWwtFs6WaZG5N9pjV/FPCp+q/J5mKaSUKvCNv2sgwkKC/VqG8XOxBjrhI2Z9s/wGgpf4/BiTrN3D9+qodql2OfhHmRC65CRzOmXxdwXGj0zqWB2mtjcY3tws4XxuDkiChxTanwqDQQ92WLIgCkyazEaLDaFvfCMSkHuLcpWHSIrs1yeKJ2ko5vrvKQ1fsWgyXXtDaG+sq6YymHrCFtL83YY1aFbDt0q22+HFvhEqYdkKIglTpYdcyM+UoT57UagGwU81crXKyYqyCfvsHQM5ieNTBg01ZKEZYiie731ytB4W7duhp5dz5ZkezeZLtjX4NTbOtRRq8qhh9fDMAcuuCbLC/hkhBL9oRRlcPJaRdQKQd8QryS/pxwTrqtlNZ6X+GFjNls49kahdMThaigyocCzAsVFVXQTCUluGIqjDLTFlYxfDkGfkFK3k3bT6KkM5rQbfWIjdpkMRJyO0jR4=" matrix: - TRAVIS_GOARCH=amd64 TESTMODE=lint + - TRAVIS_GOARCH=amd64 TESTMODE=fuzz - TRAVIS_GOARCH=amd64 TESTMODE=unit - TRAVIS_GOARCH=amd64 TESTMODE=integration - TRAVIS_GOARCH=386 TESTMODE=unit diff --git a/.travis/fuzzit.sh b/.travis/fuzzit.sh new file mode 100755 index 00000000..1ccf12d5 --- /dev/null +++ b/.travis/fuzzit.sh @@ -0,0 +1,30 @@ +if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then + export FUZZING_TYPE="fuzzing" + export BRANCH=${TRAVIS_BRANCH} +else + export FUZZING_TYPE="local-regression" + export BRANCH="PR-${TRAVIS_PULL_REQUEST}" +fi + +## Build fuzzing targets +## go-fuzz doesn't support modules for now, so ensure we do everything +## in the old style GOPATH way +export GO111MODULE="off" + +## Install go-fuzz +go get -u github.com/dvyukov/go-fuzz/go-fuzz github.com/dvyukov/go-fuzz/go-fuzz-build + +# install quic-go +go get -d -v -u ./... + +cd fuzzing/header + +go-fuzz-build -libfuzzer -o fuzz-header.a . +clang -fsanitize=fuzzer fuzz-header.a -o fuzz-header + +## Install fuzzit +wget -q -O fuzzit https://github.com/fuzzitdev/fuzzit/releases/download/v2.4.23/fuzzit_Linux_x86_64 +chmod a+x fuzzit + +# Create the job +./fuzzit create job --type ${FUZZING_TYPE} --branch ${BRANCH} --revision=${TRAVIS_COMMIT} quic-go/fuzz-header fuzz-header diff --git a/.travis/script.sh b/.travis/script.sh index a9f460d9..e4d7a466 100755 --- a/.travis/script.sh +++ b/.travis/script.sh @@ -6,6 +6,10 @@ if [ ${TESTMODE} == "lint" ]; then ./bin/golangci-lint run ./... fi +if [ ${TESTMODE} == "fuzz" ]; then + .travis/fuzzit.sh +fi + if [ ${TESTMODE} == "unit" ]; then ginkgo -r -v -cover -randomizeAllSpecs -randomizeSuites -trace -skipPackage integrationtests,benchmark fi diff --git a/README.md b/README.md index 8b6b3dcf..85ea0581 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ [![CircleCI Build Status](https://img.shields.io/circleci/project/github/lucas-clemente/quic-go.svg?style=flat-square&label=CircleCI+build)](https://circleci.com/gh/lucas-clemente/quic-go) [![Windows Build Status](https://img.shields.io/appveyor/ci/lucas-clemente/quic-go/master.svg?style=flat-square&label=windows+build)](https://ci.appveyor.com/project/lucas-clemente/quic-go/branch/master) [![Code Coverage](https://img.shields.io/codecov/c/github/lucas-clemente/quic-go/master.svg?style=flat-square)](https://codecov.io/gh/lucas-clemente/quic-go/) +[![fuzzit](https://app.fuzzit.dev/badge?org_id=quic-go&branch=master)](https://fuzzit.dev) quic-go is an implementation of the [QUIC](https://en.wikipedia.org/wiki/QUIC) protocol in Go. It roughly implements the [IETF QUIC draft](https://github.com/quicwg/base-drafts), although we don't fully support any of the draft versions at the moment.