ntfy/test/util.go

45 lines
1.0 KiB
Go
Raw Permalink Normal View History

2021-12-22 23:20:43 +01:00
package test
import (
"net"
"strconv"
"testing"
"time"
)
// WaitForPortUp waits up to 7s for a port to come up and fails t if that fails
func WaitForPortUp(t *testing.T, port int) {
success := false
for i := 0; i < 500; i++ {
startTime := time.Now()
conn, _ := net.DialTimeout("tcp", net.JoinHostPort("127.0.0.1", strconv.Itoa(port)), 10*time.Millisecond)
if conn != nil {
success = true
conn.Close()
break
}
if time.Since(startTime) < 10*time.Millisecond {
time.Sleep(10*time.Millisecond - time.Since(startTime))
}
}
if !success {
t.Fatalf("Failed waiting for port %d to be UP", port)
}
}
// WaitForPortDown waits up to 5s for a port to come down and fails t if that fails
func WaitForPortDown(t *testing.T, port int) {
success := false
for i := 0; i < 100; i++ {
conn, _ := net.DialTimeout("tcp", net.JoinHostPort("", strconv.Itoa(port)), 50*time.Millisecond)
if conn == nil {
success = true
break
}
conn.Close()
}
if !success {
t.Fatalf("Failed waiting for port %d to be DOWN", port)
}
}