diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2016-07-08 13:15:52 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2016-07-08 13:15:52 +0200 |
commit | 11e4111bb45d926f7090adc599dcd08e59461a71 (patch) | |
tree | 5aec86dde8ccc786224aa8d4111a887eff2aa057 /searchlib | |
parent | 522c91d975f939453756b40da6049b00bcd36840 (diff) |
Add test for directiopadding computations.
Diffstat (limited to 'searchlib')
-rw-r--r-- | searchlib/src/tests/datastore/logdatastore_test.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/searchlib/src/tests/datastore/logdatastore_test.cpp b/searchlib/src/tests/datastore/logdatastore_test.cpp index 776e6b25533..2804e93331c 100644 --- a/searchlib/src/tests/datastore/logdatastore_test.cpp +++ b/searchlib/src/tests/datastore/logdatastore_test.cpp @@ -128,6 +128,52 @@ TEST("testThatLidInfoOrdersFileChunkSize") { EXPECT_TRUE(LidInfo(1, 1, 2) < LidInfo(2, 1, 1)); } +TEST("test that DirectIOPadding works accordng to spec") { + constexpr size_t FILE_SIZE= 100000; + FastOS_File file("directio.test"); + file.EnableDirectIO(); + EXPECT_TRUE(file.OpenReadWrite()); + std::vector<char> buffer(FILE_SIZE, 'a'); + EXPECT_EQUAL(FILE_SIZE, file.Write2(&buffer[0], buffer.size())); + size_t padBefore(0); + size_t padAfter(0); + + EXPECT_TRUE(file.DirectIOPadding(4096, 4096, padBefore, padAfter)); + EXPECT_EQUAL(0u, padBefore); + EXPECT_EQUAL(0u, padAfter); + + EXPECT_TRUE(file.DirectIOPadding(4095, 4096, padBefore, padAfter)); + EXPECT_EQUAL(4095u, padBefore); + EXPECT_EQUAL(0u, padAfter); + + EXPECT_TRUE(file.DirectIOPadding(4097, 4096, padBefore, padAfter)); + EXPECT_EQUAL(1u, padBefore); + EXPECT_EQUAL(0u, padAfter); + + EXPECT_TRUE(file.DirectIOPadding(4096, 4097, padBefore, padAfter)); + EXPECT_EQUAL(0u, padBefore); + EXPECT_EQUAL(4095u, padAfter); + + EXPECT_TRUE(file.DirectIOPadding(4096, 4095, padBefore, padAfter)); + EXPECT_EQUAL(0u, padBefore); + EXPECT_EQUAL(1u, padAfter); + + EXPECT_TRUE(file.DirectIOPadding(4097, 4095, padBefore, padAfter)); + EXPECT_EQUAL(1u, padBefore); + EXPECT_EQUAL(0u, padAfter); + + EXPECT_TRUE(file.DirectIOPadding(4097, 4096, padBefore, padAfter)); + EXPECT_EQUAL(1u, padBefore); + EXPECT_EQUAL(4095u, padAfter); + + EXPECT_TRUE(file.DirectIOPadding(4097, 4096, padBefore, padAfter)); + EXPECT_EQUAL(1u, padBefore); + EXPECT_EQUAL(4095u, padAfter); + + EXPECT_TRUE(file.Close()); + FastOS_File::Delete(file.GetFileName()); +} + TEST("testGrowing") { FastOS_File::EmptyAndRemoveDirectory("growing"); EXPECT_TRUE(FastOS_File::MakeDirectory("growing")); |