62e9f8e101
Closes https://github.com/ooni/probe/issues/2338 Co-authored-by: decfox <decfox@github.com>
46 lines
1013 B
Go
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)
|
|
}
|
|
}
|
|
}
|