[tor-commits] [snowflake/main] Fix race is broker test reported by `go test -race`

arlo at torproject.org arlo at torproject.org
Thu Jul 8 19:44:16 UTC 2021


commit dfb68d7cfc4b69c5e1f5628f3db002c3595fa1f0
Author: Arlo Breault <arlolra at gmail.com>
Date:   Thu Jul 8 15:31:56 2021 -0400

    Fix race is broker test reported by `go test -race`
---
 broker/snowflake-broker_test.go | 27 +++++++++++++++------------
 1 file changed, 15 insertions(+), 12 deletions(-)

diff --git a/broker/snowflake-broker_test.go b/broker/snowflake-broker_test.go
index 77e62cf..9e1c9f1 100644
--- a/broker/snowflake-broker_test.go
+++ b/broker/snowflake-broker_test.go
@@ -173,10 +173,10 @@ func TestBroker(t *testing.T) {
 			So(err, ShouldBeNil)
 
 			Convey("with a client offer if available.", func() {
-				go func(ctx *BrokerContext) {
+				go func(i *IPC) {
 					proxyPolls(i, w, r)
 					done <- true
-				}(ctx)
+				}(i)
 				// Pass a fake client offer to this proxy
 				p := <-ctx.proxyPolls
 				So(p.id, ShouldEqual, "ymbcCMto7KHNGYlp")
@@ -187,10 +187,10 @@ func TestBroker(t *testing.T) {
 			})
 
 			Convey("return empty 200 OK when no client offer is available.", func() {
-				go func(ctx *BrokerContext) {
+				go func(i *IPC) {
 					proxyPolls(i, w, r)
 					done <- true
-				}(ctx)
+				}(i)
 				p := <-ctx.proxyPolls
 				So(p.id, ShouldEqual, "ymbcCMto7KHNGYlp")
 				// nil means timeout
@@ -202,6 +202,7 @@ func TestBroker(t *testing.T) {
 		})
 
 		Convey("Responds to proxy answers...", func() {
+			done := make(chan bool)
 			s := ctx.AddSnowflake("test", "", NATUnrestricted, 0)
 			w := httptest.NewRecorder()
 			data := bytes.NewReader([]byte(`{"Version":"1.0","Sid":"test","Answer":"test"}`))
@@ -209,10 +210,12 @@ func TestBroker(t *testing.T) {
 			Convey("by passing to the client if valid.", func() {
 				r, err := http.NewRequest("POST", "snowflake.broker/answer", data)
 				So(err, ShouldBeNil)
-				go func(ctx *BrokerContext) {
+				go func(i *IPC) {
 					proxyAnswers(i, w, r)
-				}(ctx)
+					done <- true
+				}(i)
 				answer := <-s.answerChannel
+				<-done
 				So(w.Code, ShouldEqual, http.StatusOK)
 				So(answer, ShouldResemble, "test")
 			})
@@ -265,10 +268,10 @@ func TestBroker(t *testing.T) {
 			rp, err := http.NewRequest("POST", "snowflake.broker/proxy", datap)
 			So(err, ShouldBeNil)
 
-			go func(ctx *BrokerContext) {
+			go func(i *IPC) {
 				proxyPolls(i, wp, rp)
 				proxy_done <- true
-			}(ctx)
+			}(i)
 
 			// Client offer
 			wc := httptest.NewRecorder()
@@ -289,10 +292,10 @@ func TestBroker(t *testing.T) {
 			datap = bytes.NewReader([]byte(`{"Version":"1.0","Sid":"ymbcCMto7KHNGYlp","Answer":"test"}`))
 			rp, err = http.NewRequest("POST", "snowflake.broker/answer", datap)
 			So(err, ShouldBeNil)
-			go func(ctx *BrokerContext) {
+			go func(i *IPC) {
 				proxyAnswers(i, wp, rp)
 				proxy_done <- true
-			}(ctx)
+			}(i)
 
 			<-proxy_done
 			<-client_done
@@ -682,10 +685,10 @@ func TestMetrics(t *testing.T) {
 			r, err := http.NewRequest("POST", "snowflake.broker/proxy", data)
 			r.RemoteAddr = "129.97.208.23:8888" //CA geoip
 			So(err, ShouldBeNil)
-			go func(ctx *BrokerContext) {
+			go func(i *IPC) {
 				proxyPolls(i, w, r)
 				done <- true
-			}(ctx)
+			}(i)
 			p := <-ctx.proxyPolls //manually unblock poll
 			p.offerChannel <- nil
 			<-done





More information about the tor-commits mailing list