forked from quic-go/quic-go
qlog: split serializiation and event definitions, remove logging abstraction (#5356)
* qlog: implement a Trace and a Writer struct * qlog: rename Trace to FileSeq * split qlog trace writer and QUIC qlog events into separate packages * use the new qlog.Recorder instead of the logging.ConnectionTracer
This commit is contained in:
@@ -9,8 +9,11 @@ import (
|
||||
"github.com/quic-go/quic-go"
|
||||
"github.com/quic-go/quic-go/internal/handshake"
|
||||
"github.com/quic-go/quic-go/internal/protocol"
|
||||
"github.com/quic-go/quic-go/logging"
|
||||
"github.com/quic-go/quic-go/qlog"
|
||||
"github.com/quic-go/quic-go/qlogwriter"
|
||||
"github.com/quic-go/quic-go/testutils/events"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
@@ -18,22 +21,21 @@ func TestKeyUpdates(t *testing.T) {
|
||||
reset := handshake.SetKeyUpdateInterval(1) // update keys as frequently as possible
|
||||
t.Cleanup(reset)
|
||||
|
||||
var sentHeaders []*logging.ShortHeader
|
||||
var receivedHeaders []*logging.ShortHeader
|
||||
|
||||
countKeyPhases := func() (sent, received int) {
|
||||
lastKeyPhase := protocol.KeyPhaseOne
|
||||
for _, hdr := range sentHeaders {
|
||||
if hdr.KeyPhase != lastKeyPhase {
|
||||
sent++
|
||||
lastKeyPhase = hdr.KeyPhase
|
||||
}
|
||||
}
|
||||
lastKeyPhase = protocol.KeyPhaseOne
|
||||
for _, hdr := range receivedHeaders {
|
||||
if hdr.KeyPhase != lastKeyPhase {
|
||||
received++
|
||||
lastKeyPhase = hdr.KeyPhase
|
||||
countKeyPhases := func(events []qlogwriter.Event) (sent, received int) {
|
||||
lastKeyPhaseSend := protocol.KeyPhaseOne
|
||||
lastKeyPhaseReceive := protocol.KeyPhaseOne
|
||||
for _, ev := range events {
|
||||
switch ev := ev.(type) {
|
||||
case qlog.PacketSent:
|
||||
if ev.Header.KeyPhaseBit != lastKeyPhaseSend {
|
||||
sent++
|
||||
lastKeyPhaseSend = ev.Header.KeyPhaseBit
|
||||
}
|
||||
case qlog.PacketReceived:
|
||||
if ev.Header.KeyPhaseBit != lastKeyPhaseReceive {
|
||||
received++
|
||||
lastKeyPhaseReceive = ev.Header.KeyPhaseBit
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
@@ -45,21 +47,13 @@ func TestKeyUpdates(t *testing.T) {
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
|
||||
defer cancel()
|
||||
var eventRecorder events.Recorder
|
||||
conn, err := quic.Dial(
|
||||
ctx,
|
||||
newUDPConnLocalhost(t),
|
||||
server.Addr(),
|
||||
getTLSClientConfig(),
|
||||
getQuicConfig(&quic.Config{Tracer: func(context.Context, logging.Perspective, quic.ConnectionID) *logging.ConnectionTracer {
|
||||
return &logging.ConnectionTracer{
|
||||
SentShortHeaderPacket: func(hdr *logging.ShortHeader, _ logging.ByteCount, _ logging.ECN, _ *logging.AckFrame, _ []logging.Frame) {
|
||||
sentHeaders = append(sentHeaders, hdr)
|
||||
},
|
||||
ReceivedShortHeaderPacket: func(hdr *logging.ShortHeader, _ logging.ByteCount, _ logging.ECN, _ []logging.Frame) {
|
||||
receivedHeaders = append(receivedHeaders, hdr)
|
||||
},
|
||||
}
|
||||
}}),
|
||||
getQuicConfig(&quic.Config{Tracer: newTracer(&eventRecorder)}),
|
||||
)
|
||||
require.NoError(t, err)
|
||||
defer conn.CloseWithError(0, "")
|
||||
@@ -92,8 +86,8 @@ func TestKeyUpdates(t *testing.T) {
|
||||
|
||||
require.NoError(t, <-serverErrChan)
|
||||
|
||||
keyPhasesSent, keyPhasesReceived := countKeyPhases()
|
||||
keyPhasesSent, keyPhasesReceived := countKeyPhases(eventRecorder.Events())
|
||||
t.Logf("Used %d key phases on outgoing and %d key phases on incoming packets.", keyPhasesSent, keyPhasesReceived)
|
||||
require.Greater(t, keyPhasesReceived, 10)
|
||||
require.InDelta(t, keyPhasesSent, keyPhasesReceived, 2)
|
||||
assert.Greater(t, keyPhasesReceived, 10)
|
||||
assert.InDelta(t, keyPhasesSent, keyPhasesReceived, 2)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user