p2p/protocols, swarm/network: fix resource leak with p2p teardown
This commit is contained in:
parent
c1213bd00c
commit
a1cd7e6e92
@ -269,6 +269,7 @@ func TestProtocolHook(t *testing.T) {
|
|||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
tester := p2ptest.NewProtocolTester(prvkey, 2, runFunc)
|
tester := p2ptest.NewProtocolTester(prvkey, 2, runFunc)
|
||||||
|
defer tester.Stop()
|
||||||
err = tester.TestExchanges(p2ptest.Exchange{
|
err = tester.TestExchanges(p2ptest.Exchange{
|
||||||
Expects: []p2ptest.Expect{
|
Expects: []p2ptest.Expect{
|
||||||
{
|
{
|
||||||
|
@ -117,7 +117,7 @@ func TestHiveStatePersistance(t *testing.T) {
|
|||||||
|
|
||||||
const peersCount = 5
|
const peersCount = 5
|
||||||
|
|
||||||
startHive := func(t *testing.T, dir string) (h *Hive) {
|
startHive := func(t *testing.T, dir string) (h *Hive, cleanupFunc func()) {
|
||||||
store, err := state.NewDBStore(dir)
|
store, err := state.NewDBStore(dir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
@ -137,27 +137,30 @@ func TestHiveStatePersistance(t *testing.T) {
|
|||||||
if err := h.Start(s.Server); err != nil {
|
if err := h.Start(s.Server); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
return h
|
|
||||||
|
cleanupFunc = func() {
|
||||||
|
err := h.Stop()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
s.Stop()
|
||||||
|
}
|
||||||
|
return h, cleanupFunc
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 := startHive(t, dir)
|
h1, cleanup1 := startHive(t, dir)
|
||||||
peers := make(map[string]bool)
|
peers := make(map[string]bool)
|
||||||
for i := 0; i < peersCount; i++ {
|
for i := 0; i < peersCount; i++ {
|
||||||
raddr := RandomAddr()
|
raddr := RandomAddr()
|
||||||
h1.Register(raddr)
|
h1.Register(raddr)
|
||||||
peers[raddr.String()] = true
|
peers[raddr.String()] = true
|
||||||
}
|
}
|
||||||
if err = h1.Stop(); err != nil {
|
cleanup1()
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// start the hive and check that we know of all expected peers
|
// start the hive and check that we know of all expected peers
|
||||||
h2 := startHive(t, dir)
|
h2, cleanup2 := startHive(t, dir)
|
||||||
defer func() {
|
cleanup2()
|
||||||
if err = h2.Stop(); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
i := 0
|
i := 0
|
||||||
h2.Kademlia.EachAddr(nil, 256, func(addr *BzzAddr, po int) bool {
|
h2.Kademlia.EachAddr(nil, 256, func(addr *BzzAddr, po int) bool {
|
||||||
|
@ -235,6 +235,7 @@ func TestBzzHandshakeNetworkIDMismatch(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
defer s.Stop()
|
||||||
node := s.Nodes[0]
|
node := s.Nodes[0]
|
||||||
|
|
||||||
err = s.testHandshake(
|
err = s.testHandshake(
|
||||||
@ -258,6 +259,7 @@ func TestBzzHandshakeVersionMismatch(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
defer s.Stop()
|
||||||
node := s.Nodes[0]
|
node := s.Nodes[0]
|
||||||
|
|
||||||
err = s.testHandshake(
|
err = s.testHandshake(
|
||||||
@ -281,6 +283,7 @@ func TestBzzHandshakeSuccess(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
defer s.Stop()
|
||||||
node := s.Nodes[0]
|
node := s.Nodes[0]
|
||||||
|
|
||||||
err = s.testHandshake(
|
err = s.testHandshake(
|
||||||
@ -312,6 +315,7 @@ func TestBzzHandshakeLightNode(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
defer pt.Stop()
|
||||||
|
|
||||||
node := pt.Nodes[0]
|
node := pt.Nodes[0]
|
||||||
addr := NewAddr(node)
|
addr := NewAddr(node)
|
||||||
|
@ -178,12 +178,7 @@ func newStreamerTester(registryOptions *RegistryOptions) (*p2ptest.ProtocolTeste
|
|||||||
netStore.NewNetFetcherFunc = network.NewFetcherFactory(delivery.RequestFromPeers, true).New
|
netStore.NewNetFetcherFunc = network.NewFetcherFactory(delivery.RequestFromPeers, true).New
|
||||||
intervalsStore := state.NewInmemoryStore()
|
intervalsStore := state.NewInmemoryStore()
|
||||||
streamer := NewRegistry(addr.ID(), delivery, netStore, intervalsStore, registryOptions, nil)
|
streamer := NewRegistry(addr.ID(), delivery, netStore, intervalsStore, registryOptions, nil)
|
||||||
teardown := func() {
|
|
||||||
streamer.Close()
|
|
||||||
intervalsStore.Close()
|
|
||||||
netStore.Close()
|
|
||||||
removeDataDir()
|
|
||||||
}
|
|
||||||
prvkey, err := crypto.GenerateKey()
|
prvkey, err := crypto.GenerateKey()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
removeDataDir()
|
removeDataDir()
|
||||||
@ -191,7 +186,13 @@ func newStreamerTester(registryOptions *RegistryOptions) (*p2ptest.ProtocolTeste
|
|||||||
}
|
}
|
||||||
|
|
||||||
protocolTester := p2ptest.NewProtocolTester(prvkey, 1, streamer.runProtocol)
|
protocolTester := p2ptest.NewProtocolTester(prvkey, 1, streamer.runProtocol)
|
||||||
|
teardown := func() {
|
||||||
|
protocolTester.Stop()
|
||||||
|
streamer.Close()
|
||||||
|
intervalsStore.Close()
|
||||||
|
netStore.Close()
|
||||||
|
removeDataDir()
|
||||||
|
}
|
||||||
err = waitForPeers(streamer, 10*time.Second, 1)
|
err = waitForPeers(streamer, 10*time.Second, 1)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
teardown()
|
teardown()
|
||||||
|
Loading…
Reference in New Issue
Block a user