Skip to content

Commit f77fed3

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

File tree

4 files changed

+109
-2
lines changed

4 files changed

+109
-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: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
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+
echo " Writing checkpoint"
41+
master=$(get_master)
42+
$CDB2SQL_EXE ${CDB2_OPTIONS} $DBNAME --host $master "exec procedure sys.cmd.send('flush')"
43+
44+
sleep 5
45+
46+
# Stop entire cluster
47+
echo " Stopping entire cluster"
48+
stop_all_nodes
49+
50+
# Verify all nodes are down
51+
for node in $CLUSTER; do
52+
$CDB2SQL_EXE ${CDB2_OPTIONS} $db --host $node "select 1" >/dev/null 2>&1
53+
if [[ $? -eq 0 ]]; then
54+
failexit "Node $node is still up after stop"
55+
fi
56+
done
57+
58+
# Restart entire cluster
59+
echo " Restarting entire cluster"
60+
start_all_nodes
61+
sleep 5
62+
63+
# Wait for cluster coherency
64+
wait_for_cluster
65+
66+
# Get new master and generation after restart
67+
master=$(get_master)
68+
new_gen=$(get_node_gen $master)
69+
echo " After restart: gen=$new_gen, new_master=$master"
70+
71+
# Verify generation incremented
72+
if [[ $new_gen -le $prev_gen ]]; then
73+
stop_all_nodes
74+
failexit "Generation did not increment after restart (prev=$prev_gen, new=$new_gen)"
75+
else
76+
echo " SUCCESS: Generation incremented ($prev_gen -> $new_gen)"
77+
fi
78+
79+
prev_gen=$new_gen
80+
done
81+
82+
final_gen=$(get_node_gen $master)
83+
echo "=== Test completed successfully ==="
84+
echo "Summary:"
85+
echo " Initial generation: $initial_gen"
86+
echo " Final generation: $final_gen"
87+
echo " Total cluster restarts: 10"
88+
echo " Generation preserved and incremented correctly: YES"
89+
}
90+
91+
run_test
92+
stop_all_nodes
93+
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)