mirror of
https://github.com/kopia/kopia.git
synced 2026-01-25 14:58:00 -05:00
* content: fixed repo upgrade version Previously upgrade would enable epoch manager and index v2 but would not set the version of the format itself. Everything worked fine but it would not protect from old kopia opening the repository. * ci: added compatibility test that uses real 0.8 and current binaries
84 lines
3.7 KiB
Go
84 lines
3.7 KiB
Go
package cli_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/kopia/kopia/repo/content"
|
|
"github.com/kopia/kopia/tests/testenv"
|
|
)
|
|
|
|
func (s *formatSpecificTestSuite) TestRepositorySetParameters(t *testing.T) {
|
|
env := testenv.NewCLITest(t, s.formatFlags, testenv.NewInProcRunner(t))
|
|
|
|
env.RunAndExpectSuccess(t, "repo", "create", "filesystem", "--path", env.RepoDir)
|
|
out := env.RunAndExpectSuccess(t, "repository", "status")
|
|
|
|
// default values
|
|
require.Contains(t, out, "Max pack length: 20 MiB")
|
|
|
|
if s.formatVersion == content.FormatVersion1 {
|
|
require.Contains(t, out, "Format version: 1")
|
|
} else {
|
|
require.Contains(t, out, "Format version: 2")
|
|
}
|
|
|
|
// failure cases
|
|
env.RunAndExpectFailure(t, "repository", "set-parameters")
|
|
env.RunAndExpectFailure(t, "repository", "set-parameters", "--index-version=33")
|
|
env.RunAndExpectFailure(t, "repository", "set-parameters", "--max-pack-size-mb=9")
|
|
env.RunAndExpectFailure(t, "repository", "set-parameters", "--max-pack-size-mb=121")
|
|
|
|
env.RunAndExpectSuccess(t, "repository", "set-parameters", "--index-version=2", "--max-pack-size-mb=33")
|
|
out = env.RunAndExpectSuccess(t, "repository", "status")
|
|
require.Contains(t, out, "Max pack length: 33 MiB")
|
|
|
|
env.RunAndExpectSuccess(t, "repository", "set-parameters", "--max-pack-size-mb=44")
|
|
out = env.RunAndExpectSuccess(t, "repository", "status")
|
|
require.Contains(t, out, "Max pack length: 44 MiB")
|
|
}
|
|
|
|
func (s *formatSpecificTestSuite) TestRepositorySetParametersUpgrade(t *testing.T) {
|
|
env := testenv.NewCLITest(t, s.formatFlags, testenv.NewInProcRunner(t))
|
|
|
|
env.RunAndExpectSuccess(t, "repo", "create", "filesystem", "--path", env.RepoDir)
|
|
out := env.RunAndExpectSuccess(t, "repository", "status")
|
|
|
|
// default values
|
|
require.Contains(t, out, "Max pack length: 20 MiB")
|
|
|
|
if s.formatVersion == content.FormatVersion1 {
|
|
require.Contains(t, out, "Format version: 1")
|
|
require.Contains(t, out, "Epoch Manager: disabled")
|
|
env.RunAndExpectFailure(t, "index", "epoch", "list")
|
|
} else {
|
|
require.Contains(t, out, "Format version: 2")
|
|
require.Contains(t, out, "Epoch Manager: enabled")
|
|
env.RunAndExpectSuccess(t, "index", "epoch", "list")
|
|
}
|
|
|
|
env.RunAndExpectSuccess(t, "repository", "set-parameters", "--upgrade")
|
|
env.RunAndExpectSuccess(t, "repository", "set-parameters", "--epoch-min-duration", "3h")
|
|
env.RunAndExpectSuccess(t, "repository", "set-parameters", "--epoch-cleanup-safety-margin", "23h")
|
|
env.RunAndExpectSuccess(t, "repository", "set-parameters", "--epoch-advance-on-size-mb", "77")
|
|
env.RunAndExpectSuccess(t, "repository", "set-parameters", "--epoch-advance-on-count", "22")
|
|
env.RunAndExpectSuccess(t, "repository", "set-parameters", "--epoch-checkpoint-frequency", "9")
|
|
|
|
env.RunAndExpectFailure(t, "repository", "set-parameters", "--epoch-min-duration", "1s")
|
|
env.RunAndExpectFailure(t, "repository", "set-parameters", "--epoch-refresh-frequency", "10h")
|
|
env.RunAndExpectFailure(t, "repository", "set-parameters", "--epoch-checkpoint-frequency", "-10")
|
|
env.RunAndExpectFailure(t, "repository", "set-parameters", "--epoch-cleanup-safety-margin", "10s")
|
|
env.RunAndExpectFailure(t, "repository", "set-parameters", "--epoch-advance-on-count", "1")
|
|
|
|
out = env.RunAndExpectSuccess(t, "repository", "status")
|
|
require.Contains(t, out, "Epoch Manager: enabled")
|
|
require.Contains(t, out, "Index Format: v2")
|
|
require.Contains(t, out, "Format version: 2")
|
|
require.Contains(t, out, "Epoch cleanup margin: 23h0m0s")
|
|
require.Contains(t, out, "Epoch advance on: 22 blobs or 77 MiB, minimum 3h0m0s")
|
|
require.Contains(t, out, "Epoch checkpoint every: 9 epochs")
|
|
|
|
env.RunAndExpectSuccess(t, "index", "epoch", "list")
|
|
}
|