1effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// found in the LICENSE file. 4effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 5effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "base/files/file_enumerator.h" 6effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "base/files/file_path.h" 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/files/file_util.h" 8effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "base/files/scoped_temp_dir.h" 9effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "base/message_loop/message_loop.h" 10effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "base/time/time.h" 11effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "chrome/browser/media/webrtc_log_util.h" 12effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "content/public/test/test_browser_thread.h" 13effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "testing/gtest/include/gtest/gtest.h" 14effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 15effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochconst int kExpectedDaysToKeepLogFiles = 5; 16effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 17effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochclass WebRtcLogUtilTest : public testing::Test { 18effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch public: 19effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch WebRtcLogUtilTest() 20effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch : file_thread_(content::BrowserThread::FILE, &message_loop_) {} 21effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 22effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch virtual void SetUp() { 23effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // Create three files. One with modified date as of now, one with date one 24effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // day younger than the keep limit, one with date one day older than the 25effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // limit. The two former are expected to be kept and the last to be deleted 26effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // when deleting old logs. 27effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ASSERT_TRUE(dir_.CreateUniqueTempDir()); 28effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch base::FilePath file; 29effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ASSERT_TRUE(CreateTemporaryFileInDir(dir_.path(), &file)); 30effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ASSERT_TRUE(CreateTemporaryFileInDir(dir_.path(), &file)); 31effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch base::Time time_expect_to_keep = 32effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch base::Time::Now() - 33effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch base::TimeDelta::FromDays(kExpectedDaysToKeepLogFiles - 1); 34effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch TouchFile(file, time_expect_to_keep, time_expect_to_keep); 35effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ASSERT_TRUE(CreateTemporaryFileInDir(dir_.path(), &file)); 36effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch base::Time time_expect_to_delete = 37effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch base::Time::Now() - 38effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch base::TimeDelta::FromDays(kExpectedDaysToKeepLogFiles + 1); 39effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch TouchFile(file, time_expect_to_delete, time_expect_to_delete); 40effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch } 41effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 42effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void VerifyFiles(int expected_files) { 43effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch base::FileEnumerator files(dir_.path(), false, base::FileEnumerator::FILES); 44effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch int file_counter = 0; 45effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch for (base::FilePath name = files.Next(); !name.empty(); 46effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch name = files.Next()) { 47effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_LT(base::Time::Now() - files.GetInfo().GetLastModifiedTime(), 48effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch base::TimeDelta::FromDays(kExpectedDaysToKeepLogFiles)); 49effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ++file_counter; 50effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch } 51effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(expected_files, file_counter); 52effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch } 53effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 54effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch base::MessageLoopForUI message_loop_; 55effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch content::TestBrowserThread file_thread_; 56effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch base::ScopedTempDir dir_; 57effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}; 58effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 59effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochTEST_F(WebRtcLogUtilTest, DeleteOldWebRtcLogFiles) { 60effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch WebRtcLogUtil::DeleteOldWebRtcLogFiles(dir_.path()); 61effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch VerifyFiles(2); 62effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 63effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 64effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochTEST_F(WebRtcLogUtilTest, DeleteOldAndRecentWebRtcLogFiles) { 65effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch base::Time time_begin_delete = 66effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch base::Time::Now() - base::TimeDelta::FromDays(1); 67effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch WebRtcLogUtil::DeleteOldAndRecentWebRtcLogFiles(dir_.path(), 68effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch time_begin_delete); 69effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch VerifyFiles(1); 70effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 71