Skip to content

Commit de2100f

Browse files
committed
add tests
Signed-off-by: Wenqi Mou <[email protected]>
1 parent 6180fb7 commit de2100f

File tree

4 files changed

+150
-2
lines changed

4 files changed

+150
-2
lines changed
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
#!/bin/sh
2+
3+
echo "=== Verifying Data Integrity ==="
4+
5+
# Verify original table key data is intact
6+
run_sql "SELECT COUNT(*) as cnt FROM key_types_test.table_key_test;"
7+
check_contains "cnt: 4"
8+
run_sql "SELECT id, name, value FROM key_types_test.table_key_test ORDER BY id;"
9+
check_contains "id: 1"
10+
check_contains "name: test1"
11+
check_contains "value: 100"
12+
check_contains "id: 2"
13+
check_contains "name: test2"
14+
check_contains "value: 200"
15+
check_contains "id: 3"
16+
check_contains "name: test3"
17+
check_contains "value: 300"
18+
19+
# Verify new table key data
20+
run_sql "SELECT COUNT(*) as cnt FROM key_types_test.table_key_test2;"
21+
check_contains "cnt: 1"
22+
run_sql "SELECT id, name, value FROM key_types_test.table_key_test2 ORDER BY id;"
23+
check_contains "id: 1"
24+
check_contains "name: test1"
25+
check_contains "value: 100"
26+
27+
# Verify original auto increment data
28+
run_sql "SELECT COUNT(*) as cnt FROM key_types_test.auto_inc_test;"
29+
check_contains "cnt: 4"
30+
run_sql "SELECT id FROM key_types_test.auto_inc_test ORDER BY id;"
31+
check_contains "id: 1"
32+
check_contains "id: 2"
33+
check_contains "id: 3"
34+
check_contains "id: 4"
35+
36+
# Verify new auto increment data
37+
run_sql "SELECT COUNT(*) as cnt FROM key_types_test.auto_inc_test2;"
38+
check_contains "cnt: 2"
39+
run_sql "SELECT id FROM key_types_test.auto_inc_test2 ORDER BY id;"
40+
check_contains "id: 1"
41+
check_contains "id: 2"
42+
43+
# Verify original sequence data
44+
run_sql "SELECT COUNT(*) as cnt FROM key_types_test.sequence_test;"
45+
check_contains "cnt: 4"
46+
run_sql "SELECT id FROM key_types_test.sequence_test ORDER BY id;"
47+
check_contains "id: 1"
48+
check_contains "id: 3"
49+
check_contains "id: 5"
50+
check_contains "id: 7"
51+
52+
# Verify new sequence data
53+
run_sql "SELECT COUNT(*) as cnt FROM key_types_test.sequence_test2;"
54+
check_contains "cnt: 2"
55+
run_sql "SELECT id FROM key_types_test.sequence_test2 ORDER BY id;"
56+
check_contains "id: 1"
57+
check_contains "id: 3"
58+
59+
# Verify original auto random data
60+
run_sql "SELECT COUNT(*) as cnt FROM key_types_test.auto_random_test;"
61+
check_contains "cnt: 4"
62+
run_sql "SELECT name FROM key_types_test.auto_random_test ORDER BY id;"
63+
check_contains "name: rand1"
64+
check_contains "name: rand2"
65+
check_contains "name: rand3"
66+
check_contains "name: random4"
67+
68+
# Verify new auto random data
69+
run_sql "SELECT COUNT(*) as cnt FROM key_types_test.auto_random_test2;"
70+
check_contains "cnt: 2"
71+
run_sql "SELECT name FROM key_types_test.auto_random_test2 ORDER BY id;"
72+
check_contains "name: rand1"
73+
check_contains "name: rand2"
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
-- incremental changes to test during log backup
2+
3+
-- test existing tables
4+
INSERT INTO key_types_test.table_key_test VALUES (3, 'test3', 300);
5+
INSERT INTO key_types_test.auto_inc_test (name) VALUES ('auto4');
6+
INSERT INTO key_types_test.sequence_test (name) VALUES ('seq4');
7+
INSERT INTO key_types_test.auto_random_test (name) VALUES ('random4');
8+
9+
-- Create new tables during log backup to test table creation with special keys
10+
-- 1. New table with regular key
11+
CREATE TABLE key_types_test.table_key_test2 (
12+
id INT PRIMARY KEY NONCLUSTERED,
13+
name VARCHAR(255),
14+
value INT
15+
);
16+
INSERT INTO key_types_test.table_key_test2 VALUES (1, 'test1', 100);
17+
18+
-- 2. New table with auto increment
19+
CREATE TABLE key_types_test.auto_inc_test2 (
20+
id INT PRIMARY KEY AUTO_INCREMENT,
21+
name VARCHAR(255)
22+
);
23+
INSERT INTO key_types_test.auto_inc_test2 (name) VALUES ('auto1'), ('auto2');
24+
25+
-- 3. New sequence and table using it
26+
CREATE SEQUENCE key_types_test.seq2 START WITH 1 INCREMENT BY 2 NOCACHE;
27+
CREATE TABLE key_types_test.sequence_test2 (
28+
id INT PRIMARY KEY DEFAULT NEXT VALUE FOR key_types_test.seq2,
29+
name VARCHAR(255)
30+
);
31+
INSERT INTO key_types_test.sequence_test2 (name) VALUES ('seq1'), ('seq2');
32+
33+
-- 4. New table with auto random
34+
CREATE TABLE key_types_test.auto_random_test2 (
35+
id BIGINT PRIMARY KEY AUTO_RANDOM(5),
36+
name VARCHAR(255)
37+
);
38+
INSERT INTO key_types_test.auto_random_test2 (name) VALUES ('rand1'), ('rand2');
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
-- Test cases for different key types during PITR restore
2+
3+
-- 1. regular table key
4+
CREATE DATABASE IF NOT EXISTS key_types_test;
5+
CREATE TABLE key_types_test.table_key_test (
6+
id INT PRIMARY KEY NONCLUSTERED,
7+
name VARCHAR(255),
8+
value INT
9+
);
10+
INSERT INTO key_types_test.table_key_test VALUES (1, 'test1', 100), (2, 'test2', 200);
11+
12+
-- 2. auto Increment ID Key Test
13+
CREATE TABLE key_types_test.auto_inc_test (
14+
id INT PRIMARY KEY AUTO_INCREMENT,
15+
name VARCHAR(255)
16+
);
17+
18+
INSERT INTO key_types_test.auto_inc_test (name) VALUES ('auto1'), ('auto2'), ('auto3');
19+
20+
-- 3. sequence Key Test
21+
CREATE SEQUENCE key_types_test.seq1 START WITH 1 INCREMENT BY 2 NOCACHE;
22+
CREATE TABLE key_types_test.sequence_test (
23+
id INT PRIMARY KEY DEFAULT NEXT VALUE FOR key_types_test.seq1,
24+
name VARCHAR(255)
25+
);
26+
INSERT INTO key_types_test.sequence_test (name) VALUES ('seq1'), ('seq2'), ('seq3');
27+
28+
-- 4. auto Random Table ID Key Test
29+
CREATE TABLE key_types_test.auto_random_test (
30+
id BIGINT PRIMARY KEY AUTO_RANDOM(5),
31+
name VARCHAR(255)
32+
);
33+
INSERT INTO key_types_test.auto_random_test (name) VALUES ('rand1'), ('rand2'), ('rand3');

