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

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

Issue 12207058: Connect SparseHistogram with the rest of stats system (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « base/metrics/histogram_snapshot_manager.cc ('k') | base/metrics/sparse_histogram.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 // Test of Histogram class 5 // Test of Histogram class
6 6
7 #include <climits> 7 #include <climits>
8 #include <algorithm> 8 #include <algorithm>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 308
309 TEST_F(HistogramTest, CorruptSampleCounts) { 309 TEST_F(HistogramTest, CorruptSampleCounts) {
310 Histogram* histogram = static_cast<Histogram*>( 310 Histogram* histogram = static_cast<Histogram*>(
311 Histogram::FactoryGet("Histogram", 1, 64, 8, HistogramBase::kNoFlags)); 311 Histogram::FactoryGet("Histogram", 1, 64, 8, HistogramBase::kNoFlags));
312 312
313 // Add some samples. 313 // Add some samples.
314 histogram->Add(20); 314 histogram->Add(20);
315 histogram->Add(40); 315 histogram->Add(40);
316 316
317 scoped_ptr<SampleVector> snapshot = histogram->SnapshotSampleVector(); 317 scoped_ptr<SampleVector> snapshot = histogram->SnapshotSampleVector();
318 EXPECT_EQ(Histogram::NO_INCONSISTENCIES, 318 EXPECT_EQ(HistogramBase::NO_INCONSISTENCIES,
319 histogram->FindCorruption(*snapshot)); 319 histogram->FindCorruption(*snapshot));
320 EXPECT_EQ(2, snapshot->redundant_count()); 320 EXPECT_EQ(2, snapshot->redundant_count());
321 EXPECT_EQ(2, snapshot->TotalCount()); 321 EXPECT_EQ(2, snapshot->TotalCount());
322 322
323 snapshot->counts_[3] += 100; // Sample count won't match redundant count. 323 snapshot->counts_[3] += 100; // Sample count won't match redundant count.
324 EXPECT_EQ(Histogram::COUNT_LOW_ERROR, 324 EXPECT_EQ(HistogramBase::COUNT_LOW_ERROR,
325 histogram->FindCorruption(*snapshot)); 325 histogram->FindCorruption(*snapshot));
326 snapshot->counts_[2] -= 200; 326 snapshot->counts_[2] -= 200;
327 EXPECT_EQ(Histogram::COUNT_HIGH_ERROR, 327 EXPECT_EQ(HistogramBase::COUNT_HIGH_ERROR,
328 histogram->FindCorruption(*snapshot)); 328 histogram->FindCorruption(*snapshot));
329 329
330 // But we can't spot a corruption if it is compensated for. 330 // But we can't spot a corruption if it is compensated for.
331 snapshot->counts_[1] += 100; 331 snapshot->counts_[1] += 100;
332 EXPECT_EQ(Histogram::NO_INCONSISTENCIES, 332 EXPECT_EQ(HistogramBase::NO_INCONSISTENCIES,
333 histogram->FindCorruption(*snapshot)); 333 histogram->FindCorruption(*snapshot));
334 } 334 }
335 335
336 TEST_F(HistogramTest, CorruptBucketBounds) { 336 TEST_F(HistogramTest, CorruptBucketBounds) {
337 Histogram* histogram = static_cast<Histogram*>( 337 Histogram* histogram = static_cast<Histogram*>(
338 Histogram::FactoryGet("Histogram", 1, 64, 8, HistogramBase::kNoFlags)); 338 Histogram::FactoryGet("Histogram", 1, 64, 8, HistogramBase::kNoFlags));
339 339
340 scoped_ptr<SampleVector> snapshot = histogram->SnapshotSampleVector(); 340 scoped_ptr<SampleVector> snapshot = histogram->SnapshotSampleVector();
341 EXPECT_EQ(Histogram::NO_INCONSISTENCIES, 341 EXPECT_EQ(HistogramBase::NO_INCONSISTENCIES,
342 histogram->FindCorruption(*snapshot)); 342 histogram->FindCorruption(*snapshot));
343 343
344 BucketRanges* bucket_ranges = 344 BucketRanges* bucket_ranges =
345 const_cast<BucketRanges*>(histogram->bucket_ranges()); 345 const_cast<BucketRanges*>(histogram->bucket_ranges());
346 HistogramBase::Sample tmp = bucket_ranges->range(1); 346 HistogramBase::Sample tmp = bucket_ranges->range(1);
347 bucket_ranges->set_range(1, bucket_ranges->range(2)); 347 bucket_ranges->set_range(1, bucket_ranges->range(2));
348 bucket_ranges->set_range(2, tmp); 348 bucket_ranges->set_range(2, tmp);
349 EXPECT_EQ(Histogram::BUCKET_ORDER_ERROR | Histogram::RANGE_CHECKSUM_ERROR, 349 EXPECT_EQ(
350 histogram->FindCorruption(*snapshot)); 350 HistogramBase::BUCKET_ORDER_ERROR | HistogramBase::RANGE_CHECKSUM_ERROR,
351 histogram->FindCorruption(*snapshot));
351 352
352 bucket_ranges->set_range(2, bucket_ranges->range(1)); 353 bucket_ranges->set_range(2, bucket_ranges->range(1));
353 bucket_ranges->set_range(1, tmp); 354 bucket_ranges->set_range(1, tmp);
354 EXPECT_EQ(0, histogram->FindCorruption(*snapshot)); 355 EXPECT_EQ(0, histogram->FindCorruption(*snapshot));
355 356
356 // Show that two simple changes don't offset each other 357 // Show that two simple changes don't offset each other
357 bucket_ranges->set_range(3, bucket_ranges->range(3) + 1); 358 bucket_ranges->set_range(3, bucket_ranges->range(3) + 1);
358 EXPECT_EQ(Histogram::RANGE_CHECKSUM_ERROR, 359 EXPECT_EQ(HistogramBase::RANGE_CHECKSUM_ERROR,
359 histogram->FindCorruption(*snapshot)); 360 histogram->FindCorruption(*snapshot));
360 361
361 bucket_ranges->set_range(4, bucket_ranges->range(4) - 1); 362 bucket_ranges->set_range(4, bucket_ranges->range(4) - 1);
362 EXPECT_EQ(Histogram::RANGE_CHECKSUM_ERROR, 363 EXPECT_EQ(HistogramBase::RANGE_CHECKSUM_ERROR,
363 histogram->FindCorruption(*snapshot)); 364 histogram->FindCorruption(*snapshot));
364 365
365 // Repair histogram so that destructor won't DCHECK(). 366 // Repair histogram so that destructor won't DCHECK().
366 bucket_ranges->set_range(3, bucket_ranges->range(3) - 1); 367 bucket_ranges->set_range(3, bucket_ranges->range(3) - 1);
367 bucket_ranges->set_range(4, bucket_ranges->range(4) + 1); 368 bucket_ranges->set_range(4, bucket_ranges->range(4) + 1);
368 } 369 }
369 370
370 TEST_F(HistogramTest, HistogramSerializeInfo) { 371 TEST_F(HistogramTest, HistogramSerializeInfo) {
371 Histogram* histogram = static_cast<Histogram*>( 372 Histogram* histogram = static_cast<Histogram*>(
372 Histogram::FactoryGet("Histogram", 1, 64, 8, 373 Histogram::FactoryGet("Histogram", 1, 64, 8,
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 // CustomHistogram needs at least 1 valid range. 484 // CustomHistogram needs at least 1 valid range.
484 custom_ranges.clear(); 485 custom_ranges.clear();
485 custom_ranges.push_back(0); 486 custom_ranges.push_back(0);
486 EXPECT_DEATH(CustomHistogram::FactoryGet("BadRangesCustom3", custom_ranges, 487 EXPECT_DEATH(CustomHistogram::FactoryGet("BadRangesCustom3", custom_ranges,
487 HistogramBase::kNoFlags), 488 HistogramBase::kNoFlags),
488 ""); 489 "");
489 } 490 }
490 #endif 491 #endif
491 492
492 } // namespace base 493 } // namespace base
OLDNEW
« no previous file with comments | « base/metrics/histogram_snapshot_manager.cc ('k') | base/metrics/sparse_histogram.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698