From 9d952ad82032cff73e7b2ba3245747fbc9e64169 Mon Sep 17 00:00:00 2001 From: Haomai Wang Date: Wed, 25 May 2016 01:24:04 +0800 Subject: [PATCH] test_msgr: add connection read timeout tests Signed-off-by: Haomai Wang --- src/test/msgr/test_msgr.cc | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/test/msgr/test_msgr.cc b/src/test/msgr/test_msgr.cc index 76b975af118a9..d7f30756733f9 100644 --- a/src/test/msgr/test_msgr.cc +++ b/src/test/msgr/test_msgr.cc @@ -369,6 +369,44 @@ TEST_P(MessengerTest, FeatureTest) { client_msgr->wait(); } +TEST_P(MessengerTest, TimeoutTest) { + g_ceph_context->_conf->set_val("ms_tcp_read_timeout", "1"); + FakeDispatcher cli_dispatcher(false), srv_dispatcher(true); + entity_addr_t bind_addr; + bind_addr.parse("127.0.0.1"); + server_msgr->bind(bind_addr); + server_msgr->add_dispatcher_head(&srv_dispatcher); + server_msgr->start(); + + client_msgr->add_dispatcher_head(&cli_dispatcher); + client_msgr->start(); + + // 1. build the connection + MPing *m = new MPing(); + ConnectionRef conn = client_msgr->get_connection(server_msgr->get_myinst()); + { + ASSERT_EQ(conn->send_message(m), 0); + Mutex::Locker l(cli_dispatcher.lock); + while (!cli_dispatcher.got_new) + cli_dispatcher.cond.Wait(cli_dispatcher.lock); + cli_dispatcher.got_new = false; + } + ASSERT_TRUE(conn->is_connected()); + ASSERT_TRUE((static_cast(conn->get_priv()))->get_count() == 1); + ASSERT_TRUE(conn->peer_is_osd()); + + // 2. wait for idle + usleep(2500*1000); + ASSERT_FALSE(conn->is_connected()); + + server_msgr->shutdown(); + server_msgr->wait(); + + client_msgr->shutdown(); + client_msgr->wait(); + g_ceph_context->_conf->set_val("ms_tcp_read_timeout", "900"); +} + TEST_P(MessengerTest, StatefulTest) { Message *m; FakeDispatcher cli_dispatcher(false), srv_dispatcher(true); -- 2.39.5