From f9b7a012b5c25df2ce95cb36f4ef5fe501472314 Mon Sep 17 00:00:00 2001 From: Gyuho Lee Date: Mon, 2 Apr 2018 14:59:19 -0700 Subject: [PATCH] lease: add "TestLeaseQueue" Signed-off-by: Gyuho Lee --- lease/lease_queue_test.go | 44 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 lease/lease_queue_test.go diff --git a/lease/lease_queue_test.go b/lease/lease_queue_test.go new file mode 100644 index 000000000..575fbc169 --- /dev/null +++ b/lease/lease_queue_test.go @@ -0,0 +1,44 @@ +// Copyright 2018 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package lease + +import ( + "container/heap" + "testing" + "time" +) + +func TestLeaseQueue(t *testing.T) { + le := &lessor{ + leaseHeap: make(LeaseQueue, 0), + leaseMap: make(map[LeaseID]*Lease), + } + heap.Init(&le.leaseHeap) + + // insert in reverse order of expiration time + for i := 50; i >= 1; i-- { + exp := time.Now().Add(time.Hour).UnixNano() + if i == 1 { + exp = time.Now().UnixNano() + } + le.leaseMap[LeaseID(i)] = &Lease{ID: LeaseID(i)} + heap.Push(&le.leaseHeap, &LeaseWithTime{id: LeaseID(i), expiration: exp}) + } + + // first element must be front + if le.leaseHeap[0].id != LeaseID(1) { + t.Fatalf("first item expected lease ID %d, got %d", LeaseID(1), le.leaseHeap[0].id) + } +}