From: Tudor Bosman Date: Wed, 24 Apr 2013 21:59:06 +0000 (-0700) Subject: Fix async_io_test to work with larger block sizes X-Git-Tag: v0.22.0~995 X-Git-Url: http://plrg.eecs.uci.edu/git/?p=folly.git;a=commitdiff_plain;h=e2b1c08aae0f2651a56de5a519705bbe13331f46 Fix async_io_test to work with larger block sizes Test Plan: ran it Reviewed By: lucian@fb.com FB internal diff: D787733 --- diff --git a/folly/experimental/io/test/AsyncIOTest.cpp b/folly/experimental/io/test/AsyncIOTest.cpp index a513913d..de00065a 100644 --- a/folly/experimental/io/test/AsyncIOTest.cpp +++ b/folly/experimental/io/test/AsyncIOTest.cpp @@ -40,7 +40,7 @@ using folly::AsyncIOQueue; namespace { -constexpr size_t kAlignment = 512; // align reads to 512 B (for O_DIRECT) +constexpr size_t kAlign = 4096; // align reads to 4096 B (for O_DIRECT) struct TestSpec { off_t start; @@ -120,7 +120,7 @@ TemporaryFile tempFile(6 << 20); // 6MiB typedef std::unique_ptr ManagedBuffer; ManagedBuffer allocateAligned(size_t size) { void* buf; - int rc = posix_memalign(&buf, 512, size); + int rc = posix_memalign(&buf, kAlign, size); CHECK_EQ(rc, 0) << strerror(rc); return ManagedBuffer(reinterpret_cast(buf), free); } @@ -264,56 +264,64 @@ TEST(AsyncIO, ZeroAsyncDataPollable) { } TEST(AsyncIO, SingleAsyncDataNotPollable) { - testReads({{0, 512}}, AsyncIO::NOT_POLLABLE); - testReads({{0, 512}}, AsyncIO::NOT_POLLABLE); + testReads({{0, kAlign}}, AsyncIO::NOT_POLLABLE); + testReads({{0, kAlign}}, AsyncIO::NOT_POLLABLE); } TEST(AsyncIO, SingleAsyncDataPollable) { - testReads({{0, 512}}, AsyncIO::POLLABLE); - testReads({{0, 512}}, AsyncIO::POLLABLE); + testReads({{0, kAlign}}, AsyncIO::POLLABLE); + testReads({{0, kAlign}}, AsyncIO::POLLABLE); } TEST(AsyncIO, MultipleAsyncDataNotPollable) { - testReads({{512, 1024}, {512, 1024}, {512, 2048}}, AsyncIO::NOT_POLLABLE); - testReads({{512, 1024}, {512, 1024}, {512, 2048}}, AsyncIO::NOT_POLLABLE); + testReads( + {{kAlign, 2*kAlign}, {kAlign, 2*kAlign}, {kAlign, 4*kAlign}}, + AsyncIO::NOT_POLLABLE); + testReads( + {{kAlign, 2*kAlign}, {kAlign, 2*kAlign}, {kAlign, 4*kAlign}}, + AsyncIO::NOT_POLLABLE); testReads({ {0, 5*1024*1024}, - {512, 5*1024*1024}, + {kAlign, 5*1024*1024} }, AsyncIO::NOT_POLLABLE); testReads({ - {512, 0}, - {512, 512}, - {512, 1024}, - {512, 10*1024}, - {512, 1024*1024}, + {kAlign, 0}, + {kAlign, kAlign}, + {kAlign, 2*kAlign}, + {kAlign, 20*kAlign}, + {kAlign, 1024*1024}, }, AsyncIO::NOT_POLLABLE); } TEST(AsyncIO, MultipleAsyncDataPollable) { - testReads({{512, 1024}, {512, 1024}, {512, 2048}}, AsyncIO::POLLABLE); - testReads({{512, 1024}, {512, 1024}, {512, 2048}}, AsyncIO::POLLABLE); + testReads( + {{kAlign, 2*kAlign}, {kAlign, 2*kAlign}, {kAlign, 4*kAlign}}, + AsyncIO::POLLABLE); + testReads( + {{kAlign, 2*kAlign}, {kAlign, 2*kAlign}, {kAlign, 4*kAlign}}, + AsyncIO::POLLABLE); testReads({ {0, 5*1024*1024}, - {512, 5*1024*1024}, - }, AsyncIO::POLLABLE); + {kAlign, 5*1024*1024} + }, AsyncIO::NOT_POLLABLE); testReads({ - {512, 0}, - {512, 512}, - {512, 1024}, - {512, 10*1024}, - {512, 1024*1024}, - }, AsyncIO::POLLABLE); + {kAlign, 0}, + {kAlign, kAlign}, + {kAlign, 2*kAlign}, + {kAlign, 20*kAlign}, + {kAlign, 1024*1024}, + }, AsyncIO::NOT_POLLABLE); } TEST(AsyncIO, ManyAsyncDataNotPollable) { { std::vector v; for (int i = 0; i < 1000; i++) { - v.push_back({512 * i, 512}); + v.push_back({kAlign * i, kAlign}); } testReads(v, AsyncIO::NOT_POLLABLE); } @@ -323,7 +331,7 @@ TEST(AsyncIO, ManyAsyncDataPollable) { { std::vector v; for (int i = 0; i < 1000; i++) { - v.push_back({512 * i, 512}); + v.push_back({kAlign * i, kAlign}); } testReads(v, AsyncIO::POLLABLE); } @@ -337,7 +345,7 @@ TEST(AsyncIO, NonBlockingWait) { SCOPE_EXIT { ::close(fd); }; - size_t size = 1024; + size_t size = 2*kAlign; auto buf = allocateAligned(size); op.pread(fd, buf.get(), size, 0); aioReader.submit(&op);