Skip to content

Commit adbe9b0

Browse files
committed
wip: mvp integration test with kind
1 parent 5a42ef2 commit adbe9b0

File tree

3 files changed

+84
-1
lines changed

3 files changed

+84
-1
lines changed

Makefile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,12 @@ build: test
2121

2222
.PHONY: test
2323
test:
24-
go test ./...
24+
ginkgo -r -skipPackage integration
2525

2626
.PHONY: fmt
2727
fmt:
2828
go fmt ./...
29+
30+
.PHONY: integration-test
31+
integration-test: build
32+
integration/test.sh

integration/kind.yaml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,23 @@ apiVersion: kind.x-k8s.io/v1alpha4
33
nodes:
44
- role: control-plane
55
- role: worker
6+
kubeadmConfigPatches:
7+
- |
8+
kind: JoinConfiguration
9+
nodeRegistration:
10+
kubeletExtraArgs:
11+
provider-id: "file://node1"
612
- role: worker
13+
kubeadmConfigPatches:
14+
- |
15+
kind: JoinConfiguration
16+
nodeRegistration:
17+
kubeletExtraArgs:
18+
provider-id: "file://node2"
719
- role: worker
20+
kubeadmConfigPatches:
21+
- |
22+
kind: JoinConfiguration
23+
nodeRegistration:
24+
kubeletExtraArgs:
25+
provider-id: "file://node3"

integration/test.sh

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#!/usr/bin/env bash
2+
3+
set -o errexit -o nounset -o pipefail
4+
5+
tmpd="$(mktemp -d -p /tmp skuttle.XXXXX)"
6+
echo "config dir: $tmpd"
7+
8+
export KUBECONFIG="$tmpd/config"
9+
export NODE_LIST="$tmpd/nodes"
10+
11+
# set up provider nodes
12+
cat <<EOF >"$NODE_LIST"
13+
node1
14+
node3
15+
EOF
16+
17+
# create kind cluster
18+
kind delete cluster --name skuttle
19+
kind create cluster \
20+
--config integration/kind.yaml \
21+
--name skuttle \
22+
--wait 2m
23+
24+
# start skuttle
25+
./skuttle \
26+
--log-level debug \
27+
--node-selector "!node-role.kubernetes.io/control-plane" \
28+
--not-ready-duration 20s \
29+
--providers file \
30+
>"$tmpd/log" 2>&1 &
31+
32+
skuttle_pid="$!"
33+
34+
# follow logs
35+
tail -f "$tmpd/log" &
36+
37+
# make a worker not ready
38+
docker exec skuttle-worker2 systemctl stop kubelet
39+
40+
# wait for worker to be removed by skuttle
41+
exitcode=0
42+
waits=0
43+
while kubectl get node skuttle-worker2 >/dev/null 2>/dev/null; do
44+
sleep 1
45+
waits="$(( waits+1 ))"
46+
47+
if test "$waits" -eq 30; then
48+
echo "FAIL: timed out waiting for node deletion"
49+
exitcode=1
50+
fi
51+
done
52+
53+
echo "PASS: node deleted by skuttle"
54+
55+
# cleanup
56+
kill "$skuttle_pid"
57+
kind delete cluster --name skuttle
58+
rm -r "$tmpd"
59+
60+
# exit
61+
exit $exitcode

0 commit comments

Comments
 (0)