export a qlog when the session's run loop stops

This commit is contained in:
Marten Seemann
2020-01-27 11:29:53 +07:00
parent 391a419142
commit b031615db5
11 changed files with 99 additions and 34 deletions

View File

@@ -2,6 +2,7 @@ package quic
import (
"fmt"
"io"
"net"
"reflect"
"time"
@@ -14,11 +15,16 @@ import (
var _ = Describe("Config", func() {
It("clones function fields", func() {
var called bool
c1 := &Config{AcceptToken: func(_ net.Addr, _ *Token) bool { called = true; return true }}
var calledAcceptToken, calledGetLogWriter bool
c1 := &Config{
AcceptToken: func(_ net.Addr, _ *Token) bool { calledAcceptToken = true; return true },
GetLogWriter: func(connectionID []byte) io.WriteCloser { calledGetLogWriter = true; return nil },
}
c2 := c1.Clone()
c2.AcceptToken(&net.UDPAddr{}, &Token{})
Expect(called).To(BeTrue())
c2.GetLogWriter([]byte{1, 2, 3})
Expect(calledAcceptToken).To(BeTrue())
Expect(calledGetLogWriter).To(BeTrue())
})
It("clones non-function fields", func() {
@@ -34,7 +40,7 @@ var _ = Describe("Config", func() {
}
switch fn := typ.Field(i).Name; fn {
case "AcceptToken":
case "AcceptToken", "GetLogWriter":
// Can't compare functions.
case "Versions":
f.Set(reflect.ValueOf([]VersionNumber{1, 2, 3}))