corso/src/internal/kopia/mock_backup_base.go
ashmrtn db86ccabf8
Track assist bases and merge bases separately (#4181)
Do a few things to separate merge and assist bases
* use distinct sets for each base type
* make another function to return all base snapshots to pass to kopia assisted incrementals
* update function that removes a merge base to make it into an assist base

---

#### Does this PR need a docs update or release note?

- [ ]  Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [x]  No

#### Type of change

- [ ] 🌻 Feature
- [ ] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [ ] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [x] 🧹 Tech Debt/Cleanup

#### Issue(s)

* #3943
* #4178

#### Test Plan

- [ ] 💪 Manual
- [x]  Unit test
- [x] 💚 E2E
2023-09-12 00:19:21 +00:00

80 lines
2.2 KiB
Go

package kopia
import (
"testing"
"github.com/stretchr/testify/assert"
)
func AssertBackupBasesEqual(t *testing.T, expect, got BackupBases) {
if expect == nil && got == nil {
return
}
if expect == nil {
assert.Empty(t, got.Backups(), "backups")
assert.Empty(t, got.MergeBases(), "merge bases")
assert.Empty(t, got.UniqueAssistBackups(), "assist backups")
assert.Empty(t, got.UniqueAssistBases(), "assist bases")
assert.Empty(t, got.SnapshotAssistBases(), "snapshot assist bases")
return
}
if got == nil {
if len(expect.Backups()) > 0 ||
len(expect.MergeBases()) > 0 ||
len(expect.UniqueAssistBackups()) > 0 ||
len(expect.UniqueAssistBases()) > 0 ||
len(expect.SnapshotAssistBases()) > 0 {
assert.Fail(t, "got was nil but expected non-nil result %v", expect)
}
return
}
assert.ElementsMatch(t, expect.Backups(), got.Backups(), "backups")
assert.ElementsMatch(t, expect.MergeBases(), got.MergeBases(), "merge bases")
assert.ElementsMatch(t, expect.UniqueAssistBackups(), got.UniqueAssistBackups(), "assist backups")
assert.ElementsMatch(t, expect.UniqueAssistBases(), got.UniqueAssistBases(), "assist bases")
assert.ElementsMatch(t, expect.SnapshotAssistBases(), got.SnapshotAssistBases(), "snapshot assist bases")
}
func NewMockBackupBases() *MockBackupBases {
return &MockBackupBases{backupBases: &backupBases{}}
}
type MockBackupBases struct {
*backupBases
}
func (bb *MockBackupBases) WithBackups(b ...BackupEntry) *MockBackupBases {
bb.backupBases.backups = append(bb.Backups(), b...)
return bb
}
func (bb *MockBackupBases) WithMergeBases(m ...ManifestEntry) *MockBackupBases {
bb.backupBases.mergeBases = append(bb.MergeBases(), m...)
return bb
}
func (bb *MockBackupBases) WithAssistBackups(b ...BackupEntry) *MockBackupBases {
bb.backupBases.assistBackups = append(bb.UniqueAssistBackups(), b...)
return bb
}
func (bb *MockBackupBases) WithAssistBases(m ...ManifestEntry) *MockBackupBases {
bb.backupBases.assistBases = append(bb.UniqueAssistBases(), m...)
return bb
}
func (bb *MockBackupBases) MockDisableAssistBases() *MockBackupBases {
bb.DisableAssistBases()
return bb
}
func (bb *MockBackupBases) MockDisableMergeBases() *MockBackupBases {
bb.DisableMergeBases()
return bb
}