From c669cf293f02b3c68a4c539d7accf7ddf35cb1ee Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Mon, 3 Jun 2019 10:59:00 -0400 Subject: [PATCH] test/rgw: test truncated reads in RGWHTTPManager Signed-off-by: Casey Bodley --- src/test/rgw/test_http_manager.cc | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/test/rgw/test_http_manager.cc b/src/test/rgw/test_http_manager.cc index b8129a1f598..e27e1895a45 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; -- 2.39.5