Move TempFile from eden to edencommon

Summary:
To support better telemetry and logging in watchman we want to use Eden's components. Lets migrate and detangle the needed pieces.

This change moves TempFile from eden to edencommon.

Reviewed By: genevievehelsel

Differential Revision: D54372850

fbshipit-source-id: 681f00c2b8b2c353b802c680fe62382d86ee7c8d
This commit is contained in:
John Elliott 2024-03-01 15:23:56 -08:00 committed by Facebook GitHub Bot
parent 1f78cd9c85
commit 59221fc39f
32 changed files with 52 additions and 142 deletions

View File

@ -14,13 +14,13 @@
#include <folly/portability/GMock.h>
#include <folly/portability/GTest.h>
#include "eden/common/testharness/TempFile.h"
#include "eden/fs/inodes/fscatalog/FsInodeCatalog.h"
#include "eden/fs/inodes/memcatalog/MemInodeCatalog.h"
#include "eden/fs/inodes/overlay/OverlayChecker.h"
#include "eden/fs/inodes/sqlitecatalog/SqliteInodeCatalog.h"
#include "eden/fs/model/ObjectId.h"
#include "eden/fs/telemetry/NullStructuredLogger.h"
#include "eden/fs/testharness/TempFile.h"
#include "eden/fs/testharness/TestUtil.h"
#include "eden/fs/utils/FileUtils.h"

View File

