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:
parent
8eae8ec492
commit
b0ef84c581
5 changed files with 60 additions and 1 deletions
2
.github/workflows/e2e.yaml
vendored
2
.github/workflows/e2e.yaml
vendored
|
@ -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
|
||||
|
|
1
Makefile
1
Makefile
|
@ -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="")
|
||||
|
|
|
@ -57,7 +57,6 @@ var (
|
|||
|
||||
profile bool
|
||||
disableMetricsExport bool
|
||||
policyReport bool
|
||||
|
||||
policyControllerResyncPeriod time.Duration
|
||||
setupLog = log.Log.WithName("setup")
|
||||
|
|
22
test/e2e/metrics/metrics_test.go
Normal file
22
test/e2e/metrics/metrics_test.go
Normal 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))
|
||||
}
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue