|
@@ -21,6 +21,7 @@ import (
|
|
|
|
|
|
|
|
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
|
|
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
|
|
|
"github.com/coreos/etcd/pkg/testutil"
|
|
"github.com/coreos/etcd/pkg/testutil"
|
|
|
|
|
+
|
|
|
"github.com/jonboulle/clockwork"
|
|
"github.com/jonboulle/clockwork"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
@@ -28,23 +29,18 @@ func TestRevision(t *testing.T) {
|
|
|
fc := clockwork.NewFakeClock()
|
|
fc := clockwork.NewFakeClock()
|
|
|
rg := &fakeRevGetter{testutil.NewRecorderStream(), 0}
|
|
rg := &fakeRevGetter{testutil.NewRecorderStream(), 0}
|
|
|
compactable := &fakeCompactable{testutil.NewRecorderStream()}
|
|
compactable := &fakeCompactable{testutil.NewRecorderStream()}
|
|
|
- tb := &Revision{
|
|
|
|
|
- clock: fc,
|
|
|
|
|
- retention: 10,
|
|
|
|
|
- rg: rg,
|
|
|
|
|
- c: compactable,
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ tb := newRevision(fc, 10, rg, compactable)
|
|
|
|
|
|
|
|
tb.Run()
|
|
tb.Run()
|
|
|
defer tb.Stop()
|
|
defer tb.Stop()
|
|
|
|
|
|
|
|
- fc.Advance(checkCompactionInterval)
|
|
|
|
|
|
|
+ fc.Advance(revInterval)
|
|
|
rg.Wait(1)
|
|
rg.Wait(1)
|
|
|
// nothing happens
|
|
// nothing happens
|
|
|
|
|
|
|
|
rg.SetRev(99) // will be 100
|
|
rg.SetRev(99) // will be 100
|
|
|
expectedRevision := int64(90)
|
|
expectedRevision := int64(90)
|
|
|
- fc.Advance(checkCompactionInterval)
|
|
|
|
|
|
|
+ fc.Advance(revInterval)
|
|
|
rg.Wait(1)
|
|
rg.Wait(1)
|
|
|
a, err := compactable.Wait(1)
|
|
a, err := compactable.Wait(1)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
@@ -61,7 +57,7 @@ func TestRevision(t *testing.T) {
|
|
|
|
|
|
|
|
rg.SetRev(199) // will be 200
|
|
rg.SetRev(199) // will be 200
|
|
|
expectedRevision = int64(190)
|
|
expectedRevision = int64(190)
|
|
|
- fc.Advance(checkCompactionInterval)
|
|
|
|
|
|
|
+ fc.Advance(revInterval)
|
|
|
rg.Wait(1)
|
|
rg.Wait(1)
|
|
|
a, err = compactable.Wait(1)
|
|
a, err = compactable.Wait(1)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
@@ -74,22 +70,17 @@ func TestRevision(t *testing.T) {
|
|
|
|
|
|
|
|
func TestRevisionPause(t *testing.T) {
|
|
func TestRevisionPause(t *testing.T) {
|
|
|
fc := clockwork.NewFakeClock()
|
|
fc := clockwork.NewFakeClock()
|
|
|
- compactable := &fakeCompactable{testutil.NewRecorderStream()}
|
|
|
|
|
rg := &fakeRevGetter{testutil.NewRecorderStream(), 99} // will be 100
|
|
rg := &fakeRevGetter{testutil.NewRecorderStream(), 99} // will be 100
|
|
|
- tb := &Revision{
|
|
|
|
|
- clock: fc,
|
|
|
|
|
- retention: 10,
|
|
|
|
|
- rg: rg,
|
|
|
|
|
- c: compactable,
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ compactable := &fakeCompactable{testutil.NewRecorderStream()}
|
|
|
|
|
+ tb := newRevision(fc, 10, rg, compactable)
|
|
|
|
|
|
|
|
tb.Run()
|
|
tb.Run()
|
|
|
tb.Pause()
|
|
tb.Pause()
|
|
|
|
|
|
|
|
// tb will collect 3 hours of revisions but not compact since paused
|
|
// tb will collect 3 hours of revisions but not compact since paused
|
|
|
- n := int(time.Hour / checkCompactionInterval)
|
|
|
|
|
|
|
+ n := int(time.Hour / revInterval)
|
|
|
for i := 0; i < 3*n; i++ {
|
|
for i := 0; i < 3*n; i++ {
|
|
|
- fc.Advance(checkCompactionInterval)
|
|
|
|
|
|
|
+ fc.Advance(revInterval)
|
|
|
}
|
|
}
|
|
|
// tb ends up waiting for the clock
|
|
// tb ends up waiting for the clock
|
|
|
|
|
|
|
@@ -103,7 +94,7 @@ func TestRevisionPause(t *testing.T) {
|
|
|
tb.Resume()
|
|
tb.Resume()
|
|
|
|
|
|
|
|
// unblock clock, will kick off a compaction at hour 3:05
|
|
// unblock clock, will kick off a compaction at hour 3:05
|
|
|
- fc.Advance(checkCompactionInterval)
|
|
|
|
|
|
|
+ fc.Advance(revInterval)
|
|
|
rg.Wait(1)
|
|
rg.Wait(1)
|
|
|
a, err := compactable.Wait(1)
|
|
a, err := compactable.Wait(1)
|
|
|
if err != nil {
|
|
if err != nil {
|