-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtest.sh
More file actions
executable file
·136 lines (119 loc) · 4.84 KB
/
test.sh
File metadata and controls
executable file
·136 lines (119 loc) · 4.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#!/usr/bin/env bash
VERSION="$1"
CONTAINER_NETWORK="valkey"
CONTAINER_MASTER_NAME="valkey-benchmark-master"
CONTAINER_SLAVE1_NAME="valkey-benchmark-slave1"
CONTAINER_SLAVE2_NAME="valkey-benchmark-slave2"
DRYCC_VALKEY_SENTINEL=$CONTAINER_MASTER_NAME
DRYCC_VALKEY_PASSWORD=123456
function clean_before_exit {
# delay before exiting, so stdout/stderr flushes through the logging system
clean-valkey
}
trap clean_before_exit EXIT
start-valkey-master() {
podman run -d \
--rm \
--network "$CONTAINER_NETWORK" \
--ip 192.168.253.10 \
--add-host="$CONTAINER_MASTER_NAME:192.168.253.10" \
--add-host="$CONTAINER_SLAVE1_NAME:192.168.253.11" \
--add-host="$CONTAINER_SLAVE2_NAME:192.168.253.12" \
--env "REDISCLI_AUTH=$DRYCC_VALKEY_PASSWORD" \
--env "DRYCC_VALKEY_SENTINEL=$DRYCC_VALKEY_SENTINEL" \
--env "DRYCC_VALKEY_PASSWORD=$DRYCC_VALKEY_PASSWORD" \
--name "$CONTAINER_MASTER_NAME" \
"registry.drycc.cc/drycc/valkey:$VERSION" \
valkey-start server $CONTAINER_MASTER_NAME
podman exec "$CONTAINER_MASTER_NAME" init-stack valkey-start sentinel $CONTAINER_MASTER_NAME &
}
start-valkey-slave1() {
podman run -d \
--rm \
--network "$CONTAINER_NETWORK" \
--ip 192.168.253.11 \
--add-host="$CONTAINER_MASTER_NAME:192.168.253.10" \
--add-host="$CONTAINER_SLAVE1_NAME:192.168.253.11" \
--add-host="$CONTAINER_SLAVE2_NAME:192.168.253.12" \
--env "REDISCLI_AUTH=$DRYCC_VALKEY_PASSWORD" \
--env "DRYCC_VALKEY_SENTINEL=$DRYCC_VALKEY_SENTINEL" \
--env "DRYCC_VALKEY_PASSWORD=$DRYCC_VALKEY_PASSWORD" \
--name "$CONTAINER_SLAVE1_NAME" \
"registry.drycc.cc/drycc/valkey:$VERSION" \
valkey-start server $CONTAINER_SLAVE1_NAME
podman exec "$CONTAINER_SLAVE1_NAME" init-stack valkey-start sentinel $CONTAINER_SLAVE1_NAME &
}
start-valkey-slave2() {
podman run -d \
--rm \
--network "$CONTAINER_NETWORK" \
--ip 192.168.253.12 \
--add-host="$CONTAINER_MASTER_NAME:192.168.253.10" \
--add-host="$CONTAINER_SLAVE1_NAME:192.168.253.11" \
--add-host="$CONTAINER_SLAVE2_NAME:192.168.253.12" \
--env "REDISCLI_AUTH=$DRYCC_VALKEY_PASSWORD" \
--env "DRYCC_VALKEY_SENTINEL=$DRYCC_VALKEY_SENTINEL" \
--env "DRYCC_VALKEY_PASSWORD=$DRYCC_VALKEY_PASSWORD" \
--name "$CONTAINER_SLAVE2_NAME" \
"registry.drycc.cc/drycc/valkey:$VERSION" \
valkey-start server $CONTAINER_SLAVE2_NAME
podman exec "$CONTAINER_SLAVE2_NAME" init-stack valkey-start sentinel $CONTAINER_SLAVE2_NAME &
}
clean-valkey() {
{
podman stop -i "$CONTAINER_SLAVE1_NAME"
podman stop -i "$CONTAINER_SLAVE2_NAME"
podman stop -i "$CONTAINER_MASTER_NAME"
podman network rm -f "$CONTAINER_NETWORK"
} 2>>/dev/null
}
clean-valkey
podman network create --subnet=192.168.253.0/24 "$CONTAINER_NETWORK"
start-valkey-master
start-valkey-slave1
start-valkey-slave2
echo "run valkey benchmark..."
podman exec "$CONTAINER_MASTER_NAME" init-stack valkey-benchmark -a $DRYCC_VALKEY_PASSWORD
echo "check slave all keys..."
KEYS=$(podman exec "$CONTAINER_MASTER_NAME" bash -c 'init-stack valkey-cli KEYS "*"')
if [[ "${KEYS}" == "" ]]; then
echo "error: there is no data from the database"
exit 1
fi
echo "check sentinel $CONTAINER_MASTER_NAME get master..."
MASTER=$(podman exec "$CONTAINER_MASTER_NAME" init-stack valkey-cli -p 26379 sentinel get-master-addr-by-name drycc)
if [[ "${MASTER}" == "" ]]; then
echo "error: unable to obtain master information"
exit 1
fi
echo "check sentinel $CONTAINER_SLAVE1_NAME get master..."
MASTER=$(podman exec "$CONTAINER_SLAVE1_NAME" init-stack valkey-cli -p 26379 sentinel get-master-addr-by-name drycc)
if [[ "${MASTER}" == "" ]]; then
echo "error: unable to obtain master information"
exit 1
fi
echo "check sentinel $CONTAINER_SLAVE2_NAME get master..."
MASTER=$(podman exec "$CONTAINER_SLAVE2_NAME" init-stack valkey-cli -p 26379 sentinel get-master-addr-by-name drycc)
if [[ "${MASTER}" == "" ]]; then
echo "error: unable to obtain master information"
exit 1
fi
echo "check sentinel $CONTAINER_MASTER_NAME get slaves..."
SLAVES=$(podman exec "$CONTAINER_MASTER_NAME" init-stack valkey-cli -p 26379 sentinel replicas drycc)
if [[ "${SLAVES}" == "" ]]; then
echo "error: unable to obtain slaves information"
exit 1
fi
echo "check sentinel $CONTAINER_SLAVE1_NAME get slaves..."
SLAVES=$(podman exec "$CONTAINER_SLAVE1_NAME" init-stack valkey-cli -p 26379 sentinel replicas drycc)
if [[ "${SLAVES}" == "" ]]; then
echo "error: unable to obtain slaves information"
exit 1
fi
echo "check sentinel $CONTAINER_SLAVE2_NAME get slaves..."
SLAVES=$(podman exec "$CONTAINER_SLAVE2_NAME" init-stack valkey-cli -p 26379 sentinel replicas drycc)
if [[ "${SLAVES}" == "" ]]; then
echo "error: unable to obtain slaves information"
exit 1
fi
echo "all test ok..."