mirror of
https://github.com/zrepl/zrepl.git
synced 2024-11-24 17:35:01 +01:00
74 lines
1.4 KiB
Go
74 lines
1.4 KiB
Go
package pruning
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestKeepLastN(t *testing.T) {
|
|
|
|
o := func(minutes int) time.Time {
|
|
return time.Unix(123, 0).Add(time.Duration(minutes) * time.Minute)
|
|
}
|
|
|
|
inputs := map[string][]Snapshot{
|
|
"s1": []Snapshot{
|
|
stubSnap{name: "1", date: o(10)},
|
|
stubSnap{name: "2", date: o(20)},
|
|
stubSnap{name: "3", date: o(15)},
|
|
stubSnap{name: "4", date: o(30)},
|
|
stubSnap{name: "5", date: o(30)},
|
|
},
|
|
"s2": []Snapshot{},
|
|
}
|
|
|
|
tcs := map[string]testCase{
|
|
"keep2": {
|
|
inputs: inputs["s1"],
|
|
rules: []KeepRule{
|
|
KeepLastN{2},
|
|
},
|
|
expDestroy: map[string]bool{
|
|
"1": true, "2": true, "3": true,
|
|
},
|
|
},
|
|
"keep1OfTwoWithSameTime": { // Keep one of two with same time
|
|
inputs: inputs["s1"],
|
|
rules: []KeepRule{
|
|
KeepLastN{1},
|
|
},
|
|
expDestroyAlternatives: []map[string]bool{
|
|
{"1": true, "2": true, "3": true, "4": true},
|
|
{"1": true, "2": true, "3": true, "5": true},
|
|
},
|
|
},
|
|
"keepMany": {
|
|
inputs: inputs["s1"],
|
|
rules: []KeepRule{
|
|
KeepLastN{100},
|
|
},
|
|
expDestroy: map[string]bool{},
|
|
},
|
|
"empty": {
|
|
inputs: inputs["s2"],
|
|
rules: []KeepRule{
|
|
KeepLastN{100},
|
|
},
|
|
expDestroy: map[string]bool{},
|
|
},
|
|
}
|
|
|
|
testTable(tcs, t)
|
|
|
|
t.Run("mustBePositive", func(t *testing.T) {
|
|
var err error
|
|
_, err = NewKeepLastN(0)
|
|
assert.Error(t, err)
|
|
_, err = NewKeepLastN(-5)
|
|
assert.Error(t, err)
|
|
})
|
|
|
|
}
|