Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(46)

Side by Side Diff: base/metrics/statistics_recorder_unittest.cc

Issue 1641513004: Update //base to chromium 9659b08ea5a34f889dc4166217f438095ddc10d2 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <vector> 5 #include <vector>
6 6
7 #include "base/bind.h"
7 #include "base/json/json_reader.h" 8 #include "base/json/json_reader.h"
8 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
9 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram_macros.h"
11 #include "base/metrics/sparse_histogram.h"
10 #include "base/metrics/statistics_recorder.h" 12 #include "base/metrics/statistics_recorder.h"
11 #include "base/values.h" 13 #include "base/values.h"
12 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
13 15
14 namespace base { 16 namespace base {
15 17
16 class StatisticsRecorderTest : public testing::Test { 18 class StatisticsRecorderTest : public testing::Test {
17 protected: 19 protected:
18 void SetUp() override { 20 void SetUp() override {
19 // Each test will have a clean state (no Histogram / BucketRanges 21 // Each test will have a clean state (no Histogram / BucketRanges
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 EXPECT_EQ("TestHistogram2", histogram_name); 307 EXPECT_EQ("TestHistogram2", histogram_name);
306 308
307 json.clear(); 309 json.clear();
308 UninitializeStatisticsRecorder(); 310 UninitializeStatisticsRecorder();
309 311
310 // No data should be returned. 312 // No data should be returned.
311 json = StatisticsRecorder::ToJSON(query); 313 json = StatisticsRecorder::ToJSON(query);
312 EXPECT_TRUE(json.empty()); 314 EXPECT_TRUE(json.empty());
313 } 315 }
314 316
317 namespace {
318
319 // CallbackCheckWrapper is simply a convenient way to check and store that
320 // a callback was actually run.
321 struct CallbackCheckWrapper {
322 CallbackCheckWrapper() : called(false), last_histogram_value(0) {}
323
324 void OnHistogramChanged(base::HistogramBase::Sample histogram_value) {
325 called = true;
326 last_histogram_value = histogram_value;
327 }
328
329 bool called;
330 base::HistogramBase::Sample last_histogram_value;
331 };
332
333 } // namespace
334
335 // Check that you can't overwrite the callback with another.
336 TEST_F(StatisticsRecorderTest, SetCallbackFailsWithoutHistogramTest) {
337 CallbackCheckWrapper callback_wrapper;
338
339 bool result = base::StatisticsRecorder::SetCallback(
340 "TestHistogram", base::Bind(&CallbackCheckWrapper::OnHistogramChanged,
341 base::Unretained(&callback_wrapper)));
342 EXPECT_TRUE(result);
343
344 result = base::StatisticsRecorder::SetCallback(
345 "TestHistogram", base::Bind(&CallbackCheckWrapper::OnHistogramChanged,
346 base::Unretained(&callback_wrapper)));
347 EXPECT_FALSE(result);
348 }
349
350 // Check that you can't overwrite the callback with another.
351 TEST_F(StatisticsRecorderTest, SetCallbackFailsWithHistogramTest) {
352 HistogramBase* histogram = Histogram::FactoryGet("TestHistogram", 1, 1000, 10,
353 HistogramBase::kNoFlags);
354 EXPECT_TRUE(histogram);
355
356 CallbackCheckWrapper callback_wrapper;
357
358 bool result = base::StatisticsRecorder::SetCallback(
359 "TestHistogram", base::Bind(&CallbackCheckWrapper::OnHistogramChanged,
360 base::Unretained(&callback_wrapper)));
361 EXPECT_TRUE(result);
362 EXPECT_EQ(histogram->flags() & base::HistogramBase::kCallbackExists,
363 base::HistogramBase::kCallbackExists);
364
365 result = base::StatisticsRecorder::SetCallback(
366 "TestHistogram", base::Bind(&CallbackCheckWrapper::OnHistogramChanged,
367 base::Unretained(&callback_wrapper)));
368 EXPECT_FALSE(result);
369 EXPECT_EQ(histogram->flags() & base::HistogramBase::kCallbackExists,
370 base::HistogramBase::kCallbackExists);
371
372 histogram->Add(1);
373
374 EXPECT_TRUE(callback_wrapper.called);
375 }
376
377 // Check that you can't overwrite the callback with another.
378 TEST_F(StatisticsRecorderTest, ClearCallbackSuceedsWithHistogramTest) {
379 HistogramBase* histogram = Histogram::FactoryGet("TestHistogram", 1, 1000, 10,
380 HistogramBase::kNoFlags);
381 EXPECT_TRUE(histogram);
382
383 CallbackCheckWrapper callback_wrapper;
384
385 bool result = base::StatisticsRecorder::SetCallback(
386 "TestHistogram", base::Bind(&CallbackCheckWrapper::OnHistogramChanged,
387 base::Unretained(&callback_wrapper)));
388 EXPECT_TRUE(result);
389 EXPECT_EQ(histogram->flags() & base::HistogramBase::kCallbackExists,
390 base::HistogramBase::kCallbackExists);
391
392 base::StatisticsRecorder::ClearCallback("TestHistogram");
393 EXPECT_EQ(histogram->flags() & base::HistogramBase::kCallbackExists, 0);
394
395 histogram->Add(1);
396
397 EXPECT_FALSE(callback_wrapper.called);
398 }
399
400 // Check that callback is used.
401 TEST_F(StatisticsRecorderTest, CallbackUsedTest) {
402 {
403 HistogramBase* histogram = Histogram::FactoryGet(
404 "TestHistogram", 1, 1000, 10, HistogramBase::kNoFlags);
405 EXPECT_TRUE(histogram);
406
407 CallbackCheckWrapper callback_wrapper;
408
409 base::StatisticsRecorder::SetCallback(
410 "TestHistogram", base::Bind(&CallbackCheckWrapper::OnHistogramChanged,
411 base::Unretained(&callback_wrapper)));
412
413 histogram->Add(1);
414
415 EXPECT_TRUE(callback_wrapper.called);
416 EXPECT_EQ(callback_wrapper.last_histogram_value, 1);
417 }
418
419 {
420 HistogramBase* linear_histogram = LinearHistogram::FactoryGet(
421 "TestLinearHistogram", 1, 1000, 10, HistogramBase::kNoFlags);
422
423 CallbackCheckWrapper callback_wrapper;
424
425 base::StatisticsRecorder::SetCallback(
426 "TestLinearHistogram",
427 base::Bind(&CallbackCheckWrapper::OnHistogramChanged,
428 base::Unretained(&callback_wrapper)));
429
430 linear_histogram->Add(1);
431
432 EXPECT_TRUE(callback_wrapper.called);
433 EXPECT_EQ(callback_wrapper.last_histogram_value, 1);
434 }
435
436 {
437 std::vector<int> custom_ranges;
438 custom_ranges.push_back(1);
439 custom_ranges.push_back(5);
440 HistogramBase* custom_histogram = CustomHistogram::FactoryGet(
441 "TestCustomHistogram", custom_ranges, HistogramBase::kNoFlags);
442
443 CallbackCheckWrapper callback_wrapper;
444
445 base::StatisticsRecorder::SetCallback(
446 "TestCustomHistogram",
447 base::Bind(&CallbackCheckWrapper::OnHistogramChanged,
448 base::Unretained(&callback_wrapper)));
449
450 custom_histogram->Add(1);
451
452 EXPECT_TRUE(callback_wrapper.called);
453 EXPECT_EQ(callback_wrapper.last_histogram_value, 1);
454 }
455
456 {
457 HistogramBase* custom_histogram = SparseHistogram::FactoryGet(
458 "TestSparseHistogram", HistogramBase::kNoFlags);
459
460 CallbackCheckWrapper callback_wrapper;
461
462 base::StatisticsRecorder::SetCallback(
463 "TestSparseHistogram",
464 base::Bind(&CallbackCheckWrapper::OnHistogramChanged,
465 base::Unretained(&callback_wrapper)));
466
467 custom_histogram->Add(1);
468
469 EXPECT_TRUE(callback_wrapper.called);
470 EXPECT_EQ(callback_wrapper.last_histogram_value, 1);
471 }
472 }
473
474 // Check that setting a callback before the histogram exists works.
475 TEST_F(StatisticsRecorderTest, CallbackUsedBeforeHistogramCreatedTest) {
476 CallbackCheckWrapper callback_wrapper;
477
478 base::StatisticsRecorder::SetCallback(
479 "TestHistogram", base::Bind(&CallbackCheckWrapper::OnHistogramChanged,
480 base::Unretained(&callback_wrapper)));
481
482 HistogramBase* histogram = Histogram::FactoryGet("TestHistogram", 1, 1000, 10,
483 HistogramBase::kNoFlags);
484 EXPECT_TRUE(histogram);
485 histogram->Add(1);
486
487 EXPECT_TRUE(callback_wrapper.called);
488 EXPECT_EQ(callback_wrapper.last_histogram_value, 1);
489 }
490
315 } // namespace base 491 } // namespace base
OLDNEW
« no previous file with comments | « base/metrics/statistics_recorder.cc ('k') | base/pickle.h » ('j') | gin/modules/console.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698