From: Casey Bodley Date: Mon, 3 Jun 2019 14:59:00 +0000 (-0400) Subject: test/rgw: test truncated reads in RGWHTTPManager X-Git-Tag: v15.1.0~2572^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F28345%2Fhead;p=ceph.git test/rgw: test truncated reads in RGWHTTPManager Signed-off-by: Casey Bodley --- diff --git a/src/test/rgw/test_http_manager.cc b/src/test/rgw/test_http_manager.cc index b8129a1f598c..e27e1895a45c 100644 --- a/src/test/rgw/test_http_manager.cc +++ b/src/test/rgw/test_http_manager.cc @@ -16,8 +16,39 @@ #include "global/global_init.h" #include "common/ceph_argparse.h" #include +#include +#include +#include #include +TEST(HTTPManager, ReadTruncated) +{ + using tcp = boost::asio::ip::tcp; + tcp::endpoint endpoint(tcp::v4(), 0); + boost::asio::io_context ioctx; + tcp::acceptor acceptor(ioctx); + acceptor.open(endpoint.protocol()); + acceptor.bind(endpoint); + acceptor.listen(); + + std::thread server{[&] { + tcp::socket socket{ioctx}; + acceptor.accept(socket); + std::string_view response = + "HTTP/1.1 200 OK\r\n" + "Content-Length: 1024\r\n" + "\r\n" + "short body"; + boost::asio::write(socket, boost::asio::buffer(response)); + }}; + const auto url = std::string{"http://127.0.0.1:"} + std::to_string(acceptor.local_endpoint().port()); + + RGWHTTPClient client{g_ceph_context, "GET", url}; + EXPECT_EQ(-EAGAIN, RGWHTTP::process(&client, null_yield)); + + server.join(); +} + TEST(HTTPManager, SignalThread) { auto cct = g_ceph_context;