Skip to content

Commit 13162f6

Browse files
committed
client test: Add fsync to ll_preadv_pwritev test
Signed-off-by: Frank S. Filz <[email protected]>
1 parent 201a355 commit 13162f6

File tree

1 file changed

+67
-2
lines changed

1 file changed

+67
-2
lines changed

src/test/client/nonblocking.cc

Lines changed: 67 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,16 +56,43 @@ TEST_F(TestClient, LlreadvLlwritev) {
5656
{in1, sizeof(in1)},
5757
};
5858

59+
char out_a_0[] = "hello ";
60+
char out_a_1[] = "world a is longer\n";
61+
struct iovec iov_out_a[2] = {
62+
{out_a_0, sizeof(out_a_0)},
63+
{out_a_1, sizeof(out_a_1)},
64+
};
65+
char in_a_0[sizeof(out_a_0)];
66+
char in_a_1[sizeof(out_a_1)];
67+
struct iovec iov_in_a[2] = {
68+
{in_a_0, sizeof(in_a_0)},
69+
{in_a_1, sizeof(in_a_1)},
70+
};
71+
72+
char out_b_0[] = "hello ";
73+
char out_b_1[] = "world b is much longer\n";
74+
struct iovec iov_out_b[2] = {
75+
{out_b_0, sizeof(out_b_0)},
76+
{out_b_1, sizeof(out_b_1)},
77+
};
78+
char in_b_0[sizeof(out_b_0)];
79+
char in_b_1[sizeof(out_b_1)];
80+
struct iovec iov_in_b[2] = {
81+
{in_b_0, sizeof(in_b_0)},
82+
{in_b_1, sizeof(in_b_1)},
83+
};
84+
5985
ssize_t nwritten = iov_out[0].iov_len + iov_out[1].iov_len;
6086

6187
std::unique_ptr<C_SaferCond> writefinish = nullptr;
6288
std::unique_ptr<C_SaferCond> readfinish = nullptr;
6389

64-
writefinish.reset(new C_SaferCond("test-nonblocking"));
65-
readfinish.reset(new C_SaferCond("test-nonblocking"));
90+
writefinish.reset(new C_SaferCond("test-nonblocking-writefinish"));
91+
readfinish.reset(new C_SaferCond("test-nonblocking-readfinish"));
6692

6793
int64_t rc;
6894
bufferlist bl;
95+
6996
rc = client->ll_preadv_pwritev(fh, iov_out, 2, 0, true, writefinish.get(), nullptr);
7097
ASSERT_EQ(0, rc);
7198
rc = writefinish->wait();
@@ -80,6 +107,44 @@ TEST_F(TestClient, LlreadvLlwritev) {
80107
ASSERT_EQ(0, strncmp((const char*)iov_in[0].iov_base, (const char*)iov_out[0].iov_base, iov_out[0].iov_len));
81108
ASSERT_EQ(0, strncmp((const char*)iov_in[1].iov_base, (const char*)iov_out[1].iov_base, iov_out[1].iov_len));
82109

110+
// need new condition variables...
111+
writefinish.reset(new C_SaferCond("test-nonblocking-writefinish"));
112+
readfinish.reset(new C_SaferCond("test-nonblocking-readfinish"));
113+
ssize_t nwritten_a = iov_out_a[0].iov_len + iov_out_a[1].iov_len;
114+
115+
rc = client->ll_preadv_pwritev(fh, iov_out_a, 2, 100, true, writefinish.get(), nullptr);
116+
ASSERT_EQ(0, rc);
117+
rc = writefinish->wait();
118+
ASSERT_EQ(nwritten_a, rc);
119+
120+
rc = client->ll_preadv_pwritev(fh, iov_in_a, 2, 100, false, readfinish.get(), &bl);
121+
ASSERT_EQ(0, rc);
122+
rc = readfinish.get()->wait();
123+
ASSERT_EQ(nwritten_a, rc);
124+
copy_bufferlist_to_iovec(iov_in_a, 2, &bl, rc);
125+
126+
ASSERT_EQ(0, strncmp((const char*)iov_in_a[0].iov_base, (const char*)iov_out_a[0].iov_base, iov_out_a[0].iov_len));
127+
ASSERT_EQ(0, strncmp((const char*)iov_in_a[1].iov_base, (const char*)iov_out_a[1].iov_base, iov_out_a[1].iov_len));
128+
129+
// need new condition variables...
130+
writefinish.reset(new C_SaferCond("test-nonblocking-writefinish"));
131+
readfinish.reset(new C_SaferCond("test-nonblocking-readfinish"));
132+
ssize_t nwritten_b = iov_out_b[0].iov_len + iov_out_b[1].iov_len;
133+
134+
rc = client->ll_preadv_pwritev(fh, iov_out_b, 2, 1000, true, writefinish.get(), nullptr, true, false);
135+
ASSERT_EQ(0, rc);
136+
rc = writefinish->wait();
137+
ASSERT_EQ(nwritten_b, rc);
138+
139+
rc = client->ll_preadv_pwritev(fh, iov_in_b, 2, 1000, false, readfinish.get(), &bl);
140+
ASSERT_EQ(0, rc);
141+
rc = readfinish.get()->wait();
142+
ASSERT_EQ(nwritten_b, rc);
143+
copy_bufferlist_to_iovec(iov_in_b, 2, &bl, rc);
144+
145+
ASSERT_EQ(0, strncmp((const char*)iov_in_b[0].iov_base, (const char*)iov_out_b[0].iov_base, iov_out_b[0].iov_len));
146+
ASSERT_EQ(0, strncmp((const char*)iov_in_b[1].iov_base, (const char*)iov_out_b[1].iov_base, iov_out_b[1].iov_len));
147+
83148
client->ll_release(fh);
84149
ASSERT_EQ(0, client->ll_unlink(root, filename, myperm));
85150
}

0 commit comments

Comments
 (0)