From bb3fa45009daedfa77fb3bc528724de362a7e69c Mon Sep 17 00:00:00 2001 From: ris <79858083+RidRisR@users.noreply.github.com> Date: Wed, 7 Jan 2026 16:42:08 +0800 Subject: [PATCH] tests: support configurable temp directory for brietest via BRIETEST_TMPDIR (#65315) close pingcap/tidb#65202 --- Makefile | 1 + .../brietest/backup_restore_test.go | 11 ++++++++-- tests/realtikvtest/brietest/brie_test.go | 8 +++++++- tests/realtikvtest/brietest/pitr_test.go | 20 +++++++++++++++++-- 4 files changed, 35 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 7758d00545..f15680878d 100644 --- a/Makefile +++ b/Makefile @@ -758,6 +758,7 @@ bazel_golangcilinter: .PHONY: bazel_brietest bazel_brietest: failpoint-enable bazel_ci_simple_prepare bazel $(BAZEL_GLOBAL_CONFIG) test $(BAZEL_CMD_CONFIG) --test_arg=-with-real-tikv --define gotags=$(REAL_TIKV_TEST_TAGS) --jobs=1 \ + --test_env=BRIETEST_TMPDIR --sandbox_writable_path=$${BRIETEST_TMPDIR:-$(CURDIR)} \ -- //tests/realtikvtest/brietest/... .PHONY: bazel_pessimistictest diff --git a/tests/realtikvtest/brietest/backup_restore_test.go b/tests/realtikvtest/brietest/backup_restore_test.go index 5ef0a002eb..d3bcf531c2 100644 --- a/tests/realtikvtest/brietest/backup_restore_test.go +++ b/tests/realtikvtest/brietest/backup_restore_test.go @@ -27,6 +27,13 @@ import ( "github.com/stretchr/testify/require" ) +func getBackupTempDir() string { + if envDir := os.Getenv("BRIETEST_TMPDIR"); envDir != "" { + return envDir + } + return os.TempDir() +} + func initTestKit(t *testing.T) *testkit.TestKit { store := realtikvtest.CreateMockStoreAndSetup(t) @@ -53,7 +60,7 @@ func TestBackupAndRestore(t *testing.T) { tk.MustExec("use br02") tk.MustExec("create table t1(v int)") - tmpDir := path.Join(os.TempDir(), "bk1") + tmpDir := path.Join(getBackupTempDir(), "bk1") require.NoError(t, os.RemoveAll(tmpDir)) // backup database to tmp dir tk.MustQuery("backup database br to 'local://" + tmpDir + "'") @@ -83,7 +90,7 @@ func TestRestoreMultiTables(t *testing.T) { tablesNameSet[fmt.Sprintf("table_%d", i)] = struct{}{} } - tmpDir := path.Join(os.TempDir(), "bk1") + tmpDir := path.Join(getBackupTempDir(), "bk1") require.NoError(t, os.RemoveAll(tmpDir)) // backup database to tmp dir tk.MustQuery("backup database br to 'local://" + tmpDir + "'") diff --git a/tests/realtikvtest/brietest/brie_test.go b/tests/realtikvtest/brietest/brie_test.go index ee123d1b57..278bf37c94 100644 --- a/tests/realtikvtest/brietest/brie_test.go +++ b/tests/realtikvtest/brietest/brie_test.go @@ -32,7 +32,13 @@ import ( ) func makeTempDirForBackup(t *testing.T) string { - d, err := os.MkdirTemp(os.TempDir(), "briesql-*") + baseDir := os.TempDir() + if envDir := os.Getenv("BRIETEST_TMPDIR"); envDir != "" { + // Ensure the base directory exists + require.NoError(t, os.MkdirAll(envDir, 0755)) + baseDir = envDir + } + d, err := os.MkdirTemp(baseDir, "briesql-*") require.NoError(t, err) t.Cleanup(func() { os.RemoveAll(d) diff --git a/tests/realtikvtest/brietest/pitr_test.go b/tests/realtikvtest/brietest/pitr_test.go index 34cfd95168..60618b68c3 100644 --- a/tests/realtikvtest/brietest/pitr_test.go +++ b/tests/realtikvtest/brietest/pitr_test.go @@ -133,6 +133,22 @@ type LogBackupKit struct { checkerF func(err error) } +// getTestTempDir returns a temporary directory for tests. +// If BRIETEST_TMPDIR is set, it creates a subdirectory there (useful for CI environments +// where TiKV and test processes need to share the same filesystem). +// Otherwise, it falls back to t.TempDir(). +func getTestTempDir(t *testing.T) string { + if baseDir := os.Getenv("BRIETEST_TMPDIR"); baseDir != "" { + dir := filepath.Join(baseDir, t.Name()) + require.NoError(t, os.MkdirAll(dir, 0755)) + t.Cleanup(func() { + os.RemoveAll(dir) + }) + return dir + } + return t.TempDir() +} + func NewLogBackupKit(t *testing.T) *LogBackupKit { tk := initTestKit(t) metaCli := streamhelper.NewMetaDataClient(domain.GetDomain(tk.Session()).GetEtcdClient()) @@ -149,7 +165,7 @@ func NewLogBackupKit(t *testing.T) *LogBackupKit { tk: tk, t: t, metaCli: metaCli, - base: t.TempDir(), + base: getTestTempDir(t), checkerF: func(err error) { require.NoError(t, err) }, @@ -157,7 +173,7 @@ func NewLogBackupKit(t *testing.T) *LogBackupKit { } func (kit *LogBackupKit) tempFile(name string, content []byte) string { - path := filepath.Join(kit.t.TempDir(), name) + path := filepath.Join(kit.base, name) require.NoError(kit.t, os.WriteFile(path, content, 0o666)) return path }