Merge 'master' github.com:kopia/kopia

This commit is contained in:
Aaron H. Alpar
2022-11-28 09:25:08 -08:00
2 changed files with 18 additions and 0 deletions

View File

@@ -95,6 +95,9 @@ type Uploader struct {
// When set to true, do not ignore any files, regardless of policy settings.
DisableIgnoreRules bool
// Labels to apply to every checkpoint made for this snapshot.
CheckpointLabels map[string]string
repo repo.RepositoryWriter
// stats must be allocated on heap to enforce 64-bit alignment due to atomic access on ARM.
@@ -506,6 +509,7 @@ func (u *Uploader) checkpointRoot(ctx context.Context, cp *checkpointRegistry, p
man.EndTime = fs.UTCTimestampFromTime(u.repo.Time())
man.StartTime = man.EndTime
man.IncompleteReason = IncompleteReasonCheckpoint
man.Tags = u.CheckpointLabels
if _, err := snapshot.SaveSnapshot(ctx, u.repo, &man); err != nil {
return errors.Wrap(err, "error saving checkpoint snapshot")

View File

@@ -636,6 +636,18 @@ func TestUploadWithCheckpointing(t *testing.T) {
Path: "path",
}
labels := map[string]string{
"shape": "square",
"color": "red",
}
// Be paranoid and make a copy of the labels in the uploader so we know stuff
// didn't change.
u.CheckpointLabels = make(map[string]string, len(labels))
for k, v := range labels {
u.CheckpointLabels[k] = v
}
// inject a action into mock filesystem to trigger and wait for checkpoints at few places.
// the places are not important, what's important that those are 3 separate points in time.
dirsToCheckpointAt := []*mockfs.Directory{
@@ -671,6 +683,8 @@ func TestUploadWithCheckpointing(t *testing.T) {
if got, want := sn.IncompleteReason, IncompleteReasonCheckpoint; got != want {
t.Errorf("unexpected incompleteReason %q, want %q", got, want)
}
assert.Equal(t, labels, sn.Tags)
}
}