2020-02-15 19:39:40 +00:00
|
|
|
package testtool
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
2020-02-15 19:56:46 +00:00
|
|
|
"net"
|
|
|
|
"net/http"
|
|
|
|
"net/http/httptest"
|
|
|
|
"net/url"
|
2020-02-15 19:39:40 +00:00
|
|
|
"testing"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestGetFreePort(t *testing.T) {
|
|
|
|
p, err := GetFreePort()
|
|
|
|
require.NoError(t, err)
|
|
|
|
require.NotEmpty(t, p)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestWaitForPort(t *testing.T) {
|
2020-02-15 19:56:46 +00:00
|
|
|
s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {}))
|
|
|
|
defer s.Close()
|
|
|
|
|
|
|
|
u, err := url.Parse(s.URL)
|
|
|
|
require.Nil(t, err)
|
|
|
|
_, port, err := net.SplitHostPort(u.Host)
|
|
|
|
require.Nil(t, err)
|
|
|
|
|
|
|
|
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
|
|
|
|
defer cancel()
|
|
|
|
|
|
|
|
WaitForPort(ctx, port)
|
|
|
|
|
|
|
|
require.NoError(t, ctx.Err())
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestWaitForPort_timeout(t *testing.T) {
|
2020-02-15 19:39:40 +00:00
|
|
|
p, err := GetFreePort()
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
|
|
|
|
defer cancel()
|
|
|
|
|
|
|
|
WaitForPort(ctx, p)
|
|
|
|
|
|
|
|
require.Error(t, ctx.Err())
|
|
|
|
}
|