mirror of
https://github.com/tailscale/tailscale.git
synced 2025-04-02 06:22:24 +00:00
wgengine/tsdns: truncate Map.PrettyDiffFrom string at 1KB
Hello's were painful. Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
cc99059fc2
commit
0430c2dd12
@ -92,6 +92,9 @@ func (m *Map) PrettyDiffFrom(old *Map) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
buf := new(strings.Builder)
|
buf := new(strings.Builder)
|
||||||
|
space := func() bool {
|
||||||
|
return buf.Len() < (1 << 10)
|
||||||
|
}
|
||||||
|
|
||||||
for len(oldNames) > 0 && len(newNames) > 0 {
|
for len(oldNames) > 0 && len(newNames) > 0 {
|
||||||
var name string
|
var name string
|
||||||
@ -109,6 +112,9 @@ func (m *Map) PrettyDiffFrom(old *Map) string {
|
|||||||
oldNames = oldNames[1:]
|
oldNames = oldNames[1:]
|
||||||
newNames = newNames[1:]
|
newNames = newNames[1:]
|
||||||
}
|
}
|
||||||
|
if !space() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
ipOld, inOld := oldNameToIP[name]
|
ipOld, inOld := oldNameToIP[name]
|
||||||
ipNew, inNew := newNameToIP[name]
|
ipNew, inNew := newNameToIP[name]
|
||||||
@ -128,6 +134,9 @@ func (m *Map) PrettyDiffFrom(old *Map) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, name := range oldNames {
|
for _, name := range oldNames {
|
||||||
|
if !space() {
|
||||||
|
break
|
||||||
|
}
|
||||||
if _, ok := newNameToIP[name]; !ok {
|
if _, ok := newNameToIP[name]; !ok {
|
||||||
buf.WriteByte('-')
|
buf.WriteByte('-')
|
||||||
printSingleNameIP(buf, name, oldNameToIP[name])
|
printSingleNameIP(buf, name, oldNameToIP[name])
|
||||||
@ -135,11 +144,17 @@ func (m *Map) PrettyDiffFrom(old *Map) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, name := range newNames {
|
for _, name := range newNames {
|
||||||
|
if !space() {
|
||||||
|
break
|
||||||
|
}
|
||||||
if _, ok := oldNameToIP[name]; !ok {
|
if _, ok := oldNameToIP[name]; !ok {
|
||||||
buf.WriteByte('+')
|
buf.WriteByte('+')
|
||||||
printSingleNameIP(buf, name, newNameToIP[name])
|
printSingleNameIP(buf, name, newNameToIP[name])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if !space() {
|
||||||
|
buf.WriteString("... [truncated]\n")
|
||||||
|
}
|
||||||
|
|
||||||
return buf.String()
|
return buf.String()
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,8 @@
|
|||||||
package tsdns
|
package tsdns
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"inet.af/netaddr"
|
"inet.af/netaddr"
|
||||||
@ -135,4 +137,20 @@ func TestPrettyDiffFrom(t *testing.T) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
t.Run("truncated", func(t *testing.T) {
|
||||||
|
small := NewMap(nil, nil)
|
||||||
|
m := map[string]netaddr.IP{}
|
||||||
|
for i := 0; i < 5000; i++ {
|
||||||
|
m[fmt.Sprintf("host%d.ipn.dev.", i)] = netaddr.IPv4(100, 64, 1, 1)
|
||||||
|
}
|
||||||
|
veryBig := NewMap(m, nil)
|
||||||
|
diff := veryBig.PrettyDiffFrom(small)
|
||||||
|
if len(diff) > 3<<10 {
|
||||||
|
t.Errorf("pretty diff too large: %d bytes", len(diff))
|
||||||
|
}
|
||||||
|
if !strings.Contains(diff, "truncated") {
|
||||||
|
t.Errorf("big diff not truncated")
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user