Skip to content

Commit 095a328

Browse files
committed
Fix Jepsen CI: add missing provision script and improve wait logic
1 parent d160d99 commit 095a328

File tree

3 files changed

+106
-2
lines changed

3 files changed

+106
-2
lines changed

jepsen/.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
/target
2+
/tmp-home
3+
/.lein
4+
/.vagrant
5+
/.vagrant.d
6+
/store
7+
/results.tgz

jepsen/provision/base.sh

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
ROLE="${1:-db}"
5+
6+
echo "[jepsen] provisioning role=${ROLE}"
7+
sudo apt-get update -y
8+
sudo apt-get install -y --no-install-recommends \
9+
curl netcat-openbsd rsync iptables chrony libfaketime \
10+
openjdk-17-jre-headless leiningen git build-essential jq
11+
12+
sudo systemctl enable --now chrony
13+
14+
# Append Jepsen nodes to /etc/hosts if not already present
15+
if ! grep -q "192.168.56.10 ctrl" /etc/hosts; then
16+
cat <<'EOF' | sudo tee -a /etc/hosts >/dev/null
17+
18+
# Jepsen Cluster
19+
192.168.56.10 ctrl
20+
192.168.56.11 n1
21+
192.168.56.12 n2
22+
192.168.56.13 n3
23+
192.168.56.14 n4
24+
192.168.56.15 n5
25+
EOF
26+
fi
27+
28+
install -d -m700 /home/vagrant/.ssh
29+
if [ "$ROLE" = "ctrl" ]; then
30+
GO_VERSION=1.25.5
31+
ARCH=$(dpkg --print-architecture)
32+
if [ "$ARCH" = "arm64" ]; then
33+
GO_ARCH="arm64"
34+
else
35+
GO_ARCH="amd64"
36+
fi
37+
38+
if ! command -v go >/dev/null 2>&1 || [[ "$(go version | awk '{print $3}')" != "go${GO_VERSION}" ]]; then
39+
echo "[jepsen] installing go ${GO_VERSION} for ${GO_ARCH}"
40+
curl -fsSL "https://go.dev/dl/go${GO_VERSION}.linux-${GO_ARCH}.tar.gz" -o /tmp/go.tar.gz
41+
sudo rm -rf /usr/local/go
42+
sudo tar -C /usr/local -xzf /tmp/go.tar.gz
43+
fi
44+
echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' | sudo tee /etc/profile.d/go.sh >/dev/null
45+
46+
if [ ! -f /home/vagrant/.ssh/id_rsa ]; then
47+
cat <<'KEY' > /home/vagrant/.ssh/id_rsa
48+
-----BEGIN RSA PRIVATE KEY-----
49+
MIIEogIBAAKCAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzI
50+
w+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoP
51+
kcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2
52+
hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NO
53+
Td0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcW
54+
yLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQIBIwKCAQEA4iqWPJXtzZA68mKd
55+
ELs4jJsdyky+ewdZeNds5tjcnHU5zUYE25K+ffJED9qUWICcLZDc81TGWjHyAqD1
56+
Bw7XpgUwFgeUJwUlzQurAv+/ySnxiwuaGJfhFM1CaQHzfXphgVml+fZUvnJUTvzf
57+
TK2Lg6EdbUE9TarUlBf/xPfuEhMSlIE5keb/Zz3/LUlRg8yDqz5w+QWVJ4utnKnK
58+
iqwZN0mwpwU7YSyJhlT4YV1F3n4YjLswM5wJs2oqm0jssQu/BT0tyEXNDYBLEF4A
59+
sClaWuSJ2kjq7KhrrYXzagqhnSei9ODYFShJu8UWVec3Ihb5ZXlzO6vdNQ1J9Xsf
60+
4m+2ywKBgQD6qFxx/Rv9CNN96l/4rb14HKirC2o/orApiHmHDsURs5rUKDx0f9iP
61+
cXN7S1uePXuJRK/5hsubaOCx3Owd2u9gD6Oq0CsMkE4CUSiJcYrMANtx54cGH7Rk
62+
EjFZxK8xAv1ldELEyxrFqkbE4BKd8QOt414qjvTGyAK+OLD3M2QdCQKBgQDtx8pN
63+
CAxR7yhHbIWT1AH66+XWN8bXq7l3RO/ukeaci98JfkbkxURZhtxV/HHuvUhnPLdX
64+
3TwygPBYZFNo4pzVEhzWoTtnEtrFueKxyc3+LjZpuo+mBlQ6ORtfgkr9gBVphXZG
65+
YEzkCD3lVdl8L4cw9BVpKrJCs1c5taGjDgdInQKBgHm/fVvv96bJxc9x1tffXAcj
66+
3OVdUN0UgXNCSaf/3A/phbeBQe9xS+3mpc4r6qvx+iy69mNBeNZ0xOitIjpjBo2+
67+
dBEjSBwLk5q5tJqHmy/jKMJL4n9ROlx93XS+njxgibTvU6Fp9w+NOFD/HvxB3Tcz
68+
6+jJF85D5BNAG3DBMKBjAoGBAOAxZvgsKN+JuENXsST7F89Tck2iTcQIT8g5rwWC
69+
P9Vt74yboe2kDT531w8+egz7nAmRBKNM751U/95P9t88EDacDI/Z2OwnuFQHCPDF
70+
llYOUI+SpLJ6/vURRbHSnnn8a/XG+nzedGH5JGqEJNQsz+xT2axM0/W/CRknmGaJ
71+
kda/AoGANWrLCz708y7VYgAtW2Uf1DPOIYMdvo6fxIB5i9ZfISgcJ/bbCUkFrhoH
72+
+vq/5CIWxCPp0f85R4qxxQ5ihxJ0YDQT9Jpx4TMss4PSavPaBH3RXow5Ohe+bYoQ
73+
NE5OgEXk2wVfZczCZpigBKbKZHNYcelXtTt/nP3rsCuGcM4h53s=
74+
-----END RSA PRIVATE KEY-----
75+
KEY
76+
chmod 600 /home/vagrant/.ssh/id_rsa
77+
chown vagrant:vagrant /home/vagrant/.ssh/id_rsa
78+
fi
79+
cat <<'EOF' > /home/vagrant/.ssh/config
80+
Host n1 n2 n3 n4 n5
81+
User vagrant
82+
IdentityFile /home/vagrant/.ssh/id_rsa
83+
StrictHostKeyChecking no
84+
UserKnownHostsFile /dev/null
85+
LogLevel QUIET
86+
EOF
87+
chown vagrant:vagrant /home/vagrant/.ssh/config
88+
fi
89+
90+
# authorize the same key on all nodes
91+
cat <<'PUB' >> /home/vagrant/.ssh/authorized_keys
92+
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDo0XyJqWW9BWnbZYOROSyu2+n15ZbrgPGFa/pM+E4xmHu4B8yMPp4jbWRhR8w/Pr9SNmCeqF3r3LdWHktKPR2cjduPaoAoM1BbXTii7+iHnaZaqD5HJhXQhr3Y+QQOjcYVMFyQU8hMAzMF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key
93+
PUB
94+
chown vagrant:vagrant /home/vagrant/.ssh/authorized_keys
95+
chmod 600 /home/vagrant/.ssh/authorized_keys
96+
97+
sudo mkdir -p /opt/elastickv/bin /var/lib/elastickv

jepsen/src/elastickv/db.clj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,8 @@
113113
[node grpc-port]
114114
(c/on node
115115
(c/exec :bash "-c"
116-
(format "for i in $(seq 1 60); do nc -z %s %s && exit 0; sleep 1; done; exit 1"
117-
(name node) grpc-port))))
116+
(format "for i in $(seq 1 60); do if nc -z -w 1 %s %s; then exit 0; fi; sleep 1; done; echo 'Timed out waiting for %s:%s'; exit 1"
117+
(name node) grpc-port (name node) grpc-port))))
118118

119119
(defn- join-node!
120120
"Join peer into cluster via raftadmin, executed on bootstrap node."

0 commit comments

Comments
 (0)