diff --git a/extension/data_loader/file_data_loader.cpp b/extension/data_loader/file_data_loader.cpp index 80fdbb7531f..2c8bfb1f967 100644 --- a/extension/data_loader/file_data_loader.cpp +++ b/extension/data_loader/file_data_loader.cpp @@ -59,7 +59,7 @@ FileDataLoader::~FileDataLoader() { ::close(fd_); } -Result FileDataLoader::From( +Result FileDataLoader::from( const char* file_name, size_t alignment) { ET_CHECK_OR_RETURN_ERROR( diff --git a/extension/data_loader/file_data_loader.h b/extension/data_loader/file_data_loader.h index 47642248f8e..ade3b515abf 100644 --- a/extension/data_loader/file_data_loader.h +++ b/extension/data_loader/file_data_loader.h @@ -40,10 +40,17 @@ class FileDataLoader : public DataLoader { * could not be found. * @retval Error::MemoryAllocationFailed Internal memory allocation failure. */ - static Result From( + static Result from( const char* file_name, size_t alignment = alignof(std::max_align_t)); + /// DEPRECATED: Use the lowercase `from()` instead. + __ET_DEPRECATED static Result From( + const char* file_name, + size_t alignment = alignof(std::max_align_t)) { + return from(file_name, alignment); + } + // Movable to be compatible with Result. FileDataLoader(FileDataLoader&& rhs) noexcept : file_name_(rhs.file_name_), diff --git a/extension/data_loader/test/file_data_loader_test.cpp b/extension/data_loader/test/file_data_loader_test.cpp index 31cb09e2b1a..0def8c379f1 100644 --- a/extension/data_loader/test/file_data_loader_test.cpp +++ b/extension/data_loader/test/file_data_loader_test.cpp @@ -49,7 +49,7 @@ TEST_P(FileDataLoaderTest, InBoundsLoadsSucceed) { // Wrap it in a loader. Result fdl = - FileDataLoader::From(tf.path().c_str(), alignment()); + FileDataLoader::from(tf.path().c_str(), alignment()); ASSERT_EQ(fdl.error(), Error::Ok); // size() should succeed and reflect the total size. @@ -113,7 +113,7 @@ TEST_P(FileDataLoaderTest, OutOfBoundsLoadFails) { TempFile tf(data, sizeof(data)); Result fdl = - FileDataLoader::From(tf.path().c_str(), alignment()); + FileDataLoader::from(tf.path().c_str(), alignment()); ASSERT_EQ(fdl.error(), Error::Ok); // Loading beyond the end of the data should fail. @@ -133,7 +133,7 @@ TEST_P(FileDataLoaderTest, OutOfBoundsLoadFails) { TEST_P(FileDataLoaderTest, FromMissingFileFails) { // Wrapping a file that doesn't exist should fail. - Result fdl = FileDataLoader::From( + Result fdl = FileDataLoader::from( "/tmp/FILE_DOES_NOT_EXIST_EXECUTORCH_MMAP_LOADER_TEST"); EXPECT_NE(fdl.error(), Error::Ok); } @@ -145,7 +145,7 @@ TEST_P(FileDataLoaderTest, BadAlignmentFails) { // Creating a loader with default alignment works fine. { - Result fdl = FileDataLoader::From(tf.path().c_str()); + Result fdl = FileDataLoader::from(tf.path().c_str()); ASSERT_EQ(fdl.error(), Error::Ok); } @@ -153,7 +153,7 @@ TEST_P(FileDataLoaderTest, BadAlignmentFails) { const std::vector bad_alignments = {0, 3, 5, 17}; for (size_t bad_alignment : bad_alignments) { Result fdl = - FileDataLoader::From(tf.path().c_str(), bad_alignment); + FileDataLoader::from(tf.path().c_str(), bad_alignment); ASSERT_EQ(fdl.error(), Error::InvalidArgument); } } @@ -164,7 +164,7 @@ TEST_P(FileDataLoaderTest, MoveCtor) { std::string contents = "FILE_CONTENTS"; TempFile tf(contents); Result fdl = - FileDataLoader::From(tf.path().c_str(), alignment()); + FileDataLoader::from(tf.path().c_str(), alignment()); ASSERT_EQ(fdl.error(), Error::Ok); EXPECT_EQ(fdl->size().get(), contents.size()); @@ -184,6 +184,26 @@ TEST_P(FileDataLoaderTest, MoveCtor) { EXPECT_EQ(0, std::memcmp(fb->data(), contents.data(), fb->size())); } +// Test that the deprecated From method (capital 'F') still works. +TEST_P(FileDataLoaderTest, DEPRECATEDFrom) { + // Write some heterogeneous data to a file. + uint8_t data[256]; + for (int i = 0; i < sizeof(data); ++i) { + data[i] = i; + } + TempFile tf(data, sizeof(data)); + + // Wrap it in a loader. + Result fdl = + FileDataLoader::From(tf.path().c_str(), alignment()); + ASSERT_EQ(fdl.error(), Error::Ok); + + // size() should succeed and reflect the total size. + Result size = fdl->size(); + ASSERT_EQ(size.error(), Error::Ok); + EXPECT_EQ(*size, sizeof(data)); +} + // Run all FileDataLoaderTests multiple times, varying the return value of // `GetParam()` based on the `testing::Values` list. The tests will interpret // the value as "alignment".