forked from quic-go/quic-go
add a qlog method to log version negotiation packets
This commit is contained in:
@@ -173,6 +173,18 @@ func (mr *MockTracerMockRecorder) ReceivedTransportParameters(arg0 interface{})
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReceivedTransportParameters", reflect.TypeOf((*MockTracer)(nil).ReceivedTransportParameters), arg0)
|
||||
}
|
||||
|
||||
// ReceivedVersionNegotiationPacket mocks base method
|
||||
func (m *MockTracer) ReceivedVersionNegotiationPacket(arg0 *wire.Header) {
|
||||
m.ctrl.T.Helper()
|
||||
m.ctrl.Call(m, "ReceivedVersionNegotiationPacket", arg0)
|
||||
}
|
||||
|
||||
// ReceivedVersionNegotiationPacket indicates an expected call of ReceivedVersionNegotiationPacket
|
||||
func (mr *MockTracerMockRecorder) ReceivedVersionNegotiationPacket(arg0 interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReceivedVersionNegotiationPacket", reflect.TypeOf((*MockTracer)(nil).ReceivedVersionNegotiationPacket), arg0)
|
||||
}
|
||||
|
||||
// SentPacket mocks base method
|
||||
func (m *MockTracer) SentPacket(arg0 *wire.ExtendedHeader, arg1 protocol.ByteCount, arg2 *wire.AckFrame, arg3 []wire.Frame) {
|
||||
m.ctrl.T.Helper()
|
||||
|
||||
@@ -140,6 +140,19 @@ func (e eventRetryReceived) MarshalJSONObject(enc *gojay.Encoder) {
|
||||
enc.ObjectKey("header", e.Header)
|
||||
}
|
||||
|
||||
type eventVersionNegotiationReceived struct {
|
||||
Header packetHeader
|
||||
}
|
||||
|
||||
func (e eventVersionNegotiationReceived) Category() category { return categoryTransport }
|
||||
func (e eventVersionNegotiationReceived) Name() string { return "packet_received" }
|
||||
func (e eventVersionNegotiationReceived) IsNil() bool { return false }
|
||||
|
||||
func (e eventVersionNegotiationReceived) MarshalJSONObject(enc *gojay.Encoder) {
|
||||
enc.StringKey("packet_type", PacketTypeVersionNegotiation.String())
|
||||
enc.ObjectKey("header", e.Header)
|
||||
}
|
||||
|
||||
type eventStatelessResetReceived struct {
|
||||
Token *[16]byte
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ type Tracer interface {
|
||||
SentTransportParameters(*wire.TransportParameters)
|
||||
ReceivedTransportParameters(*wire.TransportParameters)
|
||||
SentPacket(hdr *wire.ExtendedHeader, packetSize protocol.ByteCount, ack *wire.AckFrame, frames []wire.Frame)
|
||||
ReceivedVersionNegotiationPacket(*wire.Header)
|
||||
ReceivedRetry(*wire.Header)
|
||||
ReceivedPacket(hdr *wire.ExtendedHeader, packetSize protocol.ByteCount, frames []wire.Frame)
|
||||
ReceivedStatelessReset(token *[16]byte)
|
||||
@@ -230,6 +231,14 @@ func (t *tracer) ReceivedRetry(hdr *wire.Header) {
|
||||
t.mutex.Unlock()
|
||||
}
|
||||
|
||||
func (t *tracer) ReceivedVersionNegotiationPacket(hdr *wire.Header) {
|
||||
t.mutex.Lock()
|
||||
t.recordEvent(time.Now(), &eventVersionNegotiationReceived{
|
||||
Header: *transformHeader(hdr),
|
||||
})
|
||||
t.mutex.Unlock()
|
||||
}
|
||||
|
||||
func (t *tracer) ReceivedStatelessReset(token *[16]byte) {
|
||||
t.mutex.Lock()
|
||||
t.recordEvent(time.Now(), &eventStatelessResetReceived{
|
||||
|
||||
@@ -321,6 +321,31 @@ var _ = Describe("Tracer", func() {
|
||||
Expect(ev).ToNot(HaveKey("frames"))
|
||||
})
|
||||
|
||||
It("records a received Version Negotiation packet", func() {
|
||||
tracer.ReceivedVersionNegotiationPacket(
|
||||
&wire.Header{
|
||||
IsLongHeader: true,
|
||||
Type: protocol.PacketTypeRetry,
|
||||
DestConnectionID: protocol.ConnectionID{1, 2, 3, 4, 5, 6, 7, 8},
|
||||
SrcConnectionID: protocol.ConnectionID{4, 3, 2, 1},
|
||||
SupportedVersions: []protocol.VersionNumber{13, 37},
|
||||
},
|
||||
)
|
||||
entry := exportAndParseSingle()
|
||||
Expect(entry.Time).To(BeTemporally("~", time.Now(), 10*time.Millisecond))
|
||||
Expect(entry.Category).To(Equal("transport"))
|
||||
Expect(entry.Name).To(Equal("packet_received"))
|
||||
ev := entry.Event
|
||||
Expect(ev).To(HaveKeyWithValue("packet_type", "version_negotiation"))
|
||||
Expect(ev).To(HaveKey("header"))
|
||||
header := ev["header"]
|
||||
Expect(header).ToNot(HaveKey("packet_number"))
|
||||
Expect(header).ToNot(HaveKey("version"))
|
||||
Expect(header).To(HaveKey("dcid"))
|
||||
Expect(header).To(HaveKey("scid"))
|
||||
Expect(ev).ToNot(HaveKey("frames"))
|
||||
})
|
||||
|
||||
It("records a received Retry packet", func() {
|
||||
tracer.ReceivedStatelessReset(&[16]byte{0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff})
|
||||
entry := exportAndParseSingle()
|
||||
|
||||
Reference in New Issue
Block a user