-
Notifications
You must be signed in to change notification settings - Fork 2.1k
/
Copy pathbackup_pitr_xtrabackup_test.go
61 lines (53 loc) · 2.34 KB
/
backup_pitr_xtrabackup_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/*
Copyright 2022 The Vitess Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package mysqlctld
import (
"testing"
backup "vitess.io/vitess/go/test/endtoend/backup/vtctlbackup"
)
// TestIncrementalBackupAndRestoreToPos
func TestIncrementalBackupAndRestoreToPos(t *testing.T) {
tcase := &backup.PITRTestCase{
Name: "XtraBackup",
SetupType: backup.XtraBackup,
ComprssDetails: &backup.CompressionDetails{
CompressorEngineName: "pgzip",
},
}
backup.ExecTestIncrementalBackupAndRestoreToPos(t, tcase)
}
// TestIncrementalBackupAndRestoreToTimestamp - tests incremental backups and restores.
// The general outline of the test:
// - Generate some schema with data
// - Take a full backup
// - Proceed to take a series of inremental backups. In between, inject data (insert rows), and keep record
// of which data (number of rows) is present in each backup, and at which timestamp.
// - Expect backups success/failure per scenario
// - Next up, we start testing restores. Randomly pick recorded timestamps and restore to those points in time.
// - In each restore, excpect to find the data (number of rows) recorded for said timestamp
// - Some restores should fail because the timestamp exceeds the last binlog
// - Do so for all recorded tiemstamps.
// - Then, a 2nd round where some backups are purged -- this tests to see that we're still able to find a restore path
// (of course we only delete backups that still leave us with valid restore paths).
//
// All of the above is done for BuiltinBackup, XtraBackup, Mysqlctld (which is technically builtin)
func TestIncrementalBackupAndRestoreToTimestamp(t *testing.T) {
tcase := &backup.PITRTestCase{
Name: "XtraBackup",
SetupType: backup.XtraBackup,
ComprssDetails: &backup.CompressionDetails{
CompressorEngineName: "pgzip",
},
}
backup.ExecTestIncrementalBackupAndRestoreToTimestamp(t, tcase)
}