From 8c754625201e850ce9679a6bf77832fe1b331911 Mon Sep 17 00:00:00 2001 From: Lucas Clemente Date: Wed, 17 Aug 2016 15:25:56 +0200 Subject: [PATCH 1/2] use sequential packet ordering in benchmark tests fix #262, fix #273 --- benchmark_test.go | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/benchmark_test.go b/benchmark_test.go index a62b2dab4..7bd471e7e 100644 --- a/benchmark_test.go +++ b/benchmark_test.go @@ -23,24 +23,37 @@ import ( type linkedConnection struct { other *Session + c chan []byte +} + +func newLinkedConnection(other *Session) *linkedConnection { + c := make(chan []byte, 500) + conn := &linkedConnection{ + c: c, + other: other, + } + go func() { + for packet := range c { + r := bytes.NewReader(packet) + hdr, err := ParsePublicHeader(r) + if err != nil { + Expect(err).NotTo(HaveOccurred()) + } + hdr.Raw = packet[:len(packet)-r.Len()] + conn.other.handlePacket(nil, hdr, packet[len(packet)-r.Len():]) + } + }() + return conn } func (c *linkedConnection) write(p []byte) error { packet := getPacketBuffer() packet = packet[:len(p)] copy(packet, p) - - go func() { - time.Sleep(100 * time.Microsecond) - r := bytes.NewReader(packet) - hdr, err := ParsePublicHeader(r) - if err != nil { - Expect(err).NotTo(HaveOccurred()) - } - hdr.Raw = packet[:len(packet)-r.Len()] - - c.other.handlePacket(nil, hdr, packet[len(packet)-r.Len():]) - }() + select { + case c.c <- packet: + default: + } return nil } @@ -74,14 +87,14 @@ var _ = PDescribe("Benchmarks", func() { Measure("two linked sessions", func(b Benchmarker) { connID := protocol.ConnectionID(mrand.Uint32()) - c1 := &linkedConnection{} + c1 := newLinkedConnection(nil) session1I, err := newSession(c1, version, connID, nil, func(*Session, utils.Stream) {}, func(id protocol.ConnectionID) {}) if err != nil { Expect(err).NotTo(HaveOccurred()) } session1 := session1I.(*Session) - c2 := &linkedConnection{other: session1} + c2 := newLinkedConnection(session1) session2I, err := newSession(c2, version, connID, nil, func(*Session, utils.Stream) {}, func(id protocol.ConnectionID) {}) if err != nil { Expect(err).NotTo(HaveOccurred()) From e6abc3917db4a78780c0d2edf9a44d9d92f07324 Mon Sep 17 00:00:00 2001 From: Lucas Clemente Date: Wed, 17 Aug 2016 15:27:08 +0200 Subject: [PATCH 2/2] re-enable benchmark tests --- benchmark_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmark_test.go b/benchmark_test.go index 7bd471e7e..72f0f409a 100644 --- a/benchmark_test.go +++ b/benchmark_test.go @@ -76,7 +76,7 @@ func setFlowControlParameters(mgr *handshake.ConnectionParametersManager) { }) } -var _ = PDescribe("Benchmarks", func() { +var _ = Describe("Benchmarks", func() { for i := range protocol.SupportedVersions { version := protocol.SupportedVersions[i]