@ -12,13 +12,13 @@ cpp_unittest(
],
supports_static_listing = False,
deps = [
"//eden/common/testharness:temp_file",
"//eden/fs/inodes/fscatalog:fsinodecatalog",
"//eden/fs/inodes/memcatalog:meminodecatalog",
"//eden/fs/inodes/overlay:overlay_checker",
"//eden/fs/inodes/sqlitecatalog:sqliteinodecatalog",
"//eden/fs/model:model",
"//eden/fs/telemetry:structured_logger",
"//eden/fs/testharness:temp_file",
"//eden/fs/testharness:test_util",
"//eden/fs/utils:file_utils",
"//folly:conv",

View File

@ -12,6 +12,7 @@
#include <folly/portability/GTest.h>
#include <folly/test/TestUtils.h>
#include "eden/common/testharness/TempFile.h"
#include "eden/fs/config/EdenConfig.h"
#include "eden/fs/inodes/EdenMount.h"
#include "eden/fs/inodes/InodeNumber.h"
@ -20,7 +21,6 @@
#include "eden/fs/telemetry/EdenStats.h"
#include "eden/fs/telemetry/NullStructuredLogger.h"
#include "eden/fs/testharness/FakeTreeBuilder.h"
#include "eden/fs/testharness/TempFile.h"
#include "eden/fs/testharness/TestMount.h"
namespace facebook::eden {

View File

@ -11,11 +11,12 @@
#include <thrift/lib/cpp2/protocol/Serializer.h>
#include <memory>
#include <optional>
#include "eden/common/testharness/TempFile.h"
#include "eden/fs/inodes/InodeNumber.h"
#include "eden/fs/inodes/overlay/gen-cpp2/overlay_types.h"
#include "eden/fs/lmdb/LMDBDatabase.h"
#include "eden/fs/model/Hash.h"
#include "eden/fs/testharness/TempFile.h"
#include "eden/fs/utils/DirType.h"
#include "eden/fs/utils/PathFuncs.h"

View File

@ -6,12 +6,12 @@ cpp_unittest(
name = "lmdb_store_if",
srcs = ["LMDBStoreInterfaceTest.cpp"],
deps = [
"//eden/common/testharness:temp_file",
"//eden/fs/inodes:inode_number",
"//eden/fs/inodes/lmdbcatalog:lmdbstoreif",
"//eden/fs/inodes/overlay:serialization-cpp2-types",
"//eden/fs/lmdb:lmdb",
"//eden/fs/model:model",
"//eden/fs/testharness:temp_file",
"//eden/fs/utils:path",
"//eden/fs/utils:utils",
"//folly/portability:gtest",
@ -24,6 +24,7 @@ cpp_unittest(
srcs = ["LMDBOverlayTest.cpp"],
supports_static_listing = False,
deps = [
"//eden/common/testharness:temp_file",
"//eden/fs/config:config",
"//eden/fs/inodes:inode_number",
"//eden/fs/inodes:inodes",
@ -34,7 +35,6 @@ cpp_unittest(
"//eden/fs/telemetry:structured_logger",
"//eden/fs/telemetry:telemetry",
"//eden/fs/testharness:fake_backing_store_and_tree_builder",
"//eden/fs/testharness:temp_file",
"//eden/fs/testharness:test_mount",
"//folly/portability:gtest",
"//folly/test:test_utils",

View File

@ -14,6 +14,7 @@
#include <folly/portability/GTest.h>
#include <folly/test/TestUtils.h>
#include "eden/common/testharness/TempFile.h"
#include "eden/fs/config/EdenConfig.h"
#include "eden/fs/inodes/EdenMount.h"
#include "eden/fs/inodes/FileInode.h"
@ -23,7 +24,6 @@
#include "eden/fs/telemetry/EdenStats.h"
#include "eden/fs/telemetry/NullStructuredLogger.h"
#include "eden/fs/testharness/FakeTreeBuilder.h"
#include "eden/fs/testharness/TempFile.h"
#include "eden/fs/testharness/TestChecks.h"
#include "eden/fs/testharness/TestMount.h"
#include "eden/fs/utils/DirType.h"

View File

@ -7,6 +7,7 @@ cpp_unittest(
srcs = ["SqliteInodeCatalogTest.cpp"],
supports_static_listing = False,
deps = [
"//eden/common/testharness:temp_file",
"//eden/fs/config:config",
"//eden/fs/inodes:inode_number",
"//eden/fs/inodes:inodes",
@ -17,7 +18,6 @@ cpp_unittest(
"//eden/fs/telemetry:structured_logger",
"//eden/fs/telemetry:telemetry",
"//eden/fs/testharness:fake_backing_store_and_tree_builder",
"//eden/fs/testharness:temp_file",
"//eden/fs/testharness:test_checks",
"//eden/fs/testharness:test_mount",
"//eden/fs/utils:utils",

View File

@ -22,11 +22,11 @@
#include <algorithm>
#include <chrono>
#include "eden/common/testharness/TempFile.h"
#include "eden/fs/inodes/FileInode.h"
#include "eden/fs/inodes/TreeInode.h"
#include "eden/fs/telemetry/EdenStats.h"
#include "eden/fs/telemetry/NullStructuredLogger.h"
#include "eden/fs/testharness/TempFile.h"
#include "eden/fs/testharness/TestUtil.h"
using namespace facebook::eden;

View File

@ -23,6 +23,7 @@
#include <folly/test/TestUtils.h>
#include <algorithm>
#include "eden/common/testharness/TempFile.h"
#include "eden/fs/inodes/EdenMount.h"
#include "eden/fs/inodes/FileInode.h"
#include "eden/fs/inodes/OverlayFile.h"
@ -34,7 +35,6 @@
#include "eden/fs/telemetry/NullStructuredLogger.h"
#include "eden/fs/testharness/FakeBackingStore.h"
#include "eden/fs/testharness/FakeTreeBuilder.h"
#include "eden/fs/testharness/TempFile.h"
#include "eden/fs/testharness/TestChecks.h"
#include "eden/fs/testharness/TestMount.h"
#include "eden/fs/testharness/TestUtil.h"

View File

@ -312,6 +312,7 @@ cpp_unittest(
supports_static_listing = False,
deps = [
":overlay_test_util",
"//eden/common/testharness:temp_file",
"//eden/fs/inodes:inodes",
"//eden/fs/inodes/fscatalog:fsinodecatalog",
"//eden/fs/model:testutil",
@ -319,7 +320,6 @@ cpp_unittest(
"//eden/fs/telemetry:structured_logger",
"//eden/fs/telemetry:telemetry",
"//eden/fs/testharness:fake_backing_store_and_tree_builder",
"//eden/fs/testharness:temp_file",
"//eden/fs/testharness:test_checks",
"//eden/fs/testharness:test_mount",
"//eden/fs/testharness:test_util",
@ -344,11 +344,11 @@ cpp_unittest(
deps = [
"fbsource//third-party/fmt:fmt",
":overlay_test_util",
"//eden/common/testharness:temp_file",
"//eden/fs/inodes:inodes",
"//eden/fs/inodes/fscatalog:fsinodecatalog",
"//eden/fs/telemetry:structured_logger",
"//eden/fs/telemetry:telemetry",
"//eden/fs/testharness:temp_file",
"//eden/fs/testharness:test_util",
"//folly:exception",
"//folly:expected",

View File

@ -12,10 +12,10 @@
#include <folly/portability/GMock.h>
#include <folly/portability/GTest.h>
#include "eden/common/testharness/TempFile.h"
#include "eden/fs/monitor/LogFile.h"
#include "eden/fs/monitor/LogRotation.h"
#include "eden/fs/testharness/FakeClock.h"
#include "eden/fs/testharness/TempFile.h"
namespace fs = boost::filesystem;
using namespace std::chrono_literals;

View File

@ -11,9 +11,9 @@ cpp_unittest(
"ovr_config//os:macos",
],
deps = [
"//eden/common/testharness:temp_file",
"//eden/fs/monitor:edenfs_monitor_lib",
"//eden/fs/testharness:fake_clock",
"//eden/fs/testharness:temp_file",
"//folly:range",
"//folly/logging:logging",
"//folly/portability:gmock",

View File

@ -19,11 +19,11 @@
#include <chrono>
#include <unordered_map>
#include "eden/common/testharness/TempFile.h"
#include "eden/fs/privhelper/PrivHelper.h"
#include "eden/fs/privhelper/PrivHelperConn.h"
#include "eden/fs/privhelper/PrivHelperImpl.h"
#include "eden/fs/privhelper/test/PrivHelperTestServer.h"
#include "eden/fs/testharness/TempFile.h"
#include "eden/fs/utils/UserInfo.h"
using namespace facebook::eden;

View File

@ -15,12 +15,12 @@ cpp_unittest(
"ovr_config//os:macos",
],
deps = [
"//eden/common/testharness:temp_file",
"//eden/common/utils:system_error",
"//eden/fs/privhelper:conn",
"//eden/fs/privhelper:interface",
"//eden/fs/privhelper:privhelper",
"//eden/fs/privhelper:server",
"//eden/fs/testharness:temp_file",
"//eden/fs/utils:user_info",
"//folly:conv",
"//folly:exception",

View File

@ -9,6 +9,7 @@
#include <folly/experimental/TestUtil.h>
#include <folly/portability/GMock.h>
#include "eden/common/testharness/TempFile.h"
#include "eden/common/utils/ImmediateFuture.h"
#include "eden/fs/config/EdenConfig.h"
#include "eden/fs/config/ReloadableConfig.h"
@ -21,7 +22,6 @@
#include "eden/fs/store/hg/HgProxyHash.h"
#include "eden/fs/telemetry/EdenStats.h"
#include "eden/fs/testharness/HgRepo.h"
#include "eden/fs/testharness/TempFile.h"
#include "eden/fs/testharness/TestConfigSource.h"
#include "eden/fs/utils/FaultInjector.h"

View File

@ -25,6 +25,7 @@ cpp_unittest(
},
supports_static_listing = False,
deps = [
"//eden/common/testharness:temp_file",
"//eden/common/utils:immediate_future",
"//eden/common/utils:process_info_cache",
"//eden/fs/config:config",
@ -42,7 +43,6 @@ cpp_unittest(
"//eden/fs/telemetry:structured_logger",
"//eden/fs/telemetry:telemetry",
"//eden/fs/testharness:hg_repo",
"//eden/fs/testharness:temp_file",
"//eden/fs/testharness:test_config_source",
"//eden/fs/utils:path",
"//eden/fs/utils:utils",

View File

@ -9,12 +9,13 @@
#include <folly/io/IOBuf.h>
#include <folly/portability/GTest.h>
#include "eden/common/testharness/TempFile.h"
#include "eden/fs/model/Blob.h"
#include "eden/fs/model/BlobMetadata.h"
#include "eden/fs/model/Tree.h"
#include "eden/fs/store/LocalStore.h"
#include "eden/fs/store/StoreResult.h"
#include "eden/fs/testharness/TempFile.h"
#include "eden/fs/utils/FaultInjector.h"
namespace facebook::eden {

View File

@ -5,12 +5,12 @@
* GNU General Public License version 2.
*/
#include "eden/common/testharness/TempFile.h"
#include "eden/common/utils/benchharness/Bench.h"
#include "eden/fs/model/BlobMetadata.h"
#include "eden/fs/store/RocksDbLocalStore.h"
#include "eden/fs/telemetry/EdenStats.h"
#include "eden/fs/telemetry/NullStructuredLogger.h"
#include "eden/fs/testharness/TempFile.h"
#include "eden/fs/utils/FaultInjector.h"
namespace {

View File

@ -8,9 +8,9 @@ cpp_library(
name = "local_store_test",
headers = ["LocalStoreTest.h"],
exported_deps = [
"//eden/common/testharness:temp_file",
"//eden/fs/model:model",
"//eden/fs/store:store",
"//eden/fs/testharness:temp_file",
"//eden/fs/utils:utils",
"//folly/io:iobuf",
"//folly/portability:gtest",
@ -68,6 +68,7 @@ cpp_unittest(
],
supports_static_listing = False,
deps = [
"//eden/common/testharness:temp_file",
"//eden/common/utils:immediate_future",
"//eden/common/utils:process_info_cache",
"//eden/fs/config:config",
@ -83,7 +84,6 @@ cpp_unittest(
"//eden/fs/testharness:fake_backing_store_and_tree_builder",
"//eden/fs/testharness:logging_fetch_context",
"//eden/fs/testharness:stored_object",
"//eden/fs/testharness:temp_file",
"//eden/fs/testharness:test_util",
"//eden/fs/utils:path",
"//eden/fs/utils:static_assert",
@ -110,12 +110,12 @@ cpp_binary(
name = "rocksdb_benchmark",
srcs = ["RocksDbLocalStoreBench.cpp"],
deps = [
"//eden/common/testharness:temp_file",
"//eden/common/utils/benchharness:benchharness",
"//eden/fs/model:model",
"//eden/fs/store:rocksdb",
"//eden/fs/telemetry:structured_logger",
"//eden/fs/telemetry:telemetry",
"//eden/fs/testharness:temp_file",
"//eden/fs/utils:utils",
],
)

View File

@ -12,8 +12,6 @@ set(
"FakePrivHelper.h"
"FakeTreeBuilder.cpp"
"FakeTreeBuilder.h"
"TempFile.cpp"
"TempFile.h"
"TestMount.cpp"
"TestMount.h"
"TestUtil.cpp"
@ -35,16 +33,17 @@ target_include_directories(eden_testharness
target_link_libraries(
eden_testharness
PUBLIC
eden_config
eden_inodes
eden_model
eden_store
eden_utils
edencommon::edencommon_utils
${BOOST_LIBRARIES}
Folly::folly_test_util
${LIBGMOCK_LIBRARIES}
${GLOG_LIBRARY}
eden_config
eden_inodes
eden_model
eden_store
eden_utils
edencommon::edencommon_testharness
edencommon::edencommon_utils
${BOOST_LIBRARIES}
Folly::folly_test_util
${LIBGMOCK_LIBRARIES}
${GLOG_LIBRARY}
)
if(NOT WIN32)

View File

@ -14,9 +14,9 @@ cpp_library(
":fake_backing_store_and_tree_builder",
":fake_fuse",
":fake_privhelper",
":temp_file",
":test_config_source",
":test_util",
"//eden/common/testharness:temp_file",
"//eden/common/utils:process_info_cache",
"//eden/fs/config:config",
"//eden/fs/journal:journal",
@ -53,20 +53,6 @@ cpp_library(
],
)
cpp_library(
name = "temp_file",
srcs = ["TempFile.cpp"],
headers = ["TempFile.h"],
deps = [
"//eden/common/utils:system_error",
"//folly/portability:unistd",
],
exported_deps = [
"//folly:range",
"//folly/experimental:test_util",
],
)
cpp_library(
name = "test_util",
srcs = ["TestUtil.cpp"],
@ -276,7 +262,7 @@ cpp_library(
headers = ["TestServer.h"],
deps = [
":fake_privhelper",
":temp_file",
"//eden/common/testharness:temp_file",
"//eden/fs/config:config",
"//eden/fs/service:server",
"//eden/fs/service:startup_logger",

View File

@ -5,7 +5,7 @@
* GNU General Public License version 2.
*/
#include "eden/fs/testharness/TempFile.h"
#include "eden/common/testharness/TempFile.h"
#include <folly/portability/Unistd.h>

View File

@ -1,48 +0,0 @@
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This software may be used and distributed according to the terms of the
* GNU General Public License version 2.
*/
#pragma once
/*
* This file contains helper functions for creating temporary files and
* directories. These are small utilities that use folly's TemporaryDirectory
* and TemporaryFile underneath.
*
* The main advantage of these functions is that they try to do smarter job
* about picking a location for temporary files. Many of the Eden tests are
* somewhat I/O heavy, and the tests can be quite slow if the temporary files
* are stored on a physical spinning disk. This attempts to put temporary files
* in ramdisk if possible.
*/
#include <folly/Range.h>
#include <folly/experimental/TestUtil.h>
namespace facebook::eden {
folly::test::TemporaryFile makeTempFile(
folly::StringPiece prefix,
folly::test::TemporaryFile::Scope scope =
folly::test::TemporaryFile::Scope::UNLINK_ON_DESTRUCTION);
inline folly::test::TemporaryFile makeTempFile(
folly::test::TemporaryFile::Scope scope =
folly::test::TemporaryFile::Scope::UNLINK_ON_DESTRUCTION) {
return makeTempFile("eden_test", scope);
}
folly::test::TemporaryDirectory makeTempDir(
folly::StringPiece prefix,
folly::test::TemporaryDirectory::Scope scope =
folly::test::TemporaryDirectory::Scope::DELETE_ON_DESTRUCTION);
inline folly::test::TemporaryDirectory makeTempDir(
folly::test::TemporaryDirectory::Scope scope =
folly::test::TemporaryDirectory::Scope::DELETE_ON_DESTRUCTION) {
return makeTempDir("eden_test", scope);
}
} // namespace facebook::eden

View File

@ -16,6 +16,8 @@
#include <folly/portability/GTest.h>
#include <sys/stat.h>
#include <sys/types.h>
#include "eden/common/testharness/TempFile.h"
#include "eden/common/utils/ProcessInfoCache.h"
#include "eden/fs/config/CheckoutConfig.h"
#include "eden/fs/config/EdenConfig.h"
@ -45,7 +47,6 @@
#include "eden/fs/testharness/FakeFuse.h"
#include "eden/fs/testharness/FakePrivHelper.h"
#include "eden/fs/testharness/FakeTreeBuilder.h"
#include "eden/fs/testharness/TempFile.h"
#include "eden/fs/testharness/TestConfigSource.h"
#include "eden/fs/testharness/TestUtil.h"
#include "eden/fs/utils/FileUtils.h"

View File

@ -9,6 +9,7 @@
#include <folly/portability/GFlags.h>
#include "eden/common/testharness/TempFile.h"
#include "eden/fs/config/EdenConfig.h"
#include "eden/fs/service/EdenServer.h"
#include "eden/fs/service/StartupLogger.h"
@ -17,7 +18,6 @@
#include "eden/fs/telemetry/IHiveLogger.h"
#include "eden/fs/telemetry/SessionInfo.h"
#include "eden/fs/testharness/FakePrivHelper.h"
#include "eden/fs/testharness/TempFile.h"
#include "eden/fs/utils/UserInfo.h"
using std::make_shared;

View File

@ -34,17 +34,6 @@ cpp_unittest(
],
)
cpp_unittest(
name = "temp_file_test",
srcs = ["TempFileTest.cpp"],
supports_static_listing = False,
deps = [
"//eden/fs/testharness:temp_file",
"//folly/logging:logging",
"//folly/portability:gtest",
],
)
cpp_unittest(
name = "test_mount_test",
srcs = ["TestMountTest.cpp"],

View File

@ -1,21 +0,0 @@
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This software may be used and distributed according to the terms of the
* GNU General Public License version 2.
*/
#include "eden/fs/testharness/TempFile.h"
#include <folly/logging/xlog.h>
#include <folly/portability/GTest.h>
using namespace facebook::eden;
TEST(TempFile, mktemp) {
// This mainly just verifies that makeTempFile() and makeTempDir() succeeds
auto tempfile = makeTempFile();
XLOG(INFO) << "temporary file is " << tempfile.path();
auto tempdir = makeTempDir();
XLOG(INFO) << "temporary dir is " << tempfile.path();
}

View File

@ -11,7 +11,8 @@
#include <folly/portability/GTest.h>
#include <folly/test/TestUtils.h>
#include <list>
#include "eden/fs/testharness/TempFile.h"
#include "eden/common/testharness/TempFile.h"
#include "eden/fs/utils/PathFuncs.h"
#include "eden/fs/utils/Pipe.h"

View File

@ -10,7 +10,8 @@
#include <folly/portability/GMock.h>
#include <folly/portability/GTest.h>
#include <string>
#include "eden/fs/testharness/TempFile.h"
#include "eden/common/testharness/TempFile.h"
#include "eden/fs/utils/PathFuncs.h"
using namespace facebook::eden;

View File

@ -19,7 +19,7 @@
#include <folly/test/TestUtils.h>
#include <sstream>
#include "eden/fs/testharness/TempFile.h"
#include "eden/common/testharness/TempFile.h"
#include "eden/fs/utils/FileUtils.h"
namespace facebook::eden {

View File

@ -75,7 +75,7 @@ cpp_unittest(
srcs = ["FileDescriptorTest.cpp"],
supports_static_listing = False,
deps = [
"//eden/fs/testharness:temp_file",
"//eden/common/testharness:temp_file",
"//eden/fs/utils:io",
"//eden/fs/utils:path",
"//folly:string",
@ -90,7 +90,7 @@ cpp_unittest(
srcs = ["FileUtilsTest.cpp"],
supports_static_listing = False,
deps = [
"//eden/fs/testharness:temp_file",
"//eden/common/testharness:temp_file",
"//eden/fs/utils:file_utils",
"//eden/fs/utils:path",
"//folly:range",
@ -182,7 +182,7 @@ cpp_unittest(
srcs = ["PathFuncsTest.cpp"],
supports_static_listing = False,
deps = [
"//eden/fs/testharness:temp_file",
"//eden/common/testharness:temp_file",
"//eden/fs/utils:file_utils",
"//eden/fs/utils:path",
"//folly:exception",
@ -302,7 +302,7 @@ cpp_unittest(
srcs = ["UnixSocketTest.cpp"],
supports_static_listing = False,
deps = [
"//eden/fs/testharness:temp_file",
"//eden/common/testharness:temp_file",
"//eden/fs/utils:io",
"//folly:exception",
"//folly:file",

View File

@ -25,7 +25,7 @@
#include <optional>
#include <random>
#include "eden/fs/testharness/TempFile.h"
#include "eden/common/testharness/TempFile.h"
using folly::ByteRange;
using folly::checkUnixError;