diff --git a/Makefile b/Makefile index 6dac2ce..9118f59 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ CHAINSAW ?= chainsaw TEST_DIR := tests VALUES ?= -ASSERT_TIMEOUT ?= 15m +ASSERT_TIMEOUT ?= 30m CHAINSAW_EXTRA_FLAGS ?= CHAINSAW_RUN = $(CHAINSAW) test --values $(VALUES) --parallel 1 --assert-timeout $(ASSERT_TIMEOUT) $(CHAINSAW_EXTRA_FLAGS) @@ -25,7 +25,7 @@ help: ## Show available targets @echo "" @echo " tests:" @echo " * values via VALUES (required; e.g. VALUES=../metal-lab/values-containerlab-node1.yaml)" - @echo " * assert timeout via ASSERT_TIMEOUT (default 15m; e.g. ASSERT_TIMEOUT=5m)" + @echo " * assert timeout via ASSERT_TIMEOUT (default 30m; e.g. ASSERT_TIMEOUT=5m)" @echo " * extra chainsaw flags via CHAINSAW_EXTRA_FLAGS (e.g. CHAINSAW_EXTRA_FLAGS=\"--skip-delete -v\")" @echo "" @echo " test (run every test)" diff --git a/tests/04-bmc-reset/chainsaw-test.yaml b/tests/04-bmc-reset/chainsaw-test.yaml index 6a55d32..31feaef 100644 --- a/tests/04-bmc-reset/chainsaw-test.yaml +++ b/tests/04-bmc-reset/chainsaw-test.yaml @@ -1,5 +1,4 @@ # 04 — BMC reset -# - Should be extended to asser status.lastResetTime once testing agains physical servers apiVersion: chainsaw.kyverno.io/v1alpha1 kind: Test metadata: @@ -32,6 +31,9 @@ spec: status: state: Enabled - name: graceful-restart-bmc + bindings: + - name: previousResetTime + value: (x_k8s_get($client, 'metal.ironcore.dev/v1alpha1', 'BMC', '', join('-', ['compatibility', $namespace])).status.lastResetTime) try: - patch: resource: @@ -41,8 +43,6 @@ spec: name: (join('-', ['compatibility', $namespace])) annotations: metal.ironcore.dev/operation: graceful-restart-bmc - - name: assert-bmc-reset-complete - try: - assert: resource: apiVersion: metal.ironcore.dev/v1alpha1 @@ -52,4 +52,4 @@ spec: (annotations."metal.ironcore.dev/operation" || 'absent'): 'absent' status: state: Enabled - (lastResetTime != null): true + (lastResetTime != $previousResetTime): true diff --git a/tests/06-biossettings-noreboot/chainsaw-test.yaml b/tests/06-biossettings-noreboot/chainsaw-test.yaml index 95a57a2..280c8b5 100644 --- a/tests/06-biossettings-noreboot/chainsaw-test.yaml +++ b/tests/06-biossettings-noreboot/chainsaw-test.yaml @@ -54,6 +54,7 @@ spec: status: state: Applied - delete: + timeout: 2m file: biossettings-baseline.yaml - name: apply-biossettings try: @@ -98,4 +99,5 @@ spec: status: state: Applied - delete: + timeout: 2m file: biossettings-baseline.yaml diff --git a/tests/07-biossettings-reboot/chainsaw-test.yaml b/tests/07-biossettings-reboot/chainsaw-test.yaml index a4d7db2..af310aa 100644 --- a/tests/07-biossettings-reboot/chainsaw-test.yaml +++ b/tests/07-biossettings-reboot/chainsaw-test.yaml @@ -55,6 +55,7 @@ spec: status: state: Applied - delete: + timeout: 2m file: biossettings-baseline.yaml - assert: timeout: 15m @@ -99,6 +100,7 @@ spec: - name: restore-baseline try: - delete: + timeout: 2m file: biossettings-reboot.yaml - apply: file: biossettings-baseline.yaml @@ -111,6 +113,7 @@ spec: status: state: Applied - delete: + timeout: 2m file: biossettings-baseline.yaml - assert: timeout: 15m diff --git a/tests/08-bmcsettings/bmcsettings-baseline.yaml b/tests/08-bmcsettings/bmcsettings-baseline.yaml new file mode 100644 index 0000000..22bcdd8 --- /dev/null +++ b/tests/08-bmcsettings/bmcsettings-baseline.yaml @@ -0,0 +1,13 @@ +apiVersion: baseboard.metal.ironcore.dev/v1alpha1 +kind: BMCSettings +metadata: + name: (join('-', ['compatibility', $namespace, 'bmc-baseline'])) +spec: + bmcRef: + name: (join('-', ['compatibility', $namespace])) + version: ($values.firmwareVersion) + serverMaintenancePolicy: Enforced + settingsFlow: + - name: bmc-setting + priority: 1 + settings: (from_items([[($values."08-bmcsettings".key), ($values."08-bmcsettings".baselineValue)]])) diff --git a/tests/08-bmcsettings/chainsaw-test.yaml b/tests/08-bmcsettings/chainsaw-test.yaml index c79ffbf..2a5bdee 100644 --- a/tests/08-bmcsettings/chainsaw-test.yaml +++ b/tests/08-bmcsettings/chainsaw-test.yaml @@ -39,6 +39,23 @@ spec: name: (join('-', ['compatibility', $namespace, 'system-0'])) status: state: Available +# Ensure that there is a baseline value set so that a run after an earlier +# successful run does not result in a no-op. + - name: prepare-baseline + try: + - apply: + file: bmcsettings-baseline.yaml + - assert: + resource: + apiVersion: baseboard.metal.ironcore.dev/v1alpha1 + kind: BMCSettings + metadata: + name: (join('-', ['compatibility', $namespace, 'bmc-baseline'])) + status: + state: Applied + - delete: + timeout: 2m + file: bmcsettings-baseline.yaml - name: apply-bmcsettings try: - apply: @@ -46,7 +63,6 @@ spec: - name: assert-bmcsettings-applied try: - assert: - timeout: 30m resource: apiVersion: baseboard.metal.ironcore.dev/v1alpha1 kind: BMCSettings @@ -66,3 +82,21 @@ spec: (annotations."metal.ironcore.dev/operation" == null): true status: state: Available + - name: restore-baseline + try: + - delete: + timeout: 2m + file: bmcsettings.yaml + - apply: + file: bmcsettings-baseline.yaml + - assert: + resource: + apiVersion: baseboard.metal.ironcore.dev/v1alpha1 + kind: BMCSettings + metadata: + name: (join('-', ['compatibility', $namespace, 'bmc-baseline'])) + status: + state: Applied + - delete: + timeout: 2m + file: bmcsettings-baseline.yaml