From c79fad2e1256e30d4e1df5473fa07887ea817d7e Mon Sep 17 00:00:00 2001 From: Jeromy Date: Wed, 10 Dec 2014 02:02:49 +0000 Subject: [PATCH 1/3] give sessiongenerator a master context for easy cancelling --- exchange/bitswap/testutils.go | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/exchange/bitswap/testutils.go b/exchange/bitswap/testutils.go index 9e9b80230..bd86ba308 100644 --- a/exchange/bitswap/testutils.go +++ b/exchange/bitswap/testutils.go @@ -17,24 +17,33 @@ import ( func NewSessionGenerator( net tn.Network, rs mockrouting.Server) SessionGenerator { + ctx, cancel := context.WithCancel(context.TODO()) return SessionGenerator{ - net: net, - rs: rs, - ps: peer.NewPeerstore(), - seq: 0, + ps: peer.NewPeerstore(), + net: net, + rs: rs, + seq: 0, + ctx: ctx, + cancel: cancel, } } type SessionGenerator struct { - seq int - net tn.Network - rs mockrouting.Server - ps peer.Peerstore + seq int + net tn.Network + rs mockrouting.Server + ps peer.Peerstore + ctx context.Context + cancel context.CancelFunc +} + +func (g *SessionGenerator) Stop() { + g.cancel() } func (g *SessionGenerator) Next() Instance { g.seq++ - return session(g.net, g.rs, g.ps, []byte(string(g.seq))) + return session(g.ctx, g.net, g.rs, g.ps, []byte(string(g.seq))) } func (g *SessionGenerator) Instances(n int) []Instance { @@ -67,7 +76,7 @@ func (i *Instance) SetBlockstoreLatency(t time.Duration) time.Duration { // NB: It's easy make mistakes by providing the same peer ID to two different // sessions. To safeguard, use the SessionGenerator to generate sessions. It's // just a much better idea. -func session(net tn.Network, rs mockrouting.Server, ps peer.Peerstore, id peer.ID) Instance { +func session(ctx context.Context, net tn.Network, rs mockrouting.Server, ps peer.Peerstore, id peer.ID) Instance { p := ps.WithID(id) adapter := net.Adapter(p) @@ -82,7 +91,6 @@ func session(net tn.Network, rs mockrouting.Server, ps peer.Peerstore, id peer.I } const alwaysSendToPeer = true - ctx := context.TODO() bs := New(ctx, p, adapter, htc, bstore, alwaysSendToPeer) From 9a85f8fa7210da59c6ecac38a680403b22c817e3 Mon Sep 17 00:00:00 2001 From: Brian Tiger Chow Date: Sun, 14 Dec 2014 16:35:09 -0800 Subject: [PATCH 2/3] style: Stop -> Close() error for Closer interface License: MIT Signed-off-by: Brian Tiger Chow --- epictest/addcat_test.go | 1 + exchange/bitswap/testutils.go | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/epictest/addcat_test.go b/epictest/addcat_test.go index 6e7fc8177..fa189203d 100644 --- a/epictest/addcat_test.go +++ b/epictest/addcat_test.go @@ -104,6 +104,7 @@ func AddCatBytes(conf Config) error { tn.VirtualNetwork(delay.Fixed(conf.NetworkLatency)), // TODO rename VirtualNetwork mockrouting.NewServerWithDelay(delay.Fixed(conf.RoutingLatency)), ) + defer sessionGenerator.Close() adder := sessionGenerator.Next() catter := sessionGenerator.Next() diff --git a/exchange/bitswap/testutils.go b/exchange/bitswap/testutils.go index bd86ba308..b8763952c 100644 --- a/exchange/bitswap/testutils.go +++ b/exchange/bitswap/testutils.go @@ -37,8 +37,9 @@ type SessionGenerator struct { cancel context.CancelFunc } -func (g *SessionGenerator) Stop() { +func (g *SessionGenerator) Close() error { g.cancel() + return nil // for Closer interface } func (g *SessionGenerator) Next() Instance { From 5b5ece07ba7815bb1f97a2d5f6766176a4e33060 Mon Sep 17 00:00:00 2001 From: Brian Tiger Chow Date: Sun, 14 Dec 2014 16:37:42 -0800 Subject: [PATCH 3/3] doc TODO License: MIT Signed-off-by: Brian Tiger Chow --- exchange/bitswap/testutils.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exchange/bitswap/testutils.go b/exchange/bitswap/testutils.go index b8763952c..48cb11a45 100644 --- a/exchange/bitswap/testutils.go +++ b/exchange/bitswap/testutils.go @@ -23,7 +23,7 @@ func NewSessionGenerator( net: net, rs: rs, seq: 0, - ctx: ctx, + ctx: ctx, // TODO take ctx as param to Next, Instances cancel: cancel, } }