layout: skip creation of pack subdirectories in integration tests

Each time a local backend is created, the local backend also creates all
shard subdirectories. For the integration tests this has the downside
that this results in ~120 (number of test) * 256 (number of directories)
= 30k directories that are created unnecessarily. This significantly
slows down test execution and cleanup.
This commit is contained in:
Michael Eischer
2026-06-20 19:42:54 +02:00
parent 71064fac10
commit 5683224a3c
4 changed files with 22 additions and 4 deletions
+1
View File
@@ -25,6 +25,7 @@ func testRunInit(t testing.TB, gopts global.Options) {
// create temporary junk files to verify that restic does not trip over them
for _, path := range []string{"index", "snapshots", "keys", "locks", filepath.Join("data", "00")} {
rtest.OK(t, os.MkdirAll(filepath.Join(gopts.Repo, path), 0700))
rtest.OK(t, os.WriteFile(filepath.Join(gopts.Repo, path, "tmp12345"), []byte("junk file"), 0o600))
}
}
+2
View File
@@ -14,6 +14,7 @@ import (
"github.com/restic/restic/internal/backend"
"github.com/restic/restic/internal/backend/all"
"github.com/restic/restic/internal/backend/layout"
"github.com/restic/restic/internal/backend/retry"
"github.com/restic/restic/internal/data"
"github.com/restic/restic/internal/errors"
@@ -192,6 +193,7 @@ func withTestEnvironment(t testing.TB) (env *testEnvironment, cleanup func()) {
repository.TestUseLowSecurityKDFParameters(t)
restic.TestDisableCheckPolynomial(t)
retry.TestFastRetries(t)
layout.TestDisablePackSubdirs(t)
tempdir, err := os.MkdirTemp(rtest.TestTempDir, "restic-test-")
rtest.OK(t, err)
+10 -4
View File
@@ -6,6 +6,10 @@ import (
"github.com/restic/restic/internal/backend"
)
// disablePackSubdirs is used to disable the creation of pack subdirectories.
// Only used for testing.
var disablePackSubdirs = false
// DefaultLayout implements the default layout for local and sftp backends, as
// described in the Design document. The `data` directory has one level of
// subdirs, two characters each (taken from the first two characters of the
@@ -66,10 +70,12 @@ func (l *DefaultLayout) Paths() (dirs []string) {
dirs = append(dirs, l.join(l.path, p))
}
// also add subdirs
for i := 0; i < 256; i++ {
subdir := hex.EncodeToString([]byte{byte(i)})
dirs = append(dirs, l.join(l.path, defaultLayoutPaths[backend.PackFile], subdir))
if !disablePackSubdirs {
// also add subdirs
for i := 0; i < 256; i++ {
subdir := hex.EncodeToString([]byte{byte(i)})
dirs = append(dirs, l.join(l.path, defaultLayoutPaths[backend.PackFile], subdir))
}
}
return dirs
+9
View File
@@ -0,0 +1,9 @@
package layout
import (
"testing"
)
func TestDisablePackSubdirs(t testing.TB) {
disablePackSubdirs = true
}