http-add-on/operator/controllers/ping_test.go

47 lines
1.1 KiB
Go

package controllers
import (
"context"
"net/http"
"testing"
"github.com/stretchr/testify/require"
"sigs.k8s.io/controller-runtime/pkg/client/fake"
"github.com/kedacore/http-add-on/pkg/k8s"
kedanet "github.com/kedacore/http-add-on/pkg/net"
)
func TestPingInterceptors(t *testing.T) {
const (
ns = "testns"
svcName = "testsvc"
)
r := require.New(t)
// create a new server (that we can introspect later on) to act
// like a fake interceptor. we expect that pingInterceptors()
// will make requests to this server
hdl := kedanet.NewTestHTTPHandlerWrapper(
http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(200)
}),
)
srv, url, err := kedanet.StartTestServer(hdl)
r.NoError(err)
defer srv.Close()
ctx := context.Background()
endpoints, err := k8s.FakeEndpointsForURL(url, ns, svcName, 2)
r.NoError(err)
cl := fake.NewClientBuilder().WithObjects(endpoints).Build()
r.NoError(pingInterceptors(
ctx,
cl,
srv.Client(),
ns,
svcName,
url.Port(),
))
reqs := hdl.IncomingRequests()
r.Equal(len(endpoints.Subsets[0].Addresses), len(reqs))
}