@@ -13,145 +13,37 @@ JUNIT_REPORT_PATH=${JUNIT_REPORT_PATH:-"ctst-junit.xml"}
1313# Zenko Version
1414VERSION=$( cat ../../../VERSION | grep -Po ' VERSION="\K[^"]*' )
1515
16- # Zenko Environment
17- ZENKO_ACCOUNT_NAME=" zenko-ctst"
18- ADMIN_ACCESS_KEY_ID=$( kubectl get secret end2end-management-vault-admin-creds.v1 -o jsonpath=' {.data.accessKey}' | base64 -d)
19- ADMIN_SECRET_ACCESS_KEY=$( kubectl get secret end2end-management-vault-admin-creds.v1 -o jsonpath=' {.data.secretKey}' | base64 -d)
20- ADMIN_PRA_ACCESS_KEY_ID=$( kubectl get secret end2end-pra-management-vault-admin-creds.v1 -o jsonpath=' {.data.accessKey}' | base64 -d)
21- ADMIN_PRA_SECRET_ACCESS_KEY=$( kubectl get secret end2end-pra-management-vault-admin-creds.v1 -o jsonpath=' {.data.secretKey}' | base64 -d)
22- STORAGE_MANAGER_USER_NAME=" ctst_storage_manager"
23- STORAGE_ACCOUNT_OWNER_USER_NAME=" ctst_storage_account_owner"
24- DATA_CONSUMER_USER_NAME=" ctst_data_consumer"
25- DATA_ACCESSOR_USER_NAME=" ctst_data_accessor"
26- VAULT_AUTH_HOST=" ${ZENKO_NAME} -connector-vault-auth-api.default.svc.cluster.local"
27- ZENKO_PORT=" 80"
28- KEYCLOAK_TEST_USER=${OIDC_USERNAME}
29- KEYCLOAK_TEST_PASSWORD=${OIDC_PASSWORD}
30- KEYCLOAK_TEST_HOST=${OIDC_HOST}
31- KEYCLOAK_TEST_PORT=" 80"
32- KEYCLOAK_TEST_REALM_NAME=${OIDC_REALM}
33- KEYCLOAK_TEST_CLIENT_ID=${OIDC_CLIENT_ID}
34- KEYCLOAK_TEST_GRANT_TYPE=" password"
16+ # Minimal environment setup - CTST will handle all Kubernetes discovery
3517
36- # get Zenko service users credentials
37- BACKBEAT_LCBP_1_CREDS=$( kubectl get secret -l app.kubernetes.io/name=backbeat-lcbp-user-creds,app.kubernetes.io/instance=end2end -o jsonpath=' {.items[0].data.backbeat-lifecycle-bp-1\.json}' | base64 -d)
38- BACKBEAT_LCC_1_CREDS=$( kubectl get secret -l app.kubernetes.io/name=backbeat-lcc-user-creds,app.kubernetes.io/instance=end2end -o jsonpath=' {.items[0].data.backbeat-lifecycle-conductor-1\.json}' | base64 -d)
39- BACKBEAT_LCOP_1_CREDS=$( kubectl get secret -l app.kubernetes.io/name=backbeat-lcop-user-creds,app.kubernetes.io/instance=end2end -o jsonpath=' {.items[0].data.backbeat-lifecycle-op-1\.json}' | base64 -d)
40- BACKBEAT_QP_1_CREDS=$( kubectl get secret -l app.kubernetes.io/name=backbeat-qp-user-creds,app.kubernetes.io/instance=end2end -o jsonpath=' {.items[0].data.backbeat-qp-1\.json}' | base64 -d)
41- SORBET_FWD_2_ACCESSKEY=$( kubectl get secret -l app.kubernetes.io/name=sorbet-fwd-creds,app.kubernetes.io/instance=end2end -o jsonpath=' {.items[0].data.accessKey}' | base64 -d)
42- SORBET_FWD_2_SECRETKEY=$( kubectl get secret -l app.kubernetes.io/name=sorbet-fwd-creds,app.kubernetes.io/instance=end2end -o jsonpath=' {.items[0].data.secretKey}' | base64 -d)
43- SERVICE_USERS_CREDENTIALS=$( echo ' {"backbeat-lifecycle-bp-1":' ${BACKBEAT_LCBP_1_CREDS} ' ,"backbeat-lifecycle-conductor-1":' ${BACKBEAT_LCC_1_CREDS} ' ,"backbeat-lifecycle-op-1":' ${BACKBEAT_LCOP_1_CREDS} ' ,"backbeat-qp-1":' ${BACKBEAT_QP_1_CREDS} ' ,"sorbet-fwd-2":{"accessKey":"' ${SORBET_FWD_2_ACCESSKEY} ' ","secretKey":"' ${SORBET_FWD_2_SECRETKEY} ' "}}' | jq -R)
44-
45- # Get KAFKA topics for sorbet
46- KAFKA_DEAD_LETTER_TOPIC=$( kubectl get secret -l app.kubernetes.io/name=cold-sorbet-config-e2e-azure-archive,app.kubernetes.io/instance=end2end \
47- -o jsonpath=' {.items[0].data.config\.json}' | base64 -di | jq ' ."kafka-dead-letter-topic"' | cut -d " \" " -f 2)
48-
49- KAFKA_OBJECT_TASK_TOPIC=$( kubectl get secret -l app.kubernetes.io/name=cold-sorbet-config-e2e-azure-archive,app.kubernetes.io/instance=end2end \
50- -o jsonpath=' {.items[0].data.config\.json}' | base64 -di | jq ' ."kafka-object-task-topic"' | cut -d " \" " -f 2)
51-
52- KAFKA_GC_REQUEST_TOPIC=$( kubectl get secret -l app.kubernetes.io/name=cold-sorbet-config-e2e-azure-archive,app.kubernetes.io/instance=end2end \
53- -o jsonpath=' {.items[0].data.config\.json}' | base64 -di | jq ' ."kafka-gc-request-topic"' | cut -d " \" " -f 2)
54-
55- DR_ADMIN_ACCESS_KEY_ID=$( kubectl get secret end2end-pra-management-vault-admin-creds.v1 -o jsonpath=' {.data.accessKey}' | base64 -d)
56- DR_ADMIN_SECRET_ACCESS_KEY=$( kubectl get secret end2end-pra-management-vault-admin-creds.v1 -o jsonpath=' {.data.secretKey}' | base64 -d)
57-
58- # Extracting kafka host from bacbeat's config
59- KAFKA_HOST_PORT=$( kubectl get secret -l app.kubernetes.io/name=backbeat-config,app.kubernetes.io/instance=end2end \
60- -o jsonpath=' {.items[0].data.config\.json}' | base64 -di | jq .kafka.hosts)
61- KAFKA_HOST_PORT=${KAFKA_HOST_PORT: 1:- 1}
62-
63- TIME_PROGRESSION_FACTOR=$( kubectl get zenko ${ZENKO_NAME} -o jsonpath=" {.metadata.annotations.zenko\.io/time-progression-factor}" )
64- INSTANCE_ID=$( kubectl get zenko ${ZENKO_NAME} -o jsonpath=' {.status.instanceID}' )
65-
66- # Azure archive tests
67- AZURE_ARCHIVE_ACCESS_TIER=" Hot"
68- AZURE_ARCHIVE_MANIFEST_ACCESS_TIER=" Hot"
69-
70- BACKBEAT_API_HOST=$( kubectl get secret -l app.kubernetes.io/name=connector-cloudserver-config,app.kubernetes.io/instance=end2end -o jsonpath=' {.items[0].data.config\.json}' | base64 -di | jq .backbeat.host)
71- BACKBEAT_API_HOST=${BACKBEAT_API_HOST: 1:- 1}
72- BACKBEAT_API_PORT=$( kubectl get secret -l app.kubernetes.io/name=connector-cloudserver-config,app.kubernetes.io/instance=end2end -o jsonpath=' {.items[0].data.config\.json}' | base64 -di | jq .backbeat.port)
73-
74- KAFKA_CLEANER_INTERVAL=$( kubectl get zenko ${ZENKO_NAME} -o jsonpath=' {.spec.kafkaCleaner.interval}' )
75- SORBETD_RESTORE_TIMEOUT=$( kubectl get zenko ${ZENKO_NAME} -o jsonpath=' {.spec.sorbet.server.azure.restoreTimeout}' )
76-
77- # Utilization service
78- UTILIZATION_SERVICE_HOST=$( kubectl get zenko ${ZENKO_NAME} -o jsonpath=' {.spec.scuba.api.ingress.hostname}' )
79- UTILIZATION_SERVICE_PORT=" 80"
80-
81- # Setting CTST world params
18+ # Minimal CTST world params - CTST handles all Kubernetes discovery
8219WORLD_PARAMETERS=" $( jq -c << EOF
8320{
21+ "Namespace":"default",
8422 "subdomain":"${SUBDOMAIN} ",
8523 "DRSubdomain":"${DR_SUBDOMAIN} ",
86- "ssl":false,
87- "port":"${ZENKO_PORT} ",
88- "AccountName":"${ZENKO_ACCOUNT_NAME} ",
89- "AdminAccessKey":"${ADMIN_ACCESS_KEY_ID} ",
90- "AdminSecretKey":"${ADMIN_SECRET_ACCESS_KEY} ",
91- "VaultAuthHost":"${VAULT_AUTH_HOST} ",
92- "NotificationDestination":"${NOTIF_DEST_NAME} ",
93- "NotificationDestinationTopic":"${NOTIF_DEST_TOPIC} ",
94- "NotificationDestinationAlt":"${NOTIF_ALT_DEST_NAME} ",
95- "NotificationDestinationTopicAlt":"${NOTIF_ALT_DEST_TOPIC} ",
96- "KafkaExternalIps": "${KAFKA_EXTERNAL_IP:- } ",
97- "PrometheusService":"${PROMETHEUS_NAME} -operated.default.svc.cluster.local",
98- "KafkaHosts":"${KAFKA_HOST_PORT} ",
99- "KeycloakUsername":"${KEYCLOAK_TEST_USER} ",
100- "KeycloakPassword":"${KEYCLOAK_TEST_PASSWORD} ",
101- "KeycloakHost":"${KEYCLOAK_TEST_HOST} ",
102- "KeycloakPort":"${KEYCLOAK_TEST_PORT} ",
103- "keycloakRealm":"${KEYCLOAK_TEST_REALM_NAME} ",
104- "keycloakClientId":"${KEYCLOAK_TEST_CLIENT_ID} ",
105- "keycloakGrantType":"${KEYCLOAK_TEST_GRANT_TYPE} ",
106- "StorageManagerUsername":"${STORAGE_MANAGER_USER_NAME} ",
107- "StorageAccountOwnerUsername":"${STORAGE_ACCOUNT_OWNER_USER_NAME} ",
108- "DataConsumerUsername":"${DATA_CONSUMER_USER_NAME} ",
109- "DataAccessorUsername":"${DATA_ACCESSOR_USER_NAME} ",
110- "ServiceUsersCredentials":${SERVICE_USERS_CREDENTIALS} ,
111- "AzureAccountName":"${AZURE_ACCOUNT_NAME} ",
112- "AzureAccountKey":"${AZURE_SECRET_KEY} ",
113- "AzureArchiveContainer":"${AZURE_ARCHIVE_BUCKET_NAME} ",
114- "AzureArchiveContainer2":"${AZURE_ARCHIVE_BUCKET_NAME_2} ",
115- "AzureArchiveAccessTier":"${AZURE_ARCHIVE_ACCESS_TIER} ",
116- "AzureArchiveManifestTier":"${AZURE_ARCHIVE_MANIFEST_ACCESS_TIER} ",
117- "AzureArchiveQueue":"${AZURE_ARCHIVE_QUEUE_NAME} ",
118- "TimeProgressionFactor":"${TIME_PROGRESSION_FACTOR} ",
119- "KafkaObjectTaskTopic":"${KAFKA_OBJECT_TASK_TOPIC} ",
120- "KafkaGCRequestTopic":"${KAFKA_GC_REQUEST_TOPIC} ",
121- "KafkaDeadLetterQueueTopic":"${KAFKA_DEAD_LETTER_TOPIC} ",
122- "InstanceID":"${INSTANCE_ID} ",
123- "BackbeatApiHost":"${BACKBEAT_API_HOST} ",
124- "BackbeatApiPort":"${BACKBEAT_API_PORT} ",
125- "KafkaCleanerInterval":"${KAFKA_CLEANER_INTERVAL} ",
126- "SorbetdRestoreTimeout":"${SORBETD_RESTORE_TIMEOUT} ",
127- "TimeProgressionFactor":"${TIME_PROGRESSION_FACTOR} ",
128- "DRAdminAccessKey":"${DR_ADMIN_ACCESS_KEY_ID} ",
129- "DRAdminSecretKey":"${DR_ADMIN_SECRET_ACCESS_KEY} ",
130- "UtilizationServiceHost":"${UTILIZATION_SERVICE_HOST} ",
131- "UtilizationServicePort":"${UTILIZATION_SERVICE_PORT} "
24+ "KeycloakUsername":"${OIDC_USERNAME:- testuser} ",
25+ "KeycloakPassword":"${OIDC_PASSWORD:- testpass} ",
26+ "KeycloakHost":"${OIDC_HOST:- keycloak.zenko.local} ",
27+ "KeycloakRealm":"${OIDC_REALM:- zenko} ",
28+ "KeycloakClientId":"${OIDC_CLIENT_ID:- zenko-ui} ",
29+ "AzureAccountName":"${AZURE_ACCOUNT_NAME:- devstoreaccount1} ",
30+ "AzureAccountKey":"${AZURE_SECRET_KEY:- Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/ K1SZFPTOtr/ KBHBeksoGMGw==} ",
31+ "AzureArchiveContainer":"${AZURE_ARCHIVE_BUCKET_NAME:- archive-container} ",
32+ "AzureArchiveContainer2":"${AZURE_ARCHIVE_BUCKET_NAME_2:- archive-container-2} ",
33+ "AzureArchiveQueue":"${AZURE_ARCHIVE_QUEUE_NAME:- archive-queue} "
13234}
13335EOF
13436) "
13537
136- # Set up environment variables for testing
137- kubectl set env deployment end2end-connector-cloudserver SCUBA_HEALTHCHECK_FREQUENCY=100
138- kubectl rollout status deployment end2end-connector-cloudserver
139-
14038E2E_IMAGE=$E2E_CTST_IMAGE_NAME :$E2E_IMAGE_TAG
14139POD_NAME=" ${ZENKO_NAME} -ctst-tests"
14240CTST_VERSION=$( sed ' s/.*"cli-testing": ".*#\(.*\)".*/\1/;t;d' ../../../tests/ctst/package.json)
14341
144- # Configure keycloak
145- docker run \
146- --rm \
147- --network=host \
148- " ${E2E_IMAGE} " /bin/bash \
149- -c " SUBDOMAIN=${SUBDOMAIN} CONTROL_PLANE_INGRESS_ENDPOINT=${OIDC_ENDPOINT} ACCOUNT=${ZENKO_ACCOUNT_NAME} KEYCLOAK_REALM=${KEYCLOAK_TEST_REALM_NAME} STORAGE_MANAGER=${STORAGE_MANAGER_USER_NAME} STORAGE_ACCOUNT_OWNER=${STORAGE_ACCOUNT_OWNER_USER_NAME} DATA_CONSUMER=${DATA_CONSUMER_USER_NAME} DATA_ACCESSOR=${DATA_ACCESSOR_USER_NAME} /ctst/bin/seedKeycloak.sh" ; [[ $? -eq 1 ]] && exit 1 || echo ' Keycloak Configured!'
150-
151- # Grant access to Kube API (insecure, only for testing)
152- kubectl create clusterrolebinding serviceaccounts-cluster-admin \
42+ # Grant CTST cluster-admin permissions (test environment only)
43+ kubectl create clusterrolebinding ctst-cluster-admin \
15344 --clusterrole=cluster-admin \
154- --group=system:serviceaccounts
45+ --serviceaccount=default:default \
46+ --dry-run=client -o yaml | kubectl apply -f -
15547
15648# Running end2end ctst tests
15749# Using overrides as we need to attach a local folder to the pod
0 commit comments