summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2016-07-08 13:15:52 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2016-07-08 13:15:52 +0200
commit11e4111bb45d926f7090adc599dcd08e59461a71 (patch)
tree5aec86dde8ccc786224aa8d4111a887eff2aa057 /searchlib
parent522c91d975f939453756b40da6049b00bcd36840 (diff)
Add test for directiopadding computations.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/tests/datastore/logdatastore_test.cpp46
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"));