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),
|
||||
PreferredAddress: pa,
|
||||
MaxDatagramFrameSize: tp.MaxDatagramFrameSize,
|
||||
EnableResetStreamAt: tp.EnableResetStreamAt,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -213,6 +213,7 @@ func TestSentTransportParameters(t *testing.T) {
|
||||
RetrySourceConnectionID: &rcid,
|
||||
ActiveConnectionIDLimit: 7,
|
||||
MaxDatagramFrameSize: protocol.InvalidByteCount,
|
||||
EnableResetStreamAt: true,
|
||||
})
|
||||
tracer.Close()
|
||||
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(10), ev["initial_max_streams_bidi"])
|
||||
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, "max_datagram_frame_size")
|
||||
}
|
||||
|
||||
@@ -435,6 +435,7 @@ type eventTransportParameters struct {
|
||||
PreferredAddress *preferredAddress
|
||||
|
||||
MaxDatagramFrameSize protocol.ByteCount
|
||||
EnableResetStreamAt bool
|
||||
}
|
||||
|
||||
func (e eventTransportParameters) Category() category { return categoryTransport }
|
||||
@@ -480,6 +481,9 @@ func (e eventTransportParameters) MarshalJSONObject(enc *gojay.Encoder) {
|
||||
if e.MaxDatagramFrameSize != protocol.InvalidByteCount {
|
||||
enc.Int64Key("max_datagram_frame_size", int64(e.MaxDatagramFrameSize))
|
||||
}
|
||||
if e.EnableResetStreamAt {
|
||||
enc.BoolKey("reset_stream_at", true)
|
||||
}
|
||||
}
|
||||
|
||||
type preferredAddress struct {
|
||||
|
||||
@@ -112,10 +112,17 @@ func marshalAckFrame(enc *gojay.Encoder, f *logging.AckFrame) {
|
||||
}
|
||||
|
||||
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("error_code", int64(f.ErrorCode))
|
||||
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) {
|
||||
|
||||
@@ -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) {
|
||||
check(t,
|
||||
&logging.StopSendingFrame{
|
||||
|
||||
Reference in New Issue
Block a user