wgengine/magicsock: limit redundant log spam on packets from low-pri addresses

Fixes #407

Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
Brad Fitzpatrick
2020-06-11 09:40:21 -07:00
parent d05b0500ac
commit 280e8884dd
2 changed files with 42 additions and 5 deletions
+28 -4
View File
@@ -712,9 +712,10 @@ func TestAddrSet(t *testing.T) {
want string // comma-separated
}
tests := []struct {
name string
as *AddrSet
steps []step
name string
as *AddrSet
steps []step
logCheck func(t *testing.T, logged []byte)
}{
{
name: "reg_packet_no_curaddr",
@@ -783,12 +784,32 @@ func TestAddrSet(t *testing.T) {
{advance: 3, b: regPacket, want: "10.0.0.1:123"},
},
},
{
name: "low_pri",
as: &AddrSet{
addrs: udpAddrs("127.3.3.40:1", "123.45.67.89:123", "10.0.0.1:123"),
curAddr: 2,
},
steps: []step{
{updateDst: mustUDPAddr("123.45.67.89:123")},
{updateDst: mustUDPAddr("123.45.67.89:123")},
},
logCheck: func(t *testing.T, logged []byte) {
if n := bytes.Count(logged, []byte(", keeping current ")); n != 1 {
t.Errorf("low-prio keeping current logged %d times; want 1", n)
}
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
setT(t)
faket := time.Unix(0, 0)
tt.as.Logf = logf
var logBuf bytes.Buffer
tt.as.Logf = func(format string, args ...interface{}) {
fmt.Fprintf(&logBuf, format, args...)
logf(format, args...)
}
tt.as.clock = func() time.Time { return faket }
for i, st := range tt.steps {
faket = faket.Add(st.advance)
@@ -804,6 +825,9 @@ func TestAddrSet(t *testing.T) {
t.Errorf("step %d: got %v; want %v", i, gotStr, st.want)
}
}
if tt.logCheck != nil {
tt.logCheck(t, logBuf.Bytes())
}
})
setT(t)
}