Permalink
Browse files

client: fix instance metric tests

  • Loading branch information...
1 parent bc7d4a9 commit 50bde18687d4f577e90982df6e330628e97ec9a6 @suyash suyash committed Aug 12, 2016
Showing with 43 additions and 31 deletions.
  1. +43 −31 client_test.go
View
@@ -138,7 +138,7 @@ func findMetric(metric Metric, metrics map[uint64]mmvdump.Metric) (uint64, mmvdu
return 0, nil
}
-func findValue(off uint64, values map[uint64]*mmvdump.Value) (uint64, *mmvdump.Value) {
+func findSingletonValue(off uint64, values map[uint64]*mmvdump.Value) (uint64, *mmvdump.Value) {
for voff, v := range values {
if uint64(v.Metric) == off {
return voff, v
@@ -148,6 +148,16 @@ func findValue(off uint64, values map[uint64]*mmvdump.Value) (uint64, *mmvdump.V
return 0, nil
}
+func findInstanceValue(off, ioff uint64, values map[uint64]*mmvdump.Value) (uint64, *mmvdump.Value) {
+ for voff, v := range values {
+ if uint64(v.Metric) == off && uint64(v.Instance) == ioff {
+ return voff, v
+ }
+ }
+
+ return 0, nil
+}
+
func findInstanceDomain(indom *PCPInstanceDomain, indoms map[uint64]*mmvdump.InstanceDomain) (uint64, *mmvdump.InstanceDomain) {
for off, in := range indoms {
if in.Serial == indom.id {
@@ -276,15 +286,15 @@ func matchSingletonMetricAndValue(met *PCPSingletonMetric, metrics map[uint64]mm
matchSingletonMetric(met, metric, strings, t)
- _, mv := findValue(off, values)
+ _, mv := findSingletonValue(off, values)
if mv == nil {
t.Errorf("expected a value for metric %v", met.name)
} else {
matchSingletonValue(met, mv, metrics, strings, t)
}
}
-func matchInstanceMetricAndValues(met *PCPInstanceMetric, metrics map[uint64]mmvdump.Metric, values map[uint64]*mmvdump.Value, strings map[uint64]*mmvdump.String, t *testing.T) {
+func matchInstanceMetricAndValues(met *PCPInstanceMetric, metrics map[uint64]mmvdump.Metric, values map[uint64]*mmvdump.Value, instances map[uint64]mmvdump.Instance, strings map[uint64]*mmvdump.String, t *testing.T) {
_, metric := findMetric(met, metrics)
if metric == nil {
t.Errorf("expected a metric of name %v", met.name)
@@ -293,17 +303,19 @@ func matchInstanceMetricAndValues(met *PCPInstanceMetric, metrics map[uint64]mmv
matchInstanceMetric(met, metric, strings, t)
- // for n, i := range met.vals {
- // _, mv := findValue(off, values)
- // if mv == nil {
- // t.Errorf("expected a value at offset %v", i.offset)
- // } else {
- // matchInstanceValue(mv, i, n, met, t)
- // }
- // }
+ for n, i := range met.indom.instances {
+ off, _ := findMetric(met, metrics)
+ _, mv := findInstanceValue(off, uint64(i.offset), values)
+
+ if mv == nil {
+ t.Errorf("expected a value at offset %v", i.offset)
+ } else {
+ matchInstanceValue(mv, met.vals[n], n, met, metrics, strings, t)
+ }
+ }
}
-func matchMetricsAndValues(metrics map[uint64]mmvdump.Metric, values map[uint64]*mmvdump.Value, strings map[uint64]*mmvdump.String, c *PCPClient, t *testing.T) {
+func matchMetricsAndValues(metrics map[uint64]mmvdump.Metric, values map[uint64]*mmvdump.Value, instances map[uint64]mmvdump.Instance, strings map[uint64]*mmvdump.String, c *PCPClient, t *testing.T) {
if c.Registry().MetricCount() != len(metrics) {
t.Errorf("expected %v metrics, got %v", c.Registry().MetricCount(), len(metrics))
}
@@ -317,7 +329,7 @@ func matchMetricsAndValues(metrics map[uint64]mmvdump.Metric, values map[uint64]
case *PCPSingletonMetric:
matchSingletonMetricAndValue(met, metrics, values, strings, t)
case *PCPInstanceMetric:
- matchInstanceMetricAndValues(met, metrics, values, strings, t)
+ matchInstanceMetricAndValues(met, metrics, values, instances, strings, t)
}
}
}
@@ -357,7 +369,7 @@ func TestWritingSingletonMetric(t *testing.T) {
t.Errorf("expected client to write a ProcessFlag, writing %v", MMVFlag(h.Flag))
}
- matchMetricsAndValues(m, v, s, c, t)
+ matchMetricsAndValues(m, v, i, s, c, t)
// strings
@@ -393,21 +405,21 @@ func TestUpdatingSingletonMetric(t *testing.T) {
c.MustStart()
defer c.MustStop()
- _, _, metrics, values, _, _, strings, err := mmvdump.Dump(c.writer.Bytes())
- matchMetricsAndValues(metrics, values, strings, c, t)
+ _, _, metrics, values, instances, _, strings, err := mmvdump.Dump(c.writer.Bytes())
+ matchMetricsAndValues(metrics, values, instances, strings, c, t)
if m.(SingletonMetric).Val().(int32) != 10 {
t.Errorf("expected metric value to be 10")
}
m.(SingletonMetric).MustSet(42)
- _, _, metrics, values, _, _, strings, err = mmvdump.Dump(c.writer.Bytes())
+ _, _, metrics, values, instances, _, strings, err = mmvdump.Dump(c.writer.Bytes())
if err != nil {
t.Errorf("cannot get dump, error: %v", err)
}
- matchMetricsAndValues(metrics, values, strings, c, t)
+ matchMetricsAndValues(metrics, values, instances, strings, c, t)
if m.(SingletonMetric).Val().(int32) != 42 {
t.Errorf("expected metric value to be 42")
@@ -519,7 +531,7 @@ func TestWritingInstanceMetric(t *testing.T) {
t.Errorf("expected client to write a ProcessFlag, writing %v", MMVFlag(h.Flag))
}
- matchMetricsAndValues(mets, vals, ss, c, t)
+ matchMetricsAndValues(mets, vals, ins, ss, c, t)
matchInstancesAndInstanceDomains(ins, ids, ss, c, t)
@@ -549,7 +561,7 @@ func TestUpdatingInstanceMetric(t *testing.T) {
t.Errorf("cannot get dump, error: %v", err)
}
- matchMetricsAndValues(metrics, values, strings, c, t)
+ matchMetricsAndValues(metrics, values, instances, strings, c, t)
matchInstancesAndInstanceDomains(instances, indoms, strings, c, t)
im := m.(InstanceMetric)
@@ -579,7 +591,7 @@ func TestUpdatingInstanceMetric(t *testing.T) {
t.Errorf("cannot get dump, error: %v", err)
}
- matchMetricsAndValues(metrics, values, strings, c, t)
+ matchMetricsAndValues(metrics, values, instances, strings, c, t)
matchInstancesAndInstanceDomains(instances, indoms, strings, c, t)
v, err = im.ValInstance("a")
@@ -612,7 +624,7 @@ func TestStringValueWriting(t *testing.T) {
sm := metric.(*PCPSingletonMetric)
off, _ := findMetric(sm, m)
- voff, val := findValue(off, v)
+ voff, val := findSingletonValue(off, v)
if val == nil {
t.Errorf("expected value at %v", voff)
@@ -635,7 +647,7 @@ func TestStringValueWriting(t *testing.T) {
return
}
- _, val = findValue(off, v)
+ _, val = findSingletonValue(off, v)
add := uint64(val.Extra)
if str, ok := s[add]; !ok {
t.Errorf("expected a string at address %v", add)
@@ -672,7 +684,7 @@ func TestWritingDifferentSemantics(t *testing.T) {
t.Errorf("cannot create dump: %v", err)
}
- matchMetricsAndValues(metrics, values, strings, c, t)
+ matchMetricsAndValues(metrics, values, instances, strings, c, t)
matchInstancesAndInstanceDomains(instances, indoms, strings, c, t)
}
@@ -726,7 +738,7 @@ func TestWritingDifferentUnits(t *testing.T) {
return
}
- matchMetricsAndValues(metrics, values, strings, c, t)
+ matchMetricsAndValues(metrics, values, instances, strings, c, t)
matchInstancesAndInstanceDomains(instances, indoms, strings, c, t)
}
@@ -762,7 +774,7 @@ func TestWritingDifferentTypes(t *testing.T) {
return
}
- matchMetricsAndValues(metrics, values, strings, c, t)
+ matchMetricsAndValues(metrics, values, instances, strings, c, t)
matchInstancesAndInstanceDomains(instances, indoms, strings, c, t)
}
@@ -792,7 +804,7 @@ func TestMMV2MetricWriting(t *testing.T) {
t.Error("expected tocs to be 3")
}
- matchMetricsAndValues(metrics, values, strings, c, t)
+ matchMetricsAndValues(metrics, values, instances, strings, c, t)
matchInstancesAndInstanceDomains(instances, indoms, strings, c, t)
if len(strings) != 1 {
@@ -838,7 +850,7 @@ func TestMMV2InstanceWriting(t *testing.T) {
t.Error("expected tocs to be 3")
}
- matchMetricsAndValues(metrics, values, strings, c, t)
+ matchMetricsAndValues(metrics, values, instances, strings, c, t)
matchInstancesAndInstanceDomains(instances, indoms, strings, c, t)
if len(strings) != 2 {
@@ -851,16 +863,16 @@ func toFixed(v float64, p int) float64 {
}
func matchSingleDump(expected interface{}, m PCPMetric, c *PCPClient, t *testing.T) {
- _, _, metrics, values, _, _, strings, err := mmvdump.Dump(c.writer.Bytes())
+ _, _, metrics, values, instances, _, strings, err := mmvdump.Dump(c.writer.Bytes())
if err != nil {
t.Errorf("cannot get dump: %v", err)
return
}
- matchMetricsAndValues(metrics, values, strings, c, t)
+ matchMetricsAndValues(metrics, values, instances, strings, c, t)
off, _ := findMetric(m, metrics)
- _, v := findValue(off, values)
+ _, v := findSingletonValue(off, values)
if val, err := mmvdump.FixedVal(v.Val, mmvdump.Type(m.Type())); val != expected {
t.Errorf("expected metric to be %v, got %v", expected, val)

0 comments on commit 50bde18

Please sign in to comment.