-
Notifications
You must be signed in to change notification settings - Fork 9.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
6f271d8
commit 3f85ae7
Showing
1 changed file
with
120 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,120 @@ | ||
// 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 ( | ||
"testing" | ||
"os" | ||
"github.com/coreos/etcd/mvcc/backend" | ||
) | ||
|
||
func BenchmarkLessorFindExpired1(b *testing.B) { benchmarkLessorFindExpired(1, b) } | ||
func BenchmarkLessorFindExpired10(b *testing.B) { benchmarkLessorFindExpired(10, b) } | ||
func BenchmarkLessorFindExpired100(b *testing.B) { benchmarkLessorFindExpired(100, b) } | ||
func BenchmarkLessorFindExpired1000(b *testing.B) { benchmarkLessorFindExpired(1000, b) } | ||
func BenchmarkLessorFindExpired10000(b *testing.B) { benchmarkLessorFindExpired(10000, b) } | ||
func BenchmarkLessorFindExpired100000(b *testing.B) { benchmarkLessorFindExpired(100000, b) } | ||
func BenchmarkLessorFindExpired1000000(b *testing.B) { benchmarkLessorFindExpired(1000000, b) } | ||
|
||
func BenchmarkLessorGrant1(b *testing.B) { benchmarkLessorGrant(1, b) } | ||
func BenchmarkLessorGrant10(b *testing.B) { benchmarkLessorGrant(10, b) } | ||
func BenchmarkLessorGrant100(b *testing.B) { benchmarkLessorGrant(100, b) } | ||
func BenchmarkLessorGrant1000(b *testing.B) { benchmarkLessorGrant(1000, b) } | ||
func BenchmarkLessorGrant10000(b *testing.B) { benchmarkLessorGrant(10000, b) } | ||
func BenchmarkLessorGrant100000(b *testing.B) { benchmarkLessorGrant(100000, b) } | ||
func BenchmarkLessorGrant1000000(b *testing.B) { benchmarkLessorGrant(1000000, b) } | ||
|
||
func BenchmarkLessorRenew1(b *testing.B) { benchmarkLessorRenew(1, b) } | ||
func BenchmarkLessorRenew10(b *testing.B) { benchmarkLessorRenew(10, b) } | ||
func BenchmarkLessorRenew100(b *testing.B) { benchmarkLessorRenew(100, b) } | ||
func BenchmarkLessorRenew1000(b *testing.B) { benchmarkLessorRenew(1000, b) } | ||
func BenchmarkLessorRenew10000(b *testing.B) { benchmarkLessorRenew(10000, b) } | ||
func BenchmarkLessorRenew100000(b *testing.B) { benchmarkLessorRenew(100000, b) } | ||
func BenchmarkLessorRenew1000000(b *testing.B) { benchmarkLessorRenew(1000000, b) } | ||
|
||
func BenchmarkLessorRevoke1(b *testing.B) { benchmarkLessorRevoke(1, b) } | ||
func BenchmarkLessorRevoke10(b *testing.B) { benchmarkLessorRevoke(10, b) } | ||
func BenchmarkLessorRevoke100(b *testing.B) { benchmarkLessorRevoke(100, b) } | ||
func BenchmarkLessorRevoke1000(b *testing.B) { benchmarkLessorRevoke(1000, b) } | ||
func BenchmarkLessorRevoke10000(b *testing.B) { benchmarkLessorRevoke(10000, b) } | ||
func BenchmarkLessorRevoke100000(b *testing.B) { benchmarkLessorRevoke(100000, b) } | ||
func BenchmarkLessorRevoke1000000(b *testing.B) { benchmarkLessorRevoke(1000000, b) } | ||
|
||
func benchmarkLessorFindExpired(size int, b *testing.B) { | ||
be, tmpPath := backend.NewDefaultTmpBackend() | ||
le := newLessor(be, minLeaseTTL) | ||
defer le.Stop() | ||
defer cleanup(be, tmpPath) | ||
le.Promote(0) | ||
for i := 0; i < size; i++ { | ||
le.Grant(LeaseID(i), int64(100+i)) | ||
} | ||
le.mu.Lock() //Stop the findExpiredLeases call in the runloop | ||
defer le.mu.Unlock() | ||
b.ResetTimer() | ||
for i := 0; i < b.N; i++ { | ||
le.findExpiredLeases(1000) | ||
} | ||
} | ||
|
||
func benchmarkLessorGrant(size int, b *testing.B) { | ||
be, tmpPath := backend.NewDefaultTmpBackend() | ||
le := newLessor(be, minLeaseTTL) | ||
defer le.Stop() | ||
defer cleanup(be, tmpPath) | ||
for i := 0; i < size; i++ { | ||
le.Grant(LeaseID(i), int64(100+i)) | ||
} | ||
b.ResetTimer() | ||
for i := 0; i < b.N; i++ { | ||
le.Grant(LeaseID(i+size), int64(100+i+size)) | ||
} | ||
} | ||
|
||
func benchmarkLessorRevoke(size int, b *testing.B) { | ||
be, tmpPath := backend.NewDefaultTmpBackend() | ||
le := newLessor(be, minLeaseTTL) | ||
defer le.Stop() | ||
defer cleanup(be, tmpPath) | ||
for i := 0; i < size; i++ { | ||
le.Grant(LeaseID(i), int64(100+i)) | ||
} | ||
for i := 0; i < b.N; i++ { | ||
le.Grant(LeaseID(i+size), int64(100+i+size)) | ||
} | ||
b.ResetTimer() | ||
for i := 0; i < b.N; i++ { | ||
le.Revoke(LeaseID(i+size)) | ||
} | ||
} | ||
|
||
func benchmarkLessorRenew(size int, b *testing.B) { | ||
be, tmpPath := backend.NewDefaultTmpBackend() | ||
le := newLessor(be, minLeaseTTL) | ||
defer le.Stop() | ||
defer cleanup(be, tmpPath) | ||
for i := 0; i < size; i++ { | ||
le.Grant(LeaseID(i), int64(100+i)) | ||
} | ||
b.ResetTimer() | ||
for i := 0; i < b.N; i++ { | ||
le.Renew(LeaseID(i)) | ||
} | ||
} | ||
|
||
func cleanup(b backend.Backend, path string) { | ||
b.Close() | ||
os.Remove(path) | ||
} |