Skip to content

Commit ee9146d

Browse files
committed
test: add ready channel to sync ready state for node
1 parent f3345d7 commit ee9146d

File tree

5 files changed

+28
-8
lines changed

5 files changed

+28
-8
lines changed

events.go

+12
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package noise
22

33
import (
44
"context"
5+
"net"
56
"unsafe"
67
)
78

@@ -15,6 +16,8 @@ const (
1516
MessageReceived
1617
// Closed peer connection
1718
PeerDisconnected
19+
// Emitted when the node is ready to accept incoming connections
20+
SelfListening
1821
)
1922

2023
// events handle event exchange between [Node] and network.
@@ -30,6 +33,7 @@ func newEvents() *events {
3033
broker.Register(NewPeerDetected, subscriber)
3134
broker.Register(MessageReceived, subscriber)
3235
broker.Register(PeerDisconnected, subscriber)
36+
broker.Register(SelfListening, subscriber)
3337

3438
return &events{
3539
broker,
@@ -60,6 +64,14 @@ func (e *events) PeerDisconnected(peer *peer) {
6064
e.broker.Publish(signal)
6165
}
6266

67+
// SelfListening dispatch event when node is ready.
68+
func (e *events) SelfListening(listener net.Listener) {
69+
// Emit new notification
70+
header := header{nil, SelfListening}
71+
signal := Signal{header, listener.Addr().String()}
72+
e.broker.Publish(signal)
73+
}
74+
6375
// NewMessage dispatch event when a new message is received.
6476
func (e *events) NewMessage(peer *peer, msg []byte) {
6577
// Emit new notification

handshake_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
package noise

node.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,8 @@ func (n *Node) Listen() error {
226226
}
227227

228228
log.Printf("listening on %s", addr)
229-
n.listener = listener // keep reference to current listener
229+
n.events.SelfListening(listener) // emit listening event
230+
n.listener = listener // keep reference to current listener
230231

231232
for {
232233
// Block/Hold while waiting for new incoming connection

node_test.go

+13-2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ func TestTwoNodesHandshakeTrace(t *testing.T) {
3232
"handshake complete", // Handshake complete
3333
}
3434

35+
ready := make(chan bool)
3536
nodeASocket := "127.0.0.1:9090"
3637
nodeBSocket := "127.0.0.1:9091"
3738
configurationA := config.New()
@@ -42,11 +43,21 @@ func TestTwoNodesHandshakeTrace(t *testing.T) {
4243

4344
nodeA := New(configurationA)
4445
nodeB := New(configurationB)
46+
47+
go func() {
48+
signals, cancel := nodeA.Signals()
49+
for signal := range signals {
50+
if signal.Type() == SelfListening {
51+
cancel()
52+
ready <- true
53+
}
54+
}
55+
}()
56+
4557
go nodeA.Listen()
4658
go nodeB.Listen()
59+
<-ready
4760

48-
// Wait for node ready <- could be improved using channel sync
49-
<-time.After(time.Second / 10)
5061
nodeB.Dial(nodeASocket)
5162
nodeA.Close()
5263
nodeB.Close()

telemetry/telemetry.go

-5
This file was deleted.

0 commit comments

Comments
 (0)