ooni-probe-cli/internal/cmd/ooporthelper/main_test.go
2022-10-08 10:26:08 +02:00

46 lines
1013 B
Go

package main
import (
"context"
"net"
"testing"
"github.com/ooni/probe-cli/v3/internal/model"
"github.com/ooni/probe-cli/v3/internal/netxlite"
)
var (
portsMap = make(map[string]bool)
)
func TestMainWorkingAsIntended(t *testing.T) {
srvTest = true // toggle to imply that we are running in test mode
for _, port := range TestPorts {
portsMap[port] = false
}
go main()
dialer := netxlite.NewDialerWithoutResolver(model.DiscardLogger)
for i := 0; i < len(TestPorts); i++ {
port := <-srvTestChan
addr := net.JoinHostPort("127.0.0.1", port)
ctx := context.Background()
conn, err := dialer.DialContext(ctx, "tcp", addr)
if err != nil {
t.Fatal(err)
}
if conn == nil {
t.Fatal("expected non-nil conn")
}
conn.Close()
portsMap[port] = true
}
srvCancel() // shutdown server
srvWg.Wait() // wait for listeners on all ports to close
// check if all ports were covered
for _, port := range TestPorts {
if !portsMap[port] {
t.Fatal("missed port in test", port)
}
}
}