WIP: Start preparing release v3.0.7 (#147)

* Use ooni/probe-engine 0.16.0
* Update all the other dependencies
* Use GitHub Actions rather than Travis CI
* Automatically build and test binaries on the target OS (for Windows, macOS, Linux on amd64)
* Make sure we correctly measure coverage
* Make sure we use `-race` when running tests
* Remove unnecessary scripts
* Make sure the README is up-to-date
* Write small script to update binary data and add GitHub Actions checks for it
* Notice that we needed to run ./updatebindata.sh and run it
* Self documenting instructions regarding cross compiling
* Set version number to v3.0.7-beta

Part of https://github.com/ooni/probe-engine/issues/748
This commit is contained in:
Simone Basso 2020-08-22 11:20:50 +02:00 committed by GitHub
parent 1983672e3c
commit 4c65147009
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
23 changed files with 408 additions and 234 deletions

View File

@ -1,4 +0,0 @@
/dist
/ooniprobe
/ooniprobe.exe
/testdata/gotmp

22
.github/workflows/bindata.yml vendored Normal file
View File

@ -0,0 +1,22 @@
# Make sure we can embed bindata
name: bindata
on:
push:
schedule:
- cron: "14 17 * * 3"
jobs:
test:
runs-on: "${{ matrix.os }}"
strategy:
fail-fast: false
matrix:
os: ["ubuntu-latest"]
go: ["1.14"]
steps:
- uses: actions/setup-go@v1
with:
go-version: ${{ matrix.go }}
- uses: actions/checkout@v2
- run: ./updatebindata.sh
- run: go mod tidy # revert changes caused by installing bindata
- run: git diff --exit-code # if this fails, run ./updatebindata.sh locally and push

57
.github/workflows/cross.yml vendored Normal file
View File

@ -0,0 +1,57 @@
# Shows how to cross compile ooniprobe
name: cross
on:
push:
schedule:
- cron: "14 17 * * 3"
jobs:
windows_from_linux_build:
runs-on: "ubuntu-latest"
steps:
- uses: actions/setup-go@v1
with:
go-version: "1.14"
- uses: actions/checkout@v2
- run: sudo apt update
- run: sudo apt install --yes mingw-w64
- run: ./build.sh windows
- uses: actions/upload-artifact@v1
with:
name: ooniprobe-windows-amd64-compiled-from-linux
path: ./CLI/windows/amd64/ooniprobe.exe
test_build_from_linux:
needs: windows_from_linux_build
runs-on: "windows-latest"
steps:
- uses: actions/checkout@v2
- uses: actions/download-artifact@v2
with:
name: ooniprobe-windows-amd64-compiled-from-linux
- run: bash.exe ./smoketest.sh ./ooniprobe.exe
windows_from_macos_build:
runs-on: "macos-latest"
steps:
- uses: actions/setup-go@v1
with:
go-version: "1.14"
- uses: actions/checkout@v2
- run: brew update
- run: brew install mingw-w64
- run: ./build.sh windows
- uses: actions/upload-artifact@v1
with:
name: ooniprobe-windows-amd64-compiled-from-macos
path: ./CLI/windows/amd64/ooniprobe.exe
test_build_from_macos:
needs: windows_from_macos_build
runs-on: "windows-latest"
steps:
- uses: actions/checkout@v2
- uses: actions/download-artifact@v2
with:
name: ooniprobe-windows-amd64-compiled-from-macos
- run: bash.exe ./smoketest.sh ./ooniprobe.exe

32
.github/workflows/golang.yml vendored Normal file
View File

@ -0,0 +1,32 @@
# Run tests and measure coverage
name: golang
on:
push:
pull_request:
schedule:
- cron: "14 17 * * 3"
jobs:
test:
runs-on: "${{ matrix.os }}"
strategy:
fail-fast: false
matrix:
os: ["ubuntu-latest"]
go: ["1.14"]
steps:
- uses: actions/setup-go@v1
with:
go-version: ${{ matrix.go }}
- uses: actions/checkout@v2
- run: go test -race -tags shaping -v -coverprofile=probe-cli.cov -coverpkg=./... ./...
- uses: shogo82148/actions-goveralls@v1
with:
path-to-profile: probe-cli.cov
parallel: true
finish:
needs: test
runs-on: ubuntu-latest
steps:
- uses: shogo82148/actions-goveralls@v1
with:
parallel-finished: true

20
.github/workflows/linux.yml vendored Normal file
View File

@ -0,0 +1,20 @@
# Build and test Linux binary
name: linux
on:
push:
schedule:
- cron: "14 17 * * 3"
jobs:
build:
runs-on: "ubuntu-latest"
steps:
- uses: actions/setup-go@v1
with:
go-version: "1.14"
- uses: actions/checkout@v2
- run: ./build.sh linux
- run: ./smoketest.sh ./CLI/linux/amd64/ooniprobe
- uses: actions/upload-artifact@v1
with:
name: ooniprobe-linux-amd64
path: ./CLI/linux/amd64/ooniprobe

20
.github/workflows/macos.yml vendored Normal file
View File

@ -0,0 +1,20 @@
# Build and test macOS binary
name: macos
on:
push:
schedule:
- cron: "14 17 * * 3"
jobs:
build:
runs-on: "macos-latest"
steps:
- uses: actions/setup-go@v1
with:
go-version: "1.14"
- uses: actions/checkout@v2
- run: ./build.sh macos
- run: ./smoketest.sh ./CLI/macos/amd64/ooniprobe
- uses: actions/upload-artifact@v1
with:
name: ooniprobe-macos-amd64
path: ./CLI/macos/amd64/ooniprobe

20
.github/workflows/windows.yml vendored Normal file
View File

@ -0,0 +1,20 @@
# Build and test Windows binary
name: windows
on:
push:
schedule:
- cron: "14 17 * * 3"
jobs:
build:
runs-on: "windows-latest"
steps:
- uses: actions/setup-go@v1
with:
go-version: "1.14"
- uses: actions/checkout@v2
- run: bash.exe ./build.sh windows
- run: bash.exe ./smoketest.sh ./CLI/windows/amd64/ooniprobe.exe
- uses: actions/upload-artifact@v1
with:
name: ooniprobe-windows-amd64
path: ./CLI/windows/amd64/ooniprobe.exe

6
.gitignore vendored
View File

@ -1,11 +1,9 @@
/dist
/ooniprobe
/coverage.cov
/testdata/gotmp
*.njson
*.jsonl
.DS_Store
# Build artifacts
*.tar.gz
*.zip
ooniprobe_checksums.txt
ooniprobe_checksums.txt.asc

View File

@ -1,8 +0,0 @@
os: linux
dist: xenial
language: minimal
services:
- docker
script:
- ./build.sh _travis-${TRAVIS_OS_NAME}
- ./scripts/travis_test.sh

1
CLI/linux/amd64/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
*

1
CLI/macos/amd64/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
*

1
CLI/windows/amd64/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
*

View File

@ -1,2 +0,0 @@
FROM openobservatory/mk-alpine:20200721
RUN apk add --no-progress git go

View File

@ -4,11 +4,13 @@ The next generation OONI Probe Command Line Interface.
## User setup
1. Go [into the releases](https://github.com/ooni/probe-cli/releases) and download the release for your architecture and platform
1. Go [into the releases](https://github.com/ooni/probe-cli/releases) and download the
release for your architecture and platform
2. Extract the tarball with `tar xvzf ooniprobe_*.tar.gz`
3. Copy the `ooniprobe` binary into a location in your `$PATH`, for example `/usr/local/bin/ooniprobe`
3. Copy the `ooniprobe` binary into a location in your `$PATH`, for example
`/usr/local/bin/ooniprobe`
4. Run `ooniprobe run` to perform all the tests
@ -16,19 +18,22 @@ Optional:
Add a crontab entry (on linux) to run `ooniprobe` daily at a random time:
```
```bash
(crontab -l 2>/dev/null; echo "$(( ( RANDOM % 60 ) + 1 )) $(( ( RANDOM % 24 ) + 1 )) * * * ooniprobe run") | crontab -
```
On macOS you can configure OONI Probe to run automatically using launchd.
Below is a sample launchd script, that should be placed inside of `~/Library/LaunchAgents/org.ooni.probe.cli.plist`.
Below is a sample launchd script, that should be placed inside of
`~/Library/LaunchAgents/org.ooni.probe.cli.plist`.
Be sure to replace `/PATH/TO/BINARY/ooniprobe` with the actual install location of the `ooniprobe` binary and `/PATH/TO/CONFIG/config-100sites.json` with the location of a file which limits the testing to 100 URLs.
Be sure to replace `/PATH/TO/BINARY/ooniprobe` with the actual install location of the
`ooniprobe` binary and `/PATH/TO/CONFIG/config-100sites.json` with the location of a file
which limits the testing to 100 URLs.
You may also want to adjust the locations of the logs.
```
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
@ -62,25 +67,40 @@ You may also want to adjust the locations of the logs.
</plist>
```
Once you have written the file, you can enable to run automatically by doing: `launchctl load org.ooni.probe.cli.plist`.
Once you have written the file, you can enable `ooniprobe` to run automatically by
doing: `launchctl load org.ooni.probe.cli.plist`.
## Development setup
Be sure you have golang >= 1.14. We use golang modules. Run
Be sure you have golang >= 1.14 and a C compiler (when developing for Windows, you
need Mingw-w64 installed). The most basic build command is:
```bash
go build -v ./cmd/ooniprobe
```
To compile a release used the `build.sh` script. For more information
```bash
./build.sh help
```
to get information on the supported systems as well as to get
instructions on how to install dependencies.
The output generated by this command should provide you with updated information
regarding the pre-requisites for building (and cross-building) `ooniprobe` as well
as useful information regarding cross compiling.
To update bundled binary data use:
```bash
./updatebindata.sh
```
## Updating dependencies
1. update every direct dependency in `go.mod` except `probe-engine`
using `go get -u -v $dependency`:
```
```bash
for name in `grep -v indirect go.mod | grep -v probe-engine | awk '/^\t/{print $1}'`; do \
go get -u -v $name; \
done
@ -99,10 +119,9 @@ a specific version of psiphon and of its dependencies.
## Releasing
Make sure you have updated dependencies. Specifically, make sure
you update homebrew to get the latest Measurement Kit. Then:
Make sure you have updated dependencies. Then run
```
```bash
./build.sh release
```

174
build.sh
View File

@ -1,133 +1,57 @@
#!/bin/sh
set -e
set -ex
buildtags="-tags ooni"
ldflags="-s -w"
# We don't have a git repository when running in github actions
v=`git describe --tags || echo $GITHUB_SHA`
if [ "$1" = "bindata" ]; then
GO_BINDATA_V=$(go-bindata -version | grep go-bin | cut -d ' ' -f2)
if [ "$GO_BINDATA_V" = "3.2.0" ]; then
echo "Updating bindata"
go-bindata -nometadata -o internal/bindata/bindata.go -pkg bindata data/...
echo "DONE"
exit 0
else
echo "Wrong go-bindata-version"
echo "Please install go-bindata with:"
echo " go get -u github.com/shuLhan/go-bindata/..."
exit 1
fi
fi
case $1 in
windows)
# Note! This assumes we've installed the mingw-w64 compiler.
GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc \
go build -ldflags='-s -w' ./cmd/ooniprobe
tar -cvzf ooniprobe_${v}_windows_amd64.tar.gz LICENSE.md Readme.md ooniprobe.exe
# We don't have zip inside the github actions runner
zip ooniprobe_${v}_windows_amd64.zip LICENSE.md Readme.md ooniprobe.exe || true
mv ooniprobe.exe ./CLI/windows/amd64/
;;
if [ "$1" = "windows" ]; then
set -x
CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ \
CGO_LDFLAGS_ALLOW='-fstack-.*' CGO_ENABLED=1 GOOS=windows GOARCH=amd64 \
go build $buildtags -ldflags="$ldflags" \
-o dist/windows/amd64/ooniprobe.exe -v ./cmd/ooniprobe
linux)
docker run -v`pwd`:/ooni -w/ooni golang:1.14-alpine ./build.sh _alpine
tar -cvzf ooniprobe_${v}_linux_amd64.tar.gz LICENSE.md Readme.md ooniprobe
mv ooniprobe ./CLI/linux/amd64/
;;
elif [ "$1" = "linux" ]; then
set -x
$0 __docker go build $buildtags -ldflags="$ldflags" \
-o dist/linux/amd64/ooniprobe -v ./cmd/ooniprobe
_alpine)
apk add --no-progress gcc git linux-headers musl-dev
go build -tags netgo -ldflags='-s -w -extldflags "-static"' ./cmd/ooniprobe
;;
elif [ "$1" = "macos" ]; then
set -x
go build $buildtags -ldflags="$ldflags" \
-o dist/macos/amd64/ooniprobe -v ./cmd/ooniprobe
macos)
# Note! The following line _assumes_ you have a working C compiler. If you
# have Xcode command line tools installed, you are fine.
go build -ldflags='-s -w' ./cmd/ooniprobe
tar -cvzf ooniprobe_${v}_macos_amd64.tar.gz LICENSE.md Readme.md ooniprobe
mv ooniprobe ./CLI/macos/amd64/
;;
elif [ "$1" = "release" ]; then
set -x
v=`git describe --tags`
$0 linux
tar -czf ooniprobe_${v}_linux_amd64.tar.gz LICENSE.md Readme.md \
-C ./dist/linux/amd64 ooniprobe
shasum -a 256 ooniprobe_${v}_linux_amd64.tar.gz > ooniprobe_checksums.txt
$0 macos
tar -czf ooniprobe_${v}_darwin_amd64.tar.gz LICENSE.md Readme.md \
-C ./dist/macos/amd64 ooniprobe
shasum -a 256 ooniprobe_${v}_darwin_amd64.tar.gz >> ooniprobe_checksums.txt
$0 windows
tar -czf ooniprobe_${v}_windows_amd64.tar.gz LICENSE.md Readme.md \
-C dist/windows/amd64 ooniprobe.exe
shasum -a 256 ooniprobe_${v}_windows_amd64.tar.gz >> ooniprobe_checksums.txt
echo ""
echo "Now sign ooniprobe_checksums.txt and upload it along with tarballs to GitHub"
release)
$0 linux
$0 windows
$0 macos
;;
elif [ "$1" = "__docker" ]; then
set -x
shift
docker build -t oonibuild .
docker run -v `pwd`:/oonibuild \
-w /oonibuild \
-t \
--cap-drop=all \
--user `id -u`:`id -g` \
-e 'GOCACHE=/oonibuild/testdata/gotmp/cache' \
-e 'GOPATH=/oonibuild/testdata/gotmp/path' \
-e "TRAVIS_JOB_ID=$TRAVIS_JOB_ID" \
-e "TRAVIS_PULL_REQUEST=$TRAVIS_PULL_REQUEST" \
oonibuild "$@"
elif [ "$1" = "_travis-linux" ]; then
set -x
$0 linux
# TODO -race does not work on alpine.
# See: https://travis-ci.org/ooni/probe-cli/builds/619631256#L962
$0 __docker go get -v golang.org/x/tools/cmd/cover
$0 __docker go get -v github.com/mattn/goveralls
$0 __docker go test $buildtags -v -coverprofile=coverage.cov -coverpkg=./... ./...
$0 __docker /oonibuild/testdata/gotmp/path/bin/goveralls \
-coverprofile=coverage.cov -service=travis-ci
elif [ "$1" = "_travis-osx" ]; then
set -x
brew tap measurement-kit/measurement-kit
brew update
brew upgrade
brew install measurement-kit
$0 macos
go test -v -race -coverprofile=coverage.cov -coverpkg=./... ./...
elif [ "$1" = "help" ]; then
echo "Usage: $0 linux | macos | release | windows"
echo ""
echo "Builds OONI on supported systems. The output binary will"
echo "be saved at './dist/<system>/<arch>/ooniprobe[.exe]'."
echo ""
echo "# Linux"
echo ""
echo "To compile for Linux we use a docker container with the binary"
echo "Measurement Kit dependency installed. So you need docker installed."
echo ""
echo "# macOS"
echo ""
echo "You must be on macOS. You must install Measurement Kit once using:"
echo ""
echo "- brew tap measurement-kit/measurement-kit"
echo "- brew install measurement-kit"
echo ""
echo "You should keep Measurement Kit up-to-date using:"
echo ""
echo "- brew upgrade"
echo ""
echo "# Release"
echo ""
echo "Will build ooniprobe for all supported systems."
echo ""
echo "# Windows"
echo ""
echo "You must be on macOS. You must install Measurement Kit once using:"
echo ""
echo "- brew tap measurement-kit/measurement-kit"
echo "- brew install mingw-w64-measurement-kit"
echo ""
echo "You should keep Measurement Kit up-to-date using:"
echo ""
echo "- brew upgrade"
echo ""
else
echo "Invalid usage; try '$0 help' for more help." 1>&2
exit 1
fi
*)
echo "Usage: $0 linux|macos|windows|release"
echo ""
echo "You need a C compiler and Go >= 1.14. The C compiler must be a"
echo "UNIX like compiler like GCC, Clang, Mingw-w64."
echo ""
echo "To build a static Linux binary, we use Docker and Alpine."
echo ""
echo "You can cross compile for Windows from macOS or Linux. You can"
echo "compile for Linux as long as you have Docker. Cross compiling for"
echo "macOS has never been tested. We have a bunch of cross compiling"
echo "checks inside the .github/workflows/cross.yml file."
echo ""
;;
esac

