1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-31 03:45:17 +00:00

added e2e tests: ensuring the availability of kyverno's prometheus metrics-server

Signed-off-by: Yashvardhan Kukreja <yash.kukreja.98@gmail.com>
This commit is contained in:
Yashvardhan Kukreja 2021-05-14 04:46:24 +05:30
parent 8eae8ec492
commit b0ef84c581
5 changed files with 60 additions and 1 deletions

View file

@ -82,6 +82,8 @@ jobs:
kubectl get pods -n kyverno
${GITHUB_WORKSPACE}/scripts/verify-deployment.sh -n kyverno kyverno
sleep 20
echo ">>> Expose the Kyverno's service's metric server to the host"
kubectl port-forward svc/kyverno-svc -n kyverno 8000:8000 &
echo ">>> Run Kyverno e2e test"
make test-e2e
kubectl delete -f ${GITHUB_WORKSPACE}/definitions/install.yaml

View file

@ -171,6 +171,7 @@ code-cov-report: $(CODE_COVERAGE_FILE_TXT)
# Test E2E
test-e2e:
$(eval export E2E="ok")
go test ./test/e2e/metrics -v
go test ./test/e2e/mutate -v
go test ./test/e2e/generate -v
$(eval export E2E="")

View file

@ -57,7 +57,6 @@ var (
profile bool
disableMetricsExport bool
policyReport bool
policyControllerResyncPeriod time.Duration
setupLog = log.Log.WithName("setup")

View file

@ -0,0 +1,22 @@
package metrics
import (
"github.com/kyverno/kyverno/test/e2e"
. "github.com/onsi/gomega"
"os"
"testing"
)
func Test_MetricsServerAvailability(t *testing.T) {
RegisterTestingT(t)
if os.Getenv("E2E") == "" {
t.Skip("Skipping E2E Test")
}
requestObj := e2e.APIRequest{
URL: "http://localhost:8000/metrics",
Type: "GET",
}
response, err := e2e.CallAPI(requestObj)
Expect(err).NotTo(HaveOccurred())
Expect(response.StatusCode).To(Equal(200))
}

View file

@ -2,6 +2,9 @@ package e2e
import (
"context"
"fmt"
"io"
"net/http"
"os"
"time"
@ -18,6 +21,12 @@ type E2EClient struct {
Client dynamic.Interface
}
type APIRequest struct {
URL string
Type string
Body io.Reader
}
// NewE2EClient returns a new instance of E2EClient
func NewE2EClient() (*E2EClient, error) {
kubeconfig := os.Getenv("KUBECONFIG")
@ -124,3 +133,29 @@ func (e2e *E2EClient) CreateClusteredResourceYaml(gvr schema.GroupVersionResourc
result, err := e2e.CreateClusteredResource(gvr, &resource)
return result, err
}
func CallAPI(request APIRequest) (*http.Response, error) {
var response *http.Response
switch request.Type {
case "GET":
resp, err := http.Get(request.URL)
if err != nil {
return nil, fmt.Errorf("error occurred while calling %s: %w", request.URL, err)
}
response = resp
case "POST", "PUT", "DELETE", "PATCH":
req, err := http.NewRequest(string(request.Type), request.URL, request.Body)
if err != nil {
return nil, fmt.Errorf("error occurred while calling %s: %w", request.URL, err)
}
resp, err := http.DefaultClient.Do(req)
if err != nil {
return nil, fmt.Errorf("error occurred while calling %s: %w", request.URL, err)
}
response = resp
default:
return nil, fmt.Errorf("error occurred while calling %s: wrong request type found", request.URL)
}
return response, nil
}