Skip to content

Commit 852d223

Browse files
Fix node counting and add dense configuration test
1 parent 57db79c commit 852d223

File tree

3 files changed

+104
-9
lines changed

3 files changed

+104
-9
lines changed

tools/inform_dmc.sh

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@
33
# During testing, use the mock rladmin if MOCK_RLADMIN is set
44
rladmin() {
55
if [ ! -z "$MOCK_RLADMIN" ]; then
6-
"$(pwd)/tools/mock_rladmin" "$@"
6+
if [ ! -z "$MOCK_RLADMIN_FILE" ]; then
7+
"$(pwd)/tools/$MOCK_RLADMIN_FILE" "$@"
8+
else
9+
"$(pwd)/tools/mock_rladmin" "$@"
10+
fi
711
else
812
command rladmin "$@"
913
fi
@@ -33,11 +37,11 @@ get_all_node_ips() {
3337
local result
3438

3539
if [ "$ip_type" = "internal" ]; then
36-
# Get ADDRESS field (3rd column)
37-
result=$(rladmin status | grep "^node:" | tr -s ' ' | cut -d' ' -f3 | sort | uniq)
40+
# Get ADDRESS field (3rd column), including the master node (remove the * if present)
41+
result=$(rladmin status | grep "^*\?node:" | tr -s ' ' | sed 's/^\*//' | cut -d' ' -f3 | sort | uniq)
3842
else
39-
# Get EXTERNAL_ADDRESS field (4th column)
40-
result=$(rladmin status | grep "^node:" | tr -s ' ' | cut -d' ' -f4 | sort | uniq)
43+
# Get EXTERNAL_ADDRESS field (4th column), including the master node
44+
result=$(rladmin status | grep "^*\?node:" | tr -s ' ' | sed 's/^\*//' | cut -d' ' -f4 | sort | uniq)
4145
fi
4246

4347
log "Found $ip_type IPs"
@@ -70,18 +74,25 @@ wait_for_new_ips() {
7074
local attempt=0
7175
local initial_ips
7276
local current_ips
73-
local new_ips
77+
local initial_count
78+
local current_count
7479

7580
log "Starting to wait for new IPs to appear (IP type: $ip_type)"
7681
initial_ips=$(get_all_node_ips $ip_type)
82+
initial_count=$(echo "$initial_ips" | wc -l | tr -d ' ')
83+
log "Initial IPs ($initial_count):"
84+
echo "$initial_ips" >&2
7785

7886
while [ $attempt -lt $max_attempts ]; do
7987
current_ips=$(get_all_node_ips $ip_type)
80-
new_ips=$(comm -13 <(echo "$initial_ips" | sort) <(echo "$current_ips" | sort))
88+
current_count=$(echo "$current_ips" | wc -l | tr -d ' ')
89+
log "Current IPs ($current_count):"
90+
echo "$current_ips" >&2
8191

82-
if [ ! -z "$new_ips" ]; then
92+
if [ $current_count -gt $initial_count ]; then
8393
log "Found new IPs"
84-
echo "$new_ips"
94+
# Get the new IPs by filtering out the initial ones
95+
echo "$current_ips" | grep -vF "$initial_ips"
8596
return 0
8697
fi
8798

tools/mock_rladmin_dense.sh

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#!/bin/bash
2+
cat << 'EEOF'
3+
CLUSTER NODES:
4+
NODE:ID ROLE ADDRESS EXTERNAL_ADDRESS HOSTNAME SHARDS CORES FREE_RAM PROVISIONAL_RAM VERSION STATUS
5+
*node:1 master 192.168.1.168 18.235.1.168 node1 0/0 2 5.5GB/7.61GB 0KB/0KB 7.16.0-37 OK
6+
node:2 slave 192.168.1.171 3.239.122.115 node2 1/300 4 5.63GB/7.61GB 4.11GB/6.09GB 7.16.0-37 OK
7+
node:3 slave 192.168.1.152 44.199.228.116 node3 1/300 4 5.63GB/7.61GB 4.11GB/6.09GB 7.16.0-37 OK
8+
node:4 slave 192.168.1.93 3.236.194.66 node4 0/300 4 5.59GB/7.61GB 4.07GB/6.09GB 7.16.0-37 OK
9+
node:5 slave 192.168.1.94 3.236.194.67 node5 0/300 4 5.59GB/7.61GB 4.07GB/6.09GB 7.16.0-37 OK
10+
node:6 slave 192.168.1.95 3.236.194.68 node6 0/300 4 5.59GB/7.61GB 4.07GB/6.09GB 7.16.0-37 OK
11+
DATABASES:
12+
DB:ID NAME TYPE MODULE STATUS SHARDS PLACEMENT REPLICATION PERSISTENCE ENDPOINT CRDB
13+
db:51420864 db redis yes active 1 dense enabled disabled redis-13722.c103413.us-east-1-4.ec2.qa-cloud.rlrcp.com:13722/redis-13722.internal.c103413.us-east-1-4.ec2.qa-cloud.rlrcp.com:13722 no
14+
15+
ENDPOINTS:
16+
DB:ID NAME ID NODE ROLE SSL
17+
db:51420864 db endpoint:51420864:1 node:3 single No
18+
node:4 slave 192.168.1.93 3.236.194.66 node4 0/300 4 5.59GB/7.61GB 4.07GB/6.09GB 7.16.0-37 OK
19+
node:5 slave 192.168.1.94 3.236.194.67 node5 0/300 4 5.59GB/7.61GB 4.07GB/6.09GB 7.16.0-37 OK
20+
node:6 slave 192.168.1.95 3.236.194.68 node6 0/300 4 5.59GB/7.61GB 4.07GB/6.09GB 7.16.0-37 OK
21+
SHARDS:
22+
DB:ID NAME ID NODE ROLE SLOTS USED_MEMORY STATUS
23+
db:51420864 db redis:1 node:3 master 0-16383 2.51MB OK
24+
node:4 slave 192.168.1.93 3.236.194.66 node4 0/300 4 5.59GB/7.61GB 4.07GB/6.09GB 7.16.0-37 OK
25+
node:5 slave 192.168.1.94 3.236.194.67 node5 0/300 4 5.59GB/7.61GB 4.07GB/6.09GB 7.16.0-37 OK
26+
node:6 slave 192.168.1.95 3.236.194.68 node6 0/300 4 5.59GB/7.61GB 4.07GB/6.09GB 7.16.0-37 OKdb:51420864 db redis:2 node:2 slave 0-16383 2.03MB OK
27+
EEOF

tools/test_inform_dmc_dense.sh

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
#!/bin/bash
2+
3+
# Set up the test environment
4+
export PATH="$(pwd)/tools:$PATH"
5+
export MOCK_RLADMIN=1
6+
export MOCK_RLADMIN_FILE="mock_rladmin_dense.sh"
7+
8+
# Save the original mock_rladmin content
9+
cp tools/mock_rladmin_dense.sh tools/mock_rladmin_dense.sh.bak
10+
11+
# Create initial mock_rladmin with 3 nodes
12+
cat > tools/mock_rladmin_dense.sh << 'EOF'
13+
#!/bin/bash
14+
cat << 'EEOF'
15+
CLUSTER NODES:
16+
NODE:ID ROLE ADDRESS EXTERNAL_ADDRESS HOSTNAME SHARDS CORES FREE_RAM PROVISIONAL_RAM VERSION STATUS
17+
*node:1 master 192.168.1.168 18.235.1.168 node1 0/0 2 5.5GB/7.61GB 0KB/0KB 7.16.0-37 OK
18+
node:2 slave 192.168.1.171 3.239.122.115 node2 1/300 4 5.63GB/7.61GB 4.11GB/6.09GB 7.16.0-37 OK
19+
node:3 slave 192.168.1.152 44.199.228.116 node3 1/300 4 5.63GB/7.61GB 4.11GB/6.09GB 7.16.0-37 OK
20+
21+
DATABASES:
22+
DB:ID NAME TYPE MODULE STATUS SHARDS PLACEMENT REPLICATION PERSISTENCE ENDPOINT CRDB
23+
db:51420864 db redis yes active 1 dense enabled disabled redis-13722.c103413.us-east-1-4.ec2.qa-cloud.rlrcp.com:13722/redis-13722.internal.c103413.us-east-1-4.ec2.qa-cloud.rlrcp.com:13722 no
24+
25+
ENDPOINTS:
26+
DB:ID NAME ID NODE ROLE SSL
27+
db:51420864 db endpoint:51420864:1 node:3 single No
28+
29+
SHARDS:
30+
DB:ID NAME ID NODE ROLE SLOTS USED_MEMORY STATUS
31+
db:51420864 db redis:1 node:3 master 0-16383 2.51MB OK
32+
db:51420864 db redis:2 node:2 slave 0-16383 2.03MB OK
33+
EEOF
34+
EOF
35+
chmod +x tools/mock_rladmin_dense.sh
36+
37+
# Function to simulate new nodes appearing
38+
simulate_new_nodes() {
39+
# After 10 seconds, add new nodes
40+
sleep 10
41+
sed -i '' '/node:3/a\
42+
node:4 slave 192.168.1.93 3.236.194.66 node4 0/300 4 5.59GB/7.61GB 4.07GB/6.09GB 7.16.0-37 OK\
43+
node:5 slave 192.168.1.94 3.236.194.67 node5 0/300 4 5.59GB/7.61GB 4.07GB/6.09GB 7.16.0-37 OK\
44+
node:6 slave 192.168.1.95 3.236.194.68 node6 0/300 4 5.59GB/7.61GB 4.07GB/6.09GB 7.16.0-37 OK' tools/mock_rladmin_dense.sh
45+
}
46+
47+
# Run the simulation in background
48+
simulate_new_nodes &
49+
50+
# Run the actual script
51+
./tools/inform_dmc.sh
52+
53+
# Remove the added nodes
54+
sed -i '' '/node:[456]/d' tools/mock_rladmin_dense.sh
55+
56+
# Restore the original mock_rladmin file
57+
mv tools/mock_rladmin_dense.sh.bak tools/mock_rladmin_dense.sh

0 commit comments

Comments
 (0)