open-consul/consul/tombstone_gc_test.go

105 lines
1.8 KiB
Go
Raw Normal View History

package consul
import (
"testing"
"time"
)
func TestTombstoneGC_invalid(t *testing.T) {
_, err := NewTombstoneGC(0, 0)
if err == nil {
t.Fatalf("should fail")
}
_, err = NewTombstoneGC(time.Second, 0)
if err == nil {
t.Fatalf("should fail")
}
_, err = NewTombstoneGC(0, time.Second)
if err == nil {
t.Fatalf("should fail")
}
}
func TestTombstoneGC(t *testing.T) {
ttl := 20 * time.Millisecond
gran := 5 * time.Millisecond
gc, err := NewTombstoneGC(ttl, gran)
if err != nil {
t.Fatalf("should fail")
}
2015-01-05 22:58:59 +00:00
gc.SetEnabled(true)
2014-12-15 22:22:32 +00:00
if gc.PendingExpiration() {
t.Fatalf("should not be pending")
}
start := time.Now()
gc.Hint(100)
time.Sleep(2 * gran)
start2 := time.Now()
gc.Hint(120)
gc.Hint(125)
2014-12-15 22:22:32 +00:00
if !gc.PendingExpiration() {
t.Fatalf("should be pending")
}
select {
case index := <-gc.ExpireCh():
end := time.Now()
if end.Sub(start) < ttl {
t.Fatalf("expired early")
}
if index != 100 {
t.Fatalf("bad index: %d", index)
}
case <-time.After(ttl * 2):
t.Fatalf("should get expiration")
}
select {
case index := <-gc.ExpireCh():
end := time.Now()
if end.Sub(start2) < ttl {
t.Fatalf("expired early")
}
if index != 125 {
t.Fatalf("bad index: %d", index)
}
case <-time.After(ttl * 2):
t.Fatalf("should get expiration")
}
}
2014-12-11 06:33:26 +00:00
func TestTombstoneGC_Expire(t *testing.T) {
ttl := 10 * time.Millisecond
gran := 5 * time.Millisecond
gc, err := NewTombstoneGC(ttl, gran)
if err != nil {
t.Fatalf("should fail")
}
2015-01-05 22:58:59 +00:00
gc.SetEnabled(true)
2014-12-11 06:33:26 +00:00
2014-12-15 22:22:32 +00:00
if gc.PendingExpiration() {
t.Fatalf("should not be pending")
}
2014-12-11 06:33:26 +00:00
gc.Hint(100)
2015-01-05 22:58:59 +00:00
gc.SetEnabled(false)
2014-12-11 06:33:26 +00:00
2014-12-15 22:22:32 +00:00
if gc.PendingExpiration() {
t.Fatalf("should not be pending")
}
2014-12-11 06:33:26 +00:00
select {
case <-gc.ExpireCh():
2015-09-11 19:24:54 +00:00
t.Fatalf("should be reset")
2014-12-11 06:33:26 +00:00
case <-time.After(20 * time.Millisecond):
}
}