From 21ca6c498aec2879fd7b9796f55743e5f14d5a80 Mon Sep 17 00:00:00 2001 From: Andy Lindeman Date: Thu, 27 Apr 2017 23:26:05 -0400 Subject: [PATCH] Adds benchmark test --- .../util/workqueue/delaying_queue_test.go | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/staging/src/k8s.io/client-go/util/workqueue/delaying_queue_test.go b/staging/src/k8s.io/client-go/util/workqueue/delaying_queue_test.go index 78c92ad4dad..4c61939fa7e 100644 --- a/staging/src/k8s.io/client-go/util/workqueue/delaying_queue_test.go +++ b/staging/src/k8s.io/client-go/util/workqueue/delaying_queue_test.go @@ -18,6 +18,7 @@ package workqueue import ( "fmt" + "math/rand" "reflect" "testing" "time" @@ -214,6 +215,25 @@ func TestCopyShifting(t *testing.T) { } } +func BenchmarkDelayingQueue_AddAfter(b *testing.B) { + r := rand.New(rand.NewSource(time.Now().Unix())) + + fakeClock := clock.NewFakeClock(time.Now()) + q := newDelayingQueue(fakeClock, "") + + // Add items + for n := 0; n < b.N; n++ { + data := fmt.Sprintf("%d", n) + q.AddAfter(data, time.Duration(r.Int63n(int64(10*time.Minute)))) + } + + // Exercise item removal as well + fakeClock.Step(11 * time.Minute) + for n := 0; n < b.N; n++ { + _, _ = q.Get() + } +} + func waitForAdded(q DelayingInterface, depth int) error { return wait.Poll(1*time.Millisecond, 10*time.Second, func() (done bool, err error) { if q.Len() == depth {