12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- // Copyright 2013 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 "base/metrics/histogram_delta_serialization.h"
- #include <vector>
- #include "base/metrics/histogram.h"
- #include "base/metrics/histogram_base.h"
- #include "base/metrics/statistics_recorder.h"
- #include "testing/gtest/include/gtest/gtest.h"
- namespace base {
- TEST(HistogramDeltaSerializationTest, DeserializeHistogramAndAddSamples) {
- std::unique_ptr<StatisticsRecorder> statistic_recorder(
- StatisticsRecorder::CreateTemporaryForTesting());
- HistogramDeltaSerialization serializer("HistogramDeltaSerializationTest");
- std::vector<std::string> deltas;
- // Nothing was changed yet.
- serializer.PrepareAndSerializeDeltas(&deltas, true);
- EXPECT_TRUE(deltas.empty());
- HistogramBase* histogram = Histogram::FactoryGet(
- "TestHistogram", 1, 1000, 10, HistogramBase::kIPCSerializationSourceFlag);
- histogram->Add(1);
- histogram->Add(10);
- histogram->Add(100);
- histogram->Add(1000);
- serializer.PrepareAndSerializeDeltas(&deltas, true);
- EXPECT_FALSE(deltas.empty());
- HistogramDeltaSerialization::DeserializeAndAddSamples(deltas);
- // The histogram has kIPCSerializationSourceFlag. So samples will be ignored.
- std::unique_ptr<HistogramSamples> snapshot(histogram->SnapshotSamples());
- EXPECT_EQ(1, snapshot->GetCount(1));
- EXPECT_EQ(1, snapshot->GetCount(10));
- EXPECT_EQ(1, snapshot->GetCount(100));
- EXPECT_EQ(1, snapshot->GetCount(1000));
- // Clear kIPCSerializationSourceFlag to emulate multi-process usage.
- histogram->ClearFlags(HistogramBase::kIPCSerializationSourceFlag);
- HistogramDeltaSerialization::DeserializeAndAddSamples(deltas);
- std::unique_ptr<HistogramSamples> snapshot2(histogram->SnapshotSamples());
- EXPECT_EQ(2, snapshot2->GetCount(1));
- EXPECT_EQ(2, snapshot2->GetCount(10));
- EXPECT_EQ(2, snapshot2->GetCount(100));
- EXPECT_EQ(2, snapshot2->GetCount(1000));
- }
- } // namespace base
|