From 93569120531345fb32d0d6333a1c8e8f5e0031bf Mon Sep 17 00:00:00 2001 From: Josh Bleecher Snyder Date: Tue, 11 May 2021 12:09:51 -0700 Subject: [PATCH] wgengine/wglog: add BenchmarkSetPeer Because it showed up on hello profiles. Cycle through some moderate-sized sets of peers. This should cover the "small tweaks to netmap" and the "up/down cycle" cases. Signed-off-by: Josh Bleecher Snyder --- wgengine/wglog/wglog_test.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/wgengine/wglog/wglog_test.go b/wgengine/wglog/wglog_test.go index b804b5959..f2aad667a 100644 --- a/wgengine/wglog/wglog_test.go +++ b/wgengine/wglog/wglog_test.go @@ -8,6 +8,7 @@ import ( "fmt" "testing" + "tailscale.com/types/logger" "tailscale.com/types/wgkey" "tailscale.com/wgengine/wgcfg" "tailscale.com/wgengine/wglog" @@ -70,3 +71,30 @@ func stringer(s string) stringerString { type stringerString string func (s stringerString) String() string { return string(s) } + +func BenchmarkSetPeers(b *testing.B) { + b.ReportAllocs() + x := wglog.NewLogger(logger.Discard) + peers := [][]wgcfg.Peer{genPeers(0), genPeers(15), genPeers(16), genPeers(15)} + for i := 0; i < b.N; i++ { + for _, p := range peers { + x.SetPeers(p) + } + } +} + +func genPeers(n int) []wgcfg.Peer { + if n > 32 { + panic("too many peers") + } + if n == 0 { + return nil + } + peers := make([]wgcfg.Peer, n) + for i := range peers { + var k wgkey.Key + k[n] = byte(n) + peers[i].PublicKey = k + } + return peers +}