-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtest.sh
More file actions
executable file
·140 lines (118 loc) · 5.02 KB
/
test.sh
File metadata and controls
executable file
·140 lines (118 loc) · 5.02 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
137
138
139
140
#!/usr/bin/env bash
VERSION="$1"
CONTAINER_PROXY_NAME="valkey-benchmark-proxy"
CONTAINER_MASTER_NAME="valkey-benchmark-master"
CONTAINER_SLAVE1_NAME="valkey-benchmark-slave1"
CONTAINER_SLAVE2_NAME="valkey-benchmark-slave2"
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 \
--env "REDISCLI_AUTH=$DRYCC_VALKEY_PASSWORD" \
--env "DRYCC_VALKEY_PASSWORD=$DRYCC_VALKEY_PASSWORD" \
--name "$CONTAINER_MASTER_NAME" \
"registry.drycc.cc/drycc/valkey:$VERSION" \
sleep infinity
master_ip=$(podman exec "$CONTAINER_MASTER_NAME" hostname -i | tr -d '\r\n')
podman exec --env "DRYCC_VALKEY_SENTINEL=$master_ip" "$CONTAINER_MASTER_NAME" init-stack valkey-start server "$master_ip" &
podman exec --env "DRYCC_VALKEY_SENTINEL=$master_ip" "$CONTAINER_MASTER_NAME" init-stack valkey-start sentinel "$master_ip" &
}
start-valkey-slave1() {
podman run -d \
--rm \
--env "REDISCLI_AUTH=$DRYCC_VALKEY_PASSWORD" \
--env "DRYCC_VALKEY_PASSWORD=$DRYCC_VALKEY_PASSWORD" \
--name "$CONTAINER_SLAVE1_NAME" \
"registry.drycc.cc/drycc/valkey:$VERSION" \
sleep infinity
slave1_ip=$(podman exec -it "$CONTAINER_SLAVE1_NAME" hostname -i | tr -d '\r\n')
podman exec --env "DRYCC_VALKEY_SENTINEL=$master_ip" "$CONTAINER_SLAVE1_NAME" init-stack valkey-start server "$slave1_ip" &
podman exec --env "DRYCC_VALKEY_SENTINEL=$master_ip" "$CONTAINER_SLAVE1_NAME" init-stack valkey-start sentinel "$slave1_ip" &
}
start-valkey-slave2() {
podman run -d \
--rm \
--env "REDISCLI_AUTH=$DRYCC_VALKEY_PASSWORD" \
--env "DRYCC_VALKEY_PASSWORD=$DRYCC_VALKEY_PASSWORD" \
--name "$CONTAINER_SLAVE2_NAME" \
"registry.drycc.cc/drycc/valkey:$VERSION" \
sleep infinity
slave2_ip=$(podman exec -it "$CONTAINER_SLAVE2_NAME" hostname -i | tr -d '\r\n')
podman exec --env "DRYCC_VALKEY_SENTINEL=$master_ip" "$CONTAINER_SLAVE2_NAME" init-stack valkey-start server "$slave2_ip" &
podman exec --env "DRYCC_VALKEY_SENTINEL=$master_ip" "$CONTAINER_SLAVE2_NAME" init-stack valkey-start sentinel "$slave2_ip" &
}
start-valkey-proxy() {
podman run -d \
--rm \
--env "REDISCLI_AUTH=$DRYCC_VALKEY_PASSWORD" \
--env "DRYCC_VALKEY_PASSWORD=$DRYCC_VALKEY_PASSWORD" \
--name "$CONTAINER_PROXY_NAME" \
"registry.drycc.cc/drycc/valkey:$VERSION" \
sleep infinity
podman exec --env "DRYCC_VALKEY_SENTINEL=$master_ip" "$CONTAINER_PROXY_NAME" init-stack valkey-start proxy &
}
clean-valkey() {
{
podman kill "$CONTAINER_PROXY_NAME"
podman kill "$CONTAINER_SLAVE1_NAME"
podman kill "$CONTAINER_SLAVE2_NAME"
podman kill "$CONTAINER_MASTER_NAME"
} >>/dev/null 2>&1
}
clean-valkey
start-valkey-master
start-valkey-slave1
start-valkey-slave2
start-valkey-proxy
echo "run valkey proxy benchmark..."
podman exec "$CONTAINER_PROXY_NAME" init-stack valkey-benchmark -p 16379 -a $DRYCC_VALKEY_PASSWORD
echo "run valkey master 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..."