123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288 |
- function Usage {
- cat <<EOF
- USAGE: $0 [--benchmark regexp] [--root] [--gen] <git commit flags...>
- --benchmark: Run benchmark comparisons against last benchmark'd commit
- --root: Run tests that require root priviledges
- --gen: Generate code for MACs/ports by pulling down external data
- Note, some 'git commit' flags are necessary, if all else fails, pass in -a
- EOF
- exit 1
- }
- BENCH=""
- GEN=""
- ROOT=""
- while [ ! -z "$1" ]; do
- case "$1" in
- "--benchmark")
- BENCH="$2"
- shift
- shift
- ;;
- "--gen")
- GEN="yes"
- shift
- ;;
- "--root")
- ROOT="yes"
- shift
- ;;
- "--help")
- Usage
- ;;
- "-h")
- Usage
- ;;
- "help")
- Usage
- ;;
- *)
- break
- ;;
- esac
- done
- function Root {
- if [ ! -z "$ROOT" ]; then
- local exec="$1"
- local tmpfile="$(mktemp -t gopacket_XXXXXXXX)"
- echo "Running root test executable $exec as $tmpfile"
- cp "$exec" "$tmpfile"
- chmod a+x "$tmpfile"
- shift
- sudo "$tmpfile" "$@"
- fi
- }
- if [ "$#" -eq "0" ]; then
- Usage
- fi
- cd $(dirname $0)
- for filename in $(find ./ -type f -name '*.go'); do
- if ! head -n 1 "$filename" | grep -q Copyright; then
- echo "File '$filename' may not have copyright notice"
- exit 1
- fi
- done
- set -e
- set -x
- if [ ! -z "$ROOT" ]; then
- echo "Running SUDO to get root priviledges for root tests"
- sudo echo "have root"
- fi
- if [ ! -z "$GEN" ]; then
- pushd macs
- go run gen.go | gofmt > valid_mac_prefixes.go
- popd
- pushd layers
- go run gen.go | gofmt > iana_ports.go
- go run gen2.go | gofmt > enums_generated.go
- popd
- fi
- go fmt ./...
- go test -i ./... 2>/dev/null >/dev/null || true
- go test
- go build
- pushd examples/bytediff
- go build
- popd
- if [ -f /usr/include/pcap.h ]; then
- pushd pcap
- go test ./...
- go build ./...
- go build pcap_tester.go
- Root pcap_tester --mode=basic
- Root pcap_tester --mode=filtered
- Root pcap_tester --mode=timestamp || echo "You might not support timestamp sources"
- popd
- pushd examples/afpacket
- go build
- popd
- pushd examples/pcapdump
- go build
- popd
- pushd examples/arpscan
- go build
- popd
- pushd examples/bidirectional
- go build
- popd
- pushd examples/synscan
- go build
- popd
- pushd examples/httpassembly
- go build
- popd
- pushd examples/statsassembly
- go build
- popd
- fi
- pushd macs
- go test ./...
- gofmt -w gen.go
- go build gen.go
- popd
- pushd tcpassembly
- go test ./...
- popd
- pushd reassembly
- go test ./...
- popd
- pushd layers
- gofmt -w gen.go
- go build gen.go
- go test ./...
- popd
- pushd pcapgo
- go test ./...
- go build ./...
- popd
- if [ -f /usr/include/linux/if_packet.h ]; then
- if grep -q TPACKET_V3 /usr/include/linux/if_packet.h; then
- pushd afpacket
- go build ./...
- go test ./...
- popd
- fi
- fi
- if [ -f /usr/include/pfring.h ]; then
- pushd pfring
- go test ./...
- go build ./...
- popd
- pushd examples/pfdump
- go build
- popd
- fi
- pushd ip4defrag
- go test ./...
- popd
- pushd defrag
- go test ./...
- popd
- for travis_script in `ls .travis.*.sh`; do
- ./$travis_script
- done
- git commit "$@"
- if [ -z "$BENCH" ]; then
- set +x
- echo "We're not benchmarking and we've committed... we're done!"
- exit
- fi
- BRANCH="$(git branch | grep '^*' | awk '{print $2}')"
- COMMIT_FILE="$(mktemp /tmp/tmp.XXXXXXXX)"
- echo -n "BENCH " > $COMMIT_FILE
- git log -n 1 | grep '^ ' | sed 's/^ //' >> $COMMIT_FILE
- PREV=$(git log -n 1 --grep='BENCHMARK_MARKER_DO_NOT_CHANGE' | head -n 1 | awk '{print $2}')
- cat >> $COMMIT_FILE <<EOF
- ----------------------------------------------------------
- BENCHMARK_MARKER_DO_NOT_CHANGE
- ----------------------------------------------------------
- Go version $(go version)
- TEST BENCHMARKS "$BENCH"
- EOF
- go test --test.bench="$BENCH" 2>&1 | tee -a $COMMIT_FILE
- pushd layers
- go test --test.bench="$BENCH" 2>&1 | tee -a $COMMIT_FILE
- popd
- cat >> $COMMIT_FILE <<EOF
- PCAP BENCHMARK
- EOF
- if [ "$BENCH" -eq ".*" ]; then
- go run pcap/gopacket_benchmark/*.go 2>&1 | tee -a $COMMIT_FILE
- fi
- git checkout $PREV
- cat >> $COMMIT_FILE <<EOF
- ----------------------------------------------------------
- BENCHMARKING AGAINST COMMIT $PREV
- ----------------------------------------------------------
- OLD TEST BENCHMARKS
- EOF
- go test --test.bench="$BENCH" 2>&1 | tee -a $COMMIT_FILE
- pushd layers
- go test --test.bench="$BENCH" 2>&1 | tee -a $COMMIT_FILE
- popd
- cat >> $COMMIT_FILE <<EOF
- OLD PCAP BENCHMARK
- EOF
- if [ "$BENCH" -eq ".*" ]; then
- go run pcap/gopacket_benchmark/*.go 2>&1 | tee -a $COMMIT_FILE
- fi
- git checkout $BRANCH
- git commit --amend -F $COMMIT_FILE
|