X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=ceph%2Fsrc%2Fseastar%2Ftests%2Funit%2Fsocket_test.cc;fp=ceph%2Fsrc%2Fseastar%2Ftests%2Funit%2Fsocket_test.cc;h=b58a65e8da460600c4b9ea82556bb14901488f93;hb=20effc670b57271cb089376d6d0800990e5218d5;hp=b4640bbfc8ba2795a6cf8e4ee18ed98f5d009b9b;hpb=a71831dadd1e1f3e0fa70405511f65cc33db0498;p=ceph.git diff --git a/ceph/src/seastar/tests/unit/socket_test.cc b/ceph/src/seastar/tests/unit/socket_test.cc index b4640bbfc..b58a65e8d 100644 --- a/ceph/src/seastar/tests/unit/socket_test.cc +++ b/ceph/src/seastar/tests/unit/socket_test.cc @@ -25,6 +25,10 @@ #include #include #include +#include +#include +#include +#include #include @@ -70,13 +74,34 @@ public: my_malloc_allocator malloc_allocator; std::pmr::polymorphic_allocator allocator{&malloc_allocator}; -int main(int ac, char** av) { - register_network_stack("posix", boost::program_options::options_description(), - [](boost::program_options::variables_map ops) { - return smp::main_thread() ? net::posix_network_stack::create(ops, &allocator) - : net::posix_ap_network_stack::create(ops); - }, true); - return app_template().run_deprecated(ac, av, [] { - return echo_server_loop().finally([](){ engine().exit((malloc_allocator.allocs == malloc_allocator.frees) ? 0 : 1); }); - }); +SEASTAR_TEST_CASE(socket_allocation_test) { + return echo_server_loop().finally([](){ engine().exit((malloc_allocator.allocs == malloc_allocator.frees) ? 0 : 1); }); } + +SEASTAR_TEST_CASE(socket_skip_test) { + return seastar::async([&] { + listen_options lo; + lo.reuse_address = true; + server_socket ss = seastar::listen(ipv4_addr("127.0.0.1", 1234), lo); + + abort_source as; + auto client = async([&as] { + connected_socket socket = connect(ipv4_addr("127.0.0.1", 1234)).get(); + socket.output().write("abc").get(); + socket.shutdown_output(); + try { + sleep_abortable(std::chrono::seconds(10), as).get(); + } catch (const sleep_aborted&) { + // expected + return; + } + assert(!"Skipping data from socket is likely stuck"); + }); + + accept_result accepted = ss.accept().get(); + input_stream input = accepted.connection.input(); + input.skip(16).get(); + as.request_abort(); + client.get(); + }); +} \ No newline at end of file