8
go.mod
View File

@ -4,13 +4,17 @@ go 1.14
require (
github.com/alecthomas/kingpin v2.2.6+incompatible
github.com/apex/log v1.6.0
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d // indirect
github.com/apex/log v1.9.0
github.com/certifi/gocertifi v0.0.0-20200211180108-c7c1fbc02894 // indirect
github.com/fatih/color v1.9.0
github.com/getsentry/raven-go v0.0.0-20190419175539-919484f041ea
github.com/mattn/go-colorable v0.1.7
github.com/ooni/probe-engine v0.15.2
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect
github.com/ooni/probe-engine v0.16.0
github.com/pkg/errors v0.9.1
github.com/rubenv/sql-migrate v0.0.0-20200616145509-8d140a17f351
golang.org/x/sys v0.0.0-20200820212457-1fb795427249 // indirect
gopkg.in/AlecAivazis/survey.v1 v1.8.8
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 // indirect
upper.io/db.v3 v3.7.1+incompatible

56
go.sum
View File

@ -25,8 +25,8 @@ github.com/Psiphon-Labs/goptlib v0.0.0-20200406165125-c0e32a7a3464 h1:VmnMMMheFX
github.com/Psiphon-Labs/goptlib v0.0.0-20200406165125-c0e32a7a3464/go.mod h1:Pe5BqN2DdIdChorAXl6bDaQd/wghpCleJfid2NoSli0=
github.com/Psiphon-Labs/net v0.0.0-20191204183604-f5d60dada742 h1:te4lDZfA3tFwaheo+h/GZYGiLGJvm7Dcq2YkFh13QmE=
github.com/Psiphon-Labs/net v0.0.0-20191204183604-f5d60dada742/go.mod h1:3mBCrUrPxFCKAhG0ZdEfiU7QU6zl2+gr1HUk1sKYdjI=
github.com/Psiphon-Labs/psiphon-tunnel-core v2.0.12-0.20200706190114-761b4842e923+incompatible h1:c76E9yKZiStloyBp1lNFFuGmjf73Kldsk3jpgahE7Mc=
github.com/Psiphon-Labs/psiphon-tunnel-core v2.0.12-0.20200706190114-761b4842e923+incompatible/go.mod h1:VcNEtiQ0z2sCGJf16ZGcpwCas5+r9rt+P20r6LlJ06U=
github.com/Psiphon-Labs/psiphon-tunnel-core v2.0.12-0.20200819184412-10cb0192d244+incompatible h1:Fyx8JihDBE+YZG8iZTrJ+hgDIQd6OaRYMJ1lqf9R+Xk=
github.com/Psiphon-Labs/psiphon-tunnel-core v2.0.12-0.20200819184412-10cb0192d244+incompatible/go.mod h1:VcNEtiQ0z2sCGJf16ZGcpwCas5+r9rt+P20r6LlJ06U=
github.com/Psiphon-Labs/quic-go v0.14.1-0.20200306193310-474e74c89fab h1:LYp5/y2XR38yyDtNyEZBt0TtFaWgrYMNu3hEcN+om6c=
github.com/Psiphon-Labs/quic-go v0.14.1-0.20200306193310-474e74c89fab/go.mod h1:I0Z7XA8KzHZl2MzwqEbZJhBQOHT8ajGUQ5+SWf5KHw0=
github.com/Psiphon-Labs/tls-tris v0.0.0-20200610161156-7d791789810f h1:DZpr9KUNwaL+OjdT7JR+bkr7xXkvikTSMdpt6L1XX6Y=
@ -48,17 +48,19 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4 h1:Hs82Z41s6SdL1CELW+XaDYmOH4hkBN4/N9og/AsOv7E=
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d h1:UQZhZ2O0vMHr2cI+DC1Mbh0TJxzA3RcLoMsFw+aXw7E=
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
github.com/apex/log v1.6.0 h1:Y50wF1PBIIexIgTm0/7G6gcLitkO5jHK5Mb6wcMY0UI=
github.com/apex/log v1.6.0/go.mod h1:x7s+P9VtvFBXge9Vbn+8TrqKmuzmD35TTkeBHul8UtY=
github.com/apex/log v1.9.0 h1:FHtw/xuaM8AgmvDDTI9fiwoAL25Sq2cxojnZICUU8l0=
github.com/apex/log v1.9.0/go.mod h1:m82fZlWIuiWzWP04XCTXmnX0xRkYYbCdYn8jbJeLBEA=
github.com/apex/logs v1.0.0/go.mod h1:XzxuLZ5myVHDy9SAmYpamKKRNApGj54PfYLcFrXqDwo=
github.com/aphistic/golf v0.0.0-20180712155816-02c07f170c5a/go.mod h1:3NqKYiepwy8kCu4PNA+aP7WUV72eXWJeP9/r3/K9aLE=
github.com/aphistic/sweet v0.2.0/go.mod h1:fWDlIh/isSE9n6EPsRmC0det+whmX6dJid3stzu0Xys=
github.com/aristanetworks/fsnotify v1.4.2/go.mod h1:D/rtu7LpjYM8tRJphJ0hUBYpjai8SfX+aSNsWDTq/Ks=
github.com/aristanetworks/glog v0.0.0-20191112221043-67e8567f59f3/go.mod h1:KASm+qXFKs/xjSoWn30NrWBBvdTTQq+UjkhjEJHfSFA=
github.com/aristanetworks/goarista v0.0.0-20200609010056-95bcf8053598 h1:VbwKXgO1O1JSbI8o3PQqlC/KTem5t3YD7LqvfBT+0Gk=
github.com/aristanetworks/goarista v0.0.0-20200609010056-95bcf8053598/go.mod h1:QZe5Yh80Hp1b6JxQdpfSEEe8X7hTyTEZSosSrFf/oJE=
github.com/aristanetworks/goarista v0.0.0-20200812190859-4cb0e71f3c0e h1:tkEt0le4Lv5+VmcxZPIVSrP8LVPLhndIm/BOP7iPh/w=
github.com/aristanetworks/goarista v0.0.0-20200812190859-4cb0e71f3c0e/go.mod h1:QZe5Yh80Hp1b6JxQdpfSEEe8X7hTyTEZSosSrFf/oJE=
github.com/aristanetworks/splunk-hec-go v0.3.3/go.mod h1:1VHO9r17b0K7WmOlLb9nTk/2YanvOEnLMUgsFrxBROc=
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
@ -193,12 +195,14 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w=
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k=
github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gxui v0.0.0-20151028112939-f85e0a97b3a4 h1:OL2d27ueTKnlQJoqLW2fc9pWYulFnJYLWzomGV7HqZo=
github.com/google/gxui v0.0.0-20151028112939-f85e0a97b3a4/go.mod h1:Pw1H1OjSNHiqeuxAduB1BKYXIwFtsyrY47nEqSgEiCM=
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
@ -243,8 +247,8 @@ github.com/hinshun/vt10x v0.0.0-20180616224451-1954e6464174/go.mod h1:DqJ97dSdRW
github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg=
github.com/iancoleman/strcase v0.0.0-20191112232945-16388991a334 h1:VHgatEHNcBFEB7inlalqfNqw65aNkM1lGX2yt3NmbS8=
github.com/iancoleman/strcase v0.0.0-20191112232945-16388991a334/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE=
github.com/iancoleman/strcase v0.1.0 h1:Lar8rut26AXkJUmVOb2bRsFGv//+tJBeJLxXvpZpF1Q=
github.com/iancoleman/strcase v0.1.0/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
github.com/jcmturner/gofork v1.0.0/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o=
@ -320,9 +324,11 @@ github.com/mattn/go-sqlite3 v1.12.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsO
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b h1:j7+1HpAFS1zy5+Q4qx1fWh90gTKwiN4QCGoY9TWyyO4=
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI=
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
github.com/miekg/dns v1.1.30 h1:Qww6FseFn8PRfw07jueqIXqodm0JKiiKuK0DeXSqfyo=
github.com/miekg/dns v1.1.30/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM=
github.com/miekg/dns v1.1.31 h1:sJFOl9BgwbYAWOGEwr61FU28pqsBNdpRBnhGXtO06Oo=
github.com/miekg/dns v1.1.31/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM=
github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
@ -358,8 +364,8 @@ github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1Cpa
github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.7.0 h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME=
github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/ooni/probe-engine v0.15.2 h1:qlOPuCBTl+S2V1vK8JZqwBtL/SOlzA2I4AdfeVzSgOM=
github.com/ooni/probe-engine v0.15.2/go.mod h1:Gnn57oU1Sc1hUQamTPkjCO4pxWMJjl3rEVYY1LV1A6E=
github.com/ooni/probe-engine v0.16.0 h1:aLhbSWculnYDxESseSzPSZFQOiqFcKQT/+QefSeCQvA=
github.com/ooni/probe-engine v0.16.0/go.mod h1:MvO2uFbFy3D9M9hO3DA5bN6Sw+Ns+J4Nb+5cFK/PbNg=
github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk=
github.com/openconfig/gnmi v0.0.0-20190823184014-89b2bf29312c/go.mod h1:t+O9It+LKzfOAhKTT5O0ehDix+MTqbtT0T9t+7zzOvc=
github.com/openconfig/reference v0.0.0-20190727015836-8dfd928c9696/go.mod h1:ym2A+zigScwkSEb/cVQB0/ZMpU3rqiH6X7WRRsxgOGw=
@ -379,7 +385,7 @@ github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIw
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc=
github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
github.com/pborman/getopt v0.0.0-20190409184431-ee0cd42419d3/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o=
github.com/pborman/getopt/v2 v2.0.0/go.mod h1:4NtW75ny4eBw9fO1bhtNdYTlZKYX5/tBLtsOpwKIKd0=
github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac=
@ -422,16 +428,16 @@ github.com/redjack/marionette v0.0.0-20180818172807-360dd8f58226 h1:8+dAj8X8Lmdu
github.com/redjack/marionette v0.0.0-20180818172807-360dd8f58226/go.mod h1:yJd0pT0e04p+VSmLGjce8BoPlRDlrGrdfXf2En7oq9A=
github.com/refraction-networking/gotapdance v0.0.0-20190909202946-3a6e1938ad70 h1:EUwVKYIxba8xd9YeCG+63W2HiwKDPIw92F4pccOmXug=
github.com/refraction-networking/gotapdance v0.0.0-20190909202946-3a6e1938ad70/go.mod h1:iBzxMSHu9kVV7v3Rc6vcDVCUDLsRGqLL3vtiR74JBvk=
github.com/refraction-networking/utls v0.0.0-20200601200209-ada0bb9b38a0 h1:vIkvetWOJZSADSKCF9MLTsQNW2httdBmYz47dQQteP8=
github.com/refraction-networking/utls v0.0.0-20200601200209-ada0bb9b38a0/go.mod h1:tz9gX959MEFfFN5whTIocCLUG57WiILqtdVxI8c6Wj0=
github.com/refraction-networking/utls v0.0.0-20200729012536-186025ac7b77 h1:f+9aczEfJx9WNE7NMhRmQqPCspsFM+O/XAaiz8E5O1Q=
github.com/refraction-networking/utls v0.0.0-20200729012536-186025ac7b77/go.mod h1:tz9gX959MEFfFN5whTIocCLUG57WiILqtdVxI8c6Wj0=
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
github.com/rogpeppe/fastuuid v1.1.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.3.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
github.com/rogpeppe/go-internal v1.4.0/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
github.com/rogpeppe/go-internal v1.6.0 h1:IZRgg4sfrDH7nsAD1Y/Nwj+GzIfEwpJSLjCaNC3SbsI=
github.com/rogpeppe/go-internal v1.6.0/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k=
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
github.com/rubenv/sql-migrate v0.0.0-20200616145509-8d140a17f351 h1:HXr/qUllAWv9riaI4zh2eXWKmCSDqVS/XH1MRHLKRwk=
github.com/rubenv/sql-migrate v0.0.0-20200616145509-8d140a17f351/go.mod h1:DCgfY80j8GYL7MLEfvcpSFvjD0L5yZq/aZUJmhZklyg=
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
@ -486,7 +492,7 @@ github.com/tj/assert v0.0.0-20171129193455-018094318fb0 h1:Rw8kxzWo1mr6FSaYXjQEL
github.com/tj/assert v0.0.0-20171129193455-018094318fb0/go.mod h1:mZ9/Rh9oLWpLLDRpvE+3b7gP/C2YyLFYxNmcLnPTMe0=
github.com/tj/assert v0.0.3 h1:Df/BlaZ20mq6kuai7f5z2TvPFiwC3xaWJSDQNiIS3Rk=
github.com/tj/assert v0.0.3/go.mod h1:Ne6X72Q+TB1AteidzQncjw9PabbMp4PBMZ1k+vd1Pvk=
github.com/tj/go-buffer v1.0.1/go.mod h1:iyiJpfFcR2B9sXu7KvjbT9fpM4mOelRSDTbntVj52Uc=
github.com/tj/go-buffer v1.1.0/go.mod h1:iyiJpfFcR2B9sXu7KvjbT9fpM4mOelRSDTbntVj52Uc=
github.com/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2/go.mod h1:WjeM0Oo1eNAjXGDx2yma7uG2XoyRZTq1uv3M/o7imD0=
github.com/tj/go-kinesis v0.0.0-20171128231115-08b17f58cb1b/go.mod h1:/yhzCV0xPfx6jb1bBgRFjl5lytqVqZXEaeqWP8lTEao=
github.com/tj/go-spin v1.1.0/go.mod h1:Mg1mzmePZm4dva8Qz60H2lHwmJ2loum4VIrLgVnKwh4=
@ -575,12 +581,13 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200707034311-ab3426394381 h1:VXak5I6aEWmAXeQjA+QSZzlgNrpq9mjcfDemuexIKsU=
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc h1:zK/HqS5bZxDptfPJNq8v7vJfXtkU7r9TLIoSr1bXaP4=
golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@ -620,8 +627,9 @@ golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200219091948-cb0a6d8edb6c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200720211630-cb9d2d5c5666 h1:gVCS+QOncANNPlmlO1AhlU3oxs4V9z+gTtPwIk3p2N8=
golang.org/x/sys v0.0.0-20200720211630-cb9d2d5c5666/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200819171115-d785dc25833f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200820212457-1fb795427249 h1:tKP05IMsVLZ4VeeCEFmrIUmxAAx6UD8IBdPtYlYNa8g=
golang.org/x/sys v0.0.0-20200820212457-1fb795427249/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=

View File

@ -6,6 +6,7 @@
package bindata
import (
"bytes"
"compress/gzip"
@ -38,6 +39,7 @@ func bindataRead(data []byte, name string) ([]byte, error) {
return buf.Bytes(), nil
}
type asset struct {
bytes []byte
info fileInfoEx
@ -78,37 +80,45 @@ func (fi bindataFileInfo) Sys() interface{} {
return nil
}
var _dataDefaultConfigJson = []byte(
"\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x5c\x91\x41\x4f\xc3\x30\x0c\x85\xef\xfd\x15\x56\xce\xb0\xc2\xb5\xff\x80" +
"\x0b\x43\x82\x7b\x94\x25\xee\x6a\x29\xb3\x2b\x3b\x19\x9a\xd0\xfe\x3b\x4a\x57\x46\xe1\xfa\x3e\xdb\xef\x59\xef\xab" +
"\x03\x70\xde\x0d\xe0\x3e\x26\x32\x20\x83\x8b\x54\x85\xfd\xfe\xf5\x05\xde\x54\x0e\x08\x51\x78\xa4\x23\x8c\x94\x71" +
"\x07\xef\x88\x30\x95\x32\xdb\xd0\xf7\x22\x4c\x3b\x92\x7e\xc2\x3c\xf7\x73\x9b\x7d\x8c\x99\x60\x14\x85\x26\xb9\x87" +
"\xe5\xf4\x19\xd5\x48\xd8\x0d\xf0\x7c\x13\x88\x47\xd1\x13\x26\x1f\x85\x0d\xb9\xb8\x01\xc6\x90\x0d\x17\x6a\x53\x50" +
"\xe2\xa3\x1b\xa0\x05\x03\x70\xc4\x31\xd7\x84\x9e\xe6\xed\xdc\x06\x04\x6b\xb7\x8b\xd6\xff\x20\x4a\xe5\xa2\x97\xbf" +
"\xb0\xce\x59\x42\xf2\x8a\x56\x73\xb1\x95\x75\x00\xd7\xc5\x9d\xb1\x14\xb4\x45\x5f\xed\x3f\xf1\x60\x54\xd0\x7c\xd5" +
"\xec\x33\x9d\xa8\xc5\x7d\xba\x2f\x84\x74\x0e\x1c\x31\xfd\x2e\x54\x43\x9f\xe4\x14\x88\xfd\xa8\xc2\xe5\xf6\xcc\x36" +
"\xb8\x21\x27\x1f\x35\xd8\xe4\x15\x67\xd1\x7b\x8c\x95\x47\xc9\x19\x63\x11\x6d\x9e\xad\x18\xb7\x82\x83\x54\x8e\x78" +
"\x97\x7f\x6a\x58\xe5\xdd\x5a\x87\x6b\xe1\xba\x6b\xf7\x1d\x00\x00\xff\xff\x8e\xc0\xab\xe6\xd9\x01\x00\x00")
var _bindataDataDefaultconfigjson = []byte(
"\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x5c\x8f\x41\x4e\xc4\x30\x0c\x45\xf7\x3d\x85\x95\x35\x9a\x81\x6d\x2f\x63" +
"\x65\x12\x0f\xb5\x94\xda\x95\xed\x0c\x42\x68\xee\x8e\x5a\xaa\x52\xd8\xfe\x97\x9f\xff\xfc\x35\x00\x24\x7c\x90\x39" +
"\xab\xa4\x11\xde\x5e\xb6\x80\xe5\xae\x36\x53\xc5\xa2\xe2\x24\x91\x46\xb8\xe7\xe6\xb4\x51\x9f\xb2\xb1\xbc\xa7\x11" +
"\xd6\x36\x40\x62\x29\xad\x57\x42\x5e\xce\xef\x4e\x20\xfb\xfa\x77\x58\xff\x0f\x8a\x76\x09\xfb\xfc\x0b\xfb\xd2\x34" +
"\x57\x34\xf2\xde\xc2\x77\x36\x00\x3c\xb7\x75\xa1\x08\xf2\x2d\xdf\xe7\x3f\xe8\xe6\x1c\xe4\xd8\xad\x61\xe3\x99\x57" +
"\xdd\xd7\xa3\x90\xeb\x23\x4b\xa1\xfa\x5b\xe8\x4e\x58\x75\xce\x2c\x78\x37\x95\xf8\x39\xe6\x2c\xee\x24\x15\x8b\x65" +
"\x9f\xd0\x68\x51\x3b\x34\x76\x5e\xb4\x35\x2a\xa1\xb6\x6e\xa6\x11\x52\xda\xc1\x4d\xbb\x14\x3a\xe2\x29\x62\xf1\xf1" +
"\x7a\xdd\xe3\x8b\xaa\xf0\x85\x35\xad\x72\xc3\x73\xf8\x0e\x00\x00\xff\xff\xfb\x1f\x97\x64\x7e\x01\x00\x00")
func dataDefaultConfigJsonBytes() ([]byte, error) {
func bindataDataDefaultconfigjsonBytes() ([]byte, error) {
return bindataRead(
_dataDefaultConfigJson,
_bindataDataDefaultconfigjson,
"data/default-config.json",
)
}
func dataDefaultConfigJson() (*asset, error) {
bytes, err := dataDefaultConfigJsonBytes()
func bindataDataDefaultconfigjson() (*asset, error) {
bytes, err := bindataDataDefaultconfigjsonBytes()
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "data/default-config.json", size: 0, md5checksum: "", mode: os.FileMode(0), modTime: time.Unix(0, 0)}
info := bindataFileInfo{
name: "data/default-config.json",
size: 0,
md5checksum: "",
mode: os.FileMode(0),
modTime: time.Unix(0, 0),
}
a := &asset{bytes: bytes, info: info}
return a, nil
}
var _dataMigrations1_create_msmt_resultsSql = []byte(
var _bindataDataMigrations1createmsmtresultssql = []byte(
"\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x59\x6d\x73\xdb\x36\x12\xfe\xee\x5f\xb1\xe3\xe9\xf4\xec\x39\x49\x76" +
"\x72\x69\xe6\xce\xd7\x4e\xc7\xb5\x99\x9c\xda\x58\xca\xc8\xf2\x35\x99\x9b\x1b\x11\x22\x97\x12\x2a\x10\x60\xf0\x22" +
"\x46\xf7\xeb\x6f\x16\x00\x29\x52\x56\x1c\x67\xda\x0f\xa9\x48\x02\x8b\x7d\x7d\xf6\x59\x78\x38\x84\xbf\x96\x7c\xa5" +
@ -206,25 +216,35 @@ var _dataMigrations1_create_msmt_resultsSql = []byte(
"\x7f\x10\x08\x32\x73\x9a\xdc\x6b\x14\x22\xf8\xa6\x6f\x4c\x6c\x24\xe7\x3d\x1b\xfc\xdf\xdb\xf6\xdf\x68\x00\xfe\xe2" +
"\x5f\xf5\xfe\x1f\x00\x00\xff\xff\x38\xc6\x64\x22\x78\x1c\x00\x00")
func dataMigrations1_create_msmt_resultsSqlBytes() ([]byte, error) {
func bindataDataMigrations1createmsmtresultssqlBytes() ([]byte, error) {
return bindataRead(
_dataMigrations1_create_msmt_resultsSql,
_bindataDataMigrations1createmsmtresultssql,
"data/migrations/1_create_msmt_results.sql",
)
}
func dataMigrations1_create_msmt_resultsSql() (*asset, error) {
bytes, err := dataMigrations1_create_msmt_resultsSqlBytes()
func bindataDataMigrations1createmsmtresultssql() (*asset, error) {
bytes, err := bindataDataMigrations1createmsmtresultssqlBytes()
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "data/migrations/1_create_msmt_results.sql", size: 0, md5checksum: "", mode: os.FileMode(0), modTime: time.Unix(0, 0)}
info := bindataFileInfo{
name: "data/migrations/1_create_msmt_results.sql",
size: 0,
md5checksum: "",
mode: os.FileMode(0),
modTime: time.Unix(0, 0),
}
a := &asset{bytes: bytes, info: info}
return a, nil
}
var _dataMigrations2_single_msmt_fileSql = []byte(
var _bindataDataMigrations2singlemsmtfilesql = []byte(
"\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x56\x4d\x6f\xdb\x38\x10\xbd\xf3\x57\xcc\xd1\xc6\x2a\x8b\xdd\xb6\xc9" +
"\xc5\xe8\x81\x91\x99\x54\xad\x4c\xa5\x14\x53\x34\x27\x89\xb5\x68\x47\x88\x4c\x0a\x24\xd5\x20\xff\xbe\x90\x3f\x6a" +
"\xda\x96\x8d\x3a\x28\x8a\x1e\x74\x9d\x8f\xc7\x21\xe7\x0d\xe7\x5d\x5c\xc0\x3f\x8b\x72\x6e\x84\x93\x30\xd6\xcf\x0a" +
@ -252,27 +272,40 @@ var _dataMigrations2_single_msmt_fileSql = []byte(
"\x57\xde\xef\x5e\x79\xfb\x77\xec\x45\xc9\xdf\xd7\xa1\xf6\x0b\xe9\x96\x26\xba\x2a\x4e\x49\x93\x95\xfb\x7c\x69\xf2" +
"\x23\x00\x00\xff\xff\xca\xeb\xb6\x24\x7c\x10\x00\x00")
func dataMigrations2_single_msmt_fileSqlBytes() ([]byte, error) {
func bindataDataMigrations2singlemsmtfilesqlBytes() ([]byte, error) {
return bindataRead(
_dataMigrations2_single_msmt_fileSql,
_bindataDataMigrations2singlemsmtfilesql,
"data/migrations/2_single_msmt_file.sql",
)
}
func dataMigrations2_single_msmt_fileSql() (*asset, error) {
bytes, err := dataMigrations2_single_msmt_fileSqlBytes()
func bindataDataMigrations2singlemsmtfilesql() (*asset, error) {
bytes, err := bindataDataMigrations2singlemsmtfilesqlBytes()
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "data/migrations/2_single_msmt_file.sql", size: 0, md5checksum: "", mode: os.FileMode(0), modTime: time.Unix(0, 0)}
info := bindataFileInfo{
name: "data/migrations/2_single_msmt_file.sql",
size: 0,
md5checksum: "",
mode: os.FileMode(0),
modTime: time.Unix(0, 0),
}
a := &asset{bytes: bytes, info: info}
return a, nil
}
//
// Asset loads and returns the asset for the given name.
// It returns an error if the asset could not be found or
// could not be loaded.
//
func Asset(name string) ([]byte, error) {
cannonicalName := strings.Replace(name, "\\", "/", -1)
if f, ok := _bindata[cannonicalName]; ok {
@ -285,9 +318,11 @@ func Asset(name string) ([]byte, error) {
return nil, &os.PathError{Op: "open", Path: name, Err: os.ErrNotExist}
}
//
// MustAsset is like Asset but panics when Asset would return an error.
// It simplifies safe initialization of global variables.
// nolint: deadcode
//
func MustAsset(name string) []byte {
a, err := Asset(name)
if err != nil {
@ -297,9 +332,10 @@ func MustAsset(name string) []byte {
return a
}
//
// AssetInfo loads and returns the asset info for the given name.
// It returns an error if the asset could not be found or
// could not be loaded.
// It returns an error if the asset could not be found or could not be loaded.
//
func AssetInfo(name string) (os.FileInfo, error) {
cannonicalName := strings.Replace(name, "\\", "/", -1)
if f, ok := _bindata[cannonicalName]; ok {
@ -312,8 +348,10 @@ func AssetInfo(name string) (os.FileInfo, error) {
return nil, &os.PathError{Op: "open", Path: name, Err: os.ErrNotExist}
}
//
// AssetNames returns the names of the assets.
// nolint: deadcode
//
func AssetNames() []string {
names := make([]string, 0, len(_bindata))
for name := range _bindata {
@ -322,13 +360,16 @@ func AssetNames() []string {
return names
}
//
// _bindata is a table, holding each asset generator, mapped to its name.
//
var _bindata = map[string]func() (*asset, error){
"data/default-config.json": dataDefaultConfigJson,
"data/migrations/1_create_msmt_results.sql": dataMigrations1_create_msmt_resultsSql,
"data/migrations/2_single_msmt_file.sql": dataMigrations2_single_msmt_fileSql,
"data/default-config.json": bindataDataDefaultconfigjson,
"data/migrations/1_create_msmt_results.sql": bindataDataMigrations1createmsmtresultssql,
"data/migrations/2_single_msmt_file.sql": bindataDataMigrations2singlemsmtfilesql,
}
//
// AssetDir returns the file names below a certain
// directory embedded in the file by go-bindata.
// For example if you run go-bindata on data/... and data contains the
@ -342,6 +383,7 @@ var _bindata = map[string]func() (*asset, error){
// AssetDir("data/img") would return []string{"a.png", "b.png"}
// AssetDir("foo.txt") and AssetDir("notexist") would return an error
// AssetDir("") will return []string{"data"}.
//
func AssetDir(name string) ([]string, error) {
node := _bintree
if len(name) != 0 {
@ -350,12 +392,20 @@ func AssetDir(name string) ([]string, error) {
for _, p := range pathList {
node = node.Children[p]
if node == nil {
return nil, &os.PathError{Op: "open", Path: name, Err: os.ErrNotExist}
return nil, &os.PathError{
Op: "open",
Path: name,
Err: os.ErrNotExist,
}
}
}
}
if node.Func != nil {
return nil, &os.PathError{Op: "open", Path: name, Err: os.ErrNotExist}
return nil, &os.PathError{
Op: "open",
Path: name,
Err: os.ErrNotExist,
}
}
rv := make([]string, 0, len(node.Children))
for childName := range node.Children {
@ -364,17 +414,18 @@ func AssetDir(name string) ([]string, error) {
return rv, nil
}
type bintree struct {
Func func() (*asset, error)
Children map[string]*bintree
}
var _bintree = &bintree{nil, map[string]*bintree{
"data": {nil, map[string]*bintree{
"default-config.json": {dataDefaultConfigJson, map[string]*bintree{}},
"migrations": {nil, map[string]*bintree{
"1_create_msmt_results.sql": {dataMigrations1_create_msmt_resultsSql, map[string]*bintree{}},
"2_single_msmt_file.sql": {dataMigrations2_single_msmt_fileSql, map[string]*bintree{}},
var _bintree = &bintree{Func: nil, Children: map[string]*bintree{
"data": {Func: nil, Children: map[string]*bintree{
"default-config.json": {Func: bindataDataDefaultconfigjson, Children: map[string]*bintree{}},
"migrations": {Func: nil, Children: map[string]*bintree{
"1_create_msmt_results.sql": {Func: bindataDataMigrations1createmsmtresultssql, Children: map[string]*bintree{}},
"2_single_msmt_file.sql": {Func: bindataDataMigrations2singlemsmtfilesql, Children: map[string]*bintree{}},
}},
}},
}}

View File

@ -50,9 +50,6 @@ func (n WebConnectivity) Run(ctl *Controller) error {
if err != nil {
return err
}
if err := builder.SetOptionString("LogLevel", "INFO"); err != nil {
return err
}
return ctl.Run(builder, urls)
}

View File

@ -1,6 +0,0 @@
#!/bin/sh
set -ex
./dist/${TRAVIS_OS_NAME}/amd64/ooniprobe onboard --yes
./dist/${TRAVIS_OS_NAME}/amd64/ooniprobe run --config testdata/testing-config.json -v --no-collector

9
smoketest.sh Executable file
View File

@ -0,0 +1,9 @@
#!/bin/sh
set -ex
if [ "$#" != 1 ]; then
echo "Usage: $0 <binary>" 1>&2
exit 1
fi
$1 onboard --yes
# Important! DO NOT run performance from CI b/c it will overload m-lab servers
$1 run websites --config testdata/testing-config.json -v --no-collector

10
updatebindata.sh Executable file
View File

@ -0,0 +1,10 @@
#!/bin/sh
set -ex
go get -u github.com/shuLhan/go-bindata/...
gobindata=`go env GOPATH`/bin/go-bindata
version=`$gobindata -version | grep go-bin | cut -d ' ' -f2`
if [ "$version" != "3.3.0" ]; then
echo "FATAL: unexpected go-bindata version" 1>&2
exit 1
fi
$gobindata -nometadata -o internal/bindata/bindata.go -pkg bindata data/...

View File

@ -3,5 +3,5 @@ package version
const (
// Version is the software version
Version = "3.0.6"
Version = "3.0.7-beta"
)