forked from quic-go/quic-go
run integration tests with qlog and metrics on CircleCI
This commit is contained in:
@@ -41,8 +41,8 @@ jobs:
|
||||
name: "Run self integration tests with race detector"
|
||||
command: ginkgo -race -v -randomizeAllSpecs -trace integrationtests/self
|
||||
- run:
|
||||
name: "Run self integration tests with qlog"
|
||||
command: ginkgo -v -randomizeAllSpecs -trace integrationtests/self -- -qlog
|
||||
name: "Run self integration tests with qlog and metrics"
|
||||
command: ginkgo -v -randomizeAllSpecs -trace integrationtests/self -- -qlog -metrics
|
||||
go114:
|
||||
<<: *test
|
||||
interop-build:
|
||||
|
||||
@@ -22,6 +22,7 @@ import (
|
||||
"github.com/lucas-clemente/quic-go"
|
||||
"github.com/lucas-clemente/quic-go/internal/utils"
|
||||
"github.com/lucas-clemente/quic-go/logging"
|
||||
"github.com/lucas-clemente/quic-go/metrics"
|
||||
"github.com/lucas-clemente/quic-go/qlog"
|
||||
|
||||
. "github.com/onsi/ginkgo"
|
||||
@@ -86,23 +87,12 @@ var (
|
||||
logBufOnce sync.Once
|
||||
logBuf *syncedBuffer
|
||||
enableQlog bool
|
||||
enableMetrics bool
|
||||
|
||||
tlsConfig *tls.Config
|
||||
tlsConfigLongChain *tls.Config
|
||||
tlsClientConfig *tls.Config
|
||||
|
||||
tracer = qlog.NewTracer(func(p logging.Perspective, connectionID []byte) io.WriteCloser {
|
||||
role := "server"
|
||||
if p == logging.PerspectiveClient {
|
||||
role = "client"
|
||||
}
|
||||
filename := fmt.Sprintf("log_%x_%s.qlog", connectionID, role)
|
||||
fmt.Fprintf(GinkgoWriter, "Creating %s.\n", filename)
|
||||
f, err := os.Create(filename)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
bw := bufio.NewWriter(f)
|
||||
return utils.NewBufferedWriteCloser(bw, f)
|
||||
})
|
||||
tracer logging.Tracer
|
||||
)
|
||||
|
||||
// read the logfile command line flag
|
||||
@@ -110,6 +100,8 @@ var (
|
||||
func init() {
|
||||
flag.StringVar(&logFileName, "logfile", "", "log file")
|
||||
flag.BoolVar(&enableQlog, "qlog", false, "enable qlog")
|
||||
// metrics won't be accessible anywhere, but it's useful to exercise the code
|
||||
flag.BoolVar(&enableMetrics, "metrics", false, "enable metrics")
|
||||
|
||||
ca, caPrivateKey, err := generateCA()
|
||||
if err != nil {
|
||||
@@ -138,6 +130,33 @@ func init() {
|
||||
RootCAs: root,
|
||||
NextProtos: []string{alpn},
|
||||
}
|
||||
|
||||
var qlogTracer, metricsTracer logging.Tracer
|
||||
if enableQlog {
|
||||
qlogTracer = qlog.NewTracer(func(p logging.Perspective, connectionID []byte) io.WriteCloser {
|
||||
role := "server"
|
||||
if p == logging.PerspectiveClient {
|
||||
role = "client"
|
||||
}
|
||||
filename := fmt.Sprintf("log_%x_%s.qlog", connectionID, role)
|
||||
fmt.Fprintf(GinkgoWriter, "Creating %s.\n", filename)
|
||||
f, err := os.Create(filename)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
bw := bufio.NewWriter(f)
|
||||
return utils.NewBufferedWriteCloser(bw, f)
|
||||
})
|
||||
}
|
||||
if enableMetrics {
|
||||
metricsTracer = metrics.NewTracer()
|
||||
}
|
||||
|
||||
if enableQlog && enableMetrics {
|
||||
tracer = logging.NewMultiplexedTracer(qlogTracer, metricsTracer)
|
||||
} else if enableQlog {
|
||||
tracer = qlogTracer
|
||||
} else if enableMetrics {
|
||||
tracer = metricsTracer
|
||||
}
|
||||
}
|
||||
|
||||
func generateCA() (*x509.Certificate, *rsa.PrivateKey, error) {
|
||||
@@ -263,9 +282,6 @@ func getQuicConfig(conf *quic.Config) *quic.Config {
|
||||
} else {
|
||||
conf = conf.Clone()
|
||||
}
|
||||
if !enableQlog {
|
||||
return conf
|
||||
}
|
||||
conf.Tracer = tracer
|
||||
return conf
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user