summaryrefslogtreecommitdiffstats
path: root/base/test/test_file_util_posix.cc
diff options
context:
space:
mode:
authorbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-17 20:09:56 +0000
committerbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-17 20:09:56 +0000
commitc99e08a3618d0f08e3420d1544469cba1081a2c9 (patch)
tree9041824361cd7734a13af735f2047b1548835e59 /base/test/test_file_util_posix.cc
parentec666ab229bffb09e7ee4757e2d4224475564635 (diff)
downloadchromium_src-c99e08a3618d0f08e3420d1544469cba1081a2c9.zip
chromium_src-c99e08a3618d0f08e3420d1544469cba1081a2c9.tar.gz
chromium_src-c99e08a3618d0f08e3420d1544469cba1081a2c9.tar.bz2
Delete CopyRecursiveDirNoCache from test_file_util.
This function was used in only one place and that place was wrong. The implementation was long and complicated on Windows, and long and complicated and copied verbatim from elsewhere with 3 lines different on Posix. The place it was used was in the proxy launcher when copying the profile. It's not clear to me why we wouldn't want the profile files in the filesystem cache when running tests. Quite the opposite, we want the tests to run as fast as possible. The only place this should matter is in the startup tests. And the startup tests do things to the profile after it gets copied that should page some files back in! This adds another step to the startup tests to evict the profile files for cold startup tests only. This is a reland of r192940 which crashed on Mac. The previous perf startup test used the profile directory before it was initialized. That patch was in turn a reland r191854 which broke the startup test. The previous patch replaced the CopyRecursive call with CopyDirectory which does something slightly different. This new patch implements a CopyDirectoryContents function to do what's required here. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@194664 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/test/test_file_util_posix.cc')
-rw-r--r--base/test/test_file_util_posix.cc77
1 files changed, 0 insertions, 77 deletions
diff --git a/base/test/test_file_util_posix.cc b/base/test/test_file_util_posix.cc
index 731d976..7c16cb18 100644
--- a/base/test/test_file_util_posix.cc
+++ b/base/test/test_file_util_posix.cc
@@ -80,83 +80,6 @@ bool DieFileDie(const base::FilePath& file, bool recurse) {
return file_util::Delete(file, recurse);
}
-// Mostly a verbatim copy of CopyDirectory
-bool CopyRecursiveDirNoCache(const base::FilePath& source_dir,
- const base::FilePath& dest_dir) {
- char top_dir[PATH_MAX];
- if (base::strlcpy(top_dir, source_dir.value().c_str(),
- arraysize(top_dir)) >= arraysize(top_dir)) {
- return false;
- }
-
- // This function does not properly handle destinations within the source
- base::FilePath real_to_path = dest_dir;
- if (PathExists(real_to_path)) {
- real_to_path = MakeAbsoluteFilePath(real_to_path);
- if (real_to_path.empty())
- return false;
- } else {
- real_to_path = MakeAbsoluteFilePath(real_to_path.DirName());
- if (real_to_path.empty())
- return false;
- }
- if (real_to_path.value().compare(0, source_dir.value().size(),
- source_dir.value()) == 0)
- return false;
-
- bool success = true;
- int traverse_type = FileEnumerator::FILES |
- FileEnumerator::SHOW_SYM_LINKS | FileEnumerator::DIRECTORIES;
- FileEnumerator traversal(source_dir, true, traverse_type);
-
- // dest_dir may not exist yet, start the loop with dest_dir
- FileEnumerator::FindInfo info;
- base::FilePath current = source_dir;
- if (stat(source_dir.value().c_str(), &info.stat) < 0) {
- DLOG(ERROR) << "CopyRecursiveDirNoCache() couldn't stat source directory: "
- << source_dir.value() << " errno = " << errno;
- success = false;
- }
-
- while (success && !current.empty()) {
- // |current| is the source path, including source_dir, so paste
- // the suffix after source_dir onto dest_dir to create the target_path.
- std::string suffix(&current.value().c_str()[source_dir.value().size()]);
- // Strip the leading '/' (if any).
- if (!suffix.empty()) {
- DCHECK_EQ('/', suffix[0]);
- suffix.erase(0, 1);
- }
- const base::FilePath target_path = dest_dir.Append(suffix);
-
- if (S_ISDIR(info.stat.st_mode)) {
- if (mkdir(target_path.value().c_str(), info.stat.st_mode & 01777) != 0 &&
- errno != EEXIST) {
- DLOG(ERROR) << "CopyRecursiveDirNoCache() couldn't create directory: "
- << target_path.value() << " errno = " << errno;
- success = false;
- }
- } else if (S_ISREG(info.stat.st_mode)) {
- if (CopyFile(current, target_path)) {
- success = EvictFileFromSystemCache(target_path);
- DCHECK(success);
- } else {
- DLOG(ERROR) << "CopyRecursiveDirNoCache() couldn't create file: "
- << target_path.value();
- success = false;
- }
- } else {
- DLOG(WARNING) << "CopyRecursiveDirNoCache() skipping non-regular file: "
- << current.value();
- }
-
- current = traversal.Next();
- traversal.GetFindInfo(&info);
- }
-
- return success;
-}
-
#if !defined(OS_LINUX) && !defined(OS_MACOSX)
bool EvictFileFromSystemCache(const base::FilePath& file) {
// There doesn't seem to be a POSIX way to cool the disk cache.