diff options
author | Bert Muthalaly <stijlist@google.com> | 2019-01-08 12:34:08 -0800 |
---|---|---|
committer | Shentubot <shentubot@google.com> | 2019-01-08 12:35:35 -0800 |
commit | 3f45878b7323697c82e06649144e2a4f39018a12 (patch) | |
tree | 21d233748a2b0ab2ea9be12bb48f1acaceabed9f | |
parent | 5ce542ecc749cb9a1e8d216c7181aeaebfbc3110 (diff) |
Implement Stringer for tcpip.StatCounter
This enables formatting tcpip.Stats readably with %+v.
PiperOrigin-RevId: 228379088
Change-Id: I6a9876454a22f151ee752cf94589b4188729458f
-rw-r--r-- | pkg/tcpip/tcpip.go | 4 | ||||
-rw-r--r-- | pkg/tcpip/tcpip_test.go | 22 |
2 files changed, 26 insertions, 0 deletions
diff --git a/pkg/tcpip/tcpip.go b/pkg/tcpip/tcpip.go index 7d4fbe075..fef5ba0e4 100644 --- a/pkg/tcpip/tcpip.go +++ b/pkg/tcpip/tcpip.go @@ -568,6 +568,10 @@ func (s *StatCounter) IncrementBy(v uint64) { atomic.AddUint64(&s.count, v) } +func (s *StatCounter) String() string { + return strconv.FormatUint(s.Value(), 10) +} + // IPStats collects IP-specific stats (both v4 and v6). type IPStats struct { // PacketsReceived is the total number of IP packets received from the link diff --git a/pkg/tcpip/tcpip_test.go b/pkg/tcpip/tcpip_test.go index 361e359d4..1f7b04398 100644 --- a/pkg/tcpip/tcpip_test.go +++ b/pkg/tcpip/tcpip_test.go @@ -15,7 +15,9 @@ package tcpip import ( + "fmt" "net" + "strings" "testing" ) @@ -193,3 +195,23 @@ func TestAddressString(t *testing.T) { } } } + +func TestStatsString(t *testing.T) { + got := fmt.Sprintf("%+v", Stats{}.FillIn()) + + matchers := []string{ + // Print root-level stats correctly. + "UnknownProtocolRcvdPackets:0", + // Print protocol-specific stats correctly. + "TCP:{ActiveConnectionOpenings:0", + } + + for _, m := range matchers { + if !strings.Contains(got, m) { + t.Errorf("string.Contains(got, %q) = false", m) + } + } + if t.Failed() { + t.Logf(`got = fmt.Sprintf("%%+v", Stats{}.FillIn()) = %q`, got) + } +} |