From b791bb6cdf470ad08e2d32dc5a7211922948a9c4 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Tue, 3 Jan 2023 17:17:06 +1300 Subject: [PATCH] add a benchmark integration test for performing handshakes --- integrationtests/self/benchmark_test.go | 45 ++++++++++++++++++++++++ integrationtests/self/self_suite_test.go | 8 ++--- 2 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 integrationtests/self/benchmark_test.go diff --git a/integrationtests/self/benchmark_test.go b/integrationtests/self/benchmark_test.go new file mode 100644 index 000000000..9030e8bf6 --- /dev/null +++ b/integrationtests/self/benchmark_test.go @@ -0,0 +1,45 @@ +package self_test + +import ( + "context" + "net" + "testing" + + "github.com/quic-go/quic-go" +) + +func BenchmarkHandshake(b *testing.B) { + b.ReportAllocs() + + ln, err := quic.ListenAddr("localhost:0", tlsConfig, nil) + if err != nil { + b.Fatal(err) + } + defer ln.Close() + + connChan := make(chan quic.Connection, 1) + go func() { + for { + conn, err := ln.Accept(context.Background()) + if err != nil { + return + } + connChan <- conn + } + }() + + conn, err := net.ListenUDP("udp", nil) + if err != nil { + b.Fatal(err) + } + + b.ResetTimer() + for i := 0; i < b.N; i++ { + c, err := quic.Dial(conn, ln.Addr(), "localhost", tlsClientConfig, nil) + if err != nil { + b.Fatal(err) + } + <-connChan + c.CloseWithError(0, "") + } +} diff --git a/integrationtests/self/self_suite_test.go b/integrationtests/self/self_suite_test.go index 859555465..943b87534 100644 --- a/integrationtests/self/self_suite_test.go +++ b/integrationtests/self/self_suite_test.go @@ -106,10 +106,6 @@ var ( func init() { flag.StringVar(&logFileName, "logfile", "", "log file") flag.BoolVar(&enableQlog, "qlog", false, "enable qlog") -} - -var _ = BeforeSuite(func() { - mrand.Seed(GinkgoRandomSeed()) ca, caPrivateKey, err := generateCA() if err != nil { @@ -138,6 +134,10 @@ var _ = BeforeSuite(func() { RootCAs: root, NextProtos: []string{alpn}, } +} + +var _ = BeforeSuite(func() { + mrand.Seed(GinkgoRandomSeed()) if enableQlog { quicConfigTracer = qlog.NewTracer(func(p logging.Perspective, connectionID []byte) io.WriteCloser {