Skip to content

Commit

Permalink
Add check for client in e2e
Browse files Browse the repository at this point in the history
Depending on how the e2e is run, we may not have a k8s client available.

Signed-off-by: Todd Short <todd.short@me.com>
  • Loading branch information
tmshort committed Dec 17, 2024
1 parent f91558f commit 152e49e
Showing 1 changed file with 23 additions and 7 deletions.
30 changes: 23 additions & 7 deletions test/e2e/metrics_endpoint_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,28 +23,44 @@ func TestCatalogdMetricsExportedEndpoint(t *testing.T) {
token string
curlPod = "curl-metrics"
namespace = "olmv1-system"
client = ""
clients = []string{"kubectl", "oc"}
)

t.Log("Looking for k8s client")
for _, c := range clients {
// Would prefer to use `command -v`, but even that may not be installed!
err := exec.Command(c, "version", "--client").Run()
if err == nil {
client = c
break
}
}
if client == "" {
t.Skip("k8s client not found, skipping test")
}
t.Logf("Using %q as k8s client", client)

t.Log("Creating ClusterRoleBinding for metrics access")
cmd := exec.Command("kubectl", "create", "clusterrolebinding", "catalogd-metrics-binding",
cmd := exec.Command(client, "create", "clusterrolebinding", "catalogd-metrics-binding",
"--clusterrole=catalogd-metrics-reader",
"--serviceaccount="+namespace+":catalogd-controller-manager")
output, err := cmd.CombinedOutput()
require.NoError(t, err, "Error creating ClusterRoleBinding: %s", string(output))

defer func() {
t.Log("Cleaning up ClusterRoleBinding")
_ = exec.Command("kubectl", "delete", "clusterrolebinding", "catalogd-metrics-binding", "--ignore-not-found=true").Run()
_ = exec.Command(client, "delete", "clusterrolebinding", "catalogd-metrics-binding", "--ignore-not-found=true").Run()
}()

t.Log("Creating service account token for authentication")
tokenCmd := exec.Command("kubectl", "create", "token", "catalogd-controller-manager", "-n", namespace)
tokenCmd := exec.Command(client, "create", "token", "catalogd-controller-manager", "-n", namespace)
tokenOutput, err := tokenCmd.Output()
require.NoError(t, err, "Error creating token: %s", string(tokenOutput))
token = string(bytes.TrimSpace(tokenOutput))

t.Log("Creating a pod to run curl commands")
cmd = exec.Command("kubectl", "run", curlPod,
cmd = exec.Command(client, "run", curlPod,
"--image=curlimages/curl:7.87.0", "-n", namespace,
"--restart=Never",
"--overrides", `{
Expand Down Expand Up @@ -73,17 +89,17 @@ func TestCatalogdMetricsExportedEndpoint(t *testing.T) {

defer func() {
t.Log("Cleaning up curl pod")
_ = exec.Command("kubectl", "delete", "pod", curlPod, "-n", namespace, "--ignore-not-found=true").Run()
_ = exec.Command(client, "delete", "pod", curlPod, "-n", namespace, "--ignore-not-found=true").Run()
}()

t.Log("Waiting for the curl pod to become ready")
waitCmd := exec.Command("kubectl", "wait", "--for=condition=Ready", "pod", curlPod, "-n", namespace, "--timeout=60s")
waitCmd := exec.Command(client, "wait", "--for=condition=Ready", "pod", curlPod, "-n", namespace, "--timeout=60s")
waitOutput, waitErr := waitCmd.CombinedOutput()
require.NoError(t, waitErr, "Error waiting for curl pod to be ready: %s", string(waitOutput))

t.Log("Validating the metrics endpoint")
metricsURL := "https://catalogd-service.olmv1-system.svc.cluster.local:7443/metrics"
curlCmd := exec.Command("kubectl", "exec", curlPod, "-n", namespace, "--",
curlCmd := exec.Command(client, "exec", curlPod, "-n", namespace, "--",
"curl", "-v", "-k", "-H", "Authorization: Bearer "+token, metricsURL)
output, err = curlCmd.CombinedOutput()
require.NoError(t, err, "Error calling metrics endpoint: %s", string(output))
Expand Down

0 comments on commit 152e49e

Please sign in to comment.