diff --git a/scripts/install-cni.sh b/scripts/install-cni.sh index 1e69c869..2553be68 100755 --- a/scripts/install-cni.sh +++ b/scripts/install-cni.sh @@ -18,6 +18,11 @@ log() { echo "$@" } +fatal() { + echo FATAL: "$@" >&2 + exit 1 +} + # shellcheck disable=SC2317,SC2329 # when called with $1=calico_ready calico_ready() { log "Listing items matching /host/etc/cni/net.d/*calico*.conflist" @@ -110,21 +115,41 @@ else cni_spec=${cni_spec//@cniBandwidthPlugin/} fi -token=$(/testcase-watch-retry-curl-success + return 1 + fi + echo '{"object":{ + "metadata": { + "labels": { + }, + "creationTimestamp": "2024-01-03T11:54:01Z", + "name": "gke-my-cluster-default-pool-128bc25d-9c94", + "resourceVersion": "891003", + "uid": "f2353a2f-ca8c-4ca0-8dd3-ad1f964a54f0" + }, + "spec": { + "providerID": "gce://my-gke-project/us-central1-c/gke-my-cluster-default-pool-128bc25d-9c94" + } + }}' + echo '{"object":{ + "metadata": { + "labels": { + }, + "creationTimestamp": "2024-01-03T11:54:01Z", + "name": "gke-my-cluster-default-pool-128bc25d-9c94", + "resourceVersion": "891004", + "uid": "f2353a2f-ca8c-4ca0-8dd3-ad1f964a54f0" + }, + "spec": { + "podCIDR": "10.52.1.0/24", + "podCIDRs": [ + "10.52.1.0/24" + ], + "providerID": "gce://my-gke-project/us-central1-c/gke-my-cluster-default-pool-128bc25d-9c94" + } + }}' + echo '{"object":{ + "metadata": { + "labels": { + }, + "creationTimestamp": "2024-01-03T11:54:01Z", + "name": "gke-my-cluster-default-pool-128bc25d-9c94", + "resourceVersion": "891005", + "uid": "f2353a2f-ca8c-4ca0-8dd3-ad1f964a54f0" + }, + "spec": { + "podCIDR": "10.52.1.1/24", + "podCIDRs": [ + "10.52.1.1/24" + ], + "providerID": "gce://my-gke-project/us-central1-c/gke-my-cluster-default-pool-128bc25d-9c94" + } + }}' + ;; + *) + #unsupported + exit 1 + esac + } + export -f curl + +} + +function verify() { + local expected + local actual + + expected=$(jq -S . <"testdata/expected-basic.json") + actual=$(jq -S . <"/host/etc/cni/net.d/${CNI_SPEC_NAME}") + + if [ "$expected" != "$actual" ] ; then + echo "Expected cni_spec value:" + echo "$expected" + echo "but actual was" + echo "$actual" + return 1 + fi + +} diff --git a/scripts/testcase/testcase-watch.sh b/scripts/testcase/testcase-watch.sh new file mode 100644 index 00000000..9a637b22 --- /dev/null +++ b/scripts/testcase/testcase-watch.sh @@ -0,0 +1,95 @@ +export KUBERNETES_SERVICE_HOST=kubernetes.default.svc +export KUBERNETES_SERVICE_PORT=443 + +export ENABLE_CALICO_NETWORK_POLICY=false +export ENABLE_BANDWIDTH_PLUGIN=false +export ENABLE_CILIUM_PLUGIN=false +export ENABLE_MASQUERADE=false +export ENABLE_IPV6=false + +CNI_SPEC_TEMPLATE=$(cat testdata/spec-template.json) +export CNI_SPEC_TEMPLATE + +function before_test() { + + # shellcheck disable=SC2329 + function curl() { + # shellcheck disable=SC2317 + case "$*" in + *http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0*) + echo '{"ipv6s": ["2600:1900:4000:318:0:7:0:0"]}' + ;; + *https://kubernetes.default.svc:443/api/v1/nodes*) + echo '{"object":{ + "metadata": { + "labels": { + }, + "creationTimestamp": "2024-01-03T11:54:01Z", + "name": "gke-my-cluster-default-pool-128bc25d-9c94", + "resourceVersion": "891003", + "uid": "f2353a2f-ca8c-4ca0-8dd3-ad1f964a54f0" + }, + "spec": { + "providerID": "gce://my-gke-project/us-central1-c/gke-my-cluster-default-pool-128bc25d-9c94" + } + }}' + echo '{"object":{ + "metadata": { + "labels": { + }, + "creationTimestamp": "2024-01-03T11:54:01Z", + "name": "gke-my-cluster-default-pool-128bc25d-9c94", + "resourceVersion": "891004", + "uid": "f2353a2f-ca8c-4ca0-8dd3-ad1f964a54f0" + }, + "spec": { + "podCIDR": "10.52.1.0/24", + "podCIDRs": [ + "10.52.1.0/24" + ], + "providerID": "gce://my-gke-project/us-central1-c/gke-my-cluster-default-pool-128bc25d-9c94" + } + }}' + echo '{"object":{ + "metadata": { + "labels": { + }, + "creationTimestamp": "2024-01-03T11:54:01Z", + "name": "gke-my-cluster-default-pool-128bc25d-9c94", + "resourceVersion": "891005", + "uid": "f2353a2f-ca8c-4ca0-8dd3-ad1f964a54f0" + }, + "spec": { + "podCIDR": "10.52.1.1/24", + "podCIDRs": [ + "10.52.1.1/24" + ], + "providerID": "gce://my-gke-project/us-central1-c/gke-my-cluster-default-pool-128bc25d-9c94" + } + }}' + ;; + *) + #unsupported + exit 1 + esac + } + export -f curl + +} + +function verify() { + local expected + local actual + + expected=$(jq -S . <"testdata/expected-basic.json") + actual=$(jq -S . <"/host/etc/cni/net.d/${CNI_SPEC_NAME}") + + if [ "$expected" != "$actual" ] ; then + echo "Expected cni_spec value:" + echo "$expected" + echo "but actual was" + echo "$actual" + return 1 + fi + +} diff --git a/scripts/testcase/testcase-watchdog-cilium-faststart-unhealthy-v2.sh b/scripts/testcase/testcase-watchdog-cilium-faststart-unhealthy-v2.sh index 5f5b7150..0ef37045 100644 --- a/scripts/testcase/testcase-watchdog-cilium-faststart-unhealthy-v2.sh +++ b/scripts/testcase/testcase-watchdog-cilium-faststart-unhealthy-v2.sh @@ -26,8 +26,8 @@ function before_test() { *http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0*) echo '{"ipv6s": ["2600:1900:4000:318:0:7:0:0"]}' ;; - *https://kubernetes.default.svc:443/api/v1/nodes/*) - echo '{ + *https://kubernetes.default.svc:443/api/v1/nodes*) + echo '{"object":{ "metadata": { "labels": { }, @@ -43,7 +43,7 @@ function before_test() { ], "providerID": "gce://my-gke-project/us-central1-c/gke-my-cluster-default-pool-128bc25d-9c94" } - }' + }}' ;; *http://localhost:63197/*) # Return unhealthy on the first attempt, then exit on the following. diff --git a/scripts/testcase/testcase-watchdog-cilium-faststart-unhealthy.sh b/scripts/testcase/testcase-watchdog-cilium-faststart-unhealthy.sh index eb416d54..0ff46fa8 100644 --- a/scripts/testcase/testcase-watchdog-cilium-faststart-unhealthy.sh +++ b/scripts/testcase/testcase-watchdog-cilium-faststart-unhealthy.sh @@ -24,8 +24,8 @@ function before_test() { *http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0*) echo '{"ipv6s": ["2600:1900:4000:318:0:7:0:0"]}' ;; - *https://kubernetes.default.svc:443/api/v1/nodes/*) - echo '{ + *https://kubernetes.default.svc:443/api/v1/nodes*) + echo '{"object":{ "metadata": { "labels": { }, @@ -41,7 +41,7 @@ function before_test() { ], "providerID": "gce://my-gke-project/us-central1-c/gke-my-cluster-default-pool-128bc25d-9c94" } - }' + }}' ;; *http://localhost:63197/*) # Return unhealthy on the first attempt, then exit on the following. diff --git a/scripts/testcase/testcase-watchdog-cilium-faststart-v2.sh b/scripts/testcase/testcase-watchdog-cilium-faststart-v2.sh index c3aca573..d19a72e8 100644 --- a/scripts/testcase/testcase-watchdog-cilium-faststart-v2.sh +++ b/scripts/testcase/testcase-watchdog-cilium-faststart-v2.sh @@ -26,8 +26,8 @@ function before_test() { *http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0*) echo '{"ipv6s": ["2600:1900:4000:318:0:7:0:0"]}' ;; - *https://kubernetes.default.svc:443/api/v1/nodes/*) - echo '{ + *https://kubernetes.default.svc:443/api/v1/nodes*) + echo '{"object":{ "metadata": { "labels": { }, @@ -43,7 +43,7 @@ function before_test() { ], "providerID": "gce://my-gke-project/us-central1-c/gke-my-cluster-default-pool-128bc25d-9c94" } - }' + }}' ;; *http://localhost:63197/*) # With fast-start enabled, CNI config should have been written diff --git a/scripts/testcase/testcase-watchdog-cilium-faststart-wait.sh b/scripts/testcase/testcase-watchdog-cilium-faststart-wait.sh index aadc6d57..cf1d50d5 100644 --- a/scripts/testcase/testcase-watchdog-cilium-faststart-wait.sh +++ b/scripts/testcase/testcase-watchdog-cilium-faststart-wait.sh @@ -24,8 +24,8 @@ function before_test() { *http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0*) echo '{"ipv6s": ["2600:1900:4000:318:0:7:0:0"]}' ;; - *https://kubernetes.default.svc:443/api/v1/nodes/*) - echo '{ + *https://kubernetes.default.svc:443/api/v1/nodes*) + echo '{"object":{ "metadata": { "labels": { }, @@ -41,7 +41,7 @@ function before_test() { ], "providerID": "gce://my-gke-project/us-central1-c/gke-my-cluster-default-pool-128bc25d-9c94" } - }' + }}' ;; *http://localhost:63197/*) # This test shouldn't reach this. It should hit an exit-by-sleep diff --git a/scripts/testcase/testcase-watchdog-cilium-faststart.sh b/scripts/testcase/testcase-watchdog-cilium-faststart.sh index 4649cca1..e31049c7 100644 --- a/scripts/testcase/testcase-watchdog-cilium-faststart.sh +++ b/scripts/testcase/testcase-watchdog-cilium-faststart.sh @@ -24,8 +24,8 @@ function before_test() { *http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0*) echo '{"ipv6s": ["2600:1900:4000:318:0:7:0:0"]}' ;; - *https://kubernetes.default.svc:443/api/v1/nodes/*) - echo '{ + *https://kubernetes.default.svc:443/api/v1/nodes*) + echo '{"object":{ "metadata": { "labels": { }, @@ -41,7 +41,7 @@ function before_test() { ], "providerID": "gce://my-gke-project/us-central1-c/gke-my-cluster-default-pool-128bc25d-9c94" } - }' + }}' ;; *http://localhost:63197/*) # With fast-start enabled, CNI config should have been written diff --git a/scripts/testcase/testcase-watchdog-cilium-unhealthy-v2.sh b/scripts/testcase/testcase-watchdog-cilium-unhealthy-v2.sh index 5d9df7fe..c40623f9 100644 --- a/scripts/testcase/testcase-watchdog-cilium-unhealthy-v2.sh +++ b/scripts/testcase/testcase-watchdog-cilium-unhealthy-v2.sh @@ -26,8 +26,8 @@ function before_test() { *http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0*) echo '{"ipv6s": ["2600:1900:4000:318:0:7:0:0"]}' ;; - *https://kubernetes.default.svc:443/api/v1/nodes/*) - echo '{ + *https://kubernetes.default.svc:443/api/v1/nodes*) + echo '{"object":{ "metadata": { "labels": { }, @@ -43,7 +43,7 @@ function before_test() { ], "providerID": "gce://my-gke-project/us-central1-c/gke-my-cluster-default-pool-128bc25d-9c94" } - }' + }}' ;; *http://localhost:63197/*) # Return unhealthy on the first attempt, then exit on the following. diff --git a/scripts/testcase/testcase-watchdog-cilium-unhealthy.sh b/scripts/testcase/testcase-watchdog-cilium-unhealthy.sh index 4ceecdba..38eda430 100644 --- a/scripts/testcase/testcase-watchdog-cilium-unhealthy.sh +++ b/scripts/testcase/testcase-watchdog-cilium-unhealthy.sh @@ -24,8 +24,8 @@ function before_test() { *http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0*) echo '{"ipv6s": ["2600:1900:4000:318:0:7:0:0"]}' ;; - *https://kubernetes.default.svc:443/api/v1/nodes/*) - echo '{ + *https://kubernetes.default.svc:443/api/v1/nodes*) + echo '{"object":{ "metadata": { "labels": { }, @@ -41,7 +41,7 @@ function before_test() { ], "providerID": "gce://my-gke-project/us-central1-c/gke-my-cluster-default-pool-128bc25d-9c94" } - }' + }}' ;; *http://localhost:63197/*) # Return unhealthy on the first attempt, then exit on the following. diff --git a/scripts/testcase/testcase-watchdog-cilium-v2.sh b/scripts/testcase/testcase-watchdog-cilium-v2.sh index f965445b..f94c1afe 100644 --- a/scripts/testcase/testcase-watchdog-cilium-v2.sh +++ b/scripts/testcase/testcase-watchdog-cilium-v2.sh @@ -27,8 +27,8 @@ function before_test() { *http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0*) echo '{"ipv6s": ["2600:1900:4000:318:0:7:0:0"]}' ;; - *https://kubernetes.default.svc:443/api/v1/nodes/*) - echo '{ + *https://kubernetes.default.svc:443/api/v1/nodes*) + echo '{"object":{ "metadata": { "labels": { }, @@ -44,7 +44,7 @@ function before_test() { ], "providerID": "gce://my-gke-project/us-central1-c/gke-my-cluster-default-pool-128bc25d-9c94" } - }' + }}' ;; *http://localhost:63197/*) echo 'healthz' diff --git a/scripts/testcase/testcase-watchdog-cilium.sh b/scripts/testcase/testcase-watchdog-cilium.sh index 69d9807d..d5d20021 100644 --- a/scripts/testcase/testcase-watchdog-cilium.sh +++ b/scripts/testcase/testcase-watchdog-cilium.sh @@ -25,8 +25,8 @@ function before_test() { *http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0*) echo '{"ipv6s": ["2600:1900:4000:318:0:7:0:0"]}' ;; - *https://kubernetes.default.svc:443/api/v1/nodes/*) - echo '{ + *https://kubernetes.default.svc:443/api/v1/nodes*) + echo '{"object":{ "metadata": { "labels": { }, @@ -42,7 +42,7 @@ function before_test() { ], "providerID": "gce://my-gke-project/us-central1-c/gke-my-cluster-default-pool-128bc25d-9c94" } - }' + }}' ;; *http://localhost:63197/*) echo 'healthz' diff --git a/scripts/testcase/testcase-watchdog-v2.sh b/scripts/testcase/testcase-watchdog-v2.sh index 8cd459e5..b92e3c6c 100644 --- a/scripts/testcase/testcase-watchdog-v2.sh +++ b/scripts/testcase/testcase-watchdog-v2.sh @@ -25,8 +25,8 @@ function before_test() { *http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0*) echo '{"ipv6s": ["2600:1900:4000:318:0:7:0:0"]}' ;; - *https://kubernetes.default.svc:443/api/v1/nodes/*) - echo '{ + *https://kubernetes.default.svc:443/api/v1/nodes*) + echo '{"object":{ "metadata": { "labels": { }, @@ -42,7 +42,7 @@ function before_test() { ], "providerID": "gce://my-gke-project/us-central1-c/gke-my-cluster-default-pool-128bc25d-9c94" } - }' + }}' ;; *) #unsupported diff --git a/scripts/testcase/testcase-watchdog.sh b/scripts/testcase/testcase-watchdog.sh index 2ee4f152..095586c3 100644 --- a/scripts/testcase/testcase-watchdog.sh +++ b/scripts/testcase/testcase-watchdog.sh @@ -23,8 +23,8 @@ function before_test() { *http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0*) echo '{"ipv6s": ["2600:1900:4000:318:0:7:0:0"]}' ;; - *https://kubernetes.default.svc:443/api/v1/nodes/*) - echo '{ + *https://kubernetes.default.svc:443/api/v1/nodes*) + echo '{"object":{ "metadata": { "labels": { }, @@ -40,7 +40,7 @@ function before_test() { ], "providerID": "gce://my-gke-project/us-central1-c/gke-my-cluster-default-pool-128bc25d-9c94" } - }' + }}' ;; *) #unsupported diff --git a/scripts/testcase/tpl-testcase.sh b/scripts/testcase/tpl-testcase.sh index 464877c2..14c0bb03 100644 --- a/scripts/testcase/tpl-testcase.sh +++ b/scripts/testcase/tpl-testcase.sh @@ -24,7 +24,7 @@ function before_test() { # call to GCE metadata server echo '{}' ;; - *https://kubernetes.default.svc:443/api/v1/nodes/*) + *https://kubernetes.default.svc:443/api/v1/nodes*) # call to kube-apiserver echo '{}' ;;