[tor-commits] [snowflake/master] another goconvey test for RequestOffer, fix data race in the Broker test

serene at torproject.org serene at torproject.org
Thu Feb 18 22:15:38 UTC 2016


commit 661286894a2c3a20ef0dba207314291c14c24708
Author: Serene Han <keroserene+git at gmail.com>
Date:   Wed Feb 17 12:52:22 2016 -0800

    another goconvey test for RequestOffer, fix data race in the Broker test
---
 broker/snowflake-broker_test.go | 31 +++++++++++++++++++++++--------
 1 file changed, 23 insertions(+), 8 deletions(-)

diff --git a/broker/snowflake-broker_test.go b/broker/snowflake-broker_test.go
index 0e125cc..44940a3 100644
--- a/broker/snowflake-broker_test.go
+++ b/broker/snowflake-broker_test.go
@@ -22,20 +22,35 @@ func TestBroker(t *testing.T) {
 			So(len(ctx.idToSnowflake), ShouldEqual, 1)
 		})
 
-		/*
 		Convey("Broker goroutine matches clients with proxies", func() {
-			ctx2 := NewBrokerContext()
 			p := new(ProxyPoll)
 			p.id = "test"
+			p.offerChannel = make(chan []byte)
+			go func(ctx *BrokerContext) {
+				ctx.proxyPolls <- p
+				close(ctx.proxyPolls)
+			}(ctx)
+			ctx.Broker()
+			So(ctx.snowflakes.Len(), ShouldEqual, 1)
+			snowflake := heap.Pop(ctx.snowflakes).(*Snowflake)
+			snowflake.offerChannel <- []byte("test offer")
+			offer := <-p.offerChannel
+			So(ctx.idToSnowflake["test"], ShouldNotBeNil)
+			So(offer, ShouldResemble, []byte("test offer"))
+			So(ctx.snowflakes.Len(), ShouldEqual, 0)
+		})
+
+		Convey("Request an offer from the Snowflake Heap", func() {
+			done := make(chan []byte)
 			go func() {
-				ctx2.proxyPolls <- p
-				close(ctx2.proxyPolls)
+				offer := ctx.RequestOffer("test")
+				done <- offer
 			}()
-			ctx2.Broker()
-			So(ctx2.snowflakes.Len(), ShouldEqual, 1)
-			So(ctx2.idToSnowflake["test"], ShouldNotBeNil)
+			request := <-ctx.proxyPolls
+			request.offerChannel <- []byte("test offer")
+			offer := <-done
+			So(offer, ShouldResemble, []byte("test offer"))
 		})
-		*/
 
 		Convey("Responds to client offers...", func() {
 			w := httptest.NewRecorder()





More information about the tor-commits mailing list