| OLD | NEW |
| 1 // Copyright 2015 The LUCI Authors. All rights reserved. | 1 // Copyright 2015 The LUCI Authors. All rights reserved. |
| 2 // Use of this source code is governed under the Apache License, Version 2.0 | 2 // Use of this source code is governed under the Apache License, Version 2.0 |
| 3 // that can be found in the LICENSE file. | 3 // that can be found in the LICENSE file. |
| 4 | 4 |
| 5 package metric | 5 package metric |
| 6 | 6 |
| 7 import ( | 7 import ( |
| 8 "testing" | 8 "testing" |
| 9 | 9 |
| 10 "github.com/golang/protobuf/proto" | 10 "github.com/golang/protobuf/proto" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 return tsmon.WithState(context.Background(), &tsmon.State{ | 23 return tsmon.WithState(context.Background(), &tsmon.State{ |
| 24 S: store.NewInMemory(&target.Task{ServiceName: p
roto.String("default target")}), | 24 S: store.NewInMemory(&target.Task{ServiceName: p
roto.String("default target")}), |
| 25 M: monitor.NewNilMonitor(), | 25 M: monitor.NewNilMonitor(), |
| 26 RegisteredMetrics: map[string]types.Metric{}, | 26 RegisteredMetrics: map[string]types.Metric{}, |
| 27 }) | 27 }) |
| 28 } | 28 } |
| 29 | 29 |
| 30 func TestMetrics(t *testing.T) { | 30 func TestMetrics(t *testing.T) { |
| 31 Convey("Int", t, func() { | 31 Convey("Int", t, func() { |
| 32 c := makeContext() | 32 c := makeContext() |
| 33 » » m := NewIntIn(c, "foo", "description") | 33 » » m := NewIntIn(c, "foo", "description", types.MetricMetadata{}) |
| 34 | 34 |
| 35 v, err := m.Get(c) | 35 v, err := m.Get(c) |
| 36 So(v, ShouldEqual, 0) | 36 So(v, ShouldEqual, 0) |
| 37 So(err, ShouldBeNil) | 37 So(err, ShouldBeNil) |
| 38 | 38 |
| 39 v, err = m.Get(c, "field") | 39 v, err = m.Get(c, "field") |
| 40 So(err, ShouldNotBeNil) | 40 So(err, ShouldNotBeNil) |
| 41 | 41 |
| 42 err = m.Set(c, 42) | 42 err = m.Set(c, 42) |
| 43 So(err, ShouldBeNil) | 43 So(err, ShouldBeNil) |
| 44 | 44 |
| 45 v, err = m.Get(c) | 45 v, err = m.Get(c) |
| 46 So(v, ShouldEqual, 42) | 46 So(v, ShouldEqual, 42) |
| 47 So(err, ShouldBeNil) | 47 So(err, ShouldBeNil) |
| 48 | 48 |
| 49 err = m.Set(c, 42, "field") | 49 err = m.Set(c, 42, "field") |
| 50 So(err, ShouldNotBeNil) | 50 So(err, ShouldNotBeNil) |
| 51 | 51 |
| 52 » » So(func() { NewIntIn(c, "foo", "description") }, ShouldPanic) | 52 » » So(func() { NewIntIn(c, "foo", "description", types.MetricMetada
ta{}) }, ShouldPanic) |
| 53 }) | 53 }) |
| 54 | 54 |
| 55 Convey("Counter", t, func() { | 55 Convey("Counter", t, func() { |
| 56 c := makeContext() | 56 c := makeContext() |
| 57 » » m := NewCounterIn(c, "foo", "description") | 57 » » m := NewCounterIn(c, "foo", "description", types.MetricMetadata{
}) |
| 58 | 58 |
| 59 v, err := m.Get(c) | 59 v, err := m.Get(c) |
| 60 So(v, ShouldEqual, 0) | 60 So(v, ShouldEqual, 0) |
| 61 So(err, ShouldBeNil) | 61 So(err, ShouldBeNil) |
| 62 | 62 |
| 63 err = m.Add(c, 3) | 63 err = m.Add(c, 3) |
| 64 So(err, ShouldBeNil) | 64 So(err, ShouldBeNil) |
| 65 | 65 |
| 66 v, err = m.Get(c) | 66 v, err = m.Get(c) |
| 67 So(v, ShouldEqual, 3) | 67 So(v, ShouldEqual, 3) |
| 68 So(err, ShouldBeNil) | 68 So(err, ShouldBeNil) |
| 69 | 69 |
| 70 err = m.Add(c, 2) | 70 err = m.Add(c, 2) |
| 71 So(err, ShouldBeNil) | 71 So(err, ShouldBeNil) |
| 72 | 72 |
| 73 v, err = m.Get(c) | 73 v, err = m.Get(c) |
| 74 So(v, ShouldEqual, 5) | 74 So(v, ShouldEqual, 5) |
| 75 So(err, ShouldBeNil) | 75 So(err, ShouldBeNil) |
| 76 | 76 |
| 77 » » So(func() { NewCounterIn(c, "foo", "description") }, ShouldPanic
) | 77 » » So(func() { NewCounterIn(c, "foo", "description", types.MetricMe
tadata{}) }, ShouldPanic) |
| 78 }) | 78 }) |
| 79 | 79 |
| 80 Convey("Float", t, func() { | 80 Convey("Float", t, func() { |
| 81 c := makeContext() | 81 c := makeContext() |
| 82 » » m := NewFloatIn(c, "foo", "description") | 82 » » m := NewFloatIn(c, "foo", "description", types.MetricMetadata{}) |
| 83 | 83 |
| 84 v, err := m.Get(c) | 84 v, err := m.Get(c) |
| 85 So(v, ShouldAlmostEqual, 0.0) | 85 So(v, ShouldAlmostEqual, 0.0) |
| 86 So(err, ShouldBeNil) | 86 So(err, ShouldBeNil) |
| 87 | 87 |
| 88 v, err = m.Get(c, "field") | 88 v, err = m.Get(c, "field") |
| 89 So(err, ShouldNotBeNil) | 89 So(err, ShouldNotBeNil) |
| 90 | 90 |
| 91 err = m.Set(c, 42.3) | 91 err = m.Set(c, 42.3) |
| 92 So(err, ShouldBeNil) | 92 So(err, ShouldBeNil) |
| 93 | 93 |
| 94 v, err = m.Get(c) | 94 v, err = m.Get(c) |
| 95 So(v, ShouldAlmostEqual, 42.3) | 95 So(v, ShouldAlmostEqual, 42.3) |
| 96 So(err, ShouldBeNil) | 96 So(err, ShouldBeNil) |
| 97 | 97 |
| 98 err = m.Set(c, 42.3, "field") | 98 err = m.Set(c, 42.3, "field") |
| 99 So(err, ShouldNotBeNil) | 99 So(err, ShouldNotBeNil) |
| 100 | 100 |
| 101 » » So(func() { NewFloatIn(c, "foo", "description") }, ShouldPanic) | 101 » » So(func() { NewFloatIn(c, "foo", "description", types.MetricMeta
data{}) }, ShouldPanic) |
| 102 }) | 102 }) |
| 103 | 103 |
| 104 Convey("FloatCounter", t, func() { | 104 Convey("FloatCounter", t, func() { |
| 105 c := makeContext() | 105 c := makeContext() |
| 106 » » m := NewFloatCounterIn(c, "foo", "description") | 106 » » m := NewFloatCounterIn(c, "foo", "description", types.MetricMeta
data{}) |
| 107 | 107 |
| 108 v, err := m.Get(c) | 108 v, err := m.Get(c) |
| 109 So(v, ShouldAlmostEqual, 0.0) | 109 So(v, ShouldAlmostEqual, 0.0) |
| 110 So(err, ShouldBeNil) | 110 So(err, ShouldBeNil) |
| 111 | 111 |
| 112 err = m.Add(c, 3.1) | 112 err = m.Add(c, 3.1) |
| 113 So(err, ShouldBeNil) | 113 So(err, ShouldBeNil) |
| 114 | 114 |
| 115 v, err = m.Get(c) | 115 v, err = m.Get(c) |
| 116 So(v, ShouldAlmostEqual, 3.1) | 116 So(v, ShouldAlmostEqual, 3.1) |
| 117 So(err, ShouldBeNil) | 117 So(err, ShouldBeNil) |
| 118 | 118 |
| 119 err = m.Add(c, 2.2) | 119 err = m.Add(c, 2.2) |
| 120 So(err, ShouldBeNil) | 120 So(err, ShouldBeNil) |
| 121 | 121 |
| 122 v, err = m.Get(c) | 122 v, err = m.Get(c) |
| 123 So(v, ShouldAlmostEqual, 5.3) | 123 So(v, ShouldAlmostEqual, 5.3) |
| 124 So(err, ShouldBeNil) | 124 So(err, ShouldBeNil) |
| 125 | 125 |
| 126 » » So(func() { NewFloatCounterIn(c, "foo", "description") }, Should
Panic) | 126 » » So(func() { NewFloatCounterIn(c, "foo", "description", types.Met
ricMetadata{}) }, ShouldPanic) |
| 127 }) | 127 }) |
| 128 | 128 |
| 129 Convey("String", t, func() { | 129 Convey("String", t, func() { |
| 130 c := makeContext() | 130 c := makeContext() |
| 131 » » m := NewStringIn(c, "foo", "description") | 131 » » m := NewStringIn(c, "foo", "description", types.MetricMetadata{}
) |
| 132 | 132 |
| 133 v, err := m.Get(c) | 133 v, err := m.Get(c) |
| 134 So(v, ShouldEqual, "") | 134 So(v, ShouldEqual, "") |
| 135 So(err, ShouldBeNil) | 135 So(err, ShouldBeNil) |
| 136 | 136 |
| 137 v, err = m.Get(c, "field") | 137 v, err = m.Get(c, "field") |
| 138 So(err, ShouldNotBeNil) | 138 So(err, ShouldNotBeNil) |
| 139 | 139 |
| 140 err = m.Set(c, "hello") | 140 err = m.Set(c, "hello") |
| 141 So(err, ShouldBeNil) | 141 So(err, ShouldBeNil) |
| 142 | 142 |
| 143 v, err = m.Get(c) | 143 v, err = m.Get(c) |
| 144 So(v, ShouldEqual, "hello") | 144 So(v, ShouldEqual, "hello") |
| 145 So(err, ShouldBeNil) | 145 So(err, ShouldBeNil) |
| 146 | 146 |
| 147 err = m.Set(c, "hello", "field") | 147 err = m.Set(c, "hello", "field") |
| 148 So(err, ShouldNotBeNil) | 148 So(err, ShouldNotBeNil) |
| 149 | 149 |
| 150 » » So(func() { NewStringIn(c, "foo", "description") }, ShouldPanic) | 150 » » So(func() { NewStringIn(c, "foo", "description", types.MetricMet
adata{}) }, ShouldPanic) |
| 151 }) | 151 }) |
| 152 | 152 |
| 153 Convey("Bool", t, func() { | 153 Convey("Bool", t, func() { |
| 154 c := makeContext() | 154 c := makeContext() |
| 155 » » m := NewBoolIn(c, "foo", "description") | 155 » » m := NewBoolIn(c, "foo", "description", types.MetricMetadata{}) |
| 156 | 156 |
| 157 v, err := m.Get(c) | 157 v, err := m.Get(c) |
| 158 So(v, ShouldEqual, false) | 158 So(v, ShouldEqual, false) |
| 159 So(err, ShouldBeNil) | 159 So(err, ShouldBeNil) |
| 160 | 160 |
| 161 v, err = m.Get(c, "field") | 161 v, err = m.Get(c, "field") |
| 162 So(err, ShouldNotBeNil) | 162 So(err, ShouldNotBeNil) |
| 163 | 163 |
| 164 err = m.Set(c, true) | 164 err = m.Set(c, true) |
| 165 So(err, ShouldBeNil) | 165 So(err, ShouldBeNil) |
| 166 | 166 |
| 167 v, err = m.Get(c) | 167 v, err = m.Get(c) |
| 168 So(v, ShouldEqual, true) | 168 So(v, ShouldEqual, true) |
| 169 So(err, ShouldBeNil) | 169 So(err, ShouldBeNil) |
| 170 | 170 |
| 171 err = m.Set(c, true, "field") | 171 err = m.Set(c, true, "field") |
| 172 So(err, ShouldNotBeNil) | 172 So(err, ShouldNotBeNil) |
| 173 | 173 |
| 174 » » So(func() { NewBoolIn(c, "foo", "description") }, ShouldPanic) | 174 » » So(func() { NewBoolIn(c, "foo", "description", types.MetricMetad
ata{}) }, ShouldPanic) |
| 175 }) | 175 }) |
| 176 | 176 |
| 177 Convey("CumulativeDistribution", t, func() { | 177 Convey("CumulativeDistribution", t, func() { |
| 178 c := makeContext() | 178 c := makeContext() |
| 179 » » m := NewCumulativeDistributionIn(c, "foo", "description", distri
bution.FixedWidthBucketer(10, 20)) | 179 » » m := NewCumulativeDistributionIn(c, "foo", "description", types.
MetricMetadata{}, distribution.FixedWidthBucketer(10, 20)) |
| 180 | 180 |
| 181 v, err := m.Get(c) | 181 v, err := m.Get(c) |
| 182 So(v, ShouldBeNil) | 182 So(v, ShouldBeNil) |
| 183 So(err, ShouldBeNil) | 183 So(err, ShouldBeNil) |
| 184 | 184 |
| 185 So(m.Bucketer().GrowthFactor(), ShouldEqual, 0) | 185 So(m.Bucketer().GrowthFactor(), ShouldEqual, 0) |
| 186 So(m.Bucketer().Width(), ShouldEqual, 10) | 186 So(m.Bucketer().Width(), ShouldEqual, 10) |
| 187 So(m.Bucketer().NumFiniteBuckets(), ShouldEqual, 20) | 187 So(m.Bucketer().NumFiniteBuckets(), ShouldEqual, 20) |
| 188 | 188 |
| 189 v, err = m.Get(c, "field") | 189 v, err = m.Get(c, "field") |
| 190 So(err, ShouldNotBeNil) | 190 So(err, ShouldNotBeNil) |
| 191 | 191 |
| 192 err = m.Add(c, 5) | 192 err = m.Add(c, 5) |
| 193 So(err, ShouldBeNil) | 193 So(err, ShouldBeNil) |
| 194 | 194 |
| 195 v, err = m.Get(c) | 195 v, err = m.Get(c) |
| 196 So(v.Bucketer().GrowthFactor(), ShouldEqual, 0) | 196 So(v.Bucketer().GrowthFactor(), ShouldEqual, 0) |
| 197 So(v.Bucketer().Width(), ShouldEqual, 10) | 197 So(v.Bucketer().Width(), ShouldEqual, 10) |
| 198 So(v.Bucketer().NumFiniteBuckets(), ShouldEqual, 20) | 198 So(v.Bucketer().NumFiniteBuckets(), ShouldEqual, 20) |
| 199 So(v.Sum(), ShouldEqual, 5) | 199 So(v.Sum(), ShouldEqual, 5) |
| 200 So(v.Count(), ShouldEqual, 1) | 200 So(v.Count(), ShouldEqual, 1) |
| 201 So(err, ShouldBeNil) | 201 So(err, ShouldBeNil) |
| 202 | 202 |
| 203 » » So(func() { NewCumulativeDistributionIn(c, "foo", "description",
m.Bucketer()) }, ShouldPanic) | 203 » » So(func() { NewCumulativeDistributionIn(c, "foo", "description",
types.MetricMetadata{}, m.Bucketer()) }, ShouldPanic) |
| 204 }) | 204 }) |
| 205 | 205 |
| 206 Convey("NonCumulativeDistribution", t, func() { | 206 Convey("NonCumulativeDistribution", t, func() { |
| 207 c := makeContext() | 207 c := makeContext() |
| 208 » » m := NewNonCumulativeDistributionIn(c, "foo", "description", dis
tribution.FixedWidthBucketer(10, 20)) | 208 » » m := NewNonCumulativeDistributionIn(c, "foo", "description", typ
es.MetricMetadata{}, distribution.FixedWidthBucketer(10, 20)) |
| 209 | 209 |
| 210 v, err := m.Get(c) | 210 v, err := m.Get(c) |
| 211 So(v, ShouldBeNil) | 211 So(v, ShouldBeNil) |
| 212 So(err, ShouldBeNil) | 212 So(err, ShouldBeNil) |
| 213 | 213 |
| 214 So(m.Bucketer().GrowthFactor(), ShouldEqual, 0) | 214 So(m.Bucketer().GrowthFactor(), ShouldEqual, 0) |
| 215 So(m.Bucketer().Width(), ShouldEqual, 10) | 215 So(m.Bucketer().Width(), ShouldEqual, 10) |
| 216 So(m.Bucketer().NumFiniteBuckets(), ShouldEqual, 20) | 216 So(m.Bucketer().NumFiniteBuckets(), ShouldEqual, 20) |
| 217 | 217 |
| 218 v, err = m.Get(c, "field") | 218 v, err = m.Get(c, "field") |
| 219 So(err, ShouldNotBeNil) | 219 So(err, ShouldNotBeNil) |
| 220 | 220 |
| 221 d := distribution.New(m.Bucketer()) | 221 d := distribution.New(m.Bucketer()) |
| 222 d.Add(15) | 222 d.Add(15) |
| 223 err = m.Set(c, d) | 223 err = m.Set(c, d) |
| 224 So(err, ShouldBeNil) | 224 So(err, ShouldBeNil) |
| 225 | 225 |
| 226 v, err = m.Get(c) | 226 v, err = m.Get(c) |
| 227 So(v.Bucketer().GrowthFactor(), ShouldEqual, 0) | 227 So(v.Bucketer().GrowthFactor(), ShouldEqual, 0) |
| 228 So(v.Bucketer().Width(), ShouldEqual, 10) | 228 So(v.Bucketer().Width(), ShouldEqual, 10) |
| 229 So(v.Bucketer().NumFiniteBuckets(), ShouldEqual, 20) | 229 So(v.Bucketer().NumFiniteBuckets(), ShouldEqual, 20) |
| 230 So(v.Sum(), ShouldEqual, 15) | 230 So(v.Sum(), ShouldEqual, 15) |
| 231 So(v.Count(), ShouldEqual, 1) | 231 So(v.Count(), ShouldEqual, 1) |
| 232 So(err, ShouldBeNil) | 232 So(err, ShouldBeNil) |
| 233 | 233 |
| 234 » » So(func() { NewNonCumulativeDistributionIn(c, "foo", "descriptio
n", m.Bucketer()) }, ShouldPanic) | 234 » » So(func() { NewNonCumulativeDistributionIn(c, "foo", "descriptio
n", types.MetricMetadata{}, m.Bucketer()) }, ShouldPanic) |
| 235 }) | 235 }) |
| 236 } | 236 } |
| OLD | NEW |