// Copyright 2014 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/file_util.h" #include "base/files/file_enumerator.h" #include "base/files/file_path.h" #include "base/files/scoped_temp_dir.h" #include "base/message_loop/message_loop.h" #include "base/time/time.h" #include "chrome/browser/media/webrtc_log_util.h" #include "content/public/test/test_browser_thread.h" #include "testing/gtest/include/gtest/gtest.h" const int kExpectedDaysToKeepLogFiles = 5; class WebRtcLogUtilTest : public testing::Test { public: WebRtcLogUtilTest() : file_thread_(content::BrowserThread::FILE, &message_loop_) {} virtual void SetUp() { // Create three files. One with modified date as of now, one with date one // day younger than the keep limit, one with date one day older than the // limit. The two former are expected to be kept and the last to be deleted // when deleting old logs. ASSERT_TRUE(dir_.CreateUniqueTempDir()); base::FilePath file; ASSERT_TRUE(CreateTemporaryFileInDir(dir_.path(), &file)); ASSERT_TRUE(CreateTemporaryFileInDir(dir_.path(), &file)); base::Time time_expect_to_keep = base::Time::Now() - base::TimeDelta::FromDays(kExpectedDaysToKeepLogFiles - 1); TouchFile(file, time_expect_to_keep, time_expect_to_keep); ASSERT_TRUE(CreateTemporaryFileInDir(dir_.path(), &file)); base::Time time_expect_to_delete = base::Time::Now() - base::TimeDelta::FromDays(kExpectedDaysToKeepLogFiles + 1); TouchFile(file, time_expect_to_delete, time_expect_to_delete); } void VerifyFiles(int expected_files) { base::FileEnumerator files(dir_.path(), false, base::FileEnumerator::FILES); int file_counter = 0; for (base::FilePath name = files.Next(); !name.empty(); name = files.Next()) { EXPECT_LT(base::Time::Now() - files.GetInfo().GetLastModifiedTime(), base::TimeDelta::FromDays(kExpectedDaysToKeepLogFiles)); ++file_counter; } EXPECT_EQ(expected_files, file_counter); } base::MessageLoopForUI message_loop_; content::TestBrowserThread file_thread_; base::ScopedTempDir dir_; }; TEST_F(WebRtcLogUtilTest, DeleteOldWebRtcLogFiles) { WebRtcLogUtil::DeleteOldWebRtcLogFiles(dir_.path()); VerifyFiles(2); } TEST_F(WebRtcLogUtilTest, DeleteOldAndRecentWebRtcLogFiles) { base::Time time_begin_delete = base::Time::Now() - base::TimeDelta::FromDays(1); WebRtcLogUtil::DeleteOldAndRecentWebRtcLogFiles(dir_.path(), time_begin_delete); VerifyFiles(1); }