github.com/angryronald/go-kit@v0.0.0-20240505173814-ff2bd9c79dbf/test/docker/docker.utils_test.go (about) 1 package docker 2 3 import ( 4 "net/http" 5 "testing" 6 "time" 7 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func TestNextPort(t *testing.T) { 12 port := 10000 13 // Test sequential port allocation 14 assert.Equal(t, 10001, nextPort(&port)) 15 assert.Equal(t, 10002, nextPort(&port)) 16 } 17 18 func TestIsOpen(t *testing.T) { 19 assert.True(t, isOpen("8888")) 20 21 // Start a local HTTP server for testing and check if the port is open 22 go startLocalServer("8081") 23 // Allow some time for the server to start 24 time.Sleep(100 * time.Millisecond) 25 assert.False(t, isOpen("8081")) 26 } 27 28 func TestGetAvailablePort(t *testing.T) { 29 port := GetAvailablePort(8080) 30 assert.NotEmpty(t, port) 31 assert.True(t, isOpen(port)) 32 } 33 34 // Helper function to start a local HTTP server for testing 35 func startLocalServer(port string) { 36 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { 37 w.WriteHeader(http.StatusOK) 38 w.Write([]byte("Hello, World!")) 39 }) 40 http.ListenAndServe(":"+port, nil) 41 }