forked from quic-go/quic-go
fix packet_type logging for packet_lost, packet_dropped and packet_buffered
This commit is contained in:
@@ -195,7 +195,7 @@ func (e eventVersionNegotiationReceived) MarshalJSONObject(enc *gojay.Encoder) {
|
||||
}
|
||||
|
||||
type eventPacketBuffered struct {
|
||||
PacketType packetType
|
||||
PacketType logging.PacketType
|
||||
}
|
||||
|
||||
func (e eventPacketBuffered) Category() category { return categoryTransport }
|
||||
@@ -203,12 +203,13 @@ func (e eventPacketBuffered) Name() string { return "packet_buffered" }
|
||||
func (e eventPacketBuffered) IsNil() bool { return false }
|
||||
|
||||
func (e eventPacketBuffered) MarshalJSONObject(enc *gojay.Encoder) {
|
||||
enc.StringKey("packet_type", e.PacketType.String())
|
||||
//nolint:gosimple
|
||||
enc.ObjectKey("header", packetHeaderWithType{PacketType: e.PacketType})
|
||||
enc.StringKey("trigger", "keys_unavailable")
|
||||
}
|
||||
|
||||
type eventPacketDropped struct {
|
||||
PacketType packetType
|
||||
PacketType logging.PacketType
|
||||
PacketSize protocol.ByteCount
|
||||
Trigger packetDropReason
|
||||
}
|
||||
@@ -218,7 +219,7 @@ func (e eventPacketDropped) Name() string { return "packet_dropped" }
|
||||
func (e eventPacketDropped) IsNil() bool { return false }
|
||||
|
||||
func (e eventPacketDropped) MarshalJSONObject(enc *gojay.Encoder) {
|
||||
enc.StringKeyOmitEmpty("packet_type", e.PacketType.String())
|
||||
enc.ObjectKey("header", packetHeaderWithType{PacketType: e.PacketType})
|
||||
enc.ObjectKey("raw", rawInfo{Length: e.PacketSize})
|
||||
enc.StringKey("trigger", e.Trigger.String())
|
||||
}
|
||||
@@ -281,7 +282,7 @@ func (e eventUpdatedPTO) MarshalJSONObject(enc *gojay.Encoder) {
|
||||
}
|
||||
|
||||
type eventPacketLost struct {
|
||||
PacketType packetType
|
||||
PacketType logging.PacketType
|
||||
PacketNumber protocol.PacketNumber
|
||||
Trigger packetLossReason
|
||||
}
|
||||
@@ -291,8 +292,10 @@ func (e eventPacketLost) Name() string { return "packet_lost" }
|
||||
func (e eventPacketLost) IsNil() bool { return false }
|
||||
|
||||
func (e eventPacketLost) MarshalJSONObject(enc *gojay.Encoder) {
|
||||
enc.StringKey("packet_type", e.PacketType.String())
|
||||
enc.Int64Key("packet_number", int64(e.PacketNumber))
|
||||
enc.ObjectKey("header", packetHeaderWithTypeAndPacketNumber{
|
||||
PacketType: e.PacketType,
|
||||
PacketNumber: e.PacketNumber,
|
||||
})
|
||||
enc.StringKey("trigger", e.Trigger.String())
|
||||
}
|
||||
|
||||
|
||||
@@ -10,21 +10,19 @@ import (
|
||||
"github.com/francoispqt/gojay"
|
||||
)
|
||||
|
||||
func getPacketTypeFromEncryptionLevel(encLevel protocol.EncryptionLevel) packetType {
|
||||
var t logging.PacketType
|
||||
func getPacketTypeFromEncryptionLevel(encLevel protocol.EncryptionLevel) logging.PacketType {
|
||||
switch encLevel {
|
||||
case protocol.EncryptionInitial:
|
||||
t = logging.PacketTypeInitial
|
||||
return logging.PacketTypeInitial
|
||||
case protocol.EncryptionHandshake:
|
||||
t = logging.PacketTypeHandshake
|
||||
return logging.PacketTypeHandshake
|
||||
case protocol.Encryption0RTT:
|
||||
t = logging.PacketType0RTT
|
||||
return logging.PacketType0RTT
|
||||
case protocol.Encryption1RTT:
|
||||
t = logging.PacketType1RTT
|
||||
return logging.PacketType1RTT
|
||||
default:
|
||||
panic("unknown encryption level")
|
||||
}
|
||||
return packetType(t)
|
||||
}
|
||||
|
||||
type token struct {
|
||||
@@ -100,3 +98,25 @@ func (h packetHeader) MarshalJSONObject(enc *gojay.Encoder) {
|
||||
enc.ObjectKey("token", h.Token)
|
||||
}
|
||||
}
|
||||
|
||||
// a minimal header that only outputs the packet type
|
||||
type packetHeaderWithType struct {
|
||||
PacketType logging.PacketType
|
||||
}
|
||||
|
||||
func (h packetHeaderWithType) IsNil() bool { return false }
|
||||
func (h packetHeaderWithType) MarshalJSONObject(enc *gojay.Encoder) {
|
||||
enc.StringKey("packet_type", packetType(h.PacketType).String())
|
||||
}
|
||||
|
||||
// a minimal header that only outputs the packet type
|
||||
type packetHeaderWithTypeAndPacketNumber struct {
|
||||
PacketType logging.PacketType
|
||||
PacketNumber logging.PacketNumber
|
||||
}
|
||||
|
||||
func (h packetHeaderWithTypeAndPacketNumber) IsNil() bool { return false }
|
||||
func (h packetHeaderWithTypeAndPacketNumber) MarshalJSONObject(enc *gojay.Encoder) {
|
||||
enc.StringKey("packet_type", packetType(h.PacketType).String())
|
||||
enc.Int64Key("packet_number", int64(h.PacketNumber))
|
||||
}
|
||||
|
||||
@@ -269,14 +269,14 @@ func (t *connectionTracer) ReceivedVersionNegotiationPacket(hdr *wire.Header, ve
|
||||
|
||||
func (t *connectionTracer) BufferedPacket(pt logging.PacketType) {
|
||||
t.mutex.Lock()
|
||||
t.recordEvent(time.Now(), &eventPacketBuffered{PacketType: packetType(pt)})
|
||||
t.recordEvent(time.Now(), &eventPacketBuffered{PacketType: pt})
|
||||
t.mutex.Unlock()
|
||||
}
|
||||
|
||||
func (t *connectionTracer) DroppedPacket(pt logging.PacketType, size protocol.ByteCount, reason logging.PacketDropReason) {
|
||||
t.mutex.Lock()
|
||||
t.recordEvent(time.Now(), &eventPacketDropped{
|
||||
PacketType: packetType(pt),
|
||||
PacketType: pt,
|
||||
PacketSize: size,
|
||||
Trigger: packetDropReason(reason),
|
||||
})
|
||||
|
||||
@@ -484,7 +484,10 @@ var _ = Describe("Tracing", func() {
|
||||
Expect(entry.Time).To(BeTemporally("~", time.Now(), scaleDuration(10*time.Millisecond)))
|
||||
Expect(entry.Name).To(Equal("transport:packet_buffered"))
|
||||
ev := entry.Event
|
||||
Expect(ev).To(HaveKeyWithValue("packet_type", "handshake"))
|
||||
Expect(ev).To(HaveKey("header"))
|
||||
hdr := ev["header"].(map[string]interface{})
|
||||
Expect(hdr).To(HaveLen(1))
|
||||
Expect(hdr).To(HaveKeyWithValue("packet_type", "handshake"))
|
||||
Expect(ev).To(HaveKeyWithValue("trigger", "keys_unavailable"))
|
||||
})
|
||||
|
||||
@@ -494,9 +497,12 @@ var _ = Describe("Tracing", func() {
|
||||
Expect(entry.Time).To(BeTemporally("~", time.Now(), scaleDuration(10*time.Millisecond)))
|
||||
Expect(entry.Name).To(Equal("transport:packet_dropped"))
|
||||
ev := entry.Event
|
||||
Expect(ev).To(HaveKeyWithValue("packet_type", "handshake"))
|
||||
Expect(ev).To(HaveKey("raw"))
|
||||
Expect(ev["raw"].(map[string]interface{})).To(HaveKeyWithValue("length", float64(1337)))
|
||||
Expect(ev).To(HaveKey("header"))
|
||||
hdr := ev["header"].(map[string]interface{})
|
||||
Expect(hdr).To(HaveLen(1))
|
||||
Expect(hdr).To(HaveKeyWithValue("packet_type", "handshake"))
|
||||
Expect(ev).To(HaveKeyWithValue("trigger", "payload_decrypt_error"))
|
||||
})
|
||||
|
||||
@@ -581,8 +587,11 @@ var _ = Describe("Tracing", func() {
|
||||
Expect(entry.Time).To(BeTemporally("~", time.Now(), scaleDuration(10*time.Millisecond)))
|
||||
Expect(entry.Name).To(Equal("recovery:packet_lost"))
|
||||
ev := entry.Event
|
||||
Expect(ev).To(HaveKeyWithValue("packet_type", "handshake"))
|
||||
Expect(ev).To(HaveKeyWithValue("packet_number", float64(42)))
|
||||
Expect(ev).To(HaveKey("header"))
|
||||
hdr := ev["header"].(map[string]interface{})
|
||||
Expect(hdr).To(HaveLen(2))
|
||||
Expect(hdr).To(HaveKeyWithValue("packet_type", "handshake"))
|
||||
Expect(hdr).To(HaveKeyWithValue("packet_number", float64(42)))
|
||||
Expect(ev).To(HaveKeyWithValue("trigger", "reordering_threshold"))
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user