| Index: components/ukm/ukm_service_unittest.cc
|
| diff --git a/components/ukm/ukm_service_unittest.cc b/components/ukm/ukm_service_unittest.cc
|
| index 2bdf94af09436423626d165f7a58dd6f0d937781..0b80e5ccee573849cf70429ec2c1e271a4460db9 100644
|
| --- a/components/ukm/ukm_service_unittest.cc
|
| +++ b/components/ukm/ukm_service_unittest.cc
|
| @@ -6,10 +6,15 @@
|
|
|
| #include "base/test/test_simple_task_runner.h"
|
| #include "base/threading/thread_task_runner_handle.h"
|
| +#include "components/metrics/proto/ukm/report.pb.h"
|
| +#include "components/metrics/proto/ukm/source.pb.h"
|
| #include "components/metrics/test_metrics_service_client.h"
|
| #include "components/prefs/testing_pref_service.h"
|
| +#include "components/ukm/persisted_logs_metrics_impl.h"
|
| #include "components/ukm/ukm_pref_names.h"
|
| +#include "components/ukm/ukm_source.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| +#include "third_party/zlib/google/compression_utils.h"
|
|
|
| namespace ukm {
|
|
|
| @@ -31,6 +36,26 @@ class UkmServiceTest : public testing::Test {
|
| return list_value->GetSize();
|
| }
|
|
|
| + Report GetPersistedReport() {
|
| + metrics::PersistedLogs result_persisted_logs(
|
| + base::MakeUnique<ukm::PersistedLogsMetricsImpl>(), &prefs_,
|
| + prefs::kUkmPersistedLogs,
|
| + 3, // log count limit
|
| + 1000, // byte limit
|
| + 0);
|
| +
|
| + result_persisted_logs.DeserializeLogs();
|
| + result_persisted_logs.StageLog();
|
| +
|
| + std::string uncompressed_log_data;
|
| + EXPECT_TRUE(compression::GzipUncompress(result_persisted_logs.staged_log(),
|
| + &uncompressed_log_data));
|
| +
|
| + Report report;
|
| + EXPECT_TRUE(report.ParseFromString(uncompressed_log_data));
|
| + return report;
|
| + }
|
| +
|
| protected:
|
| TestingPrefServiceSimple prefs_;
|
| metrics::TestMetricsServiceClient client_;
|
| @@ -73,4 +98,34 @@ TEST_F(UkmServiceTest, PersistAndPurge) {
|
| EXPECT_EQ(GetPersistedLogCount(), 0);
|
| }
|
|
|
| +TEST_F(UkmServiceTest, SourceSerialization) {
|
| + UkmService service(&prefs_, &client_);
|
| + EXPECT_EQ(GetPersistedLogCount(), 0);
|
| + service.Initialize();
|
| + task_runner_->RunUntilIdle();
|
| + service.EnableReporting();
|
| +
|
| + std::unique_ptr<UkmSource> source = base::WrapUnique(new UkmSource());
|
| + source->set_committed_url(GURL("https://google.com"));
|
| + base::Time test_time;
|
| + source->set_navigation_start(test_time);
|
| + source->set_first_contentful_paint(base::TimeDelta::FromMilliseconds(300));
|
| +
|
| + service.RecordSource(std::move(source));
|
| +
|
| + service.Flush();
|
| + EXPECT_EQ(GetPersistedLogCount(), 1);
|
| +
|
| + Report proto_report = GetPersistedReport();
|
| + EXPECT_EQ(1, proto_report.sources_size());
|
| + const Source& proto_source = proto_report.sources(0);
|
| +
|
| + EXPECT_EQ(GURL("https://google.com").spec(), proto_source.url());
|
| + base::Time navigation_time =
|
| + base::Time::UnixEpoch() +
|
| + base::TimeDelta::FromMilliseconds(proto_source.navigation_time_msec());
|
| + EXPECT_EQ(test_time, navigation_time);
|
| + EXPECT_EQ(300, proto_source.first_contentful_paint_msec());
|
| +}
|
| +
|
| } // namespace ukm
|
|
|