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 #include "sync/util/data_type_histogram.h" 6 7 #include "base/time/time.h" 8 #include "testing/gtest/include/gtest/gtest.h" 9 10 namespace syncer { 11 namespace { 12 13 class DataTypeHistogramTest : public testing::Test { 14 }; 15 16 // Create a histogram of type LOCAL_HISTOGRAM_COUNTS for each model type. 17 // Nothing should break. 18 TEST(DataTypeHistogramTest, BasicCount) { 19 for (int i = FIRST_REAL_MODEL_TYPE; i <= LAST_REAL_MODEL_TYPE; ++i) { 20 ModelType type = ModelTypeFromInt(i); 21 #define PER_DATA_TYPE_MACRO(type_str) \ 22 LOCAL_HISTOGRAM_COUNTS("Prefix" type_str "Suffix", 1); 23 SYNC_DATA_TYPE_HISTOGRAM(type); 24 #undef PER_DATA_TYPE_MACRO 25 } 26 } 27 28 // Create a histogram of type SYNC_FREQ_HISTOGRAM for each model type. Nothing 29 // should break. 30 TEST(DataTypeHistogramTest, BasicFreq) { 31 for (int i = FIRST_REAL_MODEL_TYPE; i <= LAST_REAL_MODEL_TYPE; ++i) { 32 ModelType type = ModelTypeFromInt(i); 33 #define PER_DATA_TYPE_MACRO(type_str) \ 34 SYNC_FREQ_HISTOGRAM("Prefix" type_str "Suffix", \ 35 base::TimeDelta::FromSeconds(1)); 36 SYNC_DATA_TYPE_HISTOGRAM(type); 37 #undef PER_DATA_TYPE_MACRO 38 } 39 } 40 41 // Create a histogram of type UMA_HISTOGRAM_ENUMERATION for each model type. 42 // Nothing should break. 43 TEST(DataTypeHistogramTest, BasicEnum) { 44 enum HistTypes { 45 TYPE_1, 46 TYPE_2, 47 TYPE_COUNT, 48 }; 49 for (int i = FIRST_REAL_MODEL_TYPE; i <= LAST_REAL_MODEL_TYPE; ++i) { 50 ModelType type = ModelTypeFromInt(i); 51 #define PER_DATA_TYPE_MACRO(type_str) \ 52 UMA_HISTOGRAM_ENUMERATION("Prefix" type_str "Suffix", \ 53 (i % 2 ? TYPE_1 : TYPE_2), TYPE_COUNT); 54 SYNC_DATA_TYPE_HISTOGRAM(type); 55 #undef PER_DATA_TYPE_MACRO 56 } 57 } 58 59 } // namespace 60 } // namespace syncer 61