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 tsmon | 5 package tsmon |
6 | 6 |
7 import ( | 7 import ( |
8 "testing" | 8 "testing" |
9 "time" | 9 "time" |
10 | 10 |
(...skipping 20 matching lines...) Expand all Loading... |
31 | 31 |
32 Convey("Sends a metric", t, func() { | 32 Convey("Sends a metric", t, func() { |
33 c, s, m := WithFakes(c) | 33 c, s, m := WithFakes(c) |
34 s.Cells = []types.Cell{ | 34 s.Cells = []types.Cell{ |
35 { | 35 { |
36 types.MetricInfo{ | 36 types.MetricInfo{ |
37 Name: "foo", | 37 Name: "foo", |
38 Fields: []field.Field{}, | 38 Fields: []field.Field{}, |
39 ValueType: types.StringType, | 39 ValueType: types.StringType, |
40 }, | 40 }, |
| 41 types.MetricMetadata{}, |
41 types.CellData{ | 42 types.CellData{ |
42 FieldVals: []interface{}{}, | 43 FieldVals: []interface{}{}, |
43 ResetTime: time.Unix(1234, 1000), | 44 ResetTime: time.Unix(1234, 1000), |
44 Value: "bar", | 45 Value: "bar", |
45 }, | 46 }, |
46 }, | 47 }, |
47 } | 48 } |
48 s.DT = defaultTarget | 49 s.DT = defaultTarget |
49 m.CS = 42 | 50 m.CS = 42 |
50 | 51 |
51 So(Flush(c), ShouldBeNil) | 52 So(Flush(c), ShouldBeNil) |
52 | 53 |
53 So(len(m.Cells), ShouldEqual, 1) | 54 So(len(m.Cells), ShouldEqual, 1) |
54 So(len(m.Cells[0]), ShouldEqual, 1) | 55 So(len(m.Cells[0]), ShouldEqual, 1) |
55 So(m.Cells[0][0], ShouldResemble, types.Cell{ | 56 So(m.Cells[0][0], ShouldResemble, types.Cell{ |
56 types.MetricInfo{ | 57 types.MetricInfo{ |
57 Name: "foo", | 58 Name: "foo", |
58 Fields: []field.Field{}, | 59 Fields: []field.Field{}, |
59 ValueType: types.StringType, | 60 ValueType: types.StringType, |
60 }, | 61 }, |
| 62 types.MetricMetadata{}, |
61 types.CellData{ | 63 types.CellData{ |
62 FieldVals: []interface{}{}, | 64 FieldVals: []interface{}{}, |
63 ResetTime: time.Unix(1234, 1000), | 65 ResetTime: time.Unix(1234, 1000), |
64 Value: "bar", | 66 Value: "bar", |
65 }, | 67 }, |
66 }) | 68 }) |
67 }) | 69 }) |
68 | 70 |
69 Convey("Splits up ChunkSize metrics", t, func() { | 71 Convey("Splits up ChunkSize metrics", t, func() { |
70 c, s, m := WithFakes(c) | 72 c, s, m := WithFakes(c) |
71 s.Cells = make([]types.Cell, 43) | 73 s.Cells = make([]types.Cell, 43) |
72 s.DT = defaultTarget | 74 s.DT = defaultTarget |
73 m.CS = 42 | 75 m.CS = 42 |
74 | 76 |
75 for i := 0; i < 43; i++ { | 77 for i := 0; i < 43; i++ { |
76 s.Cells[i] = types.Cell{ | 78 s.Cells[i] = types.Cell{ |
77 types.MetricInfo{ | 79 types.MetricInfo{ |
78 Name: "foo", | 80 Name: "foo", |
79 Fields: []field.Field{}, | 81 Fields: []field.Field{}, |
80 ValueType: types.StringType, | 82 ValueType: types.StringType, |
81 }, | 83 }, |
| 84 types.MetricMetadata{}, |
82 types.CellData{ | 85 types.CellData{ |
83 FieldVals: []interface{}{}, | 86 FieldVals: []interface{}{}, |
84 ResetTime: time.Unix(1234, 1000), | 87 ResetTime: time.Unix(1234, 1000), |
85 Value: "bar", | 88 Value: "bar", |
86 }, | 89 }, |
87 } | 90 } |
88 } | 91 } |
89 | 92 |
90 So(Flush(c), ShouldBeNil) | 93 So(Flush(c), ShouldBeNil) |
91 | 94 |
92 So(len(m.Cells), ShouldEqual, 2) | 95 So(len(m.Cells), ShouldEqual, 2) |
93 So(len(m.Cells[0]), ShouldEqual, 42) | 96 So(len(m.Cells[0]), ShouldEqual, 42) |
94 So(len(m.Cells[1]), ShouldEqual, 1) | 97 So(len(m.Cells[1]), ShouldEqual, 1) |
95 }) | 98 }) |
96 | 99 |
97 Convey("Doesn't split metrics when ChunkSize is 0", t, func() { | 100 Convey("Doesn't split metrics when ChunkSize is 0", t, func() { |
98 c, s, m := WithFakes(c) | 101 c, s, m := WithFakes(c) |
99 s.Cells = make([]types.Cell, 43) | 102 s.Cells = make([]types.Cell, 43) |
100 s.DT = defaultTarget | 103 s.DT = defaultTarget |
101 m.CS = 0 | 104 m.CS = 0 |
102 | 105 |
103 for i := 0; i < 43; i++ { | 106 for i := 0; i < 43; i++ { |
104 s.Cells[i] = types.Cell{ | 107 s.Cells[i] = types.Cell{ |
105 types.MetricInfo{ | 108 types.MetricInfo{ |
106 Name: "foo", | 109 Name: "foo", |
107 Fields: []field.Field{}, | 110 Fields: []field.Field{}, |
108 ValueType: types.StringType, | 111 ValueType: types.StringType, |
109 }, | 112 }, |
| 113 types.MetricMetadata{}, |
110 types.CellData{ | 114 types.CellData{ |
111 FieldVals: []interface{}{}, | 115 FieldVals: []interface{}{}, |
112 ResetTime: time.Unix(1234, 1000), | 116 ResetTime: time.Unix(1234, 1000), |
113 Value: "bar", | 117 Value: "bar", |
114 }, | 118 }, |
115 } | 119 } |
116 } | 120 } |
117 | 121 |
118 So(Flush(c), ShouldBeNil) | 122 So(Flush(c), ShouldBeNil) |
119 | 123 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 // Each 'flush' gets blocked on sending into 'moments'. Once unb
locked, it | 156 // Each 'flush' gets blocked on sending into 'moments'. Once unb
locked, it |
153 // advances timer by 'interval' sec (1 sec in the test). | 157 // advances timer by 'interval' sec (1 sec in the test). |
154 So(<-moments, ShouldEqual, 1) | 158 So(<-moments, ShouldEqual, 1) |
155 So(<-moments, ShouldEqual, 2) | 159 So(<-moments, ShouldEqual, 2) |
156 // and so on ... | 160 // and so on ... |
157 | 161 |
158 // Doesn't timeout => works. | 162 // Doesn't timeout => works. |
159 flusher.stop() | 163 flusher.stop() |
160 }) | 164 }) |
161 } | 165 } |
OLD | NEW |