]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
test/rgw: test truncated reads in RGWHTTPManager 29273/head
authorCasey Bodley <cbodley@redhat.com>
Mon, 3 Jun 2019 14:59:00 +0000 (10:59 -0400)
committerNathan Cutler <ncutler@suse.com>
Wed, 24 Jul 2019 17:19:10 +0000 (19:19 +0200)
Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit c669cf293f02b3c68a4c539d7accf7ddf35cb1ee)

Conflicts:
    src/test/rgw/test_http_manager.cc
- RGWHTTP::process() only takes one argument in mimic

src/test/rgw/test_http_manager.cc

index b8129a1f598c037f0b9caa988195b3aa74e88c6b..ed49e4c80b4226963133b3971c6385c332796c1a 100644 (file)
 #include "global/global_init.h"
 #include "common/ceph_argparse.h"
 #include <curl/curl.h>
+#include <boost/asio/ip/tcp.hpp>
+#include <boost/asio/write.hpp>
+#include <thread>
 #include <gtest/gtest.h>
 
+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));
+
+  server.join();
+}
+
 TEST(HTTPManager, SignalThread)
 {
   auto cct = g_ceph_context;