mirror of
https://github.com/octoleo/restic.git
synced 2024-11-02 11:46:36 +00:00
Remove unused SnapshotFilter and FilterSnapshots().
This commit is contained in:
parent
c5ae5524ff
commit
ce3acbd30a
@ -25,40 +25,6 @@ func (sn Snapshots) Swap(i, j int) {
|
||||
sn[i], sn[j] = sn[j], sn[i]
|
||||
}
|
||||
|
||||
// SnapshotFilter configures criteria for filtering snapshots before an
|
||||
// ExpirePolicy can be applied.
|
||||
type SnapshotFilter struct {
|
||||
Hostname string
|
||||
Username string
|
||||
Paths []string
|
||||
Tags []string
|
||||
}
|
||||
|
||||
// FilterSnapshots returns the snapshots from s which match the filter f.
|
||||
func FilterSnapshots(s Snapshots, f SnapshotFilter) (result Snapshots) {
|
||||
for _, snap := range s {
|
||||
if f.Hostname != "" && f.Hostname != snap.Hostname {
|
||||
continue
|
||||
}
|
||||
|
||||
if f.Username != "" && f.Username != snap.Username {
|
||||
continue
|
||||
}
|
||||
|
||||
if f.Paths != nil && !reflect.DeepEqual(f.Paths, snap.Paths) {
|
||||
continue
|
||||
}
|
||||
|
||||
if !snap.HasTags(f.Tags) {
|
||||
continue
|
||||
}
|
||||
|
||||
result = append(result, snap)
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
// ExpirePolicy configures which snapshots should be automatically removed.
|
||||
type ExpirePolicy struct {
|
||||
Last int // keep the last n snapshots
|
||||
|
@ -7,7 +7,6 @@ import (
|
||||
"path/filepath"
|
||||
"reflect"
|
||||
"restic"
|
||||
"sort"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
@ -21,76 +20,6 @@ func parseTimeUTC(s string) time.Time {
|
||||
return t.UTC()
|
||||
}
|
||||
|
||||
var testFilterSnapshots = restic.Snapshots{
|
||||
{Hostname: "foo", Username: "testuser", Time: parseTimeUTC("2016-01-01 01:02:03"), Paths: []string{"/usr", "/bin"}, Tags: []string{"foo"}},
|
||||
{Hostname: "bar", Username: "testuser", Time: parseTimeUTC("2016-01-01 01:03:03"), Paths: []string{"/usr", "/bin"}, Tags: []string{"foo"}},
|
||||
{Hostname: "foo", Username: "testuser", Time: parseTimeUTC("2016-01-03 07:02:03"), Paths: []string{"/usr", "/bin"}, Tags: []string{"foo"}},
|
||||
{Hostname: "bar", Username: "testuser", Time: parseTimeUTC("2016-01-01 07:08:03"), Paths: []string{"/usr", "/bin"}, Tags: []string{"foo"}},
|
||||
{Hostname: "foo", Username: "testuser", Time: parseTimeUTC("2016-01-04 10:23:03"), Paths: []string{"/usr", "/bin"}, Tags: []string{"foo"}},
|
||||
{Hostname: "foo", Username: "testuser", Time: parseTimeUTC("2016-01-04 11:23:03"), Paths: []string{"/usr", "/bin"}, Tags: []string{"foo"}},
|
||||
{Hostname: "foo", Username: "testuser", Time: parseTimeUTC("2016-01-04 12:23:03"), Paths: []string{"/usr", "/bin"}, Tags: []string{"foo"}},
|
||||
{Hostname: "foo", Username: "testuser", Time: parseTimeUTC("2016-01-04 12:24:03"), Paths: []string{"/usr", "/bin"}, Tags: []string{"test"}},
|
||||
{Hostname: "foo", Username: "testuser", Time: parseTimeUTC("2016-01-04 12:28:03"), Paths: []string{"/usr", "/bin"}, Tags: []string{"test"}},
|
||||
{Hostname: "foo", Username: "testuser", Time: parseTimeUTC("2016-01-04 12:30:03"), Paths: []string{"/usr", "/bin"}, Tags: []string{"test", "foo", "bar"}},
|
||||
{Hostname: "foo", Username: "testuser", Time: parseTimeUTC("2016-01-04 16:23:03"), Paths: []string{"/usr", "/bin"}, Tags: []string{"test", "test2"}},
|
||||
{Hostname: "foo", Username: "testuser", Time: parseTimeUTC("2016-01-05 09:02:03"), Paths: []string{"/usr", "/bin"}, Tags: []string{"foo"}},
|
||||
{Hostname: "foo", Username: "testuser", Time: parseTimeUTC("2016-01-06 08:02:03"), Paths: []string{"/usr", "/bin"}, Tags: []string{"fox"}},
|
||||
{Hostname: "foo", Username: "testuser", Time: parseTimeUTC("2016-01-07 10:02:03"), Paths: []string{"/usr", "/bin"}, Tags: []string{"fox"}},
|
||||
{Hostname: "foo", Username: "root", Time: parseTimeUTC("2016-01-08 20:02:03"), Paths: []string{"/usr", "/sbin"}, Tags: []string{"foo"}},
|
||||
{Hostname: "foo", Username: "root", Time: parseTimeUTC("2016-01-09 21:02:03"), Paths: []string{"/usr", "/sbin"}, Tags: []string{"fox"}},
|
||||
{Hostname: "bar", Username: "root", Time: parseTimeUTC("2016-01-12 21:02:03"), Paths: []string{"/usr", "/sbin"}, Tags: []string{"foo"}},
|
||||
{Hostname: "foo", Username: "testuser", Time: parseTimeUTC("2016-01-12 21:08:03"), Paths: []string{"/usr", "/bin"}, Tags: []string{"bar"}},
|
||||
{Hostname: "foo", Username: "testuser", Time: parseTimeUTC("2016-01-18 12:02:03"), Paths: []string{"/usr", "/bin"}, Tags: []string{"bar"}},
|
||||
}
|
||||
|
||||
var filterTests = []restic.SnapshotFilter{
|
||||
{Hostname: "foo"},
|
||||
{Username: "root"},
|
||||
{Hostname: "foo", Username: "root"},
|
||||
{Paths: []string{"/usr", "/bin"}},
|
||||
{Hostname: "bar", Paths: []string{"/usr", "/bin"}},
|
||||
{Hostname: "foo", Username: "root", Paths: []string{"/usr", "/sbin"}},
|
||||
{Tags: []string{"foo"}},
|
||||
{Tags: []string{"fox"}, Username: "root"},
|
||||
{Tags: []string{"foo", "test"}},
|
||||
{Tags: []string{"foo", "test2"}},
|
||||
}
|
||||
|
||||
func TestFilterSnapshots(t *testing.T) {
|
||||
sort.Sort(testFilterSnapshots)
|
||||
|
||||
for i, f := range filterTests {
|
||||
res := restic.FilterSnapshots(testFilterSnapshots, f)
|
||||
|
||||
goldenFilename := filepath.Join("testdata", fmt.Sprintf("filter_snapshots_%d", i))
|
||||
|
||||
if *updateGoldenFiles {
|
||||
buf, err := json.MarshalIndent(res, "", " ")
|
||||
if err != nil {
|
||||
t.Fatalf("error marshaling result: %v", err)
|
||||
}
|
||||
|
||||
if err = ioutil.WriteFile(goldenFilename, buf, 0644); err != nil {
|
||||
t.Fatalf("unable to update golden file: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
buf, err := ioutil.ReadFile(goldenFilename)
|
||||
if err != nil {
|
||||
t.Errorf("error loading golden file %v: %v", goldenFilename, err)
|
||||
continue
|
||||
}
|
||||
|
||||
var want restic.Snapshots
|
||||
err = json.Unmarshal(buf, &want)
|
||||
|
||||
if !reflect.DeepEqual(res, want) {
|
||||
t.Errorf("test %v: wrong result, want:\n %#v\ngot:\n %#v", i, want, res)
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestExpireSnapshotOps(t *testing.T) {
|
||||
data := []struct {
|
||||
expectEmpty bool
|
||||
|
Loading…
Reference in New Issue
Block a user