Skip to content

Commit

Permalink
Merge branch 'master' into fix-show-grants-again
Browse files Browse the repository at this point in the history
  • Loading branch information
morgo committed Dec 2, 2021
2 parents 8ae35ed + 04a387c commit 83645fc
Show file tree
Hide file tree
Showing 85 changed files with 1,010 additions and 365 deletions.
9 changes: 5 additions & 4 deletions bindinfo/bind_serial_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -826,11 +826,11 @@ func TestForbidEvolvePlanBaseLinesBeforeGA(t *testing.T) {
err := tk.ExecToErr("set @@tidb_evolve_plan_baselines=0")
require.Equal(t, nil, err)
err = tk.ExecToErr("set @@TiDB_Evolve_pLan_baselines=1")
require.Regexp(t, "Cannot enable baseline evolution feature, it is not generally available now", err)
require.EqualError(t, err, "Cannot enable baseline evolution feature, it is not generally available now")
err = tk.ExecToErr("set @@TiDB_Evolve_pLan_baselines=oN")
require.Regexp(t, "Cannot enable baseline evolution feature, it is not generally available now", err)
require.EqualError(t, err, "Cannot enable baseline evolution feature, it is not generally available now")
err = tk.ExecToErr("admin evolve bindings")
require.Regexp(t, "Cannot enable baseline evolution feature, it is not generally available now", err)
require.EqualError(t, err, "Cannot enable baseline evolution feature, it is not generally available now")
}

