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