[snowflake/main] Add unit tests to check for webrtc peer data races

commit 95cbe36565d65bf1512acd0faeab9a1e2580808f Author: Cecylia Bocovich <cohosh@torproject.org> Date: Thu Jun 17 17:43:40 2021 -0400 Add unit tests to check for webrtc peer data races --- client/lib/lib_test.go | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/client/lib/lib_test.go b/client/lib/lib_test.go index 55ea7b9..1eef0c0 100644 --- a/client/lib/lib_test.go +++ b/client/lib/lib_test.go @@ -7,6 +7,7 @@ import ( "net" "net/http" "testing" + "time" "git.torproject.org/pluggable-transports/snowflake.git/common/util" . "github.com/smartystreets/goconvey/convey" @@ -154,6 +155,25 @@ func TestSnowflakeClient(t *testing.T) { So(r, ShouldEqual, wc4) }) + Convey("Terminate Connect() loop", func() { + p, _ := NewPeers(FakeDialer{max: 4}) + go func() { + for { + p.Collect() + select { + case <-p.Melted(): + return + default: + } + } + }() + <-time.After(10 * time.Second) + + p.End() + <-p.Melted() + So(p.Count(), ShouldEqual, 0) + }) + }) Convey("Dialers", t, func() { @@ -245,6 +265,17 @@ func TestSnowflakeClient(t *testing.T) { } +func TestWebRTCPeer(t *testing.T) { + Convey("WebRTCPeer", t, func(c C) { + p := &WebRTCPeer{closed: make(chan struct{})} + Convey("checks for staleness", func() { + go p.checkForStaleness() + <-time.After(2 * SnowflakeTimeout) + So(p.Closed(), ShouldEqual, true) + }) + }) +} + func TestICEServerParser(t *testing.T) { Convey("Test parsing of ICE servers", t, func() { for _, test := range []struct {
participants (1)
-
cohosh@torproject.org