summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorBert Muthalaly <stijlist@google.com>2019-01-08 12:34:08 -0800
committerShentubot <shentubot@google.com>2019-01-08 12:35:35 -0800
commit3f45878b7323697c82e06649144e2a4f39018a12 (patch)
tree21d233748a2b0ab2ea9be12bb48f1acaceabed9f
parent5ce542ecc749cb9a1e8d216c7181aeaebfbc3110 (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.go4
-rw-r--r--pkg/tcpip/tcpip_test.go22
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)
+ }
+}