Skip to content

Commit 04a68b8

Browse files
committed
feat: add in-memory FileIO backed by Arrow MockFileSystem
1 parent 84565b5 commit 04a68b8

File tree

8 files changed

+24
-8
lines changed

8 files changed

+24
-8
lines changed

src/iceberg/arrow/arrow_fs_file_io.cc

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,13 @@
1717
* under the License.
1818
*/
1919

20-
#include "iceberg/arrow/arrow_fs_file_io.h"
20+
#include <chrono>
2121

2222
#include <arrow/filesystem/localfs.h>
23+
#include <arrow/filesystem/mockfs.h>
2324

2425
#include "iceberg/arrow/arrow_error_transform_internal.h"
26+
#include "iceberg/arrow/arrow_fs_file_io_internal.h"
2527

2628
namespace iceberg::arrow {
2729

@@ -67,4 +69,13 @@ Status ArrowFileSystemFileIO::DeleteFile(const std::string& file_location) {
6769
return {};
6870
}
6971

72+
std::unique_ptr<::arrow::fs::FileSystem> ArrowFileSystemFileIO::MakeMockFileIO() {
73+
return std::make_unique<::arrow::fs::internal::MockFileSystem>(
74+
std::chrono::system_clock::now());
75+
}
76+
77+
std::unique_ptr<::arrow::fs::FileSystem> ArrowFileSystemFileIO::MakeLocalFileIO() {
78+
return std::make_unique<::arrow::fs::LocalFileSystem>();
79+
}
80+
7081
} // namespace iceberg::arrow

src/iceberg/arrow/arrow_fs_file_io.h renamed to src/iceberg/arrow/arrow_fs_file_io_internal.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ class ICEBERG_BUNDLE_EXPORT ArrowFileSystemFileIO : public FileIO {
3434
explicit ArrowFileSystemFileIO(std::shared_ptr<::arrow::fs::FileSystem> arrow_fs)
3535
: arrow_fs_(std::move(arrow_fs)) {}
3636

37+
/// \brief Make an in-memory FileIO backed by arrow::fs::internal::MockFileSystem.
38+
static std::unique_ptr<::arrow::fs::FileSystem> MakeMockFileIO();
39+
40+
/// \brief Make a local FileIO backed by arrow::fs::LocalFileSystem.
41+
static std::unique_ptr<::arrow::fs::FileSystem> MakeLocalFileIO();
42+
3743
~ArrowFileSystemFileIO() override = default;
3844

3945
/// \brief Read the content of the file at the given location.

src/iceberg/avro/avro_reader.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
#include <avro/Generic.hh>
3232
#include <avro/GenericDatum.hh>
3333

34-
#include "iceberg/arrow/arrow_fs_file_io.h"
34+
#include "iceberg/arrow/arrow_fs_file_io_internal.h"
3535
#include "iceberg/avro/avro_data_util_internal.h"
3636
#include "iceberg/avro/avro_schema_util_internal.h"
3737
#include "iceberg/avro/avro_stream_internal.h"

test/arrow_fs_file_io_test.cc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,10 @@
1717
* under the License.
1818
*/
1919

20-
#include "iceberg/arrow/arrow_fs_file_io.h"
21-
2220
#include <arrow/filesystem/localfs.h>
2321
#include <gtest/gtest.h>
2422

23+
#include "iceberg/arrow/arrow_fs_file_io_internal.h"
2524
#include "matchers.h"
2625
#include "temp_file_test_base.h"
2726

test/avro_test.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
#include <avro/GenericDatum.hh>
3030
#include <gtest/gtest.h>
3131

32-
#include "iceberg/arrow/arrow_fs_file_io.h"
32+
#include "iceberg/arrow/arrow_fs_file_io_internal.h"
3333
#include "iceberg/avro/avro_reader.h"
3434
#include "iceberg/schema.h"
3535
#include "iceberg/type.h"

test/gzip_decompress_test.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
#include <arrow/util/compression.h>
2424
#include <gtest/gtest.h>
2525

26-
#include "iceberg/arrow/arrow_fs_file_io.h"
26+
#include "iceberg/arrow/arrow_fs_file_io_internal.h"
2727
#include "iceberg/file_io.h"
2828
#include "iceberg/util/gzip_internal.h"
2929
#include "matchers.h"

test/manifest_list_reader_test.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
#include <avro/GenericDatum.hh>
2222
#include <gtest/gtest.h>
2323

24-
#include "iceberg/arrow/arrow_fs_file_io.h"
24+
#include "iceberg/arrow/arrow_fs_file_io_internal.h"
2525
#include "iceberg/avro/avro_reader.h"
2626
#include "iceberg/manifest_list.h"
2727
#include "iceberg/manifest_reader.h"

test/metadata_io_test.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
#include <gtest/gtest.h>
2525
#include <nlohmann/json.hpp>
2626

27-
#include "iceberg/arrow/arrow_fs_file_io.h"
27+
#include "iceberg/arrow/arrow_fs_file_io_internal.h"
2828
#include "iceberg/file_io.h"
2929
#include "iceberg/json_internal.h"
3030
#include "iceberg/schema.h"

0 commit comments

Comments
 (0)