forked from quic-go/quic-go
qlog: add support for reset_stream_at frame and transport parameter (#5160)
This commit is contained in:
@@ -227,6 +227,7 @@ func (t *connectionTracer) toTransportParameters(tp *wire.TransportParameters) *
|
|||||||
InitialMaxStreamsUni: int64(tp.MaxUniStreamNum),
|
InitialMaxStreamsUni: int64(tp.MaxUniStreamNum),
|
||||||
PreferredAddress: pa,
|
PreferredAddress: pa,
|
||||||
MaxDatagramFrameSize: tp.MaxDatagramFrameSize,
|
MaxDatagramFrameSize: tp.MaxDatagramFrameSize,
|
||||||
|
EnableResetStreamAt: tp.EnableResetStreamAt,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -213,6 +213,7 @@ func TestSentTransportParameters(t *testing.T) {
|
|||||||
RetrySourceConnectionID: &rcid,
|
RetrySourceConnectionID: &rcid,
|
||||||
ActiveConnectionIDLimit: 7,
|
ActiveConnectionIDLimit: 7,
|
||||||
MaxDatagramFrameSize: protocol.InvalidByteCount,
|
MaxDatagramFrameSize: protocol.InvalidByteCount,
|
||||||
|
EnableResetStreamAt: true,
|
||||||
})
|
})
|
||||||
tracer.Close()
|
tracer.Close()
|
||||||
entry := exportAndParseSingle(t, buf)
|
entry := exportAndParseSingle(t, buf)
|
||||||
@@ -234,6 +235,7 @@ func TestSentTransportParameters(t *testing.T) {
|
|||||||
require.Equal(t, float64(3000), ev["initial_max_stream_data_uni"])
|
require.Equal(t, float64(3000), ev["initial_max_stream_data_uni"])
|
||||||
require.Equal(t, float64(10), ev["initial_max_streams_bidi"])
|
require.Equal(t, float64(10), ev["initial_max_streams_bidi"])
|
||||||
require.Equal(t, float64(20), ev["initial_max_streams_uni"])
|
require.Equal(t, float64(20), ev["initial_max_streams_uni"])
|
||||||
|
require.True(t, ev["reset_stream_at"].(bool))
|
||||||
require.NotContains(t, ev, "preferred_address")
|
require.NotContains(t, ev, "preferred_address")
|
||||||
require.NotContains(t, ev, "max_datagram_frame_size")
|
require.NotContains(t, ev, "max_datagram_frame_size")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -435,6 +435,7 @@ type eventTransportParameters struct {
|
|||||||
PreferredAddress *preferredAddress
|
PreferredAddress *preferredAddress
|
||||||
|
|
||||||
MaxDatagramFrameSize protocol.ByteCount
|
MaxDatagramFrameSize protocol.ByteCount
|
||||||
|
EnableResetStreamAt bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e eventTransportParameters) Category() category { return categoryTransport }
|
func (e eventTransportParameters) Category() category { return categoryTransport }
|
||||||
@@ -480,6 +481,9 @@ func (e eventTransportParameters) MarshalJSONObject(enc *gojay.Encoder) {
|
|||||||
if e.MaxDatagramFrameSize != protocol.InvalidByteCount {
|
if e.MaxDatagramFrameSize != protocol.InvalidByteCount {
|
||||||
enc.Int64Key("max_datagram_frame_size", int64(e.MaxDatagramFrameSize))
|
enc.Int64Key("max_datagram_frame_size", int64(e.MaxDatagramFrameSize))
|
||||||
}
|
}
|
||||||
|
if e.EnableResetStreamAt {
|
||||||
|
enc.BoolKey("reset_stream_at", true)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type preferredAddress struct {
|
type preferredAddress struct {
|
||||||
|
|||||||
@@ -112,10 +112,17 @@ func marshalAckFrame(enc *gojay.Encoder, f *logging.AckFrame) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func marshalResetStreamFrame(enc *gojay.Encoder, f *logging.ResetStreamFrame) {
|
func marshalResetStreamFrame(enc *gojay.Encoder, f *logging.ResetStreamFrame) {
|
||||||
enc.StringKey("frame_type", "reset_stream")
|
if f.ReliableSize > 0 {
|
||||||
|
enc.StringKey("frame_type", "reset_stream_at")
|
||||||
|
} else {
|
||||||
|
enc.StringKey("frame_type", "reset_stream")
|
||||||
|
}
|
||||||
enc.Int64Key("stream_id", int64(f.StreamID))
|
enc.Int64Key("stream_id", int64(f.StreamID))
|
||||||
enc.Int64Key("error_code", int64(f.ErrorCode))
|
enc.Int64Key("error_code", int64(f.ErrorCode))
|
||||||
enc.Int64Key("final_size", int64(f.FinalSize))
|
enc.Int64Key("final_size", int64(f.FinalSize))
|
||||||
|
if f.ReliableSize > 0 {
|
||||||
|
enc.Int64Key("reliable_size", int64(f.ReliableSize))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func marshalStopSendingFrame(enc *gojay.Encoder, f *logging.StopSendingFrame) {
|
func marshalStopSendingFrame(enc *gojay.Encoder, f *logging.StopSendingFrame) {
|
||||||
|
|||||||
@@ -119,6 +119,24 @@ func TestResetStreamFrame(t *testing.T) {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestResetStreamAtFrame(t *testing.T) {
|
||||||
|
check(t,
|
||||||
|
&logging.ResetStreamFrame{
|
||||||
|
StreamID: 987,
|
||||||
|
FinalSize: 1234,
|
||||||
|
ErrorCode: 42,
|
||||||
|
ReliableSize: 999,
|
||||||
|
},
|
||||||
|
map[string]interface{}{
|
||||||
|
"frame_type": "reset_stream_at",
|
||||||
|
"stream_id": 987,
|
||||||
|
"error_code": 42,
|
||||||
|
"final_size": 1234,
|
||||||
|
"reliable_size": 999,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
func TestStopSendingFrame(t *testing.T) {
|
func TestStopSendingFrame(t *testing.T) {
|
||||||
check(t,
|
check(t,
|
||||||
&logging.StopSendingFrame{
|
&logging.StopSendingFrame{
|
||||||
|
|||||||
Reference in New Issue
Block a user