File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ #! /usr/bin/env bats
2+ # -----------------------------------------------------------------------------
3+ # Cozystack end‑to‑end provisioning test (Bats)
4+ # -----------------------------------------------------------------------------
5+
6+ @test " Create tenant with isolated mode enabled" {
7+ kubectl create -f - << EOF
8+ apiVersion: apps.cozystack.io/v1alpha1
9+ kind: Tenant
10+ metadata:
11+ name: test
12+ namespace: tenant-root
13+ spec:
14+ etcd: false
15+ host: ""
16+ ingress: false
17+ isolated: true
18+ monitoring: false
19+ resourceQuotas: {}
20+ seaweedfs: false
21+ EOF
22+ kubectl wait hr/tenant-test -n tenant-root --timeout=1m --for=condition=ready
23+ kubectl wait namespace tenant-test --timeout=20s --for=jsonpath=' {.status.phase}' =Active
24+ }
25+
26+ @test " Create a tenant Kubernetes control plane" {
27+ kubectl create -f - << EOF
28+ apiVersion: apps.cozystack.io/v1alpha1
29+ kind: Kubernetes
30+ metadata:
31+ name: test
32+ namespace: tenant-test
33+ spec:
34+ addons:
35+ certManager:
36+ enabled: false
37+ valuesOverride: {}
38+ cilium:
39+ valuesOverride: {}
40+ fluxcd:
41+ enabled: false
42+ valuesOverride: {}
43+ gatewayAPI:
44+ enabled: false
45+ gpuOperator:
46+ enabled: false
47+ valuesOverride: {}
48+ ingressNginx:
49+ enabled: true
50+ hosts: []
51+ valuesOverride: {}
52+ monitoringAgents:
53+ enabled: false
54+ valuesOverride: {}
55+ verticalPodAutoscaler:
56+ valuesOverride: {}
57+ controlPlane:
58+ apiServer:
59+ resources: {}
60+ resourcesPreset: small
61+ controllerManager:
62+ resources: {}
63+ resourcesPreset: micro
64+ konnectivity:
65+ server:
66+ resources: {}
67+ resourcesPreset: micro
68+ replicas: 2
69+ scheduler:
70+ resources: {}
71+ resourcesPreset: micro
72+ host: ""
73+ nodeGroups:
74+ md0:
75+ ephemeralStorage: 20Gi
76+ gpus: []
77+ instanceType: u1.medium
78+ maxReplicas: 10
79+ minReplicas: 0
80+ resources:
81+ cpu: ""
82+ memory: ""
83+ roles:
84+ - ingress-nginx
85+ storageClass: replicated
86+ EOF
87+ kubectl wait namespace tenant-test --timeout=20s --for=jsonpath=' {.status.phase}' =Active
88+ timeout 10 sh -ec ' until kubectl get kamajicontrolplane -n tenant-test kubernetes-test; do sleep 1; done'
89+ kubectl wait --for=condition=TenantControlPlaneCreated kamajicontrolplane -n tenant-test kubernetes-test --timeout=4m
90+ kubectl wait tcp -n tenant-test kubernetes-test --timeout=2m --for=jsonpath=' {.status.kubernetesResources.version.status}' =Ready
91+ kubectl wait deploy --timeout=4m --for=condition=available -n tenant-test kubernetes-test kubernetes-test-cluster-autoscaler kubernetes-test-kccm kubernetes-test-kcsi-controller
92+ kubectl wait machinedeployment kubernetes-test-md0 -n tenant-test --timeout=1m --for=jsonpath=' {.status.replicas}' =2
93+ kubectl wait machinedeployment kubernetes-test-md0 -n tenant-test --timeout=5m --for=jsonpath=' {.status.v1beta2.readyReplicas}' =2
94+ }
Original file line number Diff line number Diff line change 33# Cozystack end‑to‑end provisioning test (Bats)
44# -----------------------------------------------------------------------------
55
6- export TALOSCONFIG=$PWD /talosconfig
7- export KUBECONFIG=$PWD /kubeconfig
8-
96@test " Environment variable COZYSTACK_INSTALLER_YAML is defined" {
107 if [ -z " ${COZYSTACK_INSTALLER_YAML:- } " ]; then
118 echo ' COZYSTACK_INSTALLER_YAML environment variable is not set!' >&2
376373
377374 # Verify Grafana via ingress
378375 ingress_ip=$( kubectl get svc root-ingress-controller -n tenant-root -o jsonpath=' {.status.loadBalancer.ingress[0].ip}' )
379- curl -sS -k " https://${ingress_ip} " -H ' Host: grafana.example.org' | grep -q Found
376+ if ! curl -sS -k " https://${ingress_ip} " -H ' Host: grafana.example.org' --max-time 30 | grep -q Found; then
377+ echo " Failed to access Grafana via ingress at ${ingress_ip} " >&2
378+ exit 1
379+ fi
380380}
381381
382382@test " Keycloak OIDC stack is healthy" {
Original file line number Diff line number Diff line change @@ -30,8 +30,13 @@ image-e2e-sandbox:
3030 yq -i ' .e2e.image = strenv(IMAGE)' values.yaml
3131 rm -f images/e2e-sandbox.json
3232
33- test : # # Run the end-to-end tests in existing sandbox.
34- docker exec " ${SANDBOX_NAME} " sh -c ' cd /workspace && export COZYSTACK_INSTALLER_YAML=$$(helm template -n cozy-system installer ./packages/core/installer) && hack/run_test.sh hack/e2e.bats'
33+ test : test-cluster test-apps # # Run the end-to-end tests in existing sandbox
34+
35+ test-cluster : # # Run the end-to-end for creating a cluster
36+ docker exec " ${SANDBOX_NAME} " sh -c ' cd /workspace && export COZYSTACK_INSTALLER_YAML=$$(helm template -n cozy-system installer ./packages/core/installer) && hack/run_test.sh hack/e2e-cluster.bats'
37+
38+ test-apps : # # Run the end-to-end tests for apps
39+ docker exec " ${SANDBOX_NAME} " sh -c ' cd /workspace && hack/run_test.sh hack/e2e-apps.bats'
3540
3641delete : # # Remove sandbox from existing Kubernetes cluster.
3742 docker rm -f " ${SANDBOX_NAME} " || true
@@ -40,5 +45,10 @@ exec: ## Opens an interactive shell in the sandbox container.
4045 docker exec -ti " ${SANDBOX_NAME} " bash
4146
4247apply : delete
43- docker run -d --rm --name " ${SANDBOX_NAME} " --privileged " $$ (yq .e2e.image values.yaml)" sleep infinity
48+ docker run \
49+ -d --rm --name " ${SANDBOX_NAME} " --privileged \
50+ -e TALOSCONFIG=/workspace/talosconfig \
51+ -e KUBECONFIG=/workspace/kubeconfig \
52+ " $$ (yq .e2e.image values.yaml)" \
53+ sleep infinity
4454 docker cp " ${ROOT_DIR} " " ${SANDBOX_NAME} " :/workspace
You can’t perform that action at this time.
0 commit comments