diff --git a/quic/api/test/QuicTransportFunctionsTest.cpp b/quic/api/test/QuicTransportFunctionsTest.cpp index 836b2eea0..a84ca338b 100644 --- a/quic/api/test/QuicTransportFunctionsTest.cpp +++ b/quic/api/test/QuicTransportFunctionsTest.cpp @@ -334,7 +334,7 @@ TEST_F(QuicTransportFunctionsTest, TestUpdateConnection) { for (int i = 0; i < 2; ++i) { auto p1 = std::move(qLogger->logs[indices[i]]); auto event = dynamic_cast(p1.get()); - EXPECT_EQ(event->packetType, toString(LongHeader::Types::Handshake)); + EXPECT_EQ(event->packetType, toQlogString(LongHeader::Types::Handshake)); EXPECT_EQ(event->packetSize, getEncodedSize(packet)); EXPECT_EQ(event->eventType, QLogEventType::PacketSent); @@ -408,9 +408,9 @@ TEST_F(QuicTransportFunctionsTest, TestUpdateConnectionPacketSorting) { auto event2 = dynamic_cast(l2.get()); auto event3 = dynamic_cast(l3.get()); - EXPECT_EQ(event1->packetType, toString(LongHeader::Types::Handshake)); - EXPECT_EQ(event2->packetType, toString(LongHeader::Types::Initial)); - EXPECT_EQ(event3->packetType, toString(LongHeader::Types::ZeroRtt)); + EXPECT_EQ(event1->packetType, toQlogString(LongHeader::Types::Handshake)); + EXPECT_EQ(event2->packetType, toQlogString(LongHeader::Types::Initial)); + EXPECT_EQ(event3->packetType, toQlogString(LongHeader::Types::ZeroRtt)); EXPECT_EQ(3, conn->outstandings.packets.size()); auto& firstHeader = conn->outstandings.packets.front().packet.header; @@ -450,7 +450,7 @@ TEST_F(QuicTransportFunctionsTest, TestUpdateConnectionFinOnly) { auto tmp = std::move(qLogger->logs[indices[0]]); auto event = dynamic_cast(tmp.get()); - EXPECT_EQ(event->packetType, toString(LongHeader::Types::Handshake)); + EXPECT_EQ(event->packetType, toQlogString(LongHeader::Types::Handshake)); EXPECT_EQ(event->packetSize, getEncodedSize(packet)); EXPECT_EQ(event->eventType, QLogEventType::PacketSent); @@ -495,7 +495,7 @@ TEST_F(QuicTransportFunctionsTest, TestUpdateConnectionAllBytesExceptFin) { auto tmp = std::move(qLogger->logs[indices[0]]); auto event = dynamic_cast(tmp.get()); - EXPECT_EQ(event->packetType, toString(LongHeader::Types::Handshake)); + EXPECT_EQ(event->packetType, toQlogString(LongHeader::Types::Handshake)); EXPECT_EQ(event->packetSize, getEncodedSize(packet)); EXPECT_EQ(event->eventType, QLogEventType::PacketSent); @@ -538,7 +538,7 @@ TEST_F(QuicTransportFunctionsTest, TestUpdateConnectionEmptyAckWriteResult) { EXPECT_EQ(indices.size(), 1); auto tmp = std::move(qLogger->logs[indices[0]]); auto event = dynamic_cast(tmp.get()); - EXPECT_EQ(event->packetType, toString(LongHeader::Types::Handshake)); + EXPECT_EQ(event->packetType, toQlogString(LongHeader::Types::Handshake)); EXPECT_EQ(event->packetSize, getEncodedSize(packet)); EXPECT_EQ(event->eventType, QLogEventType::PacketSent); @@ -591,7 +591,7 @@ TEST_F(QuicTransportFunctionsTest, TestUpdateConnectionPureAckCounter) { for (int i = 0; i < 2; ++i) { auto tmp = std::move(qLogger->logs[indices[i]]); auto event = dynamic_cast(tmp.get()); - EXPECT_EQ(event->packetType, toString(LongHeader::Types::Handshake)); + EXPECT_EQ(event->packetType, toQlogString(LongHeader::Types::Handshake)); EXPECT_EQ(event->packetSize, getEncodedSize(packet)); EXPECT_EQ(event->frames.size(), 1); } @@ -621,7 +621,7 @@ TEST_F(QuicTransportFunctionsTest, TestPaddingPureAckPacketIsStillPureAck) { auto tmp = std::move(qLogger->logs[indices[0]]); auto event = dynamic_cast(tmp.get()); - EXPECT_EQ(event->packetType, toString(LongHeader::Types::Handshake)); + EXPECT_EQ(event->packetType, toQlogString(LongHeader::Types::Handshake)); EXPECT_EQ(event->packetSize, getEncodedSize(packet)); EXPECT_EQ(event->eventType, QLogEventType::PacketSent); EXPECT_EQ(event->frames.size(), 2); @@ -769,8 +769,8 @@ TEST_F(QuicTransportFunctionsTest, TestUpdateConnectionHandshakeCounter) { getQLogEventIndices(QLogEventType::PacketSent, qLogger); EXPECT_EQ(indices.size(), 2); std::vector packetTypes = { - toString(LongHeader::Types::Handshake), - toString(LongHeader::Types::ZeroRtt)}; + std::string(toQlogString(LongHeader::Types::Handshake)), + std::string(toQlogString(LongHeader::Types::ZeroRtt))}; for (int i = 0; i < 2; ++i) { auto tmp = std::move(qLogger->logs[indices[i]]); auto event = dynamic_cast(tmp.get()); @@ -838,8 +838,9 @@ TEST_F(QuicTransportFunctionsTest, TestUpdateConnectionForOneRttCryptoData) { std::vector indices = getQLogEventIndices(QLogEventType::PacketSent, qLogger); EXPECT_EQ(indices.size(), 2); - std::vector packetTypes = {kShortHeaderPacketType.str(), - toString(LongHeader::Types::ZeroRtt)}; + std::vector packetTypes = { + kShortHeaderPacketType.str(), + std::string(toQlogString(LongHeader::Types::ZeroRtt))}; for (int i = 0; i < 2; ++i) { auto tmp = std::move(qLogger->logs[indices[i]]); auto event = dynamic_cast(tmp.get()); @@ -895,7 +896,7 @@ TEST_F(QuicTransportFunctionsTest, TestUpdateConnectionWithPureAck) { EXPECT_EQ(indices.size(), 1); auto tmp = std::move(qLogger->logs[indices[0]]); auto event = dynamic_cast(tmp.get()); - EXPECT_EQ(event->packetType, toString(LongHeader::Types::Handshake)); + EXPECT_EQ(event->packetType, toQlogString(LongHeader::Types::Handshake)); EXPECT_EQ(event->packetSize, getEncodedSize(packet)); EXPECT_EQ(event->eventType, QLogEventType::PacketSent); // verify QLogger contains correct frame information @@ -932,7 +933,7 @@ TEST_F(QuicTransportFunctionsTest, TestUpdateConnectionWithBytesStats) { auto tmp = std::move(qLogger->logs[indices[0]]); auto event = dynamic_cast(tmp.get()); - EXPECT_EQ(event->packetType, toString(LongHeader::Types::Handshake)); + EXPECT_EQ(event->packetType, toQlogString(LongHeader::Types::Handshake)); EXPECT_EQ(event->packetSize, 555); EXPECT_EQ(event->eventType, QLogEventType::PacketSent); @@ -1037,7 +1038,7 @@ TEST_F(QuicTransportFunctionsTest, TestUpdateConnectionStreamWindowUpdate) { auto tmp = std::move(qLogger->logs[indices[0]]); auto event = dynamic_cast(tmp.get()); - EXPECT_EQ(event->packetType, toString(LongHeader::Types::Handshake)); + EXPECT_EQ(event->packetType, toQlogString(LongHeader::Types::Handshake)); EXPECT_EQ(event->packetSize, getEncodedSize(packet)); EXPECT_EQ(event->eventType, QLogEventType::PacketSent); @@ -1072,7 +1073,7 @@ TEST_F(QuicTransportFunctionsTest, TestUpdateConnectionConnWindowUpdate) { auto tmp = std::move(qLogger->logs[indices[0]]); auto event = dynamic_cast(tmp.get()); - EXPECT_EQ(event->packetType, toString(LongHeader::Types::Handshake)); + EXPECT_EQ(event->packetType, toQlogString(LongHeader::Types::Handshake)); EXPECT_EQ(event->packetSize, getEncodedSize(packet)); EXPECT_EQ(event->eventType, QLogEventType::PacketSent); // verify QLogger contains correct frame information diff --git a/quic/logging/BaseQLogger.cpp b/quic/logging/BaseQLogger.cpp index 6b7292c73..7706f5171 100644 --- a/quic/logging/BaseQLogger.cpp +++ b/quic/logging/BaseQLogger.cpp @@ -84,7 +84,7 @@ std::unique_ptr BaseQLogger::createPacketEvent( event->packetType = kShortHeaderPacketType.toString(); } else { event->packetType = - toString(regularPacket.header.asLong()->getHeaderType()); + toQlogString(regularPacket.header.asLong()->getHeaderType()).str(); } if (event->packetType != toString(LongHeader::Types::Retry)) { // A Retry packet does not include a packet number. @@ -196,7 +196,8 @@ std::unique_ptr BaseQLogger::createPacketEvent( if (shortHeader) { event->packetType = kShortHeaderPacketType.toString(); } else { - event->packetType = toString(writePacket.header.asLong()->getHeaderType()); + event->packetType = + toQlogString(writePacket.header.asLong()->getHeaderType()).str(); } uint64_t numPaddingFrames = 0; @@ -310,7 +311,7 @@ std::unique_ptr BaseQLogger::createPacketEvent( event->tokenSize = retryPacket.header.getToken().size(); event->eventType = isPacketRecvd ? QLogEventType::PacketReceived : QLogEventType::PacketSent; - event->packetType = toString(retryPacket.header.getHeaderType()); + event->packetType = toQlogString(retryPacket.header.getHeaderType()).str(); return event; } diff --git a/quic/logging/FileQLogger.cpp b/quic/logging/FileQLogger.cpp index ef9da281f..f0aaa0c76 100644 --- a/quic/logging/FileQLogger.cpp +++ b/quic/logging/FileQLogger.cpp @@ -388,7 +388,7 @@ folly::dynamic FileQLogger::toDynamicBase() const { dynamicTrace["events"] = folly::dynamic::array(); dynamicTrace["event_fields"] = - folly::dynamic::array("relative_time", "CATEGORY", "EVENT_TYPE", "DATA"); + folly::dynamic::array("relative_time", "category", "event", "data"); dynamicObj["traces"].push_back(dynamicTrace); diff --git a/quic/logging/QLoggerConstants.cpp b/quic/logging/QLoggerConstants.cpp index b5d0fde51..87da98e60 100644 --- a/quic/logging/QLoggerConstants.cpp +++ b/quic/logging/QLoggerConstants.cpp @@ -18,4 +18,81 @@ folly::StringPiece vantagePointString(VantagePoint vantagePoint) noexcept { } folly::assume_unreachable(); } + +folly::StringPiece toQlogString(FrameType frame) { + switch (frame) { + case FrameType::PADDING: + return "padding"; + case FrameType::PING: + return "ping"; + case FrameType::ACK: + return "ack"; + case FrameType::ACK_ECN: + return "ack_ecn"; + case FrameType::RST_STREAM: + return "rst_stream"; + case FrameType::STOP_SENDING: + return "stop_sending"; + case FrameType::CRYPTO_FRAME: + return "crypto_frame"; + case FrameType::NEW_TOKEN: + return "new_token"; + case FrameType::STREAM: + case FrameType::STREAM_FIN: + case FrameType::STREAM_LEN: + case FrameType::STREAM_LEN_FIN: + case FrameType::STREAM_OFF: + case FrameType::STREAM_OFF_FIN: + case FrameType::STREAM_OFF_LEN: + case FrameType::STREAM_OFF_LEN_FIN: + return "stream"; + case FrameType::MAX_DATA: + return "max_data"; + case FrameType::MAX_STREAM_DATA: + return "max_stream_data"; + case FrameType::MAX_STREAMS_BIDI: + case FrameType::MAX_STREAMS_UNI: + return "max_streams"; + case FrameType::DATA_BLOCKED: + return "data_blocked"; + case FrameType::STREAM_DATA_BLOCKED: + return "stream_data_blocked"; + case FrameType::STREAMS_BLOCKED_BIDI: + case FrameType::STREAMS_BLOCKED_UNI: + return "streams_blocked"; + case FrameType::NEW_CONNECTION_ID: + return "new_connection_id"; + case FrameType::RETIRE_CONNECTION_ID: + return "retire_connection_id"; + case FrameType::PATH_CHALLENGE: + return "path_challenge"; + case FrameType::PATH_RESPONSE: + return "path_response"; + case FrameType::CONNECTION_CLOSE: + case FrameType::CONNECTION_CLOSE_APP_ERR: + return "connection_close"; + case FrameType::MIN_STREAM_DATA: + return "min_stream_data"; + case FrameType::EXPIRED_STREAM_DATA: + return "expired_stream_data"; + case FrameType::HANDSHAKE_DONE: + return "handshake_done"; + } + folly::assume_unreachable(); +} + +folly::StringPiece toQlogString(LongHeader::Types type) { + switch (type) { + case LongHeader::Types::Initial: + return "initial"; + case LongHeader::Types::Retry: + return "RETRY"; + case LongHeader::Types::Handshake: + return "handshake"; + case LongHeader::Types::ZeroRtt: + return "0RTT"; + } + folly::assume_unreachable(); +} + } // namespace quic diff --git a/quic/logging/QLoggerConstants.h b/quic/logging/QLoggerConstants.h index 031e1592b..3e2f89e35 100644 --- a/quic/logging/QLoggerConstants.h +++ b/quic/logging/QLoggerConstants.h @@ -9,11 +9,12 @@ #pragma once #include +#include #include "quic/QuicConstants.h" namespace quic { constexpr folly::StringPiece kShortHeaderPacketType = "1RTT"; -constexpr auto kVersionNegotiationPacketType = "VersionNegotiation"; +constexpr auto kVersionNegotiationPacketType = "version_negotiation"; constexpr auto kHTTP3ProtocolType = "QUIC_HTTP3"; constexpr auto kNoError = "no error"; constexpr auto kGracefulExit = "graceful exit"; @@ -88,4 +89,8 @@ using VantagePoint = QuicNodeType; folly::StringPiece vantagePointString(VantagePoint vantagePoint) noexcept; +folly::StringPiece toQlogString(FrameType frame); + +folly::StringPiece toQlogString(LongHeader::Types type); + } // namespace quic diff --git a/quic/logging/QLoggerTypes.cpp b/quic/logging/QLoggerTypes.cpp index debf58675..6ad291fc4 100644 --- a/quic/logging/QLoggerTypes.cpp +++ b/quic/logging/QLoggerTypes.cpp @@ -13,14 +13,14 @@ namespace quic { folly::dynamic PaddingFrameLog::toDynamic() const { folly::dynamic d = folly::dynamic::object(); - d["frame_type"] = toString(FrameType::PADDING); + d["frame_type"] = toQlogString(FrameType::PADDING); d["num_frames"] = numFrames; return d; } folly::dynamic RstStreamFrameLog::toDynamic() const { folly::dynamic d = folly::dynamic::object(); - d["frame_type"] = toString(FrameType::RST_STREAM); + d["frame_type"] = toQlogString(FrameType::RST_STREAM); d["stream_id"] = streamId; d["error_code"] = errorCode; d["offset"] = offset; @@ -35,9 +35,9 @@ folly::dynamic ConnectionCloseFrameLog::toDynamic() const { auto isLocalErrorCode = errorCode.asLocalErrorCode(); if (isTransportErrorCode || isLocalErrorCode) { - d["frame_type"] = toString(FrameType::CONNECTION_CLOSE); + d["frame_type"] = toQlogString(FrameType::CONNECTION_CLOSE); } else if (isApplicationErrorCode) { - d["frame_type"] = toString(FrameType::CONNECTION_CLOSE_APP_ERR); + d["frame_type"] = toQlogString(FrameType::CONNECTION_CLOSE_APP_ERR); } d["error_code"] = toString(errorCode); @@ -48,14 +48,14 @@ folly::dynamic ConnectionCloseFrameLog::toDynamic() const { folly::dynamic MaxDataFrameLog::toDynamic() const { folly::dynamic d = folly::dynamic::object(); - d["frame_type"] = toString(FrameType::MAX_DATA); + d["frame_type"] = toQlogString(FrameType::MAX_DATA); d["maximum_data"] = maximumData; return d; } folly::dynamic MaxStreamDataFrameLog::toDynamic() const { folly::dynamic d = folly::dynamic::object(); - d["frame_type"] = toString(FrameType::MAX_STREAM_DATA); + d["frame_type"] = toQlogString(FrameType::MAX_STREAM_DATA); d["stream_id"] = streamId; d["maximum_data"] = maximumData; return d; @@ -89,20 +89,20 @@ folly::dynamic StreamsBlockedFrameLog::toDynamic() const { folly::dynamic PingFrameLog::toDynamic() const { folly::dynamic d = folly::dynamic::object(); - d["frame_type"] = toString(FrameType::PING); + d["frame_type"] = toQlogString(FrameType::PING); return d; } folly::dynamic DataBlockedFrameLog::toDynamic() const { folly::dynamic d = folly::dynamic::object(); - d["frame_type"] = toString(FrameType::DATA_BLOCKED); + d["frame_type"] = toQlogString(FrameType::DATA_BLOCKED); d["data_limit"] = dataLimit; return d; } folly::dynamic StreamDataBlockedFrameLog::toDynamic() const { folly::dynamic d = folly::dynamic::object(); - d["frame_type"] = toString(FrameType::STREAM_DATA_BLOCKED); + d["frame_type"] = toQlogString(FrameType::STREAM_DATA_BLOCKED); d["stream_id"] = streamId; d["data_limit"] = dataLimit; return d; @@ -114,13 +114,13 @@ folly::dynamic StreamFrameLog::toDynamic() const { d["length"] = len; d["fin"] = fin; d["stream_id"] = folly::to(streamId); - d["frame_type"] = toString(FrameType::STREAM); + d["frame_type"] = toQlogString(FrameType::STREAM); return d; } folly::dynamic CryptoFrameLog::toDynamic() const { folly::dynamic d = folly::dynamic::object(); - d["frame_type"] = toString(FrameType::CRYPTO_FRAME); + d["frame_type"] = toQlogString(FrameType::CRYPTO_FRAME); d["offset"] = offset; d["len"] = len; return d; @@ -128,7 +128,7 @@ folly::dynamic CryptoFrameLog::toDynamic() const { folly::dynamic StopSendingFrameLog::toDynamic() const { folly::dynamic d = folly::dynamic::object(); - d["frame_type"] = toString(FrameType::STOP_SENDING); + d["frame_type"] = toQlogString(FrameType::STOP_SENDING); d["stream_id"] = streamId; d["error_code"] = errorCode; return d; @@ -136,7 +136,7 @@ folly::dynamic StopSendingFrameLog::toDynamic() const { folly::dynamic MinStreamDataFrameLog::toDynamic() const { folly::dynamic d = folly::dynamic::object(); - d["frame_type"] = toString(FrameType::MIN_STREAM_DATA); + d["frame_type"] = toQlogString(FrameType::MIN_STREAM_DATA); d["stream_id"] = streamId; d["maximum_data"] = maximumData; d["minimum_stream_offset"] = minimumStreamOffset; @@ -145,7 +145,7 @@ folly::dynamic MinStreamDataFrameLog::toDynamic() const { folly::dynamic ExpiredStreamDataFrameLog::toDynamic() const { folly::dynamic d = folly::dynamic::object(); - d["frame_type"] = toString(FrameType::EXPIRED_STREAM_DATA); + d["frame_type"] = toQlogString(FrameType::EXPIRED_STREAM_DATA); d["stream_id"] = streamId; d["minimum_stream_offset"] = minimumStreamOffset; return d; @@ -153,21 +153,21 @@ folly::dynamic ExpiredStreamDataFrameLog::toDynamic() const { folly::dynamic PathChallengeFrameLog::toDynamic() const { folly::dynamic d = folly::dynamic::object(); - d["frame_type"] = toString(FrameType::PATH_CHALLENGE); + d["frame_type"] = toQlogString(FrameType::PATH_CHALLENGE); d["path_data"] = pathData; return d; } folly::dynamic PathResponseFrameLog::toDynamic() const { folly::dynamic d = folly::dynamic::object(); - d["frame_type"] = toString(FrameType::PATH_RESPONSE); + d["frame_type"] = toQlogString(FrameType::PATH_RESPONSE); d["path_data"] = pathData; return d; } folly::dynamic NewConnectionIdFrameLog::toDynamic() const { folly::dynamic d = folly::dynamic::object(); - d["frame_type"] = toString(FrameType::NEW_CONNECTION_ID); + d["frame_type"] = toQlogString(FrameType::NEW_CONNECTION_ID); d["sequence"] = sequence; folly::dynamic dToken = folly::dynamic::array(); @@ -181,7 +181,7 @@ folly::dynamic NewConnectionIdFrameLog::toDynamic() const { folly::dynamic RetireConnectionIdFrameLog::toDynamic() const { folly::dynamic d = folly::dynamic::object(); - d["frame_type"] = toString(FrameType::RETIRE_CONNECTION_ID); + d["frame_type"] = toQlogString(FrameType::RETIRE_CONNECTION_ID); d["sequence"] = sequence; return d; } @@ -195,7 +195,7 @@ folly::dynamic ReadAckFrameLog::toDynamic() const { folly::dynamic::array(b.startPacket, b.endPacket)); } d["acked_ranges"] = ackRangeDynamic; - d["frame_type"] = toString(FrameType::ACK); + d["frame_type"] = toQlogString(FrameType::ACK); d["ack_delay"] = ackDelay.count(); return d; } @@ -208,20 +208,20 @@ folly::dynamic WriteAckFrameLog::toDynamic() const { ackRangeDynamic.push_back(folly::dynamic::array(it->start, it->end)); } d["acked_ranges"] = ackRangeDynamic; - d["frame_type"] = toString(FrameType::ACK); + d["frame_type"] = toQlogString(FrameType::ACK); d["ack_delay"] = ackDelay.count(); return d; } folly::dynamic ReadNewTokenFrameLog::toDynamic() const { folly::dynamic d = folly::dynamic::object(); - d["frame_type"] = toString(FrameType::NEW_TOKEN); + d["frame_type"] = toQlogString(FrameType::NEW_TOKEN); return d; } folly::dynamic HandshakeDoneFrameLog::toDynamic() const { folly::dynamic d = folly::dynamic::object(); - d["frame_type"] = toString(FrameType::HANDSHAKE_DONE); + d["frame_type"] = toQlogString(FrameType::HANDSHAKE_DONE); return d; } @@ -239,7 +239,7 @@ folly::dynamic QLogPacketEvent::toDynamic() const { // the event fields relative_time, category, event_type, trigger, data folly::dynamic d = folly::dynamic::array( folly::to(refTime.count()), - "TRANSPORT", + "transport", toString(eventType)); folly::dynamic data = folly::dynamic::object(); @@ -266,7 +266,7 @@ folly::dynamic QLogVersionNegotiationEvent::toDynamic() const { folly::dynamic d = folly::dynamic::array( folly::to(refTime.count()), - "TRANSPORT", + "transport", toString(eventType)); folly::dynamic data = folly::dynamic::object(); @@ -281,7 +281,7 @@ folly::dynamic QLogVersionNegotiationEvent::toDynamic() const { folly::dynamic QLogRetryEvent::toDynamic() const { folly::dynamic d = folly::dynamic::array( folly::to(refTime.count()), - "TRANSPORT", + "transport", toString(eventType)); folly::dynamic data = folly::dynamic::object(); @@ -312,7 +312,7 @@ folly::dynamic QLogConnectionCloseEvent::toDynamic() const { // the event fields relative_time, category, event_type, trigger, data folly::dynamic d = folly::dynamic::array( folly::to(refTime.count()), - "CONNECTIVITY", + "connectivity", toString(eventType)); folly::dynamic data = folly::dynamic::object(); @@ -356,7 +356,7 @@ folly::dynamic QLogTransportSummaryEvent::toDynamic() const { // the event fields relative_time, category, event_type, trigger, data folly::dynamic d = folly::dynamic::array( folly::to(refTime.count()), - "TRANSPORT", + "transport", toString(eventType)); folly::dynamic data = folly::dynamic::object(); @@ -396,7 +396,7 @@ folly::dynamic QLogCongestionMetricUpdateEvent::toDynamic() const { // the event fields relative_time, category, event_type, trigger, data folly::dynamic d = folly::dynamic::array( folly::to(refTime.count()), - "METRIC_UPDATE", + "metric_update", toString(eventType)); folly::dynamic data = folly::dynamic::object(); @@ -464,7 +464,7 @@ folly::dynamic QLogPacingMetricUpdateEvent::toDynamic() const { // the event fields relative_time, category, event_type, trigger, data folly::dynamic d = folly::dynamic::array( folly::to(refTime.count()), - "METRIC_UPDATE", + "metric_update", toString(eventType)); folly::dynamic data = folly::dynamic::object(); @@ -493,7 +493,7 @@ QLogPacingObservationEvent::QLogPacingObservationEvent( folly::dynamic QLogPacingObservationEvent::toDynamic() const { folly::dynamic d = folly::dynamic::array( folly::to(refTime.count()), - "METRIC_UPDATE", + "metric_update", toString(eventType)); folly::dynamic data = folly::dynamic::object(); @@ -519,7 +519,7 @@ folly::dynamic QLogAppIdleUpdateEvent::toDynamic() const { // the event fields relative_time, category, event_type, trigger, data folly::dynamic d = folly::dynamic::array( folly::to(refTime.count()), - "IDLE_UPDATE", + "idle_update", toString(eventType)); folly::dynamic data = folly::dynamic::object(); @@ -543,7 +543,7 @@ folly::dynamic QLogPacketDropEvent::toDynamic() const { // creating a folly::dynamic array to hold the information corresponding to // the event fields relative_time, category, event_type, trigger, data folly::dynamic d = folly::dynamic::array( - folly::to(refTime.count()), "LOSS", toString(eventType)); + folly::to(refTime.count()), "loss", toString(eventType)); folly::dynamic data = folly::dynamic::object(); data["packet_size"] = packetSize; @@ -566,7 +566,7 @@ folly::dynamic QLogDatagramReceivedEvent::toDynamic() const { // the event fields relative_time, category, event_type, trigger, data folly::dynamic d = folly::dynamic::array( folly::to(refTime.count()), - "TRANSPORT", + "transport", toString(eventType)); folly::dynamic data = folly::dynamic::object(); @@ -594,7 +594,7 @@ folly::dynamic QLogLossAlarmEvent::toDynamic() const { // creating a folly::dynamic array to hold the information corresponding to // the event fields relative_time, category, event_type, trigger, data folly::dynamic d = folly::dynamic::array( - folly::to(refTime.count()), "LOSS", toString(eventType)); + folly::to(refTime.count()), "loss", toString(eventType)); folly::dynamic data = folly::dynamic::object(); data["largest_sent"] = largestSent; @@ -622,7 +622,7 @@ folly::dynamic QLogPacketsLostEvent::toDynamic() const { // creating a folly::dynamic array to hold the information corresponding to // the event fields relative_time, category, event_type, trigger, data folly::dynamic d = folly::dynamic::array( - folly::to(refTime.count()), "LOSS", toString(eventType)); + folly::to(refTime.count()), "loss", toString(eventType)); folly::dynamic data = folly::dynamic::object(); data["largest_lost_packet_num"] = largestLostPacketNum; @@ -646,7 +646,7 @@ folly::dynamic QLogTransportStateUpdateEvent::toDynamic() const { // the event fields relative_time, category, event_type, trigger, data folly::dynamic d = folly::dynamic::array( folly::to(refTime.count()), - "TRANSPORT", + "transport", toString(eventType)); folly::dynamic data = folly::dynamic::object(); @@ -673,7 +673,7 @@ folly::dynamic QLogPacketBufferedEvent::toDynamic() const { // the event fields relative_time, category, event_type, trigger, data folly::dynamic d = folly::dynamic::array( folly::to(refTime.count()), - "TRANSPORT", + "transport", toString(eventType)); folly::dynamic data = folly::dynamic::object(); @@ -699,7 +699,7 @@ folly::dynamic QLogPacketAckEvent::toDynamic() const { // the event fields relative_time, category, event_type, trigger, data folly::dynamic d = folly::dynamic::array( folly::to(refTime.count()), - "TRANSPORT", + "transport", toString(eventType)); folly::dynamic data = folly::dynamic::object(); @@ -725,7 +725,7 @@ folly::dynamic QLogMetricUpdateEvent::toDynamic() const { // creating a folly::dynamic array to hold the information corresponding to // the event fields relative_time, category, event_type, trigger, data folly::dynamic d = folly::dynamic::array( - folly::to(refTime.count()), "RECOVERY", toString(eventType)); + folly::to(refTime.count()), "recovery", toString(eventType)); folly::dynamic data = folly::dynamic::object(); data["latest_rtt"] = latestRtt.count(); @@ -788,7 +788,7 @@ folly::dynamic QLogConnectionMigrationEvent::toDynamic() const { // the event fields relative_time, category, event_type, trigger, data folly::dynamic d = folly::dynamic::array( folly::to(refTime.count()), - "TRANSPORT", + "transport", toString(eventType)); folly::dynamic data = folly::dynamic::object(); @@ -816,7 +816,7 @@ folly::dynamic QLogPathValidationEvent::toDynamic() const { // the event fields relative_time, category, event_type, trigger, data folly::dynamic d = folly::dynamic::array( folly::to(refTime.count()), - "TRANSPORT", + "transport", toString(eventType)); folly::dynamic data = folly::dynamic::object(); @@ -830,52 +830,51 @@ folly::dynamic QLogPathValidationEvent::toDynamic() const { return d; } -std::string toString(QLogEventType type) { +folly::StringPiece toString(QLogEventType type) { switch (type) { case QLogEventType::PacketSent: - return "PACKET_SENT"; + return "packet_sent"; case QLogEventType::PacketReceived: - return "PACKET_RECEIVED"; + return "packet_received"; case QLogEventType::ConnectionClose: - return "CONNECTION_CLOSE"; + return "connection_close"; case QLogEventType::TransportSummary: - return "TRANSPORT_SUMMARY"; + return "transport_summary"; case QLogEventType::CongestionMetricUpdate: - return "CONGESTION_METRIC_UPDATE"; + return "congestion_metric_update"; case QLogEventType::PacingMetricUpdate: - return "PACING_METRIC_UPDATE"; + return "pacing_metric_update"; case QLogEventType::AppIdleUpdate: - return "APP_IDLE_UPDATE"; + return "app_idle_update"; case QLogEventType::PacketDrop: - return "PACKET_DROP"; + return "packet_drop"; case QLogEventType::DatagramReceived: - return "DATAGRAM_RECEIVED"; + return "datagram_received"; case QLogEventType::LossAlarm: - return "LOSS_ALARM"; + return "loss_alarm"; case QLogEventType::PacketsLost: - return "PACKETS_LOST"; + return "packets_lost"; case QLogEventType::TransportStateUpdate: - return "TRANSPORT_STATE_UPDATE"; + return "transport_state_update"; case QLogEventType::PacketBuffered: - return "PACKET_BUFFERED"; + return "packet_buffered"; case QLogEventType::PacketAck: - return "PACKET_ACK"; + return "packet_ack"; case QLogEventType::MetricUpdate: - return "METRIC_UPDATE"; + return "metric_update"; case QLogEventType::StreamStateUpdate: - return "STREAM_STATE_UPDATE"; + return "stream_state_update"; case QLogEventType::PacingObservation: - return "PACING_OBSERVATION"; + return "pacing_observation"; case QLogEventType::AppLimitedUpdate: - return "APP_LIMITED_UPDATE"; + return "app_limited_update"; case QLogEventType::BandwidthEstUpdate: - return "BANDWIDTH_EST_UPDATE"; + return "bandwidth_est_update"; case QLogEventType::ConnectionMigration: - return "CONNECTION_MIGRATION"; + return "connection_migration"; case QLogEventType::PathValidation: - return "PATH_VALIDATION"; + return "path_validation"; } - LOG(WARNING) << "toString has unhandled QLog event type"; - return "UNKNOWN"; + folly::assume_unreachable(); } } // namespace quic diff --git a/quic/logging/QLoggerTypes.h b/quic/logging/QLoggerTypes.h index e75e49afb..a34bc9570 100644 --- a/quic/logging/QLoggerTypes.h +++ b/quic/logging/QLoggerTypes.h @@ -321,7 +321,7 @@ enum class QLogEventType : uint32_t { PathValidation }; -std::string toString(QLogEventType type); +folly::StringPiece toString(QLogEventType type); class QLogEvent { public: @@ -654,6 +654,4 @@ class QLogPathValidationEvent : public QLogEvent { VantagePoint vantagePoint_; }; -std::string toString(QLogEventType type); - } // namespace quic diff --git a/quic/logging/test/QLoggerTest.cpp b/quic/logging/test/QLoggerTest.cpp index 079b3812c..3cede769f 100644 --- a/quic/logging/test/QLoggerTest.cpp +++ b/quic/logging/test/QLoggerTest.cpp @@ -293,20 +293,20 @@ TEST_F(QLoggerTest, QLoggerFollyDynamic) { "description": "Generated qlog from connection", "event_fields": [ "relative_time", - "CATEGORY", - "EVENT_TYPE", - "DATA" + "category", + "event", + "data" ], "events": [ [ "31", - "TRANSPORT", - "PACKET_RECEIVED", + "transport", + "packet_received", { "frames": [ { "fin": true, - "frame_type": "STREAM", + "frame_type": "stream", "stream_id": "10", "length": 0, "offset": 0 @@ -350,13 +350,13 @@ TEST_F(QLoggerTest, RegularPacketFollyDynamic) { R"([ [ "0", - "TRANSPORT", - "PACKET_RECEIVED", + "transport", + "packet_received", { "frames": [ { "fin": true, - "frame_type": "STREAM", + "frame_type": "stream", "stream_id": "10", "length": 0, "offset": 0 @@ -392,13 +392,13 @@ TEST_F(QLoggerTest, RegularWritePacketFollyDynamic) { R"([ [ "0", - "TRANSPORT", - "PACKET_SENT", + "transport", + "packet_sent", { "frames": [ { "fin": true, - "frame_type": "STREAM", + "frame_type": "stream", "stream_id": "10", "length": 0, "offset": 0 @@ -408,7 +408,7 @@ TEST_F(QLoggerTest, RegularWritePacketFollyDynamic) { "packet_number": 10, "packet_size": 10 }, - "packet_type": "INITIAL" + "packet_type": "initial" } ] ])"); @@ -431,8 +431,8 @@ TEST_F(QLoggerTest, RegularPacketAckFrameFollyDynamic) { R"([ [ "0", - "TRANSPORT", - "PACKET_SENT", + "transport", + "packet_sent", { "frames": [ { @@ -447,14 +447,14 @@ TEST_F(QLoggerTest, RegularPacketAckFrameFollyDynamic) { 700 ] ], - "frame_type": "ACK" + "frame_type": "ack" } ], "header": { "packet_number": 100, "packet_size": 1001 }, - "packet_type": "INITIAL" + "packet_type": "initial" } ] ])"); @@ -473,13 +473,13 @@ TEST_F(QLoggerTest, VersionPacketFollyDynamic) { R"([ [ "0", - "TRANSPORT", - "PACKET_SENT", + "transport", + "packet_sent", { "header": { "packet_size": 10 }, - "packet_type": "VersionNegotiation", + "packet_type": "version_negotiation", "versions": [ "VERSION_NEGOTIATION", "MVFST" @@ -526,20 +526,20 @@ TEST_F(QLoggerTest, AddingMultiplePacketEvents) { "description": "Generated qlog from connection", "event_fields": [ "relative_time", - "CATEGORY", - "EVENT_TYPE", - "DATA" + "category", + "event", + "data" ], "events": [ [ "0", - "TRANSPORT", - "PACKET_SENT", + "transport", + "packet_sent", { "header": { "packet_size": 10 }, - "packet_type": "VersionNegotiation", + "packet_type": "version_negotiation", "versions": [ "VERSION_NEGOTIATION", "MVFST" @@ -548,8 +548,8 @@ TEST_F(QLoggerTest, AddingMultiplePacketEvents) { ], [ "1", - "TRANSPORT", - "PACKET_SENT", + "transport", + "packet_sent", { "frames": [ { @@ -564,25 +564,25 @@ TEST_F(QLoggerTest, AddingMultiplePacketEvents) { 700 ] ], - "frame_type": "ACK" + "frame_type": "ack" } ], "header": { "packet_number": 100, "packet_size": 100 }, - "packet_type": "INITIAL" + "packet_type": "initial" } ], [ "2", - "TRANSPORT", - "PACKET_SENT", + "transport", + "packet_sent", { "frames": [ { "fin": true, - "frame_type": "STREAM", + "frame_type": "stream", "stream_id": "10", "length": 5, "offset": 0 @@ -642,8 +642,8 @@ TEST_F(QLoggerTest, AddingMultipleFrames) { R"([ [ "0", - "TRANSPORT", - "PACKET_SENT", + "transport", + "packet_sent", { "frames": [ { @@ -658,11 +658,11 @@ TEST_F(QLoggerTest, AddingMultipleFrames) { 200 ] ], - "frame_type": "ACK" + "frame_type": "ack" }, { "fin": true, - "frame_type": "STREAM", + "frame_type": "stream", "stream_id": "10", "length": 0, "offset": 0 @@ -672,7 +672,7 @@ TEST_F(QLoggerTest, AddingMultipleFrames) { "packet_number": 100, "packet_size": 10 }, - "packet_type": "INITIAL" + "packet_type": "initial" } ] ])"); @@ -701,8 +701,8 @@ TEST_F(QLoggerTest, ConnectionCloseFollyDynamic) { folly::dynamic expected = folly::parseJson( R"([[ "0", - "CONNECTIVITY", - "CONNECTION_CLOSE", + "connectivity", + "connection_close", { "drain_connection": true, "error": "Connection reset", @@ -725,8 +725,8 @@ TEST_F(QLoggerTest, TransportSummaryFollyDynamic) { R"([ [ "0", - "TRANSPORT", - "TRANSPORT_SUMMARY", + "transport", + "transport_summary", { "total_bytes_sent": 1, "total_bytes_recvd": 2, @@ -755,8 +755,8 @@ TEST_F(QLoggerTest, CongestionMetricUpdateFollyDynamic) { R"([ [ "0", - "METRIC_UPDATE", - "CONGESTION_METRIC_UPDATE", + "metric_update", + "congestion_metric_update", { "bytes_in_flight": 20, "congestion_event": "persistent congestion", @@ -784,8 +784,8 @@ TEST_F(QLoggerTest, PacingMetricUpdateFollyDynamic) { R"([ [ "0", - "METRIC_UPDATE", - "PACING_METRIC_UPDATE", + "metric_update", + "pacing_metric_update", { "pacing_burst_size": 20, "pacing_interval": 30 @@ -806,8 +806,8 @@ TEST_F(QLoggerTest, AppIdleFollyDynamic) { R"([ [ "0", - "IDLE_UPDATE", - "APP_IDLE_UPDATE", + "idle_update", + "app_idle_update", { "idle_event": "app idle", "idle": true @@ -828,8 +828,8 @@ TEST_F(QLoggerTest, PacketDropFollyDynamic) { R"([ [ "0", - "LOSS", - "PACKET_DROP", + "loss", + "packet_drop", { "drop_reason": "max buffered", "packet_size": 100 @@ -850,8 +850,8 @@ TEST_F(QLoggerTest, DatagramReceivedFollyDynamic) { R"([ [ "0", - "TRANSPORT", - "DATAGRAM_RECEIVED", + "transport", + "datagram_received", { "data_len": 8 } @@ -871,8 +871,8 @@ TEST_F(QLoggerTest, LossAlarmFollyDynamic) { R"([ [ "0", - "LOSS", - "LOSS_ALARM", + "loss", + "loss_alarm", { "largest_sent": 100, "alarm_count": 14, @@ -895,8 +895,8 @@ TEST_F(QLoggerTest, PacketsLostFollyDynamic) { R"([ [ "0", - "LOSS", - "PACKETS_LOST", + "loss", + "packets_lost", { "largest_lost_packet_num": 10, "lost_bytes": 9, @@ -918,8 +918,8 @@ TEST_F(QLoggerTest, TransportStateUpdateFollyDynamic) { R"([ [ "0", - "TRANSPORT", - "TRANSPORT_STATE_UPDATE", + "transport", + "transport_state_update", { "update": "transport ready" } @@ -939,8 +939,8 @@ TEST_F(QLoggerTest, PacketBufferedFollyDynamic) { R"([ [ "0", - "TRANSPORT", - "PACKET_BUFFERED", + "transport", + "packet_buffered", { "packet_num": 10, "protection_type": "Handshake", @@ -962,8 +962,8 @@ TEST_F(QLoggerTest, MetricUpdateFollyDynamic) { R"([ [ "0", - "RECOVERY", - "METRIC_UPDATE", + "recovery", + "metric_update", { "ack_delay": 13, "latest_rtt": 10, @@ -987,7 +987,7 @@ TEST_F(QLoggerTest, StreamStateUpdateFollyDynamicTTFB) { [ "0", "HTTP3", - "STREAM_STATE_UPDATE", + "stream_state_update", { "id": 10, "ttfb": 20, @@ -1010,7 +1010,7 @@ TEST_F(QLoggerTest, StreamStateUpdateFollyDynamicTTLB) { [ "0", "HTTP3", - "STREAM_STATE_UPDATE", + "stream_state_update", { "id": 10, "ttlb": 20, @@ -1035,7 +1035,7 @@ TEST_F( [ "0", "HTTP3", - "STREAM_STATE_UPDATE", + "stream_state_update", { "id": 10, "update": "on eom" @@ -1057,7 +1057,7 @@ TEST_F(QLoggerTest, StreamStateUpdateFollyDynamic) { [ "0", "HTTP3", - "STREAM_STATE_UPDATE", + "stream_state_update", { "id": 10, "ms_since_creation": 20, @@ -1079,12 +1079,12 @@ TEST_F(QLoggerTest, PaddingFramesFollyDynamic) { R"([ [ "0", - "TRANSPORT", - "PACKET_SENT", + "transport", + "packet_sent", { "frames": [ { - "frame_type": "PADDING", + "frame_type": "padding", "num_frames": 20 } ], @@ -1092,7 +1092,7 @@ TEST_F(QLoggerTest, PaddingFramesFollyDynamic) { "packet_number": 100, "packet_size": 100 }, - "packet_type": "INITIAL" + "packet_type": "initial" } ] ])"); @@ -1111,8 +1111,8 @@ TEST_F(QLoggerTest, ConnectionMigration) { R"([ [ "0", - "TRANSPORT", - "CONNECTION_MIGRATION", + "transport", + "connection_migration", { "intentional": true, "type": "initiating" @@ -1133,8 +1133,8 @@ TEST_F(QLoggerTest, PathValidation) { R"([ [ "0", - "TRANSPORT", - "PATH_VALIDATION", + "transport", + "path_validation", { "success": false, "vantagePoint": "server" @@ -1171,20 +1171,20 @@ TEST_F(QLoggerTest, PrettyStream) { "description": "Generated qlog from connection", "event_fields": [ "relative_time", - "CATEGORY", - "EVENT_TYPE", - "DATA" + "category", + "event", + "data" ], "events": [ [ "31", - "TRANSPORT", - "PACKET_RECEIVED", + "transport", + "packet_received", { "frames": [ { "fin": true, - "frame_type": "STREAM", + "frame_type": "stream", "stream_id": "10", "length": 0, "offset": 0 @@ -1285,20 +1285,20 @@ TEST_F(QLoggerTest, NonPrettyStream) { "description": "Generated qlog from connection", "event_fields": [ "relative_time", - "CATEGORY", - "EVENT_TYPE", - "DATA" + "category", + "event", + "data" ], "events": [ [ "31", - "TRANSPORT", - "PACKET_RECEIVED", + "transport", + "packet_received", { "frames": [ { "fin": true, - "frame_type": "STREAM", + "frame_type": "stream", "stream_id": "10", "length": 0, "offset": 0