Skip to content

Commit 43260d9

Browse files
original-brownbearfirmianavan
authored andcommitted
ethereum#15685 made peer_test.go more portable by using random free port instead of hardcoded port 30303 (ethereum#15687)
Improves test portability by resolving 127.0.0.1:0 to get a random free port instead of the hard coded one. Now the test works if you have a running node on the same interface already. Fixes ethereum#15685
1 parent 08e9d73 commit 43260d9

File tree

2 files changed

+35
-48
lines changed

2 files changed

+35
-48
lines changed

whisper/whisperv5/peer_test.go

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ package whisperv5
1919
import (
2020
"bytes"
2121
"crypto/ecdsa"
22-
"fmt"
2322
"net"
2423
"sync"
2524
"testing"
@@ -108,8 +107,6 @@ func TestSimulation(t *testing.T) {
108107

109108
func initialize(t *testing.T) {
110109
var err error
111-
ip := net.IPv4(127, 0, 0, 1)
112-
port0 := 30303
113110

114111
for i := 0; i < NumNodes; i++ {
115112
var node TestNode
@@ -128,29 +125,15 @@ func initialize(t *testing.T) {
128125
if err != nil {
129126
t.Fatalf("failed convert the key: %s.", keys[i])
130127
}
131-
port := port0 + i
132-
addr := fmt.Sprintf(":%d", port) // e.g. ":30303"
133128
name := common.MakeName("whisper-go", "2.0")
134-
var peers []*discover.Node
135-
if i > 0 {
136-
peerNodeId := nodes[i-1].id
137-
peerPort := uint16(port - 1)
138-
peerNode := discover.PubkeyID(&peerNodeId.PublicKey)
139-
peer := discover.NewNode(peerNode, ip, peerPort, peerPort)
140-
peers = append(peers, peer)
141-
}
142-
143129
node.server = &p2p.Server{
144130
Config: p2p.Config{
145-
PrivateKey: node.id,
146-
MaxPeers: NumNodes/2 + 1,
147-
Name: name,
148-
Protocols: node.shh.Protocols(),
149-
ListenAddr: addr,
150-
NAT: nat.Any(),
151-
BootstrapNodes: peers,
152-
StaticNodes: peers,
153-
TrustedNodes: peers,
131+
PrivateKey: node.id,
132+
MaxPeers: NumNodes/2 + 1,
133+
Name: name,
134+
Protocols: node.shh.Protocols(),
135+
ListenAddr: "127.0.0.1:0",
136+
NAT: nat.Any(),
154137
},
155138
}
156139

@@ -159,6 +142,15 @@ func initialize(t *testing.T) {
159142
t.Fatalf("failed to start server %d.", i)
160143
}
161144

145+
for j := 0; j < i; j++ {
146+
peerNodeId := nodes[j].id
147+
address, _ := net.ResolveTCPAddr("tcp", nodes[j].server.ListenAddr)
148+
peerPort := uint16(address.Port)
149+
peerNode := discover.PubkeyID(&peerNodeId.PublicKey)
150+
peer := discover.NewNode(peerNode, address.IP, peerPort, peerPort)
151+
node.server.AddPeer(peer)
152+
}
153+
162154
nodes[i] = &node
163155
}
164156
}

whisper/whisperv6/peer_test.go

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,13 @@ import (
2121
"crypto/ecdsa"
2222
"fmt"
2323
mrand "math/rand"
24-
"net"
2524
"sync"
2625
"sync/atomic"
2726
"testing"
2827
"time"
2928

29+
"net"
30+
3031
"github.com/ethereum/go-ethereum/common"
3132
"github.com/ethereum/go-ethereum/common/hexutil"
3233
"github.com/ethereum/go-ethereum/crypto"
@@ -173,8 +174,6 @@ func initialize(t *testing.T) {
173174
initBloom(t)
174175

175176
var err error
176-
ip := net.IPv4(127, 0, 0, 1)
177-
port0 := 30303
178177

179178
for i := 0; i < NumNodes; i++ {
180179
var node TestNode
@@ -199,40 +198,36 @@ func initialize(t *testing.T) {
199198
if err != nil {
200199
t.Fatalf("failed convert the key: %s.", keys[i])
201200
}
202-
port := port0 + i
203-
addr := fmt.Sprintf(":%d", port) // e.g. ":30303"
204201
name := common.MakeName("whisper-go", "2.0")
205-
var peers []*discover.Node
206-
if i > 0 {
207-
peerNodeID := nodes[i-1].id
208-
peerPort := uint16(port - 1)
209-
peerNode := discover.PubkeyID(&peerNodeID.PublicKey)
210-
peer := discover.NewNode(peerNode, ip, peerPort, peerPort)
211-
peers = append(peers, peer)
212-
}
213202

214203
node.server = &p2p.Server{
215204
Config: p2p.Config{
216-
PrivateKey: node.id,
217-
MaxPeers: NumNodes/2 + 1,
218-
Name: name,
219-
Protocols: node.shh.Protocols(),
220-
ListenAddr: addr,
221-
NAT: nat.Any(),
222-
BootstrapNodes: peers,
223-
StaticNodes: peers,
224-
TrustedNodes: peers,
205+
PrivateKey: node.id,
206+
MaxPeers: NumNodes/2 + 1,
207+
Name: name,
208+
Protocols: node.shh.Protocols(),
209+
ListenAddr: "127.0.0.1:0",
210+
NAT: nat.Any(),
225211
},
226212
}
227213

214+
go startServer(t, node.server)
215+
228216
nodes[i] = &node
229217
}
230218

219+
waitForServersToStart(t)
220+
231221
for i := 0; i < NumNodes; i++ {
232-
go startServer(t, nodes[i].server)
222+
for j := 0; j < i; j++ {
223+
peerNodeId := nodes[j].id
224+
address, _ := net.ResolveTCPAddr("tcp", nodes[j].server.ListenAddr)
225+
peerPort := uint16(address.Port)
226+
peerNode := discover.PubkeyID(&peerNodeId.PublicKey)
227+
peer := discover.NewNode(peerNode, address.IP, peerPort, peerPort)
228+
nodes[i].server.AddPeer(peer)
229+
}
233230
}
234-
235-
waitForServersToStart(t)
236231
}
237232

238233
func startServer(t *testing.T, s *p2p.Server) {

0 commit comments

Comments
 (0)