Skip to content

Commit eac8bc0

Browse files
authored
Merge pull request ceph#54301 from lxbsz/wip-sparse-read-test
ceph_test_rados_api_io_pp: add multiple extents test for sparse-read
2 parents 4e2f6e3 + 3afae90 commit eac8bc0

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

src/test/librados/io_cxx.cc

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,39 @@ TEST_F(LibRadosIoPP, SparseReadOpPP) {
218218
}
219219
}
220220

221+
TEST_F(LibRadosIoPP, SparseReadExtentArrayOpPP) {
222+
int buf_len = 32;
223+
char buf[buf_len], zbuf[buf_len];
224+
memset(buf, 0xcc, buf_len);
225+
memset(zbuf, 0, buf_len);
226+
bufferlist bl;
227+
int i, len = 1024, skip = 5;
228+
bl.append(buf, buf_len);
229+
for (i = 0; i < len; i++) {
230+
if (!(i % skip) || i == (len - 1)) {
231+
ASSERT_EQ(0, ioctx.write("sparse-read", bl, bl.length(), i * buf_len));
232+
}
233+
}
234+
235+
bufferlist expect_bl;
236+
for (i = 0; i < len; i++) {
237+
if (!(i % skip) || i == (len - 1)) {
238+
expect_bl.append(buf, buf_len);
239+
} else {
240+
expect_bl.append(zbuf, buf_len);
241+
}
242+
}
243+
244+
std::map<uint64_t, uint64_t> extents;
245+
bufferlist read_bl;
246+
int rval = -1;
247+
ObjectReadOperation op;
248+
op.sparse_read(0, len * buf_len, &extents, &read_bl, &rval);
249+
ASSERT_EQ(0, ioctx.operate("sparse-read", &op, nullptr));
250+
ASSERT_EQ(0, rval);
251+
assert_eq_sparse(expect_bl, extents, read_bl);
252+
}
253+
221254
TEST_F(LibRadosIoPP, RoundTripPP) {
222255
char buf[128];
223256
Rados cluster;

0 commit comments

Comments
 (0)