func TestExplainTableStmts(t *testing.T) {
Expand Down Expand Up @@ -861,7 +861,8 @@ func TestSPMWithoutUseDatabase(t *testing.T) {
tk.MustExec("create global binding for select * from t using select * from t force index(a)")

err := tk1.ExecToErr("select * from t")
require.Regexp(t, ".*No database selected", err)
require.Error(t, err)
require.Regexp(t, "No database selected$", err)
tk1.MustQuery(`select @@last_plan_from_binding;`).Check(testkit.Rows("0"))
require.True(t, tk1.MustUseIndex("select * from test.t", "a"))
tk1.MustExec("select * from test.t")
Expand Down
34 changes: 26 additions & 8 deletions br/pkg/backup/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -180,14 +180,9 @@ func (bc *Client) SetStorage(ctx context.Context, backend *backuppb.StorageBacke
"there may be some backup files in the path already, "+
"please specify a correct backup directory!", bc.storage.URI()+"/"+metautil.MetaFile)
}
exist, err = bc.storage.FileExists(ctx, metautil.LockFile)
err = CheckBackupStorageIsLocked(ctx, bc.storage)
if err != nil {
return errors.Annotatef(err, "error occurred when checking %s file", metautil.LockFile)
}
if exist {
return errors.Annotatef(berrors.ErrInvalidArgument, "backup lock file exists in %v, "+
"there may be some backup files in the path already, "+
"please specify a correct backup directory!", bc.storage.URI()+"/"+metautil.LockFile)
return err
}
bc.backend = backend
return nil
Expand All @@ -198,6 +193,29 @@ func (bc *Client) GetClusterID() uint64 {
return bc.clusterID
}

// CheckBackupStorageIsLocked checks whether backups is locked.
// which means we found other backup progress already write
// some data files into the same backup directory or cloud prefix.
func CheckBackupStorageIsLocked(ctx context.Context, s storage.ExternalStorage) error {
exist, err := s.FileExists(ctx, metautil.LockFile)
if err != nil {
return errors.Annotatef(err, "error occurred when checking %s file", metautil.LockFile)
}
if exist {
err = s.WalkDir(ctx, &storage.WalkOption{}, func(path string, size int64) error {
// should return error to break the walkDir when found lock file and other .sst files.
if strings.HasSuffix(path, ".sst") {
return errors.Annotatef(berrors.ErrInvalidArgument, "backup lock file and sst file exist in %v, "+
"there are some backup files in the path already, "+
"please specify a correct backup directory!", s.URI()+"/"+metautil.LockFile)
}
return nil
})
return err
}
return nil
}

// BuildTableRanges returns the key ranges encompassing the entire table,
// and its partitions if exists.
func BuildTableRanges(tbl *model.TableInfo) ([]kv.KeyRange, error) {
Expand Down Expand Up @@ -719,7 +737,7 @@ func OnBackupResponse(
if lockErr := v.KvError.Locked; lockErr != nil {
// Try to resolve lock.
log.Warn("backup occur kv error", zap.Reflect("error", v))
msBeforeExpired, _, err1 := lockResolver.ResolveLocks(
msBeforeExpired, err1 := lockResolver.ResolveLocks(
bo, backupTS, []*txnlock.Lock{txnlock.NewLock(lockErr)})
if err1 != nil {
return nil, 0, errors.Trace(err1)
Expand Down
34 changes: 34 additions & 0 deletions br/pkg/backup/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,13 @@ func (r *testBackup) SetUpSuite(c *C) {

}

func (r *testBackup) resetStorage(c *C) {
var err error
base := c.MkDir()
r.storage, err = storage.NewLocalStorage(base)
c.Assert(err, IsNil)
}

func (r *testBackup) TestGetTS(c *C) {
var (
err error
Expand Down Expand Up @@ -335,3 +342,30 @@ func (r *testBackup) TestskipUnsupportedDDLJob(c *C) {
c.Assert(err, IsNil)
c.Assert(len(allDDLJobs), Equals, 8)
}

func (r *testBackup) TestCheckBackupIsLocked(c *C) {
ctx := context.Background()

r.resetStorage(c)
// check passed with an empty storage
err := backup.CheckBackupStorageIsLocked(ctx, r.storage)
c.Assert(err, IsNil)

// check passed with only a lock file
err = r.storage.WriteFile(ctx, metautil.LockFile, nil)
c.Assert(err, IsNil)
err = backup.CheckBackupStorageIsLocked(ctx, r.storage)
c.Assert(err, IsNil)

// check passed with a lock file and other non-sst files.
err = r.storage.WriteFile(ctx, "1.txt", nil)
c.Assert(err, IsNil)
err = backup.CheckBackupStorageIsLocked(ctx, r.storage)
c.Assert(err, IsNil)

// check failed
err = r.storage.WriteFile(ctx, "1.sst", nil)
c.Assert(err, IsNil)
err = backup.CheckBackupStorageIsLocked(ctx, r.storage)
c.Assert(err, ErrorMatches, "backup lock file and sst file exist in(.+)")
}
8 changes: 4 additions & 4 deletions br/pkg/conn/conn_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ func TestGetAllTiKVStores(t *testing.T) {
{Id: 2, Labels: []*metapb.StoreLabel{{Key: "engine", Value: "tiflash"}}},
},
storeBehavior: ErrorOnTiFlash,
expectedError: "cannot restore to a cluster with active TiFlash stores.*",
expectedError: "^cannot restore to a cluster with active TiFlash stores",
},
{
stores: []*metapb.Store{
Expand All @@ -225,7 +225,7 @@ func TestGetAllTiKVStores(t *testing.T) {
{Id: 6, Labels: []*metapb.StoreLabel{{Key: "else", Value: "tiflash"}, {Key: "engine", Value: "tikv"}}},
},
storeBehavior: ErrorOnTiFlash,
expectedError: "cannot restore to a cluster with active TiFlash stores.*",
expectedError: "^cannot restore to a cluster with active TiFlash stores",
},
{
stores: []*metapb.Store{
Expand Down Expand Up @@ -267,9 +267,9 @@ func TestGetConnOnCanceledContext(t *testing.T) {

_, err := mgr.GetBackupClient(ctx, 42)
require.Error(t, err)
require.Regexp(t, ".*context canceled.*", err.Error())
require.Contains(t, err.Error(), "context canceled")

_, err = mgr.ResetBackupClient(ctx, 42)
require.Error(t, err)
require.Regexp(t, ".*context canceled.*", err.Error())
require.Contains(t, err.Error(), "context canceled")
}
2 changes: 1 addition & 1 deletion br/pkg/gluetikv/glue_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,5 @@ import (

func TestGetVersion(t *testing.T) {
g := Glue{}
require.Regexp(t, "BR(.|\n)*Release Version(.|\n)*Git Commit Hash(.|\n)*", g.GetVersion())
require.Regexp(t, "^BR(.|\n)*Release Version(.|\n)*Git Commit Hash(.|\n)*$", g.GetVersion())
}
8 changes: 4 additions & 4 deletions br/pkg/lightning/backend/backend_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ func TestWriteEngineFailed(t *testing.T) {
require.NoError(t, err)
err = writer.WriteRows(ctx, nil, rows)
require.Error(t, err)
require.Regexp(t, "fake unrecoverable write error.*", err.Error())
require.Regexp(t, "^fake unrecoverable write error", err.Error())
_, err = writer.Close(ctx)
require.NoError(t, err)
}
Expand Down Expand Up @@ -243,7 +243,7 @@ func TestWriteBatchSendFailedWithRetry(t *testing.T) {
require.NoError(t, err)
err = writer.WriteRows(ctx, nil, rows)
require.Error(t, err)
require.Regexp(t, ".*fake recoverable write batch error", err.Error())
require.Regexp(t, "fake recoverable write batch error$", err.Error())
_, err = writer.Close(ctx)
require.NoError(t, err)
}
Expand All @@ -264,7 +264,7 @@ func TestImportFailedNoRetry(t *testing.T) {
require.NoError(t, err)
err = closedEngine.Import(ctx, 1)
require.Error(t, err)
require.Regexp(t, "fake unrecoverable import error.*", err.Error())
require.Regexp(t, "^fake unrecoverable import error", err.Error())
}

func TestImportFailedWithRetry(t *testing.T) {
Expand All @@ -285,7 +285,7 @@ func TestImportFailedWithRetry(t *testing.T) {
require.NoError(t, err)
err = closedEngine.Import(ctx, 1)
require.Error(t, err)
require.Regexp(t, ".*fake recoverable import error", err.Error())
require.Regexp(t, "fake recoverable import error$", err.Error())
}

func TestImportFailedRecovered(t *testing.T) {
Expand Down
4 changes: 2 additions & 2 deletions br/pkg/lightning/backend/tidb/tidb_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ func testStrictMode(t *testing.T) {
types.NewStringDatum("\xff\xff\xff\xff"),
}, 1, []int{0, -1, -1}, "5.csv", 0)
require.Error(t, err)
require.Regexp(t, `.*incorrect utf8 value .* for column s0`, err.Error())
require.Regexp(t, `incorrect utf8 value .* for column s0$`, err.Error())

// oepn a new encode because column count changed.
encoder, err = bk.NewEncoder(tbl, &kv.SessionOptions{SQLMode: mysql.ModeStrictAllTables})
Expand All @@ -255,7 +255,7 @@ func testStrictMode(t *testing.T) {
types.NewStringDatum("非 ASCII 字符串"),
}, 1, []int{0, 1, -1}, "6.csv", 0)
require.Error(t, err)
require.Regexp(t, ".*incorrect ascii value .* for column s1", err.Error())
require.Regexp(t, "incorrect ascii value .* for column s1$", err.Error())
}

func TestFetchRemoteTableModels_3_x(t *testing.T) {
Expand Down
2 changes: 1 addition & 1 deletion br/pkg/lightning/lightning_serial_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ func TestRun(t *testing.T) {
require.NoError(t, err)
err = lightning.RunOnce(context.Background(), cfg, nil)
require.Error(t, err)
require.Regexp(t, ".*mydumper dir does not exist", err.Error())
require.Regexp(t, "mydumper dir does not exist$", err.Error())

path, _ := filepath.Abs(".")
ctx := context.Background()
Expand Down
6 changes: 3 additions & 3 deletions br/pkg/lightning/lightning_server_serial_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ func TestRunServer(t *testing.T) {
resp, err = http.DefaultClient.Do(req)
require.NoError(t, err)
require.Equal(t, http.StatusMethodNotAllowed, resp.StatusCode)
require.Regexp(t, ".*"+http.MethodPost+".*", resp.Header.Get("Allow"))
require.Contains(t, resp.Header.Get("Allow"), http.MethodPost)
require.NoError(t, resp.Body.Close())

resp, err = http.Post(url, "application/toml", strings.NewReader("????"))
Expand All @@ -101,7 +101,7 @@ func TestRunServer(t *testing.T) {
err = json.NewDecoder(resp.Body).Decode(&data)
require.NoError(t, err)
require.Contains(t, data, "error")
require.Regexp(t, "cannot parse task.*", data["error"])
require.Regexp(t, "^cannot parse task", data["error"])
require.NoError(t, resp.Body.Close())

resp, err = http.Post(url, "application/toml", strings.NewReader("[mydumper.csv]\nseparator = 'fooo'\ndelimiter= 'foo'"))
Expand All @@ -110,7 +110,7 @@ func TestRunServer(t *testing.T) {
err = json.NewDecoder(resp.Body).Decode(&data)
require.NoError(t, err)
require.Contains(t, data, "error")
require.Regexp(t, "invalid task configuration:.*", data["error"])
require.Regexp(t, "^invalid task configuration:", data["error"])
require.NoError(t, resp.Body.Close())

for i := 0; i < 20; i++ {
Expand Down
4 changes: 2 additions & 2 deletions br/pkg/metautil/metafile_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ package metautil
import (
"context"
"crypto/sha256"
"regexp"
"testing"

"github.com/golang/mock/gomock"
Expand Down Expand Up @@ -87,7 +86,8 @@ func TestWalkMetaFileInvalid(t *testing.T) {
collect := func(m *backuppb.MetaFile) { panic("unreachable") }
err := walkLeafMetaFile(ctx, mockStorage, root, &cipher, collect)

require.Regexp(t, regexp.MustCompile(".*ErrInvalidMetaFile.*"), err)
require.Error(t, err)
require.Contains(t, err.Error(), "ErrInvalidMetaFile")
}

func TestWalkMetaFile(t *testing.T) {
Expand Down
2 changes: 1 addition & 1 deletion br/pkg/pdutil/pd_serial_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ func TestScheduler(t *testing.T) {
}
_, err = pdController.pauseSchedulersAndConfigWith(ctx, []string{}, cfg, mock)
require.Error(t, err)
require.Regexp(t, "^failed to update PD.*", err.Error())
require.Regexp(t, "^failed to update PD", err.Error())
go func() {
<-schedulerPauseCh
}()
Expand Down
2 changes: 1 addition & 1 deletion br/pkg/trace/tracing_serial_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,5 +48,5 @@ func TestSpan(t *testing.T) {
// possible result:
// "jobA 22:02:02.545296 20.621764ms\n"
// " └─jobB 22:02:02.545297 10.293444ms\n"
require.Regexp(t, `jobA.*2[0-9]\.[0-9]+ms\n └─jobB.*1[0-9]\.[0-9]+ms\n`, s)
require.Regexp(t, `^jobA.*2[0-9]\.[0-9]+ms\n └─jobB.*1[0-9]\.[0-9]+ms\n$`, s)
}
2 changes: 1 addition & 1 deletion br/pkg/utils/key_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ func TestParseKey(t *testing.T) {
for _, tt := range testNotSupportKey {
_, err := ParseKey("notSupport", tt.any)
require.Error(t, err)
require.Regexp(t, "unknown format.*", err.Error())
require.Regexp(t, "^unknown format", err.Error())
}
}

Expand Down
2 changes: 1 addition & 1 deletion br/pkg/utils/safe_point_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ func TestCheckGCSafepoint(t *testing.T) {
{
err := utils.CheckGCSafePoint(ctx, pdClient, 0)
require.Error(t, err)
require.Regexp(t, ".*GC safepoint 2333 exceed TS 0.*", err.Error())
require.Contains(t, err.Error(), "GC safepoint 2333 exceed TS 0")
}
}

Expand Down
10 changes: 5 additions & 5 deletions br/pkg/version/build/info_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ func TestInfo(t *testing.T) {

info := Info()
lines := strings.Split(info, "\n")
require.Regexp(t, "Release Version.*", lines[0])
require.Regexp(t, "Git Commit Hash.*", lines[1])
require.Regexp(t, "Git Branch.*", lines[2])
require.Regexp(t, "Go Version.*", lines[3])
require.Regexp(t, "UTC Build Time.*", lines[4])
require.Regexp(t, "^Release Version", lines[0])
require.Regexp(t, "^Git Commit Hash", lines[1])
require.Regexp(t, "^Git Branch", lines[2])
require.Regexp(t, "^Go Version", lines[3])
require.Regexp(t, "^UTC Build Time", lines[4])
}

func TestLogInfo(t *testing.T) {
Expand Down
Loading

0 comments on commit 83645fc

Please sign in to comment.