Skip to content

Commit 813b880

Browse files
committed
test: make tests more deterministic and retries
1 parent f94a5cb commit 813b880

File tree

3 files changed

+46
-36
lines changed

3 files changed

+46
-36
lines changed

test/bats/azure.bats

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -137,24 +137,22 @@ setup() {
137137
result=$(kubectl get secret foosecret -o jsonpath="{.metadata.labels.secrets-store\.csi\.k8s\.io/managed}")
138138
[[ "${result//$'\r'}" == "true" ]]
139139

140-
result=$(kubectl get secret foosecret -o json | jq '.metadata.ownerReferences | length')
141-
[[ "$result" -eq 4 ]]
140+
run wait_for_process $WAIT_TIME $SLEEP_TIME "compare_owner_count foosecret default 4"
141+
assert_success
142142
}
143143

144144
@test "Sync with K8s secrets - delete deployment, check owner ref updated, check secret deleted" {
145145
run kubectl delete -f $BATS_TESTS_DIR/nginx-deployment-synck8s-azure.yaml
146146
assert_success
147147

148-
sleep 20
149-
result=$(kubectl get secret foosecret -o json | jq '.metadata.ownerReferences | length')
150-
[[ "$result" -eq 2 ]]
148+
run wait_for_process $WAIT_TIME $SLEEP_TIME "compare_owner_count foosecret default 2"
149+
assert_success
151150

152151
run kubectl delete -f $BATS_TESTS_DIR/nginx-deployment-two-synck8s-azure.yaml
153152
assert_success
154153

155-
sleep 20
156-
result=$(kubectl get secret | grep foosecret | wc -l)
157-
[[ "$result" -eq 0 ]]
154+
run wait_for_process $WAIT_TIME $SLEEP_TIME "check_secret_deleted foosecret default"
155+
assert_success
158156

159157
run kubectl delete -f $BATS_TESTS_DIR/azure_synck8s_v1alpha1_secretproviderclass.yaml
160158
assert_success
@@ -200,17 +198,16 @@ setup() {
200198
result=$(kubectl exec -n test-ns $POD -- printenv | grep SECRET_USERNAME) | awk -F"=" '{ print $2}'
201199
[[ "${result//$'\r'}" == "${SECRET_VALUE}" ]]
202200

203-
result=$(kubectl get secret foosecret -n test-ns -o json | jq '.metadata.ownerReferences | length')
204-
[[ "$result" -eq 2 ]]
201+
run wait_for_process $WAIT_TIME $SLEEP_TIME "compare_owner_count foosecret test-ns 2"
202+
assert_success
205203
}
206204

207205
@test "Test Namespaced scope SecretProviderClass - Sync with K8s secrets - delete deployment, check secret deleted" {
208206
run kubectl delete -f $BATS_TESTS_DIR/nginx-deployment-synck8s-azure.yaml -n test-ns
209207
assert_success
210-
sleep 20
211208

212-
result=$(kubectl get secret -n test-ns | grep foosecret | wc -l)
213-
[[ "$result" -eq 0 ]]
209+
run wait_for_process $WAIT_TIME $SLEEP_TIME "check_secret_deleted foosecret test-ns"
210+
assert_success
214211
}
215212

216213
@test "Test Namespaced scope SecretProviderClass - Should fail when no secret provider class in same namespace" {
@@ -278,17 +275,17 @@ setup() {
278275
result=$(kubectl exec nginx-secrets-store-inline-multiple-crd -- printenv | grep SECRET_USERNAME_0) | awk -F"=" '{ print $2}'
279276
[[ "${result//$'\r'}" == "${SECRET_VALUE}" ]]
280277

281-
result=$(kubectl get secret foosecret-0 -o json | jq '.metadata.ownerReferences | length')
282-
[[ "$result" -eq 1 ]]
278+
run wait_for_process $WAIT_TIME $SLEEP_TIME "compare_owner_count foosecret-0 default 1"
279+
assert_success
283280

284281
result=$(kubectl get secret foosecret-1 -o jsonpath="{.data.username}" | base64 -d)
285282
[[ "${result//$'\r'}" == "${SECRET_VALUE}" ]]
286283

287284
result=$(kubectl exec nginx-secrets-store-inline-multiple-crd -- printenv | grep SECRET_USERNAME_1) | awk -F"=" '{ print $2}'
288285
[[ "${result//$'\r'}" == "${SECRET_VALUE}" ]]
289286

290-
result=$(kubectl get secret foosecret-1 -o json | jq '.metadata.ownerReferences | length')
291-
[[ "$result" -eq 1 ]]
287+
run wait_for_process $WAIT_TIME $SLEEP_TIME "compare_owner_count foosecret-1 default 1"
288+
assert_success
292289
}
293290

294291
@test "Test auto rotation of mount contents and K8s secrets - Create deployment" {

test/bats/helpers.bash

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,19 @@ wait_for_process(){
6464
done
6565
return 1
6666
}
67+
68+
compare_owner_count() {
69+
secret="$1"
70+
namespace="$2"
71+
ownercount="$3"
72+
73+
[[ "$(kubectl get secret ${secret} -n ${namespace} -o json | jq '.metadata.ownerReferences | length')" -eq $ownercount ]]
74+
}
75+
76+
check_secret_deleted() {
77+
secret="$1"
78+
namespace="$2"
79+
80+
result=$(kubectl get secret -n ${namespace} | grep "^${secret}$" | wc -l)
81+
[[ "$result" -eq 0 ]]
82+
}

test/bats/vault.bats

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -190,27 +190,25 @@ EOF
190190
result=$(kubectl get secret foosecret -o jsonpath="{.metadata.labels.environment}")
191191
[[ "${result//$'\r'}" == "${LABEL_VALUE}" ]]
192192

193-
result=$(kubectl get secret foosecret -o jsonpath="{.metadata.labels.secrets-store\.csi\.k8s\.io/managed}")
193+
result=$(kubectl get secret foosecret -o jsonpath="{.metadata.labels.secrets-store\.csi\.k8s\.io/managed}")
194194
[[ "${result//$'\r'}" == "true" ]]
195195

196-
result=$(kubectl get secret foosecret -o json | jq '.metadata.ownerReferences | length')
197-
[[ "$result" -eq 4 ]]
196+
run wait_for_process $WAIT_TIME $SLEEP_TIME "compare_owner_count foosecret default 4"
197+
assert_success
198198
}
199199

200200
@test "Sync with K8s secrets - delete deployment, check secret is deleted" {
201201
run kubectl delete -f $BATS_TESTS_DIR/nginx-deployment-synck8s.yaml
202202
assert_success
203203

204-
sleep 20
205-
result=$(kubectl get secret foosecret -o json | jq '.metadata.ownerReferences | length')
206-
[[ "$result" -eq 2 ]]
204+
run wait_for_process $WAIT_TIME $SLEEP_TIME "compare_owner_count foosecret default 2"
205+
assert_success
207206

208207
run kubectl delete -f $BATS_TESTS_DIR/nginx-deployment-two-synck8s.yaml
209208
assert_success
210209

211-
sleep 20
212-
result=$(kubectl get secret | grep foosecret | wc -l)
213-
[[ "$result" -eq 0 ]]
210+
run wait_for_process $WAIT_TIME $SLEEP_TIME "check_secret_deleted foosecret default"
211+
assert_success
214212

215213
run kubectl delete -f $BATS_TESTS_DIR/vault_synck8s_v1alpha1_secretproviderclass.yaml
216214
assert_success
@@ -253,17 +251,16 @@ EOF
253251
result=$(kubectl exec -n test-ns $POD -- printenv | grep SECRET_USERNAME | awk -F"=" '{ print $2 }' | tr -d '\r\n')
254252
[[ "$result" == "hello1" ]]
255253

256-
result=$(kubectl get secret -n test-ns foosecret -o json | jq '.metadata.ownerReferences | length')
257-
[[ "$result" -eq 2 ]]
254+
run wait_for_process $WAIT_TIME $SLEEP_TIME "compare_owner_count foosecret test-ns 2"
255+
assert_success
258256
}
259257

260258
@test "Test Namespaced scope SecretProviderClass - Sync with K8s secrets - delete deployment, check secret deleted" {
261259
run kubectl delete -f $BATS_TESTS_DIR/nginx-deployment-synck8s.yaml -n test-ns
262260
assert_success
263-
sleep 20
264261

265-
result=$(kubectl get secret -n test-ns | grep foosecret | wc -l)
266-
[[ "$result" -eq 0 ]]
262+
run wait_for_process $WAIT_TIME $SLEEP_TIME "check_secret_deleted foosecret test-ns"
263+
assert_success
267264
}
268265

269266
@test "Test Namespaced scope SecretProviderClass - Should fail when no secret provider class in same namespace" {
@@ -286,7 +283,7 @@ EOF
286283
assert_success
287284
}
288285

289-
@test "deploy multiple azure secretproviderclass crd" {
286+
@test "deploy multiple vault secretproviderclass crd" {
290287
export VAULT_SERVICE_IP=$(kubectl get service vault -o jsonpath='{.spec.clusterIP}')
291288

292289
envsubst < $BATS_TESTS_DIR/vault_v1alpha1_multiple_secretproviderclass.yaml | kubectl apply -f -
@@ -324,8 +321,8 @@ EOF
324321
result=$(kubectl exec nginx-secrets-store-inline-multiple-crd -- printenv | grep SECRET_USERNAME_0 | awk -F"=" '{ print $2 }' | tr -d '\r\n')
325322
[[ "$result" == "hello1" ]]
326323

327-
result=$(kubectl get secret foosecret-0 -o json | jq '.metadata.ownerReferences | length')
328-
[[ "$result" -eq 1 ]]
324+
run wait_for_process $WAIT_TIME $SLEEP_TIME "compare_owner_count foosecret-0 default 1"
325+
assert_success
329326

330327
result=$(kubectl exec nginx-secrets-store-inline-multiple-crd -- cat /mnt/secrets-store-1/foo)
331328
[[ "$result" == "hello" ]]
@@ -339,6 +336,6 @@ EOF
339336
result=$(kubectl exec nginx-secrets-store-inline-multiple-crd -- printenv | grep SECRET_USERNAME_1 | awk -F"=" '{ print $2 }' | tr -d '\r\n')
340337
[[ "$result" == "hello1" ]]
341338

342-
result=$(kubectl get secret foosecret-1 -o json | jq '.metadata.ownerReferences | length')
343-
[[ "$result" -eq 1 ]]
339+
run wait_for_process $WAIT_TIME $SLEEP_TIME "compare_owner_count foosecret-1 default 1"
340+
assert_success
344341
}

0 commit comments

Comments
 (0)