Chromium Code Reviews| Index: components/metrics/file_metrics_provider_unittest.cc |
| diff --git a/components/metrics/file_metrics_provider_unittest.cc b/components/metrics/file_metrics_provider_unittest.cc |
| index 42e38bc75af998df0e55f6fb67e8363fdfe5045c..1d6992bfe472848b986e5e8dfc07a1348fc16784 100644 |
| --- a/components/metrics/file_metrics_provider_unittest.cc |
| +++ b/components/metrics/file_metrics_provider_unittest.cc |
| @@ -597,4 +597,58 @@ TEST_P(FileMetricsProviderTest, AccessEmbeddedFallbackMetricsWithProfile) { |
| EXPECT_FALSE(base::PathExists(metrics_file())); |
| } |
| +TEST_P(FileMetricsProviderTest, AccessEmbeddedProfileMetricsFromDir) { |
| + const int file_count = 3; |
| + base::Time file_base_time = base::Time::Now(); |
| + std::vector<base::FilePath> file_names; |
| + for (int i = 0; i < file_count; ++i) { |
| + CreateMetricsFileWithHistograms( |
| + 2, [](base::PersistentHistogramAllocator* allocator) { |
| + SystemProfileProto profile_proto; |
| + SystemProfileProto::FieldTrial* trial = |
| + profile_proto.add_field_trial(); |
| + trial->set_name_id(123); |
| + trial->set_group_id(456); |
| + |
| + PersistentSystemProfile persistent_profile; |
| + persistent_profile.RegisterPersistentAllocator( |
| + allocator->memory_allocator()); |
| + persistent_profile.SetSystemProfile(profile_proto, true); |
| + }); |
| + ASSERT_TRUE(PathExists(metrics_file())); |
| + char new_name[] = "hX"; |
| + new_name[1] = '1' + i; |
| + base::FilePath file_name = temp_dir().AppendASCII(new_name).AddExtension( |
| + base::PersistentMemoryAllocator::kFileExtension); |
| + base::Time file_time = |
| + file_base_time - base::TimeDelta::FromMinutes(file_count - i); |
| + base::TouchFile(metrics_file(), file_time, file_time); |
| + base::Move(metrics_file(), file_name); |
| + file_names.push_back(std::move(file_name)); |
| + } |
| + |
| + // Register the file and allow the "checker" task to run. |
| + provider()->RegisterSource( |
| + temp_dir(), FileMetricsProvider::SOURCE_HISTOGRAMS_ATOMIC_DIR, |
| + FileMetricsProvider::ASSOCIATE_INTERNAL_PROFILE, ""); |
| + |
| + OnDidCreateMetricsLog(); |
| + RunTasks(); |
| + |
| + // A read of metrics with internal profiles should return one result. |
| + HistogramFlattenerDeltaRecorder flattener; |
| + base::HistogramSnapshotManager snapshot_manager(&flattener); |
| + SystemProfileProto profile; |
| + for (int i = 0; i < file_count; ++i) { |
| + EXPECT_TRUE(ProvideIndependentMetrics(&profile, &snapshot_manager)) << i; |
| + RunTasks(); |
| + } |
| + EXPECT_FALSE(ProvideIndependentMetrics(&profile, &snapshot_manager)); |
| + |
| + OnDidCreateMetricsLog(); |
| + RunTasks(); |
| + for (auto& file_name : file_names) |
|
Alexei Svitkine (slow)
2017/06/28 17:30:36
const auto&
bcwhite
2017/06/28 18:52:08
Done.
|
| + EXPECT_FALSE(base::PathExists(file_name)); |
| +} |
| + |
| } // namespace metrics |