Skip to content

Commit ae2d5ef

Browse files
committed
Noresetgen verifies gen is preserved across bounce
Signed-off-by: mhannum <mhannum@bloomberg.net>
1 parent 70ec008 commit ae2d5ef

File tree

4 files changed

+103
-2
lines changed

4 files changed

+103
-2
lines changed

tests/noresetgen.test/Makefile

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
ifeq ($(TESTSROOTDIR),)
2+
include ../testcase.mk
3+
else
4+
include $(TESTSROOTDIR)/testcase.mk
5+
endif
6+
export CHECK_DB_AT_FINISH=0
7+
ifeq ($(TEST_TIMEOUT),)
8+
export TEST_TIMEOUT=10m
9+
endif
10+

tests/noresetgen.test/lrl.options

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Use default options - features that preserve generation are enabled by default
2+
# This test verifies that generation number is preserved and increments across cluster restarts
3+
4+
logmsg level debug

tests/noresetgen.test/runit

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
#!/usr/bin/env bash
2+
3+
bash -n "$0" | exit 1
4+
5+
. ${TESTSROOTDIR}/tools/runit_common.sh
6+
7+
. ${TESTSROOTDIR}/tools/cluster_utils.sh
8+
9+
export debug=1
10+
[[ "$debug" == "1" ]] && set -x
11+
12+
db=$1
13+
cnt=$(echo $CLUSTER | wc -w)
14+
15+
if [[ -z "$CLUSTER" || $cnt -lt 3 ]]; then
16+
echo "This test requires a clustered installation of at least 3 nodes"
17+
exit 0
18+
fi
19+
20+
21+
function run_test {
22+
echo "=== Starting generation preservation test (default options) ==="
23+
24+
# Get initial master and generation
25+
master=$(get_master)
26+
initial_gen=$(get_node_gen $master)
27+
echo "Initial master: $master"
28+
echo "Initial generation: $initial_gen"
29+
30+
# Test: Stop and restart cluster 10 times, verify generation increments each time
31+
echo "=== Testing generation preservation through cluster restarts ==="
32+
33+
prev_gen=$initial_gen
34+
for i in {1..10}; do
35+
# Get current master and generation before restart
36+
master=$(get_master)
37+
current_gen=$(get_node_gen $master)
38+
echo " Iteration $i: gen=$current_gen, master=$master"
39+
40+
# Stop entire cluster
41+
echo " Stopping entire cluster"
42+
stop_all_nodes
43+
44+
# Verify all nodes are down
45+
for node in $CLUSTER; do
46+
$CDB2SQL_EXE ${CDB2_OPTIONS} $db --host $node "select 1" >/dev/null 2>&1
47+
if [[ $? -eq 0 ]]; then
48+
failexit "Node $node is still up after stop"
49+
fi
50+
done
51+
52+
# Restart entire cluster
53+
echo " Restarting entire cluster"
54+
start_all_nodes
55+
sleep 5
56+
57+
# Wait for cluster coherency
58+
wait_for_cluster
59+
60+
# Get new master and generation after restart
61+
master=$(get_master)
62+
new_gen=$(get_node_gen $master)
63+
echo " After restart: gen=$new_gen, new_master=$master"
64+
65+
# Verify generation incremented
66+
if [[ $new_gen -le $prev_gen ]]; then
67+
stop_all_nodes
68+
failexit "Generation did not increment after restart (prev=$prev_gen, new=$new_gen)"
69+
else
70+
echo " SUCCESS: Generation incremented ($prev_gen -> $new_gen)"
71+
fi
72+
73+
prev_gen=$new_gen
74+
done
75+
76+
final_gen=$(get_node_gen $master)
77+
echo "=== Test completed successfully ==="
78+
echo "Summary:"
79+
echo " Initial generation: $initial_gen"
80+
echo " Final generation: $final_gen"
81+
echo " Total cluster restarts: 10"
82+
echo " Generation preserved and incremented correctly: YES"
83+
}
84+
85+
run_test
86+
stop_all_nodes
87+
echo "Success"

tests/sqllogfill_reset_gen.test/runit

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ function check_ignore_message {
7272
fi
7373
}
7474

75-
function runit {
75+
function run_test {
7676
echo "=== Starting SQL logfill generation wraparound test ==="
7777

7878
# Get initial master
@@ -228,6 +228,6 @@ function runit {
228228
echo " Records verified: $count_after"
229229
}
230230

231-
runit
231+
run_test
232232
stop_all_nodes
233233
echo "Success"

0 commit comments

Comments
 (0)