mirror of
https://github.com/ipfs/kubo.git
synced 2026-03-10 02:40:11 +08:00
Merge pull request #448 from jbenet/fix/test-memory-leak
fix: memory leak in epic tests
This commit is contained in:
commit
a3a685d85e
@ -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()
|
||||
|
||||
@ -17,24 +17,34 @@ 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, // TODO take ctx as param to Next, Instances
|
||||
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) Close() error {
|
||||
g.cancel()
|
||||
return nil // for Closer interface
|
||||
}
|
||||
|
||||
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 +77,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 +92,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)
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user