1 /* Copyright 2022 The TensorFlow Authors. All Rights Reserved.
2
3 Licensed under the Apache License, Version 2.0 (the "License");
4 you may not use this file except in compliance with the License.
5 You may obtain a copy of the License at
6
7 http://www.apache.org/licenses/LICENSE-2.0
8
9 Unless required by applicable law or agreed to in writing, software
10 distributed under the License is distributed on an "AS IS" BASIS,
11 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 See the License for the specific language governing permissions and
13 limitations under the License.
14 ==============================================================================*/
15 #include "tensorflow/core/lib/monitoring/cell_reader.h"
16
17 #include <cstdint>
18 #include <string>
19 #include <vector>
20
21 #include "tensorflow/core/lib/monitoring/counter.h"
22 #include "tensorflow/core/lib/monitoring/gauge.h"
23 #include "tensorflow/core/lib/monitoring/percentile_sampler.h"
24 #include "tensorflow/core/lib/monitoring/sampler.h"
25 #include "tensorflow/core/lib/monitoring/test_utils.h"
26 #include "tensorflow/core/lib/monitoring/types.h"
27 #include "tensorflow/core/platform/test.h"
28
29 namespace tensorflow {
30 namespace monitoring {
31 namespace testing {
32 namespace {
33
GetDefaultPercentiles()34 std::vector<double> GetDefaultPercentiles() {
35 return {25.0, 50.0, 80.0, 90.0, 95.0, 99.0};
36 }
37
38 auto* test_counter = monitoring::Counter<0>::New(
39 "/tensorflow/monitoring/test/counter", "Test counter.");
40
41 auto* test_counter_with_labels = monitoring::Counter<2>::New(
42 "/tensorflow/monitoring/test/counter_with_labels",
43 "Test counter with two labels.", "label1", "label2");
44
45 auto* test_sampler = monitoring::Sampler<0>::New(
46 {"/tensorflow/monitoring/test/sampler", "Test sampler."},
47 /*buckets=*/monitoring::Buckets::Explicit(
48 {0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0}));
49
50 auto* test_sampler_with_labels = monitoring::Sampler<2>::New(
51 {"/tensorflow/monitoring/test/sampler_with_labels", "Test sampler.",
52 "label1", "label2"},
53 /*buckets=*/monitoring::Buckets::Exponential(
54 /*scale=*/1, /*growth_factor=*/10, /*bucket_count=*/5));
55
56 auto* test_int_gauge = monitoring::Gauge<int64_t, 0>::New(
57 "/tensorflow/monitoring/test/int_gauge", "Test gauge.");
58
59 auto* test_int_gauge_with_labels = monitoring::Gauge<int64_t, 2>::New(
60 "/tensorflow/monitoring/test/int_gauge_with_labels", "Test gauge.",
61 "label1", "label2");
62
63 auto* test_string_gauge = monitoring::Gauge<std::string, 0>::New(
64 "/tensorflow/monitoring/test/string_gauge", "Test gauge.");
65
66 auto* test_string_gauge_with_labels = monitoring::Gauge<std::string, 2>::New(
67 "/tensorflow/monitoring/test/string_gauge_with_labels", "Test gauge.",
68 "label1", "label2");
69
70 auto* test_bool_gauge = monitoring::Gauge<bool, 0>::New(
71 "/tensorflow/monitoring/test/bool_gauge", "Test gauge.");
72
73 auto* test_bool_gauge_with_labels = monitoring::Gauge<bool, 2>::New(
74 "/tensorflow/monitoring/test/bool_gauge_with_labels", "Test gauge.",
75 "label1", "label2");
76
77 auto* test_percentiles = monitoring::PercentileSampler<0>::New(
78 {"/tensorflow/monitoring/test/percentiles", "Test percentiles."},
79 GetDefaultPercentiles(), /*max_samples=*/1024,
80 monitoring::UnitOfMeasure::kTime);
81
82 auto* test_percentiles_with_labels = monitoring::PercentileSampler<2>::New(
83 {"/tensorflow/monitoring/test/percentiles_with_labels", "Test percentiles.",
84 "label1", "label2"},
85 GetDefaultPercentiles(), /*max_samples=*/1024,
86 monitoring::UnitOfMeasure::kTime);
87
TEST(CellReaderTest,CounterDeltaNoLabels)88 TEST(CellReaderTest, CounterDeltaNoLabels) {
89 CellReader<int64_t> cell_reader("/tensorflow/monitoring/test/counter");
90 EXPECT_EQ(cell_reader.Delta(), 0);
91
92 test_counter->GetCell()->IncrementBy(5);
93 EXPECT_EQ(cell_reader.Delta(), 5);
94
95 test_counter->GetCell()->IncrementBy(10);
96 EXPECT_EQ(cell_reader.Delta(), 10);
97
98 test_counter->GetCell()->IncrementBy(100);
99 EXPECT_EQ(cell_reader.Delta(), 100);
100 }
101
TEST(CellReaderTest,CounterReadNoLabels)102 TEST(CellReaderTest, CounterReadNoLabels) {
103 CellReader<int64_t> cell_reader("/tensorflow/monitoring/test/counter");
104 EXPECT_EQ(cell_reader.Read(), 0);
105
106 test_counter->GetCell()->IncrementBy(5);
107 EXPECT_EQ(cell_reader.Read(), 5);
108
109 test_counter->GetCell()->IncrementBy(10);
110 EXPECT_EQ(cell_reader.Read(), 15);
111
112 test_counter->GetCell()->IncrementBy(100);
113 EXPECT_EQ(cell_reader.Read(), 115);
114 }
115
TEST(CellReaderTest,CounterDeltaAndReadNoLabels)116 TEST(CellReaderTest, CounterDeltaAndReadNoLabels) {
117 CellReader<int64_t> cell_reader("/tensorflow/monitoring/test/counter");
118 EXPECT_EQ(cell_reader.Delta(), 0);
119 EXPECT_EQ(cell_reader.Read(), 0);
120
121 test_counter->GetCell()->IncrementBy(5);
122 EXPECT_EQ(cell_reader.Delta(), 5);
123 EXPECT_EQ(cell_reader.Read(), 5);
124
125 test_counter->GetCell()->IncrementBy(10);
126 EXPECT_EQ(cell_reader.Delta(), 10);
127 EXPECT_EQ(cell_reader.Read(), 15);
128
129 test_counter->GetCell()->IncrementBy(100);
130 EXPECT_EQ(cell_reader.Delta(), 100);
131 EXPECT_EQ(cell_reader.Read(), 115);
132 }
133
TEST(CellReaderTest,CounterDeltaWithLabels)134 TEST(CellReaderTest, CounterDeltaWithLabels) {
135 CellReader<int64_t> cell_reader(
136 "/tensorflow/monitoring/test/counter_with_labels");
137 EXPECT_EQ(cell_reader.Delta("x1", "y1"), 0);
138 EXPECT_EQ(cell_reader.Delta("x1", "y2"), 0);
139 EXPECT_EQ(cell_reader.Delta("x2", "y1"), 0);
140 EXPECT_EQ(cell_reader.Delta("x2", "y2"), 0);
141
142 test_counter_with_labels->GetCell("x1", "y1")->IncrementBy(1);
143 test_counter_with_labels->GetCell("x1", "y2")->IncrementBy(10);
144 test_counter_with_labels->GetCell("x2", "y1")->IncrementBy(100);
145 EXPECT_EQ(cell_reader.Delta("x1", "y1"), 1);
146 EXPECT_EQ(cell_reader.Delta("x1", "y2"), 10);
147 EXPECT_EQ(cell_reader.Delta("x2", "y1"), 100);
148 EXPECT_EQ(cell_reader.Delta("x2", "y2"), 0);
149
150 test_counter_with_labels->GetCell("x1", "y2")->IncrementBy(5);
151 test_counter_with_labels->GetCell("x2", "y1")->IncrementBy(50);
152 test_counter_with_labels->GetCell("x2", "y2")->IncrementBy(500);
153 EXPECT_EQ(cell_reader.Delta("x1", "y1"), 0);
154 EXPECT_EQ(cell_reader.Delta("x1", "y2"), 5);
155 EXPECT_EQ(cell_reader.Delta("x2", "y1"), 50);
156 EXPECT_EQ(cell_reader.Delta("x2", "y2"), 500);
157
158 test_counter_with_labels->GetCell("x1", "y1")->IncrementBy(1000);
159 test_counter_with_labels->GetCell("x2", "y2")->IncrementBy(1000);
160 EXPECT_EQ(cell_reader.Delta("x1", "y1"), 1000);
161 EXPECT_EQ(cell_reader.Delta("x1", "y2"), 0);
162 EXPECT_EQ(cell_reader.Delta("x2", "y1"), 0);
163 EXPECT_EQ(cell_reader.Delta("x2", "y2"), 1000);
164 }
165
TEST(CellReaderTest,CounterReadWithLabels)166 TEST(CellReaderTest, CounterReadWithLabels) {
167 CellReader<int64_t> cell_reader(
168 "/tensorflow/monitoring/test/counter_with_labels");
169 EXPECT_EQ(cell_reader.Read("x1", "y1"), 0);
170 EXPECT_EQ(cell_reader.Read("x1", "y2"), 0);
171 EXPECT_EQ(cell_reader.Read("x2", "y1"), 0);
172 EXPECT_EQ(cell_reader.Read("x2", "y2"), 0);
173
174 test_counter_with_labels->GetCell("x1", "y1")->IncrementBy(1);
175 test_counter_with_labels->GetCell("x1", "y2")->IncrementBy(10);
176 test_counter_with_labels->GetCell("x2", "y1")->IncrementBy(100);
177 EXPECT_EQ(cell_reader.Read("x1", "y1"), 1);
178 EXPECT_EQ(cell_reader.Read("x1", "y2"), 10);
179 EXPECT_EQ(cell_reader.Read("x2", "y1"), 100);
180 EXPECT_EQ(cell_reader.Read("x2", "y2"), 0);
181
182 test_counter_with_labels->GetCell("x1", "y2")->IncrementBy(5);
183 test_counter_with_labels->GetCell("x2", "y1")->IncrementBy(50);
184 test_counter_with_labels->GetCell("x2", "y2")->IncrementBy(500);
185 EXPECT_EQ(cell_reader.Read("x1", "y1"), 1);
186 EXPECT_EQ(cell_reader.Read("x1", "y2"), 15);
187 EXPECT_EQ(cell_reader.Read("x2", "y1"), 150);
188 EXPECT_EQ(cell_reader.Read("x2", "y2"), 500);
189
190 test_counter_with_labels->GetCell("x1", "y1")->IncrementBy(1000);
191 test_counter_with_labels->GetCell("x2", "y2")->IncrementBy(1000);
192 EXPECT_EQ(cell_reader.Read("x1", "y1"), 1001);
193 EXPECT_EQ(cell_reader.Read("x1", "y2"), 15);
194 EXPECT_EQ(cell_reader.Read("x2", "y1"), 150);
195 EXPECT_EQ(cell_reader.Read("x2", "y2"), 1500);
196 }
197
TEST(CellReaderTest,CounterDeltaAndReadWithLabels)198 TEST(CellReaderTest, CounterDeltaAndReadWithLabels) {
199 CellReader<int64_t> cell_reader(
200 "/tensorflow/monitoring/test/counter_with_labels");
201 EXPECT_EQ(cell_reader.Delta("x1", "y1"), 0);
202 EXPECT_EQ(cell_reader.Delta("x1", "y2"), 0);
203 EXPECT_EQ(cell_reader.Delta("x2", "y1"), 0);
204 EXPECT_EQ(cell_reader.Delta("x2", "y2"), 0);
205 EXPECT_EQ(cell_reader.Read("x1", "y1"), 0);
206 EXPECT_EQ(cell_reader.Read("x1", "y2"), 0);
207 EXPECT_EQ(cell_reader.Read("x2", "y1"), 0);
208 EXPECT_EQ(cell_reader.Read("x2", "y2"), 0);
209
210 test_counter_with_labels->GetCell("x1", "y1")->IncrementBy(1);
211 test_counter_with_labels->GetCell("x1", "y2")->IncrementBy(10);
212 test_counter_with_labels->GetCell("x2", "y1")->IncrementBy(100);
213 EXPECT_EQ(cell_reader.Delta("x1", "y1"), 1);
214 EXPECT_EQ(cell_reader.Delta("x1", "y2"), 10);
215 EXPECT_EQ(cell_reader.Delta("x2", "y1"), 100);
216 EXPECT_EQ(cell_reader.Delta("x2", "y2"), 0);
217 EXPECT_EQ(cell_reader.Read("x1", "y1"), 1);
218 EXPECT_EQ(cell_reader.Read("x1", "y2"), 10);
219 EXPECT_EQ(cell_reader.Read("x2", "y1"), 100);
220 EXPECT_EQ(cell_reader.Read("x2", "y2"), 0);
221
222 test_counter_with_labels->GetCell("x1", "y2")->IncrementBy(5);
223 test_counter_with_labels->GetCell("x2", "y1")->IncrementBy(50);
224 test_counter_with_labels->GetCell("x2", "y2")->IncrementBy(500);
225 EXPECT_EQ(cell_reader.Delta("x1", "y1"), 0);
226 EXPECT_EQ(cell_reader.Delta("x1", "y2"), 5);
227 EXPECT_EQ(cell_reader.Delta("x2", "y1"), 50);
228 EXPECT_EQ(cell_reader.Delta("x2", "y2"), 500);
229 EXPECT_EQ(cell_reader.Read("x1", "y1"), 1);
230 EXPECT_EQ(cell_reader.Read("x1", "y2"), 15);
231 EXPECT_EQ(cell_reader.Read("x2", "y1"), 150);
232 EXPECT_EQ(cell_reader.Read("x2", "y2"), 500);
233
234 test_counter_with_labels->GetCell("x1", "y1")->IncrementBy(1000);
235 test_counter_with_labels->GetCell("x2", "y2")->IncrementBy(1000);
236 EXPECT_EQ(cell_reader.Delta("x1", "y1"), 1000);
237 EXPECT_EQ(cell_reader.Delta("x1", "y2"), 0);
238 EXPECT_EQ(cell_reader.Delta("x2", "y1"), 0);
239 EXPECT_EQ(cell_reader.Delta("x2", "y2"), 1000);
240 EXPECT_EQ(cell_reader.Read("x1", "y1"), 1001);
241 EXPECT_EQ(cell_reader.Read("x1", "y2"), 15);
242 EXPECT_EQ(cell_reader.Read("x2", "y1"), 150);
243 EXPECT_EQ(cell_reader.Read("x2", "y2"), 1500);
244 }
245
TEST(CellReaderTest,TwoCounterReaders)246 TEST(CellReaderTest, TwoCounterReaders) {
247 CellReader<int64_t> cell_reader("/tensorflow/monitoring/test/counter");
248 CellReader<int64_t> cell_reader_with_labels(
249 "/tensorflow/monitoring/test/counter_with_labels");
250 EXPECT_EQ(cell_reader.Delta(), 0);
251 EXPECT_EQ(cell_reader_with_labels.Delta("x1", "y1"), 0);
252 EXPECT_EQ(cell_reader_with_labels.Delta("x2", "y2"), 0);
253 EXPECT_EQ(cell_reader.Read(), 0);
254 EXPECT_EQ(cell_reader_with_labels.Read("x1", "y1"), 0);
255 EXPECT_EQ(cell_reader_with_labels.Read("x2", "y2"), 0);
256
257 test_counter->GetCell()->IncrementBy(1);
258 test_counter_with_labels->GetCell("x1", "y1")->IncrementBy(100);
259 EXPECT_EQ(cell_reader.Delta(), 1);
260 EXPECT_EQ(cell_reader_with_labels.Delta("x1", "y1"), 100);
261 EXPECT_EQ(cell_reader_with_labels.Delta("x2", "y2"), 0);
262 EXPECT_EQ(cell_reader.Read(), 1);
263 EXPECT_EQ(cell_reader_with_labels.Read("x1", "y1"), 100);
264 EXPECT_EQ(cell_reader_with_labels.Read("x2", "y2"), 0);
265
266 test_counter->GetCell()->IncrementBy(5);
267 test_counter_with_labels->GetCell("x2", "y2")->IncrementBy(500);
268 EXPECT_EQ(cell_reader.Delta(), 5);
269 EXPECT_EQ(cell_reader_with_labels.Delta("x1", "y1"), 0);
270 EXPECT_EQ(cell_reader_with_labels.Delta("x2", "y2"), 500);
271 EXPECT_EQ(cell_reader.Read(), 6);
272 EXPECT_EQ(cell_reader_with_labels.Read("x1", "y1"), 100);
273 EXPECT_EQ(cell_reader_with_labels.Read("x2", "y2"), 500);
274
275 test_counter->GetCell()->IncrementBy(1);
276 test_counter_with_labels->GetCell("x1", "y1")->IncrementBy(1);
277 test_counter_with_labels->GetCell("x2", "y2")->IncrementBy(1);
278 EXPECT_EQ(cell_reader.Delta(), 1);
279 EXPECT_EQ(cell_reader_with_labels.Delta("x1", "y1"), 1);
280 EXPECT_EQ(cell_reader_with_labels.Delta("x2", "y2"), 1);
281 EXPECT_EQ(cell_reader.Read(), 7);
282 EXPECT_EQ(cell_reader_with_labels.Read("x1", "y1"), 101);
283 EXPECT_EQ(cell_reader_with_labels.Read("x2", "y2"), 501);
284 }
285
TEST(CellReaderTest,RepeatedReads)286 TEST(CellReaderTest, RepeatedReads) {
287 CellReader<int64_t> cell_reader("/tensorflow/monitoring/test/counter");
288 CellReader<int64_t> cell_reader_with_labels(
289 "/tensorflow/monitoring/test/counter_with_labels");
290 EXPECT_EQ(cell_reader.Delta(), 0);
291 EXPECT_EQ(cell_reader_with_labels.Delta("x1", "y1"), 0);
292 EXPECT_EQ(cell_reader_with_labels.Delta("x2", "y2"), 0);
293 EXPECT_EQ(cell_reader.Read(), 0);
294 EXPECT_EQ(cell_reader_with_labels.Read("x1", "y1"), 0);
295 EXPECT_EQ(cell_reader_with_labels.Read("x2", "y2"), 0);
296
297 test_counter->GetCell()->IncrementBy(1);
298 test_counter_with_labels->GetCell("x1", "y1")->IncrementBy(100);
299 EXPECT_EQ(cell_reader.Delta(), 1);
300 EXPECT_EQ(cell_reader_with_labels.Delta("x1", "y1"), 100);
301 EXPECT_EQ(cell_reader_with_labels.Delta("x2", "y2"), 0);
302 EXPECT_EQ(cell_reader.Read(), 1);
303 EXPECT_EQ(cell_reader_with_labels.Read("x1", "y1"), 100);
304 EXPECT_EQ(cell_reader_with_labels.Read("x2", "y2"), 0);
305
306 // Repeats the previous read. The values will stay the same, while the deltas
307 // will be 0.
308 EXPECT_EQ(cell_reader.Delta(), 0);
309 EXPECT_EQ(cell_reader_with_labels.Delta("x1", "y1"), 0);
310 EXPECT_EQ(cell_reader_with_labels.Delta("x2", "y2"), 0);
311 EXPECT_EQ(cell_reader.Read(), 1);
312 EXPECT_EQ(cell_reader_with_labels.Read("x1", "y1"), 100);
313 EXPECT_EQ(cell_reader_with_labels.Read("x2", "y2"), 0);
314 }
315
TEST(CellReaderTest,SamplerDeltaNoLabels)316 TEST(CellReaderTest, SamplerDeltaNoLabels) {
317 CellReader<Histogram> cell_reader("/tensorflow/monitoring/test/sampler");
318 Histogram histogram = cell_reader.Delta();
319 EXPECT_FLOAT_EQ(histogram.num(), 0.0);
320 EXPECT_FLOAT_EQ(histogram.sum(), 0.0);
321 EXPECT_FLOAT_EQ(histogram.sum_squares(), 0.0);
322 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
323 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
324 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
325 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
326 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
327 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
328 EXPECT_FLOAT_EQ(histogram.num(6), 0.0);
329 EXPECT_FLOAT_EQ(histogram.num(7), 0.0);
330 EXPECT_FLOAT_EQ(histogram.num(8), 0.0);
331 EXPECT_FLOAT_EQ(histogram.num(9), 0.0);
332 EXPECT_FLOAT_EQ(histogram.num(10), 0.0);
333 EXPECT_FLOAT_EQ(histogram.num(11), 0.0);
334 EXPECT_FLOAT_EQ(histogram.num(12), 0.0);
335
336 test_sampler->GetCell()->Add(0.1);
337 histogram = cell_reader.Delta();
338 EXPECT_FLOAT_EQ(histogram.num(), 1.0);
339 EXPECT_FLOAT_EQ(histogram.sum(), 0.1);
340 EXPECT_FLOAT_EQ(histogram.sum_squares(), 0.01);
341 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
342 EXPECT_FLOAT_EQ(histogram.num(1), 1.0);
343 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
344 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
345 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
346 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
347 EXPECT_FLOAT_EQ(histogram.num(6), 0.0);
348 EXPECT_FLOAT_EQ(histogram.num(7), 0.0);
349 EXPECT_FLOAT_EQ(histogram.num(8), 0.0);
350 EXPECT_FLOAT_EQ(histogram.num(9), 0.0);
351 EXPECT_FLOAT_EQ(histogram.num(10), 0.0);
352 EXPECT_FLOAT_EQ(histogram.num(11), 0.0);
353 EXPECT_FLOAT_EQ(histogram.num(12), 0.0);
354
355 test_sampler->GetCell()->Add(1.1);
356 histogram = cell_reader.Delta();
357 EXPECT_FLOAT_EQ(histogram.num(), 1.0);
358 EXPECT_FLOAT_EQ(histogram.sum(), 1.1);
359 EXPECT_FLOAT_EQ(histogram.sum_squares(), 1.21);
360 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
361 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
362 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
363 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
364 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
365 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
366 EXPECT_FLOAT_EQ(histogram.num(6), 1.0);
367 EXPECT_FLOAT_EQ(histogram.num(7), 0.0);
368 EXPECT_FLOAT_EQ(histogram.num(8), 0.0);
369 EXPECT_FLOAT_EQ(histogram.num(9), 0.0);
370 EXPECT_FLOAT_EQ(histogram.num(10), 0.0);
371 EXPECT_FLOAT_EQ(histogram.num(11), 0.0);
372 EXPECT_FLOAT_EQ(histogram.num(12), 0.0);
373
374 test_sampler->GetCell()->Add(100);
375 histogram = cell_reader.Delta();
376 EXPECT_FLOAT_EQ(histogram.num(), 1.0);
377 EXPECT_FLOAT_EQ(histogram.sum(), 100);
378 EXPECT_FLOAT_EQ(histogram.sum_squares(), 10000);
379 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
380 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
381 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
382 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
383 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
384 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
385 EXPECT_FLOAT_EQ(histogram.num(6), 0.0);
386 EXPECT_FLOAT_EQ(histogram.num(7), 0.0);
387 EXPECT_FLOAT_EQ(histogram.num(8), 0.0);
388 EXPECT_FLOAT_EQ(histogram.num(9), 0.0);
389 EXPECT_FLOAT_EQ(histogram.num(10), 0.0);
390 EXPECT_FLOAT_EQ(histogram.num(11), 1.0);
391 EXPECT_FLOAT_EQ(histogram.num(12), 0.0);
392 }
393
TEST(CellReaderTest,SamplerReadNoLabels)394 TEST(CellReaderTest, SamplerReadNoLabels) {
395 CellReader<Histogram> cell_reader("/tensorflow/monitoring/test/sampler");
396 Histogram histogram = cell_reader.Read();
397 EXPECT_FLOAT_EQ(histogram.num(), 0.0);
398 EXPECT_FLOAT_EQ(histogram.sum(), 0.0);
399 EXPECT_FLOAT_EQ(histogram.sum_squares(), 0.0);
400 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
401 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
402 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
403 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
404 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
405 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
406 EXPECT_FLOAT_EQ(histogram.num(6), 0.0);
407 EXPECT_FLOAT_EQ(histogram.num(7), 0.0);
408 EXPECT_FLOAT_EQ(histogram.num(8), 0.0);
409 EXPECT_FLOAT_EQ(histogram.num(9), 0.0);
410 EXPECT_FLOAT_EQ(histogram.num(10), 0.0);
411 EXPECT_FLOAT_EQ(histogram.num(11), 0.0);
412 EXPECT_FLOAT_EQ(histogram.num(12), 0.0);
413
414 test_sampler->GetCell()->Add(0.1);
415 histogram = cell_reader.Read();
416 EXPECT_FLOAT_EQ(histogram.num(), 1.0);
417 EXPECT_FLOAT_EQ(histogram.sum(), 0.1);
418 EXPECT_FLOAT_EQ(histogram.sum_squares(), 0.01);
419 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
420 EXPECT_FLOAT_EQ(histogram.num(1), 1.0);
421 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
422 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
423 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
424 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
425 EXPECT_FLOAT_EQ(histogram.num(6), 0.0);
426 EXPECT_FLOAT_EQ(histogram.num(7), 0.0);
427 EXPECT_FLOAT_EQ(histogram.num(8), 0.0);
428 EXPECT_FLOAT_EQ(histogram.num(9), 0.0);
429 EXPECT_FLOAT_EQ(histogram.num(10), 0.0);
430 EXPECT_FLOAT_EQ(histogram.num(11), 0.0);
431 EXPECT_FLOAT_EQ(histogram.num(12), 0.0);
432
433 test_sampler->GetCell()->Add(1.1);
434 histogram = cell_reader.Read();
435 EXPECT_FLOAT_EQ(histogram.num(), 2.0);
436 EXPECT_FLOAT_EQ(histogram.sum(), 1.2);
437 EXPECT_FLOAT_EQ(histogram.sum_squares(), 1.22);
438 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
439 EXPECT_FLOAT_EQ(histogram.num(1), 1.0);
440 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
441 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
442 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
443 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
444 EXPECT_FLOAT_EQ(histogram.num(6), 1.0);
445 EXPECT_FLOAT_EQ(histogram.num(7), 0.0);
446 EXPECT_FLOAT_EQ(histogram.num(8), 0.0);
447 EXPECT_FLOAT_EQ(histogram.num(9), 0.0);
448 EXPECT_FLOAT_EQ(histogram.num(10), 0.0);
449 EXPECT_FLOAT_EQ(histogram.num(11), 0.0);
450 EXPECT_FLOAT_EQ(histogram.num(12), 0.0);
451
452 test_sampler->GetCell()->Add(100);
453 histogram = cell_reader.Read();
454 EXPECT_FLOAT_EQ(histogram.num(), 3.0);
455 EXPECT_FLOAT_EQ(histogram.sum(), 101.2);
456 EXPECT_FLOAT_EQ(histogram.sum_squares(), 10001.22);
457 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
458 EXPECT_FLOAT_EQ(histogram.num(1), 1.0);
459 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
460 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
461 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
462 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
463 EXPECT_FLOAT_EQ(histogram.num(6), 1.0);
464 EXPECT_FLOAT_EQ(histogram.num(7), 0.0);
465 EXPECT_FLOAT_EQ(histogram.num(8), 0.0);
466 EXPECT_FLOAT_EQ(histogram.num(9), 0.0);
467 EXPECT_FLOAT_EQ(histogram.num(10), 0.0);
468 EXPECT_FLOAT_EQ(histogram.num(11), 1.0);
469 EXPECT_FLOAT_EQ(histogram.num(12), 0.0);
470 }
471
TEST(CellReaderTest,SamplerDeltaAndReadNoLabels)472 TEST(CellReaderTest, SamplerDeltaAndReadNoLabels) {
473 CellReader<Histogram> cell_reader("/tensorflow/monitoring/test/sampler");
474 Histogram histogram = cell_reader.Delta();
475 EXPECT_FLOAT_EQ(histogram.num(), 0.0);
476 EXPECT_FLOAT_EQ(histogram.sum(), 0.0);
477 EXPECT_FLOAT_EQ(histogram.sum_squares(), 0.0);
478 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
479 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
480 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
481 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
482 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
483 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
484 EXPECT_FLOAT_EQ(histogram.num(6), 0.0);
485 EXPECT_FLOAT_EQ(histogram.num(7), 0.0);
486 EXPECT_FLOAT_EQ(histogram.num(8), 0.0);
487 EXPECT_FLOAT_EQ(histogram.num(9), 0.0);
488 EXPECT_FLOAT_EQ(histogram.num(10), 0.0);
489 EXPECT_FLOAT_EQ(histogram.num(11), 0.0);
490 EXPECT_FLOAT_EQ(histogram.num(12), 0.0);
491
492 histogram = cell_reader.Read();
493 EXPECT_FLOAT_EQ(histogram.num(), 0.0);
494 EXPECT_FLOAT_EQ(histogram.sum(), 0.0);
495 EXPECT_FLOAT_EQ(histogram.sum_squares(), 0.0);
496 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
497 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
498 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
499 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
500 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
501 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
502 EXPECT_FLOAT_EQ(histogram.num(6), 0.0);
503 EXPECT_FLOAT_EQ(histogram.num(7), 0.0);
504 EXPECT_FLOAT_EQ(histogram.num(8), 0.0);
505 EXPECT_FLOAT_EQ(histogram.num(9), 0.0);
506 EXPECT_FLOAT_EQ(histogram.num(10), 0.0);
507 EXPECT_FLOAT_EQ(histogram.num(11), 0.0);
508 EXPECT_FLOAT_EQ(histogram.num(12), 0.0);
509
510 test_sampler->GetCell()->Add(0.1);
511 test_sampler->GetCell()->Add(0.1);
512 histogram = cell_reader.Delta();
513 EXPECT_FLOAT_EQ(histogram.num(), 2.0);
514 EXPECT_FLOAT_EQ(histogram.sum(), 0.2);
515 EXPECT_FLOAT_EQ(histogram.sum_squares(), 0.02);
516 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
517 EXPECT_FLOAT_EQ(histogram.num(1), 2.0);
518 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
519 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
520 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
521 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
522 EXPECT_FLOAT_EQ(histogram.num(6), 0.0);
523 EXPECT_FLOAT_EQ(histogram.num(7), 0.0);
524 EXPECT_FLOAT_EQ(histogram.num(8), 0.0);
525 EXPECT_FLOAT_EQ(histogram.num(9), 0.0);
526 EXPECT_FLOAT_EQ(histogram.num(10), 0.0);
527 EXPECT_FLOAT_EQ(histogram.num(11), 0.0);
528 EXPECT_FLOAT_EQ(histogram.num(12), 0.0);
529
530 histogram = cell_reader.Read();
531 EXPECT_FLOAT_EQ(histogram.num(), 2.0);
532 EXPECT_FLOAT_EQ(histogram.sum(), 0.2);
533 EXPECT_FLOAT_EQ(histogram.sum_squares(), 0.02);
534 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
535 EXPECT_FLOAT_EQ(histogram.num(1), 2.0);
536 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
537 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
538 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
539 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
540 EXPECT_FLOAT_EQ(histogram.num(6), 0.0);
541 EXPECT_FLOAT_EQ(histogram.num(7), 0.0);
542 EXPECT_FLOAT_EQ(histogram.num(8), 0.0);
543 EXPECT_FLOAT_EQ(histogram.num(9), 0.0);
544 EXPECT_FLOAT_EQ(histogram.num(10), 0.0);
545 EXPECT_FLOAT_EQ(histogram.num(11), 0.0);
546 EXPECT_FLOAT_EQ(histogram.num(12), 0.0);
547
548 test_sampler->GetCell()->Add(100);
549 test_sampler->GetCell()->Add(100);
550 histogram = cell_reader.Delta();
551 EXPECT_FLOAT_EQ(histogram.num(), 2.0);
552 EXPECT_FLOAT_EQ(histogram.sum(), 200);
553 EXPECT_FLOAT_EQ(histogram.sum_squares(), 20000);
554 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
555 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
556 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
557 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
558 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
559 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
560 EXPECT_FLOAT_EQ(histogram.num(6), 0.0);
561 EXPECT_FLOAT_EQ(histogram.num(7), 0.0);
562 EXPECT_FLOAT_EQ(histogram.num(8), 0.0);
563 EXPECT_FLOAT_EQ(histogram.num(9), 0.0);
564 EXPECT_FLOAT_EQ(histogram.num(10), 0.0);
565 EXPECT_FLOAT_EQ(histogram.num(11), 2.0);
566 EXPECT_FLOAT_EQ(histogram.num(12), 0.0);
567
568 histogram = cell_reader.Read();
569 EXPECT_FLOAT_EQ(histogram.num(), 4.0);
570 EXPECT_FLOAT_EQ(histogram.sum(), 200.2);
571 EXPECT_FLOAT_EQ(histogram.sum_squares(), 20000.02);
572 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
573 EXPECT_FLOAT_EQ(histogram.num(1), 2.0);
574 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
575 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
576 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
577 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
578 EXPECT_FLOAT_EQ(histogram.num(6), 0.0);
579 EXPECT_FLOAT_EQ(histogram.num(7), 0.0);
580 EXPECT_FLOAT_EQ(histogram.num(8), 0.0);
581 EXPECT_FLOAT_EQ(histogram.num(9), 0.0);
582 EXPECT_FLOAT_EQ(histogram.num(10), 0.0);
583 EXPECT_FLOAT_EQ(histogram.num(11), 2.0);
584 EXPECT_FLOAT_EQ(histogram.num(12), 0.0);
585 }
586
TEST(CellReaderTest,SamplerDeltaWithLabels)587 TEST(CellReaderTest, SamplerDeltaWithLabels) {
588 CellReader<Histogram> cell_reader(
589 "/tensorflow/monitoring/test/sampler_with_labels");
590 Histogram histogram = cell_reader.Delta("x1", "y1");
591 EXPECT_FLOAT_EQ(histogram.num(), 0.0);
592 EXPECT_FLOAT_EQ(histogram.sum(), 0.0);
593 EXPECT_FLOAT_EQ(histogram.sum_squares(), 0.0);
594 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
595 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
596 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
597 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
598 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
599 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
600 histogram = cell_reader.Delta("x2", "y2");
601 EXPECT_FLOAT_EQ(histogram.num(), 0.0);
602 EXPECT_FLOAT_EQ(histogram.sum(), 0.0);
603 EXPECT_FLOAT_EQ(histogram.sum_squares(), 0.0);
604 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
605 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
606 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
607 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
608 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
609 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
610
611 test_sampler_with_labels->GetCell("x1", "y1")->Add(-100);
612 test_sampler_with_labels->GetCell("x1", "y1")->Add(-100);
613 histogram = cell_reader.Delta("x1", "y1");
614 EXPECT_FLOAT_EQ(histogram.num(), 2.0);
615 EXPECT_FLOAT_EQ(histogram.sum(), -200.0);
616 EXPECT_FLOAT_EQ(histogram.sum_squares(), 20000.0);
617 EXPECT_FLOAT_EQ(histogram.num(0), 2.0);
618 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
619 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
620 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
621 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
622 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
623 histogram = cell_reader.Delta("x2", "y2");
624 EXPECT_FLOAT_EQ(histogram.num(), 0.0);
625 EXPECT_FLOAT_EQ(histogram.sum(), 0.0);
626 EXPECT_FLOAT_EQ(histogram.sum_squares(), 0.0);
627 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
628 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
629 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
630 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
631 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
632 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
633
634 test_sampler_with_labels->GetCell("x2", "y2")->Add(100);
635 test_sampler_with_labels->GetCell("x2", "y2")->Add(100);
636 histogram = cell_reader.Delta("x1", "y1");
637 EXPECT_FLOAT_EQ(histogram.num(), 0.0);
638 EXPECT_FLOAT_EQ(histogram.sum(), 0.0);
639 EXPECT_FLOAT_EQ(histogram.sum_squares(), 0.0);
640 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
641 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
642 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
643 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
644 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
645 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
646 histogram = cell_reader.Delta("x2", "y2");
647 EXPECT_FLOAT_EQ(histogram.num(), 2.0);
648 EXPECT_FLOAT_EQ(histogram.sum(), 200.0);
649 EXPECT_FLOAT_EQ(histogram.sum_squares(), 20000.0);
650 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
651 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
652 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
653 EXPECT_FLOAT_EQ(histogram.num(3), 2.0);
654 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
655 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
656
657 test_sampler_with_labels->GetCell("x1", "y1")->Add(-100000000);
658 test_sampler_with_labels->GetCell("x2", "y2")->Add(100000000);
659 histogram = cell_reader.Delta("x1", "y1");
660 EXPECT_FLOAT_EQ(histogram.num(), 1.0);
661 EXPECT_FLOAT_EQ(histogram.sum(), -100000000);
662 EXPECT_FLOAT_EQ(histogram.num(0), 1.0);
663 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
664 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
665 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
666 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
667 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
668 histogram = cell_reader.Delta("x2", "y2");
669 EXPECT_FLOAT_EQ(histogram.num(), 1.0);
670 EXPECT_FLOAT_EQ(histogram.sum(), 100000000);
671 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
672 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
673 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
674 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
675 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
676 EXPECT_FLOAT_EQ(histogram.num(5), 1.0);
677 }
678
TEST(CellReaderTest,SamplerReadWithLabels)679 TEST(CellReaderTest, SamplerReadWithLabels) {
680 CellReader<Histogram> cell_reader(
681 "/tensorflow/monitoring/test/sampler_with_labels");
682 Histogram histogram = cell_reader.Read("x1", "y1");
683 EXPECT_FLOAT_EQ(histogram.num(), 0.0);
684 EXPECT_FLOAT_EQ(histogram.sum(), 0.0);
685 EXPECT_FLOAT_EQ(histogram.sum_squares(), 0.0);
686 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
687 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
688 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
689 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
690 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
691 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
692 histogram = cell_reader.Read("x2", "y2");
693 EXPECT_FLOAT_EQ(histogram.num(), 0.0);
694 EXPECT_FLOAT_EQ(histogram.sum(), 0.0);
695 EXPECT_FLOAT_EQ(histogram.sum_squares(), 0.0);
696 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
697 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
698 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
699 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
700 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
701 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
702
703 test_sampler_with_labels->GetCell("x1", "y1")->Add(-100);
704 test_sampler_with_labels->GetCell("x1", "y1")->Add(-100);
705 histogram = cell_reader.Read("x1", "y1");
706 EXPECT_FLOAT_EQ(histogram.num(), 2.0);
707 EXPECT_FLOAT_EQ(histogram.sum(), -200.0);
708 EXPECT_FLOAT_EQ(histogram.sum_squares(), 20000.0);
709 EXPECT_FLOAT_EQ(histogram.num(0), 2.0);
710 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
711 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
712 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
713 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
714 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
715 histogram = cell_reader.Read("x2", "y2");
716 EXPECT_FLOAT_EQ(histogram.num(), 0.0);
717 EXPECT_FLOAT_EQ(histogram.sum(), 0.0);
718 EXPECT_FLOAT_EQ(histogram.sum_squares(), 0.0);
719 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
720 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
721 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
722 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
723 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
724 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
725
726 test_sampler_with_labels->GetCell("x2", "y2")->Add(100);
727 test_sampler_with_labels->GetCell("x2", "y2")->Add(100);
728 histogram = cell_reader.Read("x1", "y1");
729 EXPECT_FLOAT_EQ(histogram.num(), 2.0);
730 EXPECT_FLOAT_EQ(histogram.sum(), -200.0);
731 EXPECT_FLOAT_EQ(histogram.sum_squares(), 20000.0);
732 EXPECT_FLOAT_EQ(histogram.num(0), 2.0);
733 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
734 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
735 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
736 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
737 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
738 histogram = cell_reader.Read("x2", "y2");
739 EXPECT_FLOAT_EQ(histogram.num(), 2.0);
740 EXPECT_FLOAT_EQ(histogram.sum(), 200.0);
741 EXPECT_FLOAT_EQ(histogram.sum_squares(), 20000.0);
742 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
743 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
744 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
745 EXPECT_FLOAT_EQ(histogram.num(3), 2.0);
746 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
747 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
748
749 test_sampler_with_labels->GetCell("x1", "y1")->Add(-100000000);
750 test_sampler_with_labels->GetCell("x2", "y2")->Add(100000000);
751 histogram = cell_reader.Read("x1", "y1");
752 EXPECT_FLOAT_EQ(histogram.num(), 3.0);
753 EXPECT_FLOAT_EQ(histogram.sum(), -100000200);
754 EXPECT_FLOAT_EQ(histogram.num(0), 3.0);
755 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
756 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
757 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
758 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
759 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
760 histogram = cell_reader.Read("x2", "y2");
761 EXPECT_FLOAT_EQ(histogram.num(), 3.0);
762 EXPECT_FLOAT_EQ(histogram.sum(), 100000200);
763 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
764 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
765 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
766 EXPECT_FLOAT_EQ(histogram.num(3), 2.0);
767 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
768 EXPECT_FLOAT_EQ(histogram.num(5), 1.0);
769 }
770
TEST(CellReaderTest,SamplerRepeatedReads)771 TEST(CellReaderTest, SamplerRepeatedReads) {
772 CellReader<Histogram> cell_reader(
773 "/tensorflow/monitoring/test/sampler_with_labels");
774 Histogram histogram = cell_reader.Read("x1", "y1");
775 EXPECT_FLOAT_EQ(histogram.num(), 0.0);
776 EXPECT_FLOAT_EQ(histogram.sum(), 0.0);
777 EXPECT_FLOAT_EQ(histogram.sum_squares(), 0.0);
778 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
779 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
780 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
781 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
782 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
783 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
784 histogram = cell_reader.Read("x2", "y2");
785 EXPECT_FLOAT_EQ(histogram.num(), 0.0);
786 EXPECT_FLOAT_EQ(histogram.sum(), 0.0);
787 EXPECT_FLOAT_EQ(histogram.sum_squares(), 0.0);
788 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
789 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
790 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
791 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
792 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
793 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
794
795 test_sampler_with_labels->GetCell("x1", "y1")->Add(-100);
796 test_sampler_with_labels->GetCell("x1", "y1")->Add(-100);
797 test_sampler_with_labels->GetCell("x2", "y2")->Add(100);
798 test_sampler_with_labels->GetCell("x2", "y2")->Add(100);
799 test_sampler_with_labels->GetCell("x1", "y1")->Add(-100000000);
800 test_sampler_with_labels->GetCell("x2", "y2")->Add(100000000);
801 histogram = cell_reader.Delta("x1", "y1");
802 EXPECT_FLOAT_EQ(histogram.num(), 3.0);
803 EXPECT_FLOAT_EQ(histogram.sum(), -100000200);
804 EXPECT_FLOAT_EQ(histogram.num(0), 3.0);
805 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
806 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
807 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
808 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
809 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
810 histogram = cell_reader.Delta("x2", "y2");
811 EXPECT_FLOAT_EQ(histogram.num(), 3.0);
812 EXPECT_FLOAT_EQ(histogram.sum(), 100000200);
813 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
814 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
815 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
816 EXPECT_FLOAT_EQ(histogram.num(3), 2.0);
817 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
818 EXPECT_FLOAT_EQ(histogram.num(5), 1.0);
819
820 histogram = cell_reader.Read("x1", "y1");
821 EXPECT_FLOAT_EQ(histogram.num(), 3.0);
822 EXPECT_FLOAT_EQ(histogram.sum(), -100000200);
823 EXPECT_FLOAT_EQ(histogram.num(0), 3.0);
824 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
825 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
826 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
827 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
828 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
829 histogram = cell_reader.Read("x2", "y2");
830 EXPECT_FLOAT_EQ(histogram.num(), 3.0);
831 EXPECT_FLOAT_EQ(histogram.sum(), 100000200);
832 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
833 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
834 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
835 EXPECT_FLOAT_EQ(histogram.num(3), 2.0);
836 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
837 EXPECT_FLOAT_EQ(histogram.num(5), 1.0);
838
839 // Repeats the previous read. The values will stay the same, while the deltas
840 // will be 0.
841 histogram = cell_reader.Delta("x1", "y1");
842 EXPECT_FLOAT_EQ(histogram.num(), 0.0);
843 EXPECT_FLOAT_EQ(histogram.sum(), 0.0);
844 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
845 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
846 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
847 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
848 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
849 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
850 histogram = cell_reader.Delta("x2", "y2");
851 EXPECT_FLOAT_EQ(histogram.num(), 0.0);
852 EXPECT_FLOAT_EQ(histogram.sum(), 0.0);
853 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
854 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
855 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
856 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
857 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
858 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
859
860 histogram = cell_reader.Read("x1", "y1");
861 EXPECT_FLOAT_EQ(histogram.num(), 3.0);
862 EXPECT_FLOAT_EQ(histogram.sum(), -100000200);
863 EXPECT_FLOAT_EQ(histogram.num(0), 3.0);
864 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
865 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
866 EXPECT_FLOAT_EQ(histogram.num(3), 0.0);
867 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
868 EXPECT_FLOAT_EQ(histogram.num(5), 0.0);
869 histogram = cell_reader.Read("x2", "y2");
870 EXPECT_FLOAT_EQ(histogram.num(), 3.0);
871 EXPECT_FLOAT_EQ(histogram.sum(), 100000200);
872 EXPECT_FLOAT_EQ(histogram.num(0), 0.0);
873 EXPECT_FLOAT_EQ(histogram.num(1), 0.0);
874 EXPECT_FLOAT_EQ(histogram.num(2), 0.0);
875 EXPECT_FLOAT_EQ(histogram.num(3), 2.0);
876 EXPECT_FLOAT_EQ(histogram.num(4), 0.0);
877 EXPECT_FLOAT_EQ(histogram.num(5), 1.0);
878 }
879
TEST(CellReaderTest,IntGaugeRead)880 TEST(CellReaderTest, IntGaugeRead) {
881 CellReader<int64_t> cell_reader("/tensorflow/monitoring/test/int_gauge");
882 EXPECT_EQ(cell_reader.Read(), 0);
883
884 test_int_gauge->GetCell()->Set(100);
885 EXPECT_EQ(cell_reader.Read(), 100);
886
887 test_int_gauge->GetCell()->Set(-100);
888 EXPECT_EQ(cell_reader.Read(), -100);
889
890 test_int_gauge->GetCell()->Set(0);
891 EXPECT_EQ(cell_reader.Read(), 0);
892 }
893
TEST(CellReaderTest,IntGaugeReadWithLabels)894 TEST(CellReaderTest, IntGaugeReadWithLabels) {
895 CellReader<int64_t> cell_reader(
896 "/tensorflow/monitoring/test/int_gauge_with_labels");
897 EXPECT_EQ(cell_reader.Read("x1", "y1"), 0);
898 EXPECT_EQ(cell_reader.Read("x2", "y2"), 0);
899
900 test_int_gauge_with_labels->GetCell("x1", "y1")->Set(100000);
901 EXPECT_EQ(cell_reader.Read("x1", "y1"), 100000);
902 EXPECT_EQ(cell_reader.Read("x2", "y2"), 0);
903
904 test_int_gauge_with_labels->GetCell("x2", "y2")->Set(-100000);
905 EXPECT_EQ(cell_reader.Read("x1", "y1"), 100000);
906 EXPECT_EQ(cell_reader.Read("x2", "y2"), -100000);
907
908 test_int_gauge_with_labels->GetCell("x1", "y1")->Set(-100000);
909 test_int_gauge_with_labels->GetCell("x2", "y2")->Set(100000);
910 EXPECT_EQ(cell_reader.Read("x1", "y1"), -100000);
911 EXPECT_EQ(cell_reader.Read("x2", "y2"), 100000);
912
913 test_int_gauge_with_labels->GetCell("x1", "y1")->Set(0);
914 EXPECT_EQ(cell_reader.Read("x1", "y1"), 0);
915 EXPECT_EQ(cell_reader.Read("x2", "y2"), 100000);
916 }
917
TEST(CellReaderTest,IntGaugeRepeatedSetAndRead)918 TEST(CellReaderTest, IntGaugeRepeatedSetAndRead) {
919 CellReader<int64_t> cell_reader(
920 "/tensorflow/monitoring/test/int_gauge_with_labels");
921
922 test_int_gauge_with_labels->GetCell("x1", "y1")->Set(-1);
923 test_int_gauge_with_labels->GetCell("x2", "y2")->Set(1);
924 test_int_gauge_with_labels->GetCell("x1", "y1")->Set(1);
925 test_int_gauge_with_labels->GetCell("x2", "y2")->Set(-1);
926 EXPECT_EQ(cell_reader.Read("x1", "y1"), 1);
927 EXPECT_EQ(cell_reader.Read("x2", "y2"), -1);
928 EXPECT_EQ(cell_reader.Read("x1", "y1"), 1);
929 EXPECT_EQ(cell_reader.Read("x2", "y2"), -1);
930 EXPECT_EQ(cell_reader.Read("x1", "y1"), 1);
931 EXPECT_EQ(cell_reader.Read("x2", "y2"), -1);
932
933 test_int_gauge_with_labels->GetCell("x1", "y1")->Set(0);
934 test_int_gauge_with_labels->GetCell("x2", "y2")->Set(500);
935 test_int_gauge_with_labels->GetCell("x1", "y1")->Set(0);
936 test_int_gauge_with_labels->GetCell("x2", "y2")->Set(-500);
937 EXPECT_EQ(cell_reader.Read("x1", "y1"), 0);
938 EXPECT_EQ(cell_reader.Read("x2", "y2"), -500);
939 EXPECT_EQ(cell_reader.Read("x1", "y1"), 0);
940 EXPECT_EQ(cell_reader.Read("x2", "y2"), -500);
941 EXPECT_EQ(cell_reader.Read("x1", "y1"), 0);
942 EXPECT_EQ(cell_reader.Read("x2", "y2"), -500);
943 }
944
TEST(CellReaderTest,StringGaugeRead)945 TEST(CellReaderTest, StringGaugeRead) {
946 CellReader<std::string> cell_reader(
947 "/tensorflow/monitoring/test/string_gauge");
948 EXPECT_EQ(cell_reader.Read(), "");
949
950 test_string_gauge->GetCell()->Set("gauge value");
951 EXPECT_EQ(cell_reader.Read(), "gauge value");
952
953 test_string_gauge->GetCell()->Set("Updated gauge value");
954 EXPECT_EQ(cell_reader.Read(), "Updated gauge value");
955
956 test_string_gauge->GetCell()->Set("");
957 EXPECT_EQ(cell_reader.Read(), "");
958 }
959
TEST(CellReaderTest,StringGaugeReadWithLabels)960 TEST(CellReaderTest, StringGaugeReadWithLabels) {
961 CellReader<std::string> cell_reader(
962 "/tensorflow/monitoring/test/string_gauge_with_labels");
963 EXPECT_EQ(cell_reader.Read("x1", "y1"), "");
964 EXPECT_EQ(cell_reader.Read("x2", "y2"), "");
965
966 test_string_gauge_with_labels->GetCell("x1", "y1")->Set("Value 1");
967 EXPECT_EQ(cell_reader.Read("x1", "y1"), "Value 1");
968 EXPECT_EQ(cell_reader.Read("x2", "y2"), "");
969
970 test_string_gauge_with_labels->GetCell("x2", "y2")->Set("Value 2");
971 EXPECT_EQ(cell_reader.Read("x1", "y1"), "Value 1");
972 EXPECT_EQ(cell_reader.Read("x2", "y2"), "Value 2");
973
974 test_string_gauge_with_labels->GetCell("x1", "y1")->Set("Value 3");
975 test_string_gauge_with_labels->GetCell("x2", "y2")->Set("Value 3");
976 EXPECT_EQ(cell_reader.Read("x1", "y1"), "Value 3");
977 EXPECT_EQ(cell_reader.Read("x2", "y2"), "Value 3");
978
979 test_string_gauge_with_labels->GetCell("x1", "y1")->Set("");
980 test_string_gauge_with_labels->GetCell("x2", "y2")->Set("");
981 EXPECT_EQ(cell_reader.Read("x1", "y1"), "");
982 EXPECT_EQ(cell_reader.Read("x2", "y2"), "");
983 }
984
TEST(CellReaderTest,StringGaugeRepeatedSetAndRead)985 TEST(CellReaderTest, StringGaugeRepeatedSetAndRead) {
986 CellReader<std::string> cell_reader(
987 "/tensorflow/monitoring/test/string_gauge_with_labels");
988 EXPECT_EQ(cell_reader.Read("x1", "y1"), "");
989 EXPECT_EQ(cell_reader.Read("x2", "y2"), "");
990
991 test_string_gauge_with_labels->GetCell("x1", "y1")->Set("Value 1");
992 test_string_gauge_with_labels->GetCell("x2", "y2")->Set("Value 2");
993 test_string_gauge_with_labels->GetCell("x1", "y1")->Set("Value 3");
994 test_string_gauge_with_labels->GetCell("x2", "y2")->Set("Value 3");
995 EXPECT_EQ(cell_reader.Read("x1", "y1"), "Value 3");
996 EXPECT_EQ(cell_reader.Read("x2", "y2"), "Value 3");
997 EXPECT_EQ(cell_reader.Read("x1", "y1"), "Value 3");
998 EXPECT_EQ(cell_reader.Read("x2", "y2"), "Value 3");
999 EXPECT_EQ(cell_reader.Read("x1", "y1"), "Value 3");
1000 EXPECT_EQ(cell_reader.Read("x2", "y2"), "Value 3");
1001
1002 test_string_gauge_with_labels->GetCell("x1", "y1")->Set("");
1003 test_string_gauge_with_labels->GetCell("x2", "y2")->Set("");
1004 test_string_gauge_with_labels->GetCell("x1", "y1")->Set("-10");
1005 test_string_gauge_with_labels->GetCell("x2", "y2")->Set("-10");
1006 EXPECT_EQ(cell_reader.Read("x1", "y1"), "-10");
1007 EXPECT_EQ(cell_reader.Read("x2", "y2"), "-10");
1008 EXPECT_EQ(cell_reader.Read("x1", "y1"), "-10");
1009 EXPECT_EQ(cell_reader.Read("x2", "y2"), "-10");
1010 EXPECT_EQ(cell_reader.Read("x1", "y1"), "-10");
1011 EXPECT_EQ(cell_reader.Read("x2", "y2"), "-10");
1012 }
1013
TEST(CellReaderTest,BoolGaugeRead)1014 TEST(CellReaderTest, BoolGaugeRead) {
1015 CellReader<bool> cell_reader("/tensorflow/monitoring/test/bool_gauge");
1016 EXPECT_EQ(cell_reader.Read(), false);
1017
1018 test_bool_gauge->GetCell()->Set(true);
1019 EXPECT_EQ(cell_reader.Read(), true);
1020
1021 test_bool_gauge->GetCell()->Set(false);
1022 EXPECT_EQ(cell_reader.Read(), false);
1023 }
1024
TEST(CellReaderTest,BoolGaugeReadWithLabels)1025 TEST(CellReaderTest, BoolGaugeReadWithLabels) {
1026 CellReader<bool> cell_reader(
1027 "/tensorflow/monitoring/test/bool_gauge_with_labels");
1028 EXPECT_EQ(cell_reader.Read("x1", "y1"), false);
1029 EXPECT_EQ(cell_reader.Read("x2", "y2"), false);
1030
1031 test_bool_gauge_with_labels->GetCell("x1", "y1")->Set(true);
1032 EXPECT_EQ(cell_reader.Read("x1", "y1"), true);
1033 EXPECT_EQ(cell_reader.Read("x2", "y2"), false);
1034
1035 test_bool_gauge_with_labels->GetCell("x2", "y2")->Set(true);
1036 EXPECT_EQ(cell_reader.Read("x1", "y1"), true);
1037 EXPECT_EQ(cell_reader.Read("x2", "y2"), true);
1038
1039 test_bool_gauge_with_labels->GetCell("x1", "y1")->Set(false);
1040 test_bool_gauge_with_labels->GetCell("x2", "y2")->Set(true);
1041 EXPECT_EQ(cell_reader.Read("x1", "y1"), false);
1042 EXPECT_EQ(cell_reader.Read("x2", "y2"), true);
1043
1044 test_bool_gauge_with_labels->GetCell("x1", "y1")->Set(false);
1045 test_bool_gauge_with_labels->GetCell("x2", "y2")->Set(false);
1046 EXPECT_EQ(cell_reader.Read("x1", "y1"), false);
1047 EXPECT_EQ(cell_reader.Read("x2", "y2"), false);
1048 }
1049
TEST(CellReaderTest,BoolGaugeRepeatedSetAndRead)1050 TEST(CellReaderTest, BoolGaugeRepeatedSetAndRead) {
1051 CellReader<bool> cell_reader(
1052 "/tensorflow/monitoring/test/bool_gauge_with_labels");
1053 EXPECT_EQ(cell_reader.Read("x1", "y1"), false);
1054 EXPECT_EQ(cell_reader.Read("x2", "y2"), false);
1055
1056 test_bool_gauge_with_labels->GetCell("x1", "y1")->Set(true);
1057 test_bool_gauge_with_labels->GetCell("x2", "y2")->Set(false);
1058 test_bool_gauge_with_labels->GetCell("x1", "y1")->Set(true);
1059 test_bool_gauge_with_labels->GetCell("x2", "y2")->Set(true);
1060 EXPECT_EQ(cell_reader.Read("x1", "y1"), true);
1061 EXPECT_EQ(cell_reader.Read("x2", "y2"), true);
1062 EXPECT_EQ(cell_reader.Read("x1", "y1"), true);
1063 EXPECT_EQ(cell_reader.Read("x2", "y2"), true);
1064 EXPECT_EQ(cell_reader.Read("x1", "y1"), true);
1065 EXPECT_EQ(cell_reader.Read("x2", "y2"), true);
1066
1067 test_bool_gauge_with_labels->GetCell("x1", "y1")->Set(false);
1068 test_bool_gauge_with_labels->GetCell("x2", "y2")->Set(true);
1069 test_bool_gauge_with_labels->GetCell("x1", "y1")->Set(false);
1070 test_bool_gauge_with_labels->GetCell("x2", "y2")->Set(true);
1071 EXPECT_EQ(cell_reader.Read("x1", "y1"), false);
1072 EXPECT_EQ(cell_reader.Read("x2", "y2"), true);
1073 EXPECT_EQ(cell_reader.Read("x1", "y1"), false);
1074 EXPECT_EQ(cell_reader.Read("x2", "y2"), true);
1075 EXPECT_EQ(cell_reader.Read("x1", "y1"), false);
1076 EXPECT_EQ(cell_reader.Read("x2", "y2"), true);
1077 }
1078
TEST(CellReaderTest,PercentilesDeltaNoLabels)1079 TEST(CellReaderTest, PercentilesDeltaNoLabels) {
1080 CellReader<Percentiles> cell_reader(
1081 "/tensorflow/monitoring/test/percentiles");
1082 Percentiles percentiles = cell_reader.Delta();
1083 EXPECT_EQ(percentiles.num(), 0);
1084 EXPECT_FLOAT_EQ(percentiles.sum(), 0.0);
1085
1086 test_percentiles->GetCell()->Add(1.0);
1087 percentiles = cell_reader.Delta();
1088 EXPECT_EQ(percentiles.num(), 1);
1089 EXPECT_FLOAT_EQ(percentiles.sum(), 1.0);
1090
1091 test_percentiles->GetCell()->Add(-10.0);
1092 percentiles = cell_reader.Delta();
1093 EXPECT_EQ(percentiles.num(), 1);
1094 EXPECT_FLOAT_EQ(percentiles.sum(), -10.0);
1095
1096 test_percentiles->GetCell()->Add(1000.0);
1097 percentiles = cell_reader.Delta();
1098 EXPECT_EQ(percentiles.num(), 1);
1099 EXPECT_FLOAT_EQ(percentiles.sum(), 1000.0);
1100 }
1101
TEST(CellReaderTest,PercentilesReadNoLabels)1102 TEST(CellReaderTest, PercentilesReadNoLabels) {
1103 CellReader<Percentiles> cell_reader(
1104 "/tensorflow/monitoring/test/percentiles");
1105 Percentiles percentiles = cell_reader.Read();
1106 EXPECT_EQ(percentiles.num(), 0);
1107 EXPECT_FLOAT_EQ(percentiles.sum(), 0.0);
1108
1109 test_percentiles->GetCell()->Add(1.0);
1110 percentiles = cell_reader.Read();
1111 EXPECT_EQ(percentiles.num(), 1);
1112 EXPECT_FLOAT_EQ(percentiles.sum(), 1.0);
1113
1114 test_percentiles->GetCell()->Add(-10.0);
1115 percentiles = cell_reader.Read();
1116 EXPECT_EQ(percentiles.num(), 2);
1117 EXPECT_FLOAT_EQ(percentiles.sum(), -9.0);
1118
1119 test_percentiles->GetCell()->Add(1000.0);
1120 percentiles = cell_reader.Read();
1121 EXPECT_EQ(percentiles.num(), 3);
1122 EXPECT_FLOAT_EQ(percentiles.sum(), 991.0);
1123 }
1124
TEST(CellReaderTest,PercentilesWithLabels)1125 TEST(CellReaderTest, PercentilesWithLabels) {
1126 CellReader<Percentiles> cell_reader(
1127 "/tensorflow/monitoring/test/percentiles_with_labels");
1128 Percentiles percentiles = cell_reader.Delta("x1", "y1");
1129 EXPECT_EQ(percentiles.num(), 0);
1130 EXPECT_FLOAT_EQ(percentiles.sum(), 0.0);
1131 percentiles = cell_reader.Delta("x2", "y2");
1132 EXPECT_EQ(percentiles.num(), 0);
1133 EXPECT_FLOAT_EQ(percentiles.sum(), 0.0);
1134 percentiles = cell_reader.Read("x1", "y1");
1135 EXPECT_EQ(percentiles.num(), 0);
1136 EXPECT_FLOAT_EQ(percentiles.sum(), 0.0);
1137 percentiles = cell_reader.Read("x2", "y2");
1138 EXPECT_EQ(percentiles.num(), 0);
1139 EXPECT_FLOAT_EQ(percentiles.sum(), 0.0);
1140
1141 test_percentiles_with_labels->GetCell("x1", "y1")->Add(-1.0);
1142 percentiles = cell_reader.Delta("x1", "y1");
1143 EXPECT_EQ(percentiles.num(), 1);
1144 EXPECT_FLOAT_EQ(percentiles.sum(), -1.0);
1145 percentiles = cell_reader.Delta("x2", "y2");
1146 EXPECT_EQ(percentiles.num(), 0);
1147 EXPECT_FLOAT_EQ(percentiles.sum(), 0.0);
1148 percentiles = cell_reader.Read("x1", "y1");
1149 EXPECT_EQ(percentiles.num(), 1);
1150 EXPECT_FLOAT_EQ(percentiles.sum(), -1.0);
1151 percentiles = cell_reader.Read("x2", "y2");
1152 EXPECT_EQ(percentiles.num(), 0);
1153 EXPECT_FLOAT_EQ(percentiles.sum(), 0.0);
1154
1155 test_percentiles_with_labels->GetCell("x2", "y2")->Add(1.0);
1156 percentiles = cell_reader.Delta("x1", "y1");
1157 EXPECT_EQ(percentiles.num(), 0);
1158 EXPECT_FLOAT_EQ(percentiles.sum(), 0.0);
1159 percentiles = cell_reader.Delta("x2", "y2");
1160 EXPECT_EQ(percentiles.num(), 1);
1161 EXPECT_FLOAT_EQ(percentiles.sum(), 1.0);
1162 percentiles = cell_reader.Read("x1", "y1");
1163 EXPECT_EQ(percentiles.num(), 1);
1164 EXPECT_FLOAT_EQ(percentiles.sum(), -1.0);
1165 percentiles = cell_reader.Read("x2", "y2");
1166 EXPECT_EQ(percentiles.num(), 1);
1167 EXPECT_FLOAT_EQ(percentiles.sum(), 1.0);
1168
1169 test_percentiles_with_labels->GetCell("x1", "y1")->Add(100.0);
1170 test_percentiles_with_labels->GetCell("x2", "y2")->Add(-100.0);
1171 percentiles = cell_reader.Delta("x1", "y1");
1172 EXPECT_EQ(percentiles.num(), 1);
1173 EXPECT_FLOAT_EQ(percentiles.sum(), 100.0);
1174 percentiles = cell_reader.Delta("x2", "y2");
1175 EXPECT_EQ(percentiles.num(), 1);
1176 EXPECT_FLOAT_EQ(percentiles.sum(), -100.0);
1177 percentiles = cell_reader.Read("x1", "y1");
1178 EXPECT_EQ(percentiles.num(), 2);
1179 EXPECT_FLOAT_EQ(percentiles.sum(), 99.0);
1180 percentiles = cell_reader.Read("x2", "y2");
1181 EXPECT_EQ(percentiles.num(), 2);
1182 EXPECT_FLOAT_EQ(percentiles.sum(), -99.0);
1183 }
1184
TEST(CellReaderTest,PercentilesRepeatedSetAndRead)1185 TEST(CellReaderTest, PercentilesRepeatedSetAndRead) {
1186 CellReader<Percentiles> cell_reader(
1187 "/tensorflow/monitoring/test/percentiles_with_labels");
1188 Percentiles percentiles = cell_reader.Delta("x1", "y1");
1189 EXPECT_EQ(percentiles.num(), 0);
1190 EXPECT_FLOAT_EQ(percentiles.sum(), 0.0);
1191 percentiles = cell_reader.Delta("x1", "y1");
1192 EXPECT_EQ(percentiles.num(), 0);
1193 EXPECT_FLOAT_EQ(percentiles.sum(), 0.0);
1194
1195 test_percentiles_with_labels->GetCell("x1", "y1")->Add(1.0);
1196 test_percentiles_with_labels->GetCell("x2", "y2")->Add(-1.0);
1197 test_percentiles_with_labels->GetCell("x1", "y1")->Add(10.0);
1198 test_percentiles_with_labels->GetCell("x2", "y2")->Add(-10.0);
1199 test_percentiles_with_labels->GetCell("x1", "y1")->Add(100.0);
1200 test_percentiles_with_labels->GetCell("x2", "y2")->Add(-100.0);
1201
1202 percentiles = cell_reader.Delta("x1", "y1");
1203 EXPECT_EQ(percentiles.num(), 3);
1204 EXPECT_FLOAT_EQ(percentiles.sum(), 111.0);
1205 percentiles = cell_reader.Read("x1", "y1");
1206 EXPECT_EQ(percentiles.num(), 3);
1207 EXPECT_FLOAT_EQ(percentiles.sum(), 111.0);
1208
1209 // Repeats the previous read. The values will stay the same, while the deltas
1210 // will be 0.
1211 percentiles = cell_reader.Delta("x1", "y1");
1212 EXPECT_EQ(percentiles.num(), 0);
1213 EXPECT_FLOAT_EQ(percentiles.sum(), 0);
1214 percentiles = cell_reader.Read("x1", "y1");
1215 EXPECT_EQ(percentiles.num(), 3);
1216 EXPECT_FLOAT_EQ(percentiles.sum(), 111.0);
1217
1218 percentiles = cell_reader.Delta("x2", "y2");
1219 EXPECT_EQ(percentiles.num(), 3);
1220 EXPECT_FLOAT_EQ(percentiles.sum(), -111.0);
1221 percentiles = cell_reader.Read("x2", "y2");
1222 EXPECT_EQ(percentiles.num(), 3);
1223 EXPECT_FLOAT_EQ(percentiles.sum(), -111.0);
1224
1225 // Repeats the previous read. The values will stay the same, while the deltas
1226 // will be 0.
1227 percentiles = cell_reader.Delta("x2", "y2");
1228 EXPECT_EQ(percentiles.num(), 0);
1229 EXPECT_FLOAT_EQ(percentiles.sum(), 0);
1230 percentiles = cell_reader.Read("x2", "y2");
1231 EXPECT_EQ(percentiles.num(), 3);
1232 EXPECT_FLOAT_EQ(percentiles.sum(), -111.0);
1233 }
1234
1235 #ifdef GTEST_HAS_DEATH_TEST
TEST(CellReaderTest,WrongNumberOfLabels)1236 TEST(CellReaderTest, WrongNumberOfLabels) {
1237 CellReader<int64_t> cell_reader("/tensorflow/monitoring/test/counter");
1238 EXPECT_EQ(cell_reader.Read(), 0);
1239 EXPECT_DEATH(cell_reader.Read("label1"), "has 0 labels");
1240 EXPECT_DEATH(cell_reader.Read("label1", "label2"), "has 0 labels");
1241 EXPECT_DEATH(cell_reader.Read("label1", "label2", "label3"), "has 0 labels");
1242
1243 CellReader<int64_t> cell_reader_with_labels(
1244 "/tensorflow/monitoring/test/counter_with_labels");
1245 EXPECT_DEATH(cell_reader_with_labels.Read(), "has 2 labels");
1246 EXPECT_DEATH(cell_reader_with_labels.Read("label1"), "has 2 labels");
1247 EXPECT_EQ(cell_reader_with_labels.Read("label1", "label2"), 0);
1248 EXPECT_DEATH(cell_reader_with_labels.Read("label1", "label2", "label3"),
1249 "has 2 labels");
1250 }
1251
TEST(CellReaderTest,MetricIsNotFound)1252 TEST(CellReaderTest, MetricIsNotFound) {
1253 CellReader<int64_t> cell_reader("/metric/does/not/exist");
1254 CellReader<int64_t> empty_cell_reader("");
1255 EXPECT_DEATH(cell_reader.Read(), "Metric descriptor is not found");
1256 EXPECT_DEATH(empty_cell_reader.Read(), "Metric descriptor is not found");
1257 }
1258
TEST(CellReaderTest,StringGaugeDelta)1259 TEST(CellReaderTest, StringGaugeDelta) {
1260 CellReader<std::string> cell_reader(
1261 "/tensorflow/monitoring/test/string_gauge");
1262 CellReader<std::string> cell_reader_with_labels(
1263 "/tensorflow/monitoring/test/string_gauge_with_labels");
1264 EXPECT_DEATH(cell_reader.Delta(), "Please use `Read` instead.");
1265 EXPECT_DEATH(cell_reader_with_labels.Delta("x", "y"),
1266 "Please use `Read` instead.");
1267 }
1268
TEST(CellReaderTest,BoolGaugeDelta)1269 TEST(CellReaderTest, BoolGaugeDelta) {
1270 CellReader<bool> cell_reader("/tensorflow/monitoring/test/bool_gauge");
1271 CellReader<bool> cell_reader_with_labels(
1272 "/tensorflow/monitoring/test/bool_gauge_with_labels");
1273 EXPECT_DEATH(cell_reader.Delta(), "Please use `Read` instead.");
1274 EXPECT_DEATH(cell_reader_with_labels.Delta("x", "y"),
1275 "Please use `Read` instead.");
1276 }
1277
TEST(CellReaderTest,InvalidType)1278 TEST(CellReaderTest, InvalidType) {
1279 CellReader<std::vector<int>> cell_reader(
1280 "/tensorflow/monitoring/test/counter");
1281 CellReader<std::vector<int>> cell_reader_with_labels(
1282 "/tensorflow/monitoring/test/counter_with_labels");
1283 EXPECT_DEATH(cell_reader.Read(),
1284 "Tensorflow CellReader does not support type");
1285 EXPECT_DEATH(cell_reader_with_labels.Delta("x", "y"),
1286 "Tensorflow CellReader does not support type");
1287
1288 test_counter->GetCell()->IncrementBy(1);
1289 test_counter_with_labels->GetCell("x", "y")->IncrementBy(1);
1290 EXPECT_DEATH(cell_reader.Read(),
1291 "Tensorflow CellReader does not support type");
1292 EXPECT_DEATH(cell_reader_with_labels.Delta("x", "y"),
1293 "Tensorflow CellReader does not support type");
1294 }
1295 #endif
1296
1297 } // namespace
1298 } // namespace testing
1299 } // namespace monitoring
1300 } // namespace tensorflow
1301