Permalink
Browse files
client: add support for CounterVector
- Loading branch information...
Showing
with
53 additions
and
0 deletions.
-
+5
−0
client.go
-
+48
−0
client_test.go
|
|
@@ -492,6 +492,11 @@ func (c *PCPClient) writeMetrics() { |
|
|
c.writeSingletonMetric(metric.PCPSingletonMetric)
|
|
|
wg.Done()
|
|
|
}(metric)
|
|
|
+ case *PCPCounterVector:
|
|
|
+ go func(metric *PCPCounterVector) {
|
|
|
+ c.writeInstanceMetric(metric.PCPInstanceMetric)
|
|
|
+ wg.Done()
|
|
|
+ }(metric)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -997,3 +997,51 @@ func TestTimer(t *testing.T) { |
|
|
|
|
|
matchSingleDump(v, timer, c, t)
|
|
|
}
|
|
|
+
|
|
|
+func TestCounterVector(t *testing.T) {
|
|
|
+ cv, err := NewPCPCounterVector(map[string]int64{
|
|
|
+ "m1": 1,
|
|
|
+ "m2": 2,
|
|
|
+ }, "m.1")
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ t.Errorf("cannot create CounterVector, error: %v", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ c, err := NewPCPClient("c")
|
|
|
+ if err != nil {
|
|
|
+ t.Errorf("cannot create client, error: %v", err)
|
|
|
+ }
|
|
|
+
|
|
|
+ c.MustRegister(cv)
|
|
|
+
|
|
|
+ c.MustStart()
|
|
|
+ defer c.MustStop()
|
|
|
+
|
|
|
+ // Set
|
|
|
+
|
|
|
+ err = cv.Set(10, "m1")
|
|
|
+ if err != nil {
|
|
|
+ t.Errorf("cannot set an instance, error: %v", err)
|
|
|
+ }
|
|
|
+
|
|
|
+ if val, err := cv.Val("m1"); val != 10 {
|
|
|
+ t.Errorf("expected m.1[m1] to be 10, got %v", val)
|
|
|
+ } else if err != nil {
|
|
|
+ t.Errorf("cannot retrieve m.1[m1] value")
|
|
|
+ }
|
|
|
+
|
|
|
+ // Inc
|
|
|
+
|
|
|
+ err = cv.Inc(10, "m2")
|
|
|
+ if err != nil {
|
|
|
+ t.Errorf("cannot inc an instance, error: %v", err)
|
|
|
+ }
|
|
|
+
|
|
|
+ if val, err := cv.Val("m2"); val != 12 {
|
|
|
+ t.Errorf("expected m.1[m2] to be 12, got %v", val)
|
|
|
+ } else if err != nil {
|
|
|
+ t.Errorf("cannot retrieve m.1[m2] value")
|
|
|
+ }
|
|
|
+}
|
0 comments on commit
24abff6