br/tests/br_pitr/run.sh

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ restart_services_allowing_huge_index
3737
echo "prepare the data"
3838
run_sql_file $CUR/prepare_data/delete_range.sql
3939
run_sql_file $CUR/prepare_data/ingest_repair.sql
40-
# ...
40+
run_sql_file $CUR/prepare_data/key_types.sql
4141

4242
# check something after prepare the data
4343
prepare_delete_range_count=$(run_sql "select count(*) DELETE_RANGE_CNT from (select * from mysql.gc_delete_range union all select * from mysql.gc_delete_range_done) del_range;" | tail -n 1 | awk '{print $2}')
@@ -65,7 +65,7 @@ run_br --pd $PD_ADDR backup full -s "local://$TEST_DIR/$PREFIX/inc" --lastbackup
6565
echo "load the incremental data"
6666
run_sql_file $CUR/incremental_data/delete_range.sql
6767
run_sql_file $CUR/incremental_data/ingest_repair.sql
68-
# ...
68+
run_sql_file $CUR/incremental_data/key_types.sql
6969

7070
# run incremental snapshot backup, but this incremental backup will fail to restore. due to limitation of ddl.
7171
echo "run incremental backup with special ddl jobs, modify column e.g."
@@ -95,6 +95,8 @@ check_result() {
9595
check_contains "DELETE_RANGE_CNT: $expect_delete_range"
9696
## check feature compatibility between PITR and accelerate indexing
9797
bash $CUR/check/check_ingest_repair.sh
98+
# check key types are restored correctly
99+
bash $CUR/check/check_key_types.sh
98100
}
99101

100102
# start a new cluster
@@ -191,3 +193,5 @@ if [ $restore_fail -ne 1 ]; then
191193
echo 'pitr success on file lost'
192194
exit 1
193195
fi
196+
197+
echo "br pitr test passed"

0 commit comments

Comments
 (0)