From 5bcb6fa4feff88221ca128db0be18342c5f55a74 Mon Sep 17 00:00:00 2001 From: Egon Elbre Date: Mon, 19 Nov 2018 17:40:44 +0200 Subject: [PATCH] Block ports in range 0 to 10000 when running tests (#666) --- .travis.yml | 1 + scripts/use-ports.go | 49 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 scripts/use-ports.go diff --git a/.travis.yml b/.travis.yml index 625905934..2d548db1f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -39,6 +39,7 @@ matrix: - popd - go install -race ./... script: + - go run scripts/use-ports.go -from 1024 -to 10000 & - go test -race -cover -coverprofile=.coverprofile -json ./... | tparse -all - goveralls -coverprofile=.coverprofile -service=travis-ci - rm .coverprofile diff --git a/scripts/use-ports.go b/scripts/use-ports.go new file mode 100644 index 000000000..c136a1d43 --- /dev/null +++ b/scripts/use-ports.go @@ -0,0 +1,49 @@ +// Copyright (C) 2018 Storj Labs, Inc. +// See LICENSE for copying information. + +// +build ignore + +package main + +import ( + "flag" + "fmt" + "net" + "os" + "os/signal" + "strconv" + "syscall" +) + +var ( + fromPort = flag.Int("from", 0, "first port") + toPort = flag.Int("to", 10000, "last port") +) + +func main() { + flag.Parse() + + var listeners []net.Listener + var unableToStart []int + for port := *fromPort; port < *toPort; port++ { + listener, err := net.Listen("tcp", net.JoinHostPort("127.0.0.1", strconv.Itoa(port))) + if err != nil { + unableToStart = append(unableToStart, port) + continue + } + listeners = append(listeners, listener) + } + fmt.Printf("use-ports: unable to start on %v\n", unableToStart) + fmt.Printf("use-ports: listening on ports %v to %v\n", *fromPort, *toPort) + + sigs := make(chan os.Signal, 1) + signal.Notify(sigs, syscall.SIGQUIT) + <-sigs + + for _, listener := range listeners { + err := listener.Close() + if err != nil { + fmt.Printf("unable to close: %v\n", err) + } + } +}