| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 163 EXPECT_EQ(500, observer->last_sample_); | 163 EXPECT_EQ(500, observer->last_sample_); |
| 164 // Aggregated stats. | 164 // Aggregated stats. |
| 165 AggregatedStats stats = counter.GetStats(); | 165 AggregatedStats stats = counter.GetStats(); |
| 166 EXPECT_EQ(1, stats.num_samples); | 166 EXPECT_EQ(1, stats.num_samples); |
| 167 EXPECT_EQ(500, stats.min); | 167 EXPECT_EQ(500, stats.min); |
| 168 EXPECT_EQ(500, stats.max); | 168 EXPECT_EQ(500, stats.max); |
| 169 } | 169 } |
| 170 | 170 |
| 171 TEST_F(StatsCounterTest, TestMetric_RateCounter) { | 171 TEST_F(StatsCounterTest, TestMetric_RateCounter) { |
| 172 StatsCounterObserverImpl* observer = new StatsCounterObserverImpl(); | 172 StatsCounterObserverImpl* observer = new StatsCounterObserverImpl(); |
| 173 RateCounter counter(&clock_, observer); | 173 RateCounter counter(&clock_, observer, true); |
| 174 counter.Add(186); | 174 counter.Add(186); |
| 175 counter.Add(350); | 175 counter.Add(350); |
| 176 counter.Add(22); | 176 counter.Add(22); |
| 177 clock_.AdvanceTimeMilliseconds(kProcessIntervalMs); | 177 clock_.AdvanceTimeMilliseconds(kProcessIntervalMs); |
| 178 // Trigger process (sample included in next interval). | 178 // Trigger process (sample included in next interval). |
| 179 counter.Add(111); | 179 counter.Add(111); |
| 180 // Rate per interval, (186 + 350 + 22) / 2 sec = 279 samples/sec | 180 // Rate per interval, (186 + 350 + 22) / 2 sec = 279 samples/sec |
| 181 EXPECT_EQ(1, observer->num_calls_); | 181 EXPECT_EQ(1, observer->num_calls_); |
| 182 EXPECT_EQ(279, observer->last_sample_); | 182 EXPECT_EQ(279, observer->last_sample_); |
| 183 // Aggregated stats. | 183 // Aggregated stats. |
| 184 AggregatedStats stats = counter.GetStats(); | 184 AggregatedStats stats = counter.GetStats(); |
| 185 EXPECT_EQ(1, stats.num_samples); | 185 EXPECT_EQ(1, stats.num_samples); |
| 186 EXPECT_EQ(279, stats.min); | 186 EXPECT_EQ(279, stats.min); |
| 187 EXPECT_EQ(279, stats.max); | 187 EXPECT_EQ(279, stats.max); |
| 188 } | 188 } |
| 189 | 189 |
| 190 TEST_F(StatsCounterTest, TestMetric_RateAccCounter) { | 190 TEST_F(StatsCounterTest, TestMetric_RateAccCounter) { |
| 191 StatsCounterObserverImpl* observer = new StatsCounterObserverImpl(); | 191 StatsCounterObserverImpl* observer = new StatsCounterObserverImpl(); |
| 192 RateAccCounter counter(&clock_, observer); | 192 RateAccCounter counter(&clock_, observer, true); |
| 193 counter.Set(175); | 193 counter.Set(175); |
| 194 counter.Set(188); | 194 counter.Set(188); |
| 195 clock_.AdvanceTimeMilliseconds(kProcessIntervalMs); | 195 clock_.AdvanceTimeMilliseconds(kProcessIntervalMs); |
| 196 // Trigger process (sample included in next interval). | 196 // Trigger process (sample included in next interval). |
| 197 counter.Set(192); | 197 counter.Set(192); |
| 198 // Rate per interval: (188 - 0) / 2 sec = 94 samples/sec | 198 // Rate per interval: (188 - 0) / 2 sec = 94 samples/sec |
| 199 EXPECT_EQ(1, observer->num_calls_); | 199 EXPECT_EQ(1, observer->num_calls_); |
| 200 EXPECT_EQ(94, observer->last_sample_); | 200 EXPECT_EQ(94, observer->last_sample_); |
| 201 // Aggregated stats. | 201 // Aggregated stats. |
| 202 AggregatedStats stats = counter.GetStats(); | 202 AggregatedStats stats = counter.GetStats(); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 245 EXPECT_EQ(kSample1, stats.min); | 245 EXPECT_EQ(kSample1, stats.min); |
| 246 EXPECT_EQ(kSample2, stats.max); | 246 EXPECT_EQ(kSample2, stats.max); |
| 247 EXPECT_EQ(6, stats.average); | 247 EXPECT_EQ(6, stats.average); |
| 248 } | 248 } |
| 249 | 249 |
| 250 TEST_F(StatsCounterTest, TestRateAccCounter_NegativeRateIgnored) { | 250 TEST_F(StatsCounterTest, TestRateAccCounter_NegativeRateIgnored) { |
| 251 StatsCounterObserverImpl* observer = new StatsCounterObserverImpl(); | 251 StatsCounterObserverImpl* observer = new StatsCounterObserverImpl(); |
| 252 const int kSample1 = 200; // 200 / 2 sec | 252 const int kSample1 = 200; // 200 / 2 sec |
| 253 const int kSample2 = 100; // -100 / 2 sec - negative ignored | 253 const int kSample2 = 100; // -100 / 2 sec - negative ignored |
| 254 const int kSample3 = 700; // 600 / 2 sec | 254 const int kSample3 = 700; // 600 / 2 sec |
| 255 RateAccCounter counter(&clock_, observer); | 255 RateAccCounter counter(&clock_, observer, true); |
| 256 SetSampleAndAdvance(kSample1, kProcessIntervalMs, &counter); | 256 SetSampleAndAdvance(kSample1, kProcessIntervalMs, &counter); |
| 257 SetSampleAndAdvance(kSample2, kProcessIntervalMs, &counter); | 257 SetSampleAndAdvance(kSample2, kProcessIntervalMs, &counter); |
| 258 SetSampleAndAdvance(kSample3, kProcessIntervalMs, &counter); | 258 SetSampleAndAdvance(kSample3, kProcessIntervalMs, &counter); |
| 259 EXPECT_EQ(1, observer->num_calls_); | 259 EXPECT_EQ(1, observer->num_calls_); |
| 260 EXPECT_EQ(100, observer->last_sample_); | 260 EXPECT_EQ(100, observer->last_sample_); |
| 261 // Trigger process (sample included in next interval). | 261 // Trigger process (sample included in next interval). |
| 262 counter.Set(2000); | 262 counter.Set(2000); |
| 263 EXPECT_EQ(2, observer->num_calls_); | 263 EXPECT_EQ(2, observer->num_calls_); |
| 264 EXPECT_EQ(300, observer->last_sample_); | 264 EXPECT_EQ(300, observer->last_sample_); |
| 265 // Aggregated stats. | 265 // Aggregated stats. |
| (...skipping 19 matching lines...) Expand all Loading... |
| 285 // [6:1],[8:1] | 285 // [6:1],[8:1] |
| 286 EXPECT_EQ(2, observer->num_calls_); | 286 EXPECT_EQ(2, observer->num_calls_); |
| 287 EXPECT_EQ(8, observer->last_sample_); | 287 EXPECT_EQ(8, observer->last_sample_); |
| 288 // Aggregated stats. | 288 // Aggregated stats. |
| 289 AggregatedStats stats = counter.GetStats(); | 289 AggregatedStats stats = counter.GetStats(); |
| 290 EXPECT_EQ(2, stats.num_samples); | 290 EXPECT_EQ(2, stats.num_samples); |
| 291 EXPECT_EQ(6, stats.min); | 291 EXPECT_EQ(6, stats.min); |
| 292 EXPECT_EQ(8, stats.max); | 292 EXPECT_EQ(8, stats.max); |
| 293 } | 293 } |
| 294 | 294 |
| 295 TEST_F(StatsCounterTest, TestRateCounter_IntervalsWithoutSamplesIncluded) { | 295 TEST_F(StatsCounterTest, TestRateCounter_IntervalsWithoutSamplesIgnored) { |
| 296 const bool kIncludeEmptyIntervals = false; |
| 296 StatsCounterObserverImpl* observer = new StatsCounterObserverImpl(); | 297 StatsCounterObserverImpl* observer = new StatsCounterObserverImpl(); |
| 297 const int kSample1 = 50; // 50 / 2 sec | 298 const int kSample1 = 50; // 50 / 2 sec |
| 298 const int kSample2 = 20; // 20 / 2 sec | 299 const int kSample2 = 20; // 20 / 2 sec |
| 299 RateCounter counter(&clock_, observer); | 300 RateCounter counter(&clock_, observer, kIncludeEmptyIntervals); |
| 300 counter.Add(kSample1); | 301 counter.Add(kSample1); |
| 301 clock_.AdvanceTimeMilliseconds(kProcessIntervalMs * 3 - 1); | 302 clock_.AdvanceTimeMilliseconds(kProcessIntervalMs * 3 - 1); |
| 302 // Trigger process (sample included in next interval). | 303 // Trigger process (sample included in next interval). |
| 304 counter.Add(kSample2); |
| 305 // [25:1], one interval without samples passed. |
| 306 EXPECT_EQ(1, observer->num_calls_); |
| 307 EXPECT_EQ(25, observer->last_sample_); |
| 308 // Make last interval pass. |
| 309 clock_.AdvanceTimeMilliseconds(1); |
| 310 counter.Add(111); // Trigger process (sample included in next interval). |
| 311 // [10:1],[25:1] |
| 312 EXPECT_EQ(2, observer->num_calls_); |
| 313 EXPECT_EQ(10, observer->last_sample_); |
| 314 // Aggregated stats. |
| 315 AggregatedStats stats = counter.GetStats(); |
| 316 EXPECT_EQ(2, stats.num_samples); |
| 317 EXPECT_EQ(10, stats.min); |
| 318 EXPECT_EQ(25, stats.max); |
| 319 } |
| 320 |
| 321 TEST_F(StatsCounterTest, TestRateCounter_IntervalsWithoutSamplesIncluded) { |
| 322 const bool kIncludeEmptyIntervals = true; |
| 323 StatsCounterObserverImpl* observer = new StatsCounterObserverImpl(); |
| 324 const int kSample1 = 50; // 50 / 2 sec |
| 325 const int kSample2 = 20; // 20 / 2 sec |
| 326 RateCounter counter(&clock_, observer, kIncludeEmptyIntervals); |
| 327 counter.Add(kSample1); |
| 328 clock_.AdvanceTimeMilliseconds(kProcessIntervalMs * 3 - 1); |
| 329 // Trigger process (sample included in next interval). |
| 303 counter.Add(kSample2); | 330 counter.Add(kSample2); |
| 304 // [0:1],[25:1], one interval without samples passed. | 331 // [0:1],[25:1], one interval without samples passed. |
| 305 EXPECT_EQ(2, observer->num_calls_); | 332 EXPECT_EQ(2, observer->num_calls_); |
| 306 EXPECT_EQ(25, observer->last_sample_); | 333 EXPECT_EQ(25, observer->last_sample_); |
| 307 // Make last interval pass. | 334 // Make last interval pass. |
| 308 clock_.AdvanceTimeMilliseconds(1); | 335 clock_.AdvanceTimeMilliseconds(1); |
| 309 counter.Add(111); // Trigger process (sample included in next interval). | 336 counter.Add(111); // Trigger process (sample included in next interval). |
| 310 // [0:1],[10:1],[25:1] | 337 // [0:1],[10:1],[25:1] |
| 311 EXPECT_EQ(3, observer->num_calls_); | 338 EXPECT_EQ(3, observer->num_calls_); |
| 312 EXPECT_EQ(10, observer->last_sample_); | 339 EXPECT_EQ(10, observer->last_sample_); |
| 313 // Aggregated stats. | 340 // Aggregated stats. |
| 314 AggregatedStats stats = counter.GetStats(); | 341 AggregatedStats stats = counter.GetStats(); |
| 315 EXPECT_EQ(3, stats.num_samples); | 342 EXPECT_EQ(3, stats.num_samples); |
| 316 EXPECT_EQ(0, stats.min); | 343 EXPECT_EQ(0, stats.min); |
| 317 EXPECT_EQ(25, stats.max); | 344 EXPECT_EQ(25, stats.max); |
| 318 } | 345 } |
| 319 | 346 |
| 320 } // namespace webrtc | 347 } // namespace webrtc |
| OLD | NEW |