From b9593b80ecd569453784e05481e944d180e344c1 Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Sun, 3 Nov 2013 23:51:48 -0800 Subject: [PATCH] feat add update heap test --- store/heap_test.go | 59 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 54 insertions(+), 5 deletions(-) diff --git a/store/heap_test.go b/store/heap_test.go index 02682b973..2ae573724 100644 --- a/store/heap_test.go +++ b/store/heap_test.go @@ -11,20 +11,18 @@ func TestHeapPushPop(t *testing.T) { h := &TTLKeyHeap{Map: make(map[*Node]int)} heap.Init(h) - kvs := make([]*Node, 10) - // add from older expire time to earlier expire time // the path is equal to ttl from now - for i, n := range kvs { + for i := 0; i < 10; i++ { path := fmt.Sprintf("%v", 10-i) m := time.Duration(10 - i) - n = newKV(nil, path, path, 0, 0, nil, "", time.Now().Add(time.Second*m)) + n := newKV(nil, path, path, 0, 0, nil, "", time.Now().Add(time.Second*m)) heap.Push(h, n) } min := time.Now() - for i := 0; i < 9; i++ { + for i := 0; i < 10; i++ { iNode := heap.Pop(h) node, _ := iNode.(*Node) if node.ExpireTime.Before(min) { @@ -34,3 +32,54 @@ func TestHeapPushPop(t *testing.T) { } } + +func TestHeapUpdate(t *testing.T) { + h := &TTLKeyHeap{Map: make(map[*Node]int)} + heap.Init(h) + + kvs := make([]*Node, 10) + + // add from older expire time to earlier expire time + // the path is equal to ttl from now + for i, n := range kvs { + path := fmt.Sprintf("%v", 10-i) + m := time.Duration(10 - i) + n = newKV(nil, path, path, 0, 0, nil, "", time.Now().Add(time.Second*m)) + kvs[i] = n + heap.Push(h, n) + } + + // Path 7 + kvs[3].ExpireTime = time.Now().Add(time.Second * 11) + + // Path 5 + kvs[5].ExpireTime = time.Now().Add(time.Second * 12) + + h.Update(kvs[3]) + h.Update(kvs[5]) + + min := time.Now() + + for i := 0; i < 10; i++ { + iNode := heap.Pop(h) + node, _ := iNode.(*Node) + if node.ExpireTime.Before(min) { + t.Fatal("heap sort wrong!") + } + min = node.ExpireTime + + if i == 8 { + if node.Path != "7" { + t.Fatal("heap sort wrong!", node.Path) + } + } + + if i == 9 { + if node.Path != "5" { + t.Fatal("heap sort wrong!") + } + } + + } + +}