From a2b0522d15e43d8a9bd0eb2e49fc4411743c6328 Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Fri, 27 Nov 2020 19:55:27 +0100 Subject: [PATCH] metadata_v2: test filesystem_v2 --- test/dwarfs.cpp | 46 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 14 deletions(-) diff --git a/test/dwarfs.cpp b/test/dwarfs.cpp index 14e15959..e3984eea 100644 --- a/test/dwarfs.cpp +++ b/test/dwarfs.cpp @@ -27,6 +27,7 @@ #include "dwarfs/block_compressor.h" #include "dwarfs/entry.h" #include "dwarfs/filesystem.h" +#include "dwarfs/filesystem_v2.h" #include "dwarfs/filesystem_writer.h" #include "dwarfs/logger.h" #include "dwarfs/options.h" @@ -162,6 +163,31 @@ using namespace dwarfs; namespace { +dir_entry const* get_entry(dir_entry const* de) { return de; } + +entry_view get_entry(std::optional entry) { return *entry; } + +template +void test_created_filesystem(T const& fs) { + auto de = fs.find("/foo.pl"); + struct ::stat st; + + ASSERT_TRUE(de); + + auto entry = get_entry(de); + + EXPECT_EQ(fs.getattr(entry, &st), 0); + EXPECT_EQ(st.st_size, 23456); + + int inode = fs.open(entry); + EXPECT_GE(inode, 0); + + std::vector buf(st.st_size); + ssize_t rv = fs.read(inode, &buf[0], st.st_size, 0); + EXPECT_EQ(rv, st.st_size); + EXPECT_EQ(std::string(buf.begin(), buf.end()), test::loremipsum(st.st_size)); +} + void basic_end_to_end_test(const std::string& compressor, unsigned block_size_bits, file_order_mode file_order, bool no_owner, bool no_time) { @@ -194,24 +220,16 @@ void basic_end_to_end_test(const std::string& compressor, s.scan(fsw, "/", prog); + auto mm = std::make_shared(oss.str()); + block_cache_options bco; bco.max_bytes = 1 << 20; - filesystem fs(lgr, std::make_shared(oss.str()), bco); - auto de = fs.find("/foo.pl"); - struct ::stat st; + filesystem fs(lgr, mm, bco); + test_created_filesystem(fs); - ASSERT_NE(de, nullptr); - EXPECT_EQ(fs.getattr(de, &st), 0); - EXPECT_EQ(st.st_size, 23456); - - int inode = fs.open(de); - EXPECT_GE(inode, 0); - - std::vector buf(st.st_size); - ssize_t rv = fs.read(inode, &buf[0], st.st_size, 0); - EXPECT_EQ(rv, st.st_size); - EXPECT_EQ(std::string(buf.begin(), buf.end()), test::loremipsum(st.st_size)); + filesystem_v2 fs_v2(lgr, mm, bco); + test_created_filesystem(fs_v2); } std::vector const compressions{"null",