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

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

Issue 1618423004: Fix overflow bug in histogram sample data structures (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Created 4 years, 11 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 "base/metrics/sample_map.h" 5 #include "base/metrics/sample_map.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 9
10 namespace base { 10 namespace base {
11 namespace { 11 namespace {
12 12
13 TEST(SampleMapTest, AccumulateTest) { 13 TEST(SampleMapTest, AccumulateTest) {
14 SampleMap samples(1); 14 SampleMap samples(1);
15 15
16 samples.Accumulate(1, 100); 16 samples.Accumulate(1, 100);
17 samples.Accumulate(2, 200); 17 samples.Accumulate(2, 200);
18 samples.Accumulate(1, -200); 18 samples.Accumulate(1, -200);
19 EXPECT_EQ(-100, samples.GetCount(1)); 19 EXPECT_EQ(-100, samples.GetCount(1));
20 EXPECT_EQ(200, samples.GetCount(2)); 20 EXPECT_EQ(200, samples.GetCount(2));
21 21
22 EXPECT_EQ(300, samples.sum()); 22 EXPECT_EQ(300, samples.sum());
23 EXPECT_EQ(100, samples.TotalCount()); 23 EXPECT_EQ(100, samples.TotalCount());
24 EXPECT_EQ(samples.redundant_count(), samples.TotalCount()); 24 EXPECT_EQ(samples.redundant_count(), samples.TotalCount());
25 } 25 }
26 26
27 TEST(SampleMapTest, AccumulateLargeTest) {
28 SampleMap samples(1);
29
30 samples.Accumulate(250000000, 100);
31 samples.Accumulate(500000000, 200);
32 samples.Accumulate(250000000, -200);
33 EXPECT_EQ(-100, samples.GetCount(250000000));
34 EXPECT_EQ(200, samples.GetCount(500000000));
35
36 EXPECT_EQ(75000000000LL, samples.sum());
37 EXPECT_EQ(100, samples.TotalCount());
38 EXPECT_EQ(samples.redundant_count(), samples.TotalCount());
39 }
40
27 TEST(SampleMapTest, AddSubtractTest) { 41 TEST(SampleMapTest, AddSubtractTest) {
28 SampleMap samples1(1); 42 SampleMap samples1(1);
29 SampleMap samples2(2); 43 SampleMap samples2(2);
30 44
31 samples1.Accumulate(1, 100); 45 samples1.Accumulate(1, 100);
32 samples1.Accumulate(2, 100); 46 samples1.Accumulate(2, 100);
33 samples1.Accumulate(3, 100); 47 samples1.Accumulate(3, 100);
34 48
35 samples2.Accumulate(1, 200); 49 samples2.Accumulate(1, 200);
36 samples2.Accumulate(2, 200); 50 samples2.Accumulate(2, 200);
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 samples.Accumulate(1, 100); 162 samples.Accumulate(1, 100);
149 it = samples.Iterator(); 163 it = samples.Iterator();
150 EXPECT_FALSE(it->Done()); 164 EXPECT_FALSE(it->Done());
151 } 165 }
152 166
153 #endif 167 #endif
154 // (!defined(NDEBUG) || defined(DCHECK_ALWAYS_ON)) && GTEST_HAS_DEATH_TEST 168 // (!defined(NDEBUG) || defined(DCHECK_ALWAYS_ON)) && GTEST_HAS_DEATH_TEST
155 169
156 } // namespace 170 } // namespace
157 } // namespace base 171 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698