From 287dbd70298c1743668182913644d2bbe3cdcd5b Mon Sep 17 00:00:00 2001 From: Jing Zhang Date: Tue, 13 Aug 2024 10:32:21 -0700 Subject: [PATCH] [link prober] print out error code message when `sendHeartbeat` fails (#266) Summary: Fixes # (issue) Print out error code message when sendHeartbeat fails. sign-off: Jing Zhang zhangjing@microsoft.com --- src/link_prober/LinkProber.cpp | 3 ++- test/LinkProberTest.cpp | 11 +++++++++++ test/LinkProberTest.h | 4 ++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/link_prober/LinkProber.cpp b/src/link_prober/LinkProber.cpp index 26f3ed88..fe7e5164 100644 --- a/src/link_prober/LinkProber.cpp +++ b/src/link_prober/LinkProber.cpp @@ -333,7 +333,7 @@ void LinkProber::sendHeartbeat(bool forceSend) mStream.write_some(boost::asio::buffer(mTxBuffer.data(), mTxPacketSize), errorCode); if (errorCode) { - MUXLOGTRACE(mMuxPortConfig.getPortName() + ": Failed to send heartbeat!"); + MUXLOGTRACE(mMuxPortConfig.getPortName() + ": Failed to send heartbeat! Error code: " + errorCode.message()); } else { MUXLOGTRACE(mMuxPortConfig.getPortName() + ": Done sending data"); } @@ -458,6 +458,7 @@ void LinkProber::handleRecv( } } else { // Unknown ICMP packet, ignore. + MUXLOGTRACE(mMuxPortConfig.getPortName() + ": Failed to receive heartbeat! Error code: " + errorCode.message()); } // start another receive to consume as much as possible of backlog packets if any startRecv(); diff --git a/test/LinkProberTest.cpp b/test/LinkProberTest.cpp index 5ff87896..6b2e9245 100644 --- a/test/LinkProberTest.cpp +++ b/test/LinkProberTest.cpp @@ -337,4 +337,15 @@ TEST_F(LinkProberTest, InitializeException) EXPECT_THROW(initialize(), common::SocketErrorException); } +TEST_F(LinkProberTest, LogErrorCodeMessage) +{ + EXPECT_THROW(simulateBadFileDescriptor(), boost::system::system_error); + + try { + simulateBadFileDescriptor(); + } catch (const boost::system::system_error& e) { + EXPECT_EQ(e.code().value(), boost::system::errc::bad_file_descriptor); + EXPECT_EQ(e.code().message(), "Bad file descriptor"); + } +} } /* namespace test */ diff --git a/test/LinkProberTest.h b/test/LinkProberTest.h index 14d9b1cf..e61fbadb 100644 --- a/test/LinkProberTest.h +++ b/test/LinkProberTest.h @@ -61,6 +61,10 @@ class LinkProberTest: public ::testing::Test void initTxBufferTlvSendProbe() {mLinkProber.initTxBufferTlvSendProbe();} void initTxBufferSentinel() {mLinkProber.initTxBufferTlvSentinel();} + void simulateBadFileDescriptor() { + throw boost::system::system_error(make_error_code(boost::system::errc::bad_file_descriptor)); + } + boost::asio::io_service mIoService; common::MuxConfig mMuxConfig; std::shared_ptr mDbInterfacePtr;