66# envsubst expands only the listed shell variables ($NAMESPACE etc.),
77# leaving Hadoop ${env.FOO} references untouched.
88#
9- # Both sides are converted to JSON via yq, then jq normalises trailing
10- # newlines in string values (collapsing \n+ to \n) so YAML block scalar
11- # style (|, |+) differences don't cause false failures.
12- # vector.toml is excluded because its presence depends on the
13- # VECTOR_AGGREGATOR env var set by the CI/test runner. The snapshot
14- # files are plain YAML (not Jinja2 templates), so they cannot
15- # conditionally include it.
16- #
179# kuttl runs script commands with sh, not bash, so process substitution
1810# is unavailable. Temp files namespaced under $NAMESPACE are used for
1911# diff output to avoid collisions when tests run concurrently.
2012apiVersion: kuttl.dev/v1beta1
2113kind: TestAssert
22- timeout: 600
14+ timeout: 60
2315commands:
2416 #
2517 # ConfigMap data snapshot: hdfs-namenode-default
2618 #
2719 - script: |
28- envsubst '$NAMESPACE' < 31_configmap_hdfs-namenode-default.yaml | yq -o=json | jq 'with_entries(.value |= sub("\n+$"; "\n"))' > /tmp/$NAMESPACE-expected.json
29- kubectl -n $NAMESPACE get cm hdfs-namenode-default -o yaml | yq -o=json '.data | del(.["vector.toml"])' | jq 'with_entries(.value |= sub("\n+$"; "\n"))' > /tmp/$NAMESPACE-actual.json
30- if ! diff /tmp/$NAMESPACE-expected.json /tmp/$NAMESPACE-actual.json ; then
20+ envsubst '$NAMESPACE' < 31_configmap_hdfs-namenode-default.yaml > /tmp/$NAMESPACE-expected.yaml
21+ kubectl -n $NAMESPACE get cm hdfs-namenode-default -o yaml | yq '.data' > /tmp/$NAMESPACE-actual.yaml
22+ if ! diff /tmp/$NAMESPACE-expected.yaml /tmp/$NAMESPACE-actual.yaml ; then
3123 echo "ERROR: ConfigMap hdfs-namenode-default data drifted from snapshot."
3224 exit 1
3325 fi
@@ -40,19 +32,19 @@ commands:
4032{% else %}
4133 export DATANODE_DATA_DIR='[DISK]/stackable/data/data/datanode'
4234{% endif %}
43- envsubst '$NAMESPACE $DATANODE_DATA_DIR' < 31_configmap_hdfs-datanode-default.yaml | yq -o=json | jq 'with_entries(.value |= sub("\n+$"; "\n"))' > /tmp/$NAMESPACE-expected.json
44- kubectl -n $NAMESPACE get cm hdfs-datanode-default -o yaml | yq -o=json '.data | del(.["vector.toml"])' | jq 'with_entries(.value |= sub("\n+$"; "\n"))' > /tmp/$NAMESPACE-actual.json
45- if ! diff /tmp/$NAMESPACE-expected.json /tmp/$NAMESPACE-actual.json ; then
35+ envsubst '$NAMESPACE $DATANODE_DATA_DIR' < 31_configmap_hdfs-datanode-default.yaml > /tmp/$NAMESPACE-expected.yaml
36+ kubectl -n $NAMESPACE get cm hdfs-datanode-default -o yaml | yq '.data' > /tmp/$NAMESPACE-actual.yaml
37+ if ! diff /tmp/$NAMESPACE-expected.yaml /tmp/$NAMESPACE-actual.yaml ; then
4638 echo "ERROR: ConfigMap hdfs-datanode-default data drifted from snapshot."
4739 exit 1
4840 fi
4941 #
5042 # ConfigMap data snapshot: hdfs-journalnode-default
5143 #
5244 - script: |
53- envsubst '$NAMESPACE' < 31_configmap_hdfs-journalnode-default.yaml | yq -o=json | jq 'with_entries(.value |= sub("\n+$"; "\n"))' > /tmp/$NAMESPACE-expected.json
54- kubectl -n $NAMESPACE get cm hdfs-journalnode-default -o yaml | yq -o=json '.data | del(.["vector.toml"])' | jq 'with_entries(.value |= sub("\n+$"; "\n"))' > /tmp/$NAMESPACE-actual.json
55- if ! diff /tmp/$NAMESPACE-expected.json /tmp/$NAMESPACE-actual.json ; then
45+ envsubst '$NAMESPACE' < 31_configmap_hdfs-journalnode-default.yaml > /tmp/$NAMESPACE-expected.yaml
46+ kubectl -n $NAMESPACE get cm hdfs-journalnode-default -o yaml | yq '.data' > /tmp/$NAMESPACE-actual.yaml
47+ if ! diff /tmp/$NAMESPACE-expected.yaml /tmp/$NAMESPACE-actual.yaml ; then
5648 echo "ERROR: ConfigMap hdfs-journalnode-default data drifted from snapshot."
5749 exit 1
5850 fi
0 commit comments