blob: 7dc2bf23c0f58b123fdcfaf3d2aff5aa60c7ded2 [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "sync/util/data_type_histogram.h"
#include "base/metrics/statistics_recorder.h"
#include "base/time/time.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace syncer {
namespace {
class DataTypeHistogramTest : public testing::Test {
public:
void SetUp() override {
base::StatisticsRecorder::Initialize();
}
};
// Create a histogram of type LOCAL_HISTOGRAM_COUNTS for each model type.
// Nothing should break.
TEST(DataTypeHistogramTest, BasicCount) {
for (int i = FIRST_REAL_MODEL_TYPE; i <= LAST_REAL_MODEL_TYPE; ++i) {
ModelType type = ModelTypeFromInt(i);
#define PER_DATA_TYPE_MACRO(type_str) \
LOCAL_HISTOGRAM_COUNTS("BasicCountPrefix" type_str "Suffix", 1);
SYNC_DATA_TYPE_HISTOGRAM(type);
#undef PER_DATA_TYPE_MACRO
}
}
// Create a histogram of type SYNC_FREQ_HISTOGRAM for each model type. Nothing
// should break.
TEST(DataTypeHistogramTest, BasicFreq) {
for (int i = FIRST_REAL_MODEL_TYPE; i <= LAST_REAL_MODEL_TYPE; ++i) {
ModelType type = ModelTypeFromInt(i);
#define PER_DATA_TYPE_MACRO(type_str) \
SYNC_FREQ_HISTOGRAM("BasicFreqPrefix" type_str "Suffix", \
base::TimeDelta::FromSeconds(1));
SYNC_DATA_TYPE_HISTOGRAM(type);
#undef PER_DATA_TYPE_MACRO
}
}
// Create a histogram of type UMA_HISTOGRAM_ENUMERATION for each model type.
// Nothing should break.
TEST(DataTypeHistogramTest, BasicEnum) {
enum HistTypes {
TYPE_1,
TYPE_2,
TYPE_COUNT,
};
for (int i = FIRST_REAL_MODEL_TYPE; i <= LAST_REAL_MODEL_TYPE; ++i) {
ModelType type = ModelTypeFromInt(i);
#define PER_DATA_TYPE_MACRO(type_str) \
UMA_HISTOGRAM_ENUMERATION("BasicEnumPrefix" type_str "Suffix", \
(i % 2 ? TYPE_1 : TYPE_2), TYPE_COUNT);
SYNC_DATA_TYPE_HISTOGRAM(type);
#undef PER_DATA_TYPE_MACRO
}
}
} // namespace
} // namespace syncer