- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / test / base / uma_histogram_helper.h
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
3 // found in the LICENSE file.
4
5 #ifndef CHROME_TEST_BASE_UMA_HISTOGRAM_HELPER_H_
6 #define CHROME_TEST_BASE_UMA_HISTOGRAM_HELPER_H_
7
8 #include "base/metrics/histogram.h"
9 #include "base/metrics/histogram_base.h"
10 #include "base/metrics/histogram_samples.h"
11
12 // UMAHistogramHelper provides a simple interface for examining UMA histograms.
13 // Tests can use this interface to verify that UMA data is getting logged as
14 // intended.
15 class UMAHistogramHelper {
16  public:
17   UMAHistogramHelper();
18
19   // Each child process may have its own histogram data, make sure this data
20   // gets accumulated into the browser process before we examine the histograms.
21   void Fetch();
22
23   // We know the exact number of samples in a bucket, and that no other bucket
24   // should have samples.
25   void ExpectUniqueSample(const std::string& name,
26                           base::HistogramBase::Sample sample,
27                           base::HistogramBase::Count expected_count);
28
29   // We don't know the values of the samples, but we know how many there are.
30   void ExpectTotalCount(const std::string& name,
31                         base::HistogramBase::Count count);
32
33  private:
34   void FetchCallback();
35
36   void CheckBucketCount(const std::string& name,
37                         base::HistogramBase::Sample sample,
38                         base::Histogram::Count expected_count,
39                         base::HistogramSamples& samples);
40
41   void CheckTotalCount(const std::string& name,
42                        base::Histogram::Count expected_count,
43                        base::HistogramSamples& samples);
44
45   DISALLOW_COPY_AND_ASSIGN(UMAHistogramHelper);
46 };
47
48 #endif  // CHROME_TEST_BASE_UMA_HISTOGRAM_HELPER_H_