mirror of
https://github.com/logos-messaging/logos-messaging-go-bindings.git
synced 2026-05-03 08:23:38 +00:00
Adding peers connection tests & relay tests
This commit is contained in:
parent
18840fa68c
commit
8a3f6cfb5c
64
testlibs/src/Relay_wrapper.go
Normal file
64
testlibs/src/Relay_wrapper.go
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
package testlibs
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
utilities "github.com/waku-org/waku-go-bindings/testlibs/utilities"
|
||||||
|
"go.uber.org/zap"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (wrapper *WakuNodeWrapper) Wrappers_RelaySubscribe(pubsubTopic string) error {
|
||||||
|
utilities.Debug("Attempting to subscribe to relay topic", zap.String("topic", pubsubTopic))
|
||||||
|
|
||||||
|
if wrapper.WakuNode == nil {
|
||||||
|
err := errors.New("WakuNode is nil in WakuNodeWrapper")
|
||||||
|
utilities.Error("Cannot subscribe; node is nil", zap.Error(err))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err := wrapper.WakuNode.RelaySubscribe(pubsubTopic)
|
||||||
|
if err != nil {
|
||||||
|
utilities.Error("Failed to subscribe to relay topic", zap.Error(err))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure the subscription happened by checking the number of connected relay peers
|
||||||
|
numRelayPeers, err := wrapper.Wrappers_GetNumConnectedRelayPeers(pubsubTopic)
|
||||||
|
if err != nil || numRelayPeers == 0 {
|
||||||
|
utilities.Error("Subscription verification failed: no connected relay peers found", zap.Error(err))
|
||||||
|
return errors.New("subscription verification failed: no connected relay peers")
|
||||||
|
}
|
||||||
|
|
||||||
|
utilities.Debug("Successfully subscribed to relay topic", zap.String("topic", pubsubTopic))
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (wrapper *WakuNodeWrapper) Wrappers_RelayUnsubscribe(pubsubTopic string) error {
|
||||||
|
utilities.Debug("Attempting to unsubscribe from relay topic", zap.String("topic", pubsubTopic))
|
||||||
|
|
||||||
|
if wrapper.WakuNode == nil {
|
||||||
|
err := errors.New("WakuNode is nil in WakuNodeWrapper")
|
||||||
|
utilities.Error("Cannot unsubscribe; node is nil", zap.Error(err))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err := wrapper.WakuNode.RelayUnsubscribe(pubsubTopic)
|
||||||
|
if err != nil {
|
||||||
|
utilities.Error("Failed to unsubscribe from relay topic", zap.Error(err))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure the unsubscription happened by verifying the relay peers count
|
||||||
|
numRelayPeers, err := wrapper.Wrappers_GetNumConnectedRelayPeers(pubsubTopic)
|
||||||
|
if err != nil {
|
||||||
|
utilities.Error("Failed to verify unsubscription from relay topic", zap.Error(err))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if numRelayPeers > 0 {
|
||||||
|
utilities.Error("Unsubscription verification failed: relay peers still connected", zap.Int("relayPeers", numRelayPeers))
|
||||||
|
return errors.New("unsubscription verification failed: relay peers still connected")
|
||||||
|
}
|
||||||
|
|
||||||
|
utilities.Debug("Successfully unsubscribed from relay topic", zap.String("topic", pubsubTopic))
|
||||||
|
return nil
|
||||||
|
}
|
||||||
@ -4,6 +4,8 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
|
"github.com/libp2p/go-libp2p/core/peer"
|
||||||
|
|
||||||
utilities "github.com/waku-org/waku-go-bindings/testlibs/utilities"
|
utilities "github.com/waku-org/waku-go-bindings/testlibs/utilities"
|
||||||
"github.com/waku-org/waku-go-bindings/waku"
|
"github.com/waku-org/waku-go-bindings/waku"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
@ -115,6 +117,33 @@ func (wrapper *WakuNodeWrapper) Wrappers_StopAndDestroy() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (wrapper *WakuNodeWrapper) Wrappers_GetConnectedPeers() ([]peer.ID, error) {
|
||||||
|
if wrapper.WakuNode == nil {
|
||||||
|
err := errors.New("WakuNode is nil in WakuNodeWrapper")
|
||||||
|
utilities.Error("Cannot proceed; node is nil", zap.Error(err))
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
peerID, err := wrapper.WakuNode.PeerID()
|
||||||
|
if err != nil {
|
||||||
|
utilities.Error("Failed to get PeerID of node", zap.Error(err))
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
utilities.Debug("Getting number of connected peers to node", zap.String("node", peerID.String()))
|
||||||
|
|
||||||
|
peers, err := wrapper.WakuNode.GetConnectedPeers()
|
||||||
|
if err != nil {
|
||||||
|
utilities.Error("Failed to get connected peers", zap.Error(err))
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
utilities.Debug("Successfully fetched connected peers",
|
||||||
|
zap.Int("count", len(peers)),
|
||||||
|
)
|
||||||
|
return peers, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (wrapper *WakuNodeWrapper) Wrappers_GetNumConnectedRelayPeers(optPubsubTopic ...string) (int, error) {
|
func (wrapper *WakuNodeWrapper) Wrappers_GetNumConnectedRelayPeers(optPubsubTopic ...string) (int, error) {
|
||||||
utilities.Debug("Wrappers_GetNumConnectedRelayPeers called")
|
utilities.Debug("Wrappers_GetNumConnectedRelayPeers called")
|
||||||
|
|
||||||
@ -137,62 +166,122 @@ func (wrapper *WakuNodeWrapper) Wrappers_GetNumConnectedRelayPeers(optPubsubTopi
|
|||||||
return numPeers, nil
|
return numPeers, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *WakuNodeWrapper) Wrappers_ConnectPeer(target *WakuNodeWrapper) error {
|
func (wrapper *WakuNodeWrapper) Wrappers_ConnectPeer(targetNode *WakuNodeWrapper) error {
|
||||||
if w.WakuNode == nil {
|
|
||||||
|
utilities.Debug("Connect node to peer")
|
||||||
|
if wrapper.WakuNode == nil {
|
||||||
err := errors.New("WakuNode is nil in caller")
|
err := errors.New("WakuNode is nil in caller")
|
||||||
utilities.Error("Cannot call Connect; caller node is nil", zap.Error(err))
|
utilities.Error("Cannot call Connect; caller node is nil", zap.Error(err))
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if target == nil || target.WakuNode == nil {
|
if targetNode == nil || targetNode.WakuNode == nil {
|
||||||
err := errors.New("target WakuNode is nil")
|
err := errors.New("WakuNode is nil in target")
|
||||||
utilities.Error("Cannot connect; target node is nil", zap.Error(err))
|
utilities.Error("Cannot connect; target node is nil", zap.Error(err))
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
addrs, err := target.ListenAddresses()
|
targetPeerID, err := targetNode.WakuNode.PeerID()
|
||||||
if err != nil || len(addrs) == 0 {
|
if err != nil {
|
||||||
errMsg := "failed to obtain target node's listening addresses"
|
utilities.Error("Failed to get PeerID of target node", zap.Error(err))
|
||||||
utilities.Error(errMsg, zap.String("error", err.Error()))
|
return err
|
||||||
return errors.New(errMsg)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
peerAddr := addrs[0]
|
utilities.Debug("Get connected peers before attempting to connect")
|
||||||
|
|
||||||
utilities.Debug("Wrappers_ConnectPeer called", zap.String("targetAddr", peerAddr.String()))
|
connectedPeersBefore, err := wrapper.Wrappers_GetConnectedPeers()
|
||||||
|
if err != nil {
|
||||||
|
utilities.Debug("Could not fetch connected peers before connecting (might be none yet)", zap.Error(err))
|
||||||
|
} else {
|
||||||
|
utilities.Debug("Connected peers before connecting", zap.Int("count", len(connectedPeersBefore)))
|
||||||
|
}
|
||||||
|
|
||||||
|
utilities.Debug("Attempt to connect to the target node")
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), utilities.ConnectPeerTimeout)
|
ctx, cancel := context.WithTimeout(context.Background(), utilities.ConnectPeerTimeout)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
utilities.Debug("Connecting to peer with address", zap.String("address", peerAddr.String()))
|
targetAddr, err := targetNode.WakuNode.ListenAddresses()
|
||||||
err = w.WakuNode.Connect(ctx, peerAddr)
|
if err != nil || len(targetAddr) == 0 {
|
||||||
|
utilities.Error("Failed to get listen addresses for target node", zap.Error(err))
|
||||||
|
return errors.New("target node has no listen addresses")
|
||||||
|
}
|
||||||
|
|
||||||
|
utilities.Debug("Connecting to peer", zap.String("address", targetAddr[0].String()))
|
||||||
|
err = wrapper.WakuNode.Connect(ctx, targetAddr[0])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
utilities.Error("Failed to connect", zap.Error(err))
|
utilities.Error("Failed to connect to peer", zap.Error(err))
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
utilities.Debug("Successfully connected", zap.String("address", peerAddr.String()))
|
utilities.Debug("Get connected peers after attempting to connect")
|
||||||
|
connectedPeersAfter, err := wrapper.Wrappers_GetConnectedPeers()
|
||||||
|
if err != nil {
|
||||||
|
utilities.Error("Failed to get connected peers after connecting", zap.Error(err))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
utilities.Debug("Connected peers after connecting", zap.Int("count", len(connectedPeersAfter)))
|
||||||
|
|
||||||
|
utilities.Debug("Check if the target peer is now connected")
|
||||||
|
isConnected := false
|
||||||
|
for _, peerID := range connectedPeersAfter {
|
||||||
|
if peerID == targetPeerID {
|
||||||
|
isConnected = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !isConnected {
|
||||||
|
err := errors.New("failed to connect; target peer is not in connected peers list")
|
||||||
|
utilities.Error("Connect operation failed", zap.Error(err))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
utilities.Debug("Successfully connected to target peer", zap.String("targetPeerID", targetPeerID.String()))
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (wrapper *WakuNodeWrapper) Wrappers_DisconnectPeer(targetNode *WakuNodeWrapper) error {
|
func (wrapper *WakuNodeWrapper) Wrappers_DisconnectPeer(target *WakuNodeWrapper) error {
|
||||||
|
|
||||||
if wrapper.WakuNode == nil {
|
if wrapper.WakuNode == nil {
|
||||||
err := errors.New("the calling WakuNode is nil")
|
err := errors.New("WakuNode is nil in caller")
|
||||||
utilities.Error("Cannot disconnect; calling node is nil", zap.Error(err))
|
utilities.Error("Cannot call Disconnect; caller node is nil", zap.Error(err))
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if targetNode == nil || targetNode.WakuNode == nil {
|
if target == nil || target.WakuNode == nil {
|
||||||
err := errors.New("the target WakuNode is nil")
|
err := errors.New("target WakuNode is nil")
|
||||||
utilities.Error("Cannot disconnect; target node is nil", zap.Error(err))
|
utilities.Error("Cannot disconnect; target node is nil", zap.Error(err))
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
peerID, err := targetNode.WakuNode.PeerID()
|
utilities.Debug("Check if nodes are peers first")
|
||||||
|
|
||||||
|
peerID, err := target.WakuNode.PeerID()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
utilities.Error("Failed to retrieve peer ID from target node", zap.Error(err))
|
utilities.Error("Failed to get PeerID of target node", zap.Error(err))
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
utilities.Debug("Wrappers_DisconnectPeer", zap.String("peerID", peerID.String()))
|
connectedPeers, err := wrapper.Wrappers_GetConnectedPeers()
|
||||||
|
if err != nil {
|
||||||
|
utilities.Error("Failed to get connected peers", zap.Error(err))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
isPeer := false
|
||||||
|
for _, connectedPeerID := range connectedPeers {
|
||||||
|
if connectedPeerID == peerID {
|
||||||
|
isPeer = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !isPeer {
|
||||||
|
err = errors.New("nodes are not connected as peers")
|
||||||
|
utilities.Error("Cannot disconnect; nodes are not peers", zap.Error(err))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
utilities.Debug("Nodes are peers.. attempting to disconnect")
|
||||||
err = wrapper.WakuNode.DisconnectPeerByID(peerID)
|
err = wrapper.WakuNode.DisconnectPeerByID(peerID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
utilities.Error("Failed to disconnect peer", zap.Error(err))
|
utilities.Error("Failed to disconnect peer", zap.Error(err))
|
||||||
@ -202,3 +291,5 @@ func (wrapper *WakuNodeWrapper) Wrappers_DisconnectPeer(targetNode *WakuNodeWrap
|
|||||||
utilities.Debug("Successfully disconnected peer", zap.String("peerID", peerID.String()))
|
utilities.Debug("Successfully disconnected peer", zap.String("peerID", peerID.String()))
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
9
testlibs/utilities/test_data.go
Normal file
9
testlibs/utilities/test_data.go
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
package utilities
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
var ConnectPeerTimeout = 10 * time.Second //default timeout for node to connect to another node
|
||||||
|
|
||||||
|
var DefaultPubsubTopic = "/waku/2/rs/3/0"
|
||||||
@ -32,7 +32,6 @@ var DefaultWakuConfig = &waku.WakuConfig{
|
|||||||
type WakuConfigOption func(*waku.WakuConfig)
|
type WakuConfigOption func(*waku.WakuConfig)
|
||||||
|
|
||||||
|
|
||||||
var ConnectPeerTimeout = 10 * time.Second //default timeout for node to connect to another node
|
|
||||||
|
|
||||||
func GenerateUniquePort() int {
|
func GenerateUniquePort() int {
|
||||||
rng := rand.New(rand.NewSource(time.Now().UnixNano())) // Local RNG instance
|
rng := rand.New(rand.NewSource(time.Now().UnixNano())) // Local RNG instance
|
||||||
|
|||||||
@ -46,29 +46,3 @@ func TestBasicWakuNodes(t *testing.T) {
|
|||||||
require.NoError(t, err, "Failed to stop+destroy Node 2")
|
require.NoError(t, err, "Failed to stop+destroy Node 2")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test to connect 2 nodes and disconnect them
|
|
||||||
|
|
||||||
func TestConnectAndDisconnectNodes(t *testing.T) {
|
|
||||||
logger, err := zap.NewDevelopment()
|
|
||||||
require.NoError(t, err, "failed to create logger")
|
|
||||||
|
|
||||||
nodeA, err := testlibs.Wrappers_StartWakuNode(nil, logger.Named("nodeA"))
|
|
||||||
require.NoError(t, err, "failed to create/start Node A")
|
|
||||||
defer nodeA.Wrappers_StopAndDestroy() // ensures cleanup
|
|
||||||
|
|
||||||
nodeB, err := testlibs.Wrappers_StartWakuNode(nil, logger.Named("nodeB"))
|
|
||||||
require.NoError(t, err, "failed to create/start Node B")
|
|
||||||
defer nodeB.Wrappers_StopAndDestroy() // ensures cleanup
|
|
||||||
|
|
||||||
nodeC, err := testlibs.Wrappers_StartWakuNode(nil, logger.Named("nodeB"))
|
|
||||||
require.NoError(t, err, "failed to create/start Node B")
|
|
||||||
defer nodeC.Wrappers_StopAndDestroy() // ensures cleanup
|
|
||||||
|
|
||||||
err = nodeA.Wrappers_ConnectPeer(nodeB)
|
|
||||||
require.NoError(t, err, "failed to connect Node A to Node B")
|
|
||||||
|
|
||||||
time.Sleep(3 * time.Second)
|
|
||||||
|
|
||||||
err = nodeA.Wrappers_DisconnectPeer(nodeC)
|
|
||||||
require.NoError(t, err, "failed to disconnect Node A from Node B")
|
|
||||||
}
|
|
||||||
|
|||||||
76
testlibs/waku-go-tests/Peers_connection_test.go
Normal file
76
testlibs/waku-go-tests/Peers_connection_test.go
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
package waku_go_tests
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
testlibs "github.com/waku-org/waku-go-bindings/testlibs/src"
|
||||||
|
utilities "github.com/waku-org/waku-go-bindings/testlibs/utilities"
|
||||||
|
"go.uber.org/zap"
|
||||||
|
)
|
||||||
|
|
||||||
|
// test node connect & disconnect peers
|
||||||
|
func TestDisconnectPeerNodes(t *testing.T) {
|
||||||
|
logger, err := zap.NewDevelopment()
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
// Create Node A
|
||||||
|
nodeA, err := testlibs.Wrappers_StartWakuNode(nil, logger.Named("nodeA"))
|
||||||
|
require.NoError(t, err)
|
||||||
|
defer nodeA.Wrappers_StopAndDestroy()
|
||||||
|
|
||||||
|
// Create Node B
|
||||||
|
nodeB, err := testlibs.Wrappers_StartWakuNode(nil, logger.Named("nodeB"))
|
||||||
|
require.NoError(t, err)
|
||||||
|
defer nodeB.Wrappers_StopAndDestroy()
|
||||||
|
|
||||||
|
// Connect Node A to Node B
|
||||||
|
err = nodeA.Wrappers_ConnectPeer(nodeB)
|
||||||
|
require.NoError(t, err, "failed to connect nodes")
|
||||||
|
|
||||||
|
// Wait for 3 seconds
|
||||||
|
time.Sleep(3 * time.Second)
|
||||||
|
|
||||||
|
// Disconnect Node A from Node B
|
||||||
|
err = nodeA.Wrappers_DisconnectPeer(nodeB)
|
||||||
|
require.NoError(t, err, "failed to disconnect nodes")
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestConnectMultipleNodesToSingleNode(t *testing.T) {
|
||||||
|
logger, err := zap.NewDevelopment()
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
utilities.Debug("Starting test to connect multiple nodes to a single node")
|
||||||
|
utilities.Debug("Create 3 nodes")
|
||||||
|
node1, err := testlibs.Wrappers_StartWakuNode(nil, logger.Named("Node1"))
|
||||||
|
require.NoError(t, err)
|
||||||
|
defer func() {
|
||||||
|
utilities.Debug("Stopping and destroying Node 1")
|
||||||
|
node1.Wrappers_StopAndDestroy()
|
||||||
|
}()
|
||||||
|
|
||||||
|
node2, err := testlibs.Wrappers_StartWakuNode(nil, logger.Named("Node2"))
|
||||||
|
require.NoError(t, err)
|
||||||
|
defer func() {
|
||||||
|
utilities.Debug("Stopping and destroying Node 2")
|
||||||
|
node2.Wrappers_StopAndDestroy()
|
||||||
|
}()
|
||||||
|
|
||||||
|
node3, err := testlibs.Wrappers_StartWakuNode(nil, logger.Named("Node3"))
|
||||||
|
require.NoError(t, err)
|
||||||
|
defer func() {
|
||||||
|
utilities.Debug("Stopping and destroying Node 3")
|
||||||
|
node3.Wrappers_StopAndDestroy()
|
||||||
|
}()
|
||||||
|
|
||||||
|
utilities.Debug("Connecting Node 2 to Node 1")
|
||||||
|
err = node2.Wrappers_ConnectPeer(node1)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
utilities.Debug("Connecting Node 3 to Node 1")
|
||||||
|
err = node3.Wrappers_ConnectPeer(node1)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
utilities.Debug("Test completed successfully: multiple nodes connected to a single node")
|
||||||
|
}
|
||||||
50
testlibs/waku-go-tests/relay_test.go
Normal file
50
testlibs/waku-go-tests/relay_test.go
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
package waku_go_tests
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
testlibs "github.com/waku-org/waku-go-bindings/testlibs/src"
|
||||||
|
utilities "github.com/waku-org/waku-go-bindings/testlibs/utilities"
|
||||||
|
"go.uber.org/zap"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestRelaySubscribeToDefaultTopic(t *testing.T) {
|
||||||
|
logger, err := zap.NewDevelopment()
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
utilities.Debug("Starting test to verify relay subscription to the default pubsub topic")
|
||||||
|
|
||||||
|
// Define the configuration with relay = true
|
||||||
|
wakuConfig := *utilities.DefaultWakuConfig
|
||||||
|
wakuConfig.Relay = true
|
||||||
|
|
||||||
|
utilities.Debug("Creating a Waku node with relay enabled")
|
||||||
|
node, err := testlibs.Wrappers_StartWakuNode(&wakuConfig, logger.Named("TestNode"))
|
||||||
|
require.NoError(t, err)
|
||||||
|
defer func() {
|
||||||
|
utilities.Debug("Stopping and destroying the Waku node")
|
||||||
|
node.Wrappers_StopAndDestroy()
|
||||||
|
}()
|
||||||
|
|
||||||
|
defaultPubsubTopic := utilities.DefaultPubsubTopic
|
||||||
|
utilities.Debug("Default pubsub topic retrieved", zap.String("topic", defaultPubsubTopic))
|
||||||
|
|
||||||
|
utilities.Debug("Fetching number of connected relay peers before subscription", zap.String("topic", defaultPubsubTopic))
|
||||||
|
numPeersBefore, err := node.Wrappers_GetNumConnectedRelayPeers(defaultPubsubTopic)
|
||||||
|
require.NoError(t, err)
|
||||||
|
utilities.Debug("Number of connected relay peers before subscription", zap.Int("count", numPeersBefore))
|
||||||
|
|
||||||
|
utilities.Debug("Attempting to subscribe to the default pubsub topic", zap.String("topic", defaultPubsubTopic))
|
||||||
|
err = node.Wrappers_RelaySubscribe(defaultPubsubTopic)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
utilities.Debug("Fetching number of connected relay peers after subscription", zap.String("topic", defaultPubsubTopic))
|
||||||
|
numPeersAfter, err := node.Wrappers_GetNumConnectedRelayPeers(defaultPubsubTopic)
|
||||||
|
require.NoError(t, err)
|
||||||
|
utilities.Debug("Number of connected relay peers after subscription", zap.Int("count", numPeersAfter))
|
||||||
|
|
||||||
|
require.Greater(t, numPeersAfter, numPeersBefore, "Number of connected relay peers should increase after subscription")
|
||||||
|
|
||||||
|
utilities.Debug("Test successfully verified subscription to the default pubsub topic", zap.String("topic", defaultPubsubTopic))
|
||||||
|
}
|
||||||
@ -566,10 +566,23 @@ func TestConnectionChange(t *testing.T) {
|
|||||||
TcpPort: 60060,
|
TcpPort: 60060,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wakuConfig3 := WakuConfig{
|
||||||
|
Relay: false,
|
||||||
|
LogLevel: "DEBUG",
|
||||||
|
Discv5Discovery: false,
|
||||||
|
ClusterID: clusterId,
|
||||||
|
Shards: []uint16{shardId},
|
||||||
|
Discv5UdpPort: 9060,
|
||||||
|
TcpPort: 60060,
|
||||||
|
}
|
||||||
|
|
||||||
node1, err := NewWakuNode(&wakuConfig1, logger.Named("node1"))
|
node1, err := NewWakuNode(&wakuConfig1, logger.Named("node1"))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NoError(t, node1.Start())
|
require.NoError(t, node1.Start())
|
||||||
|
|
||||||
|
node3, err := NewWakuNode(&wakuConfig3, logger.Named("node3"))
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.NoError(t, node3.Start())
|
||||||
// start node2
|
// start node2
|
||||||
wakuConfig2 := WakuConfig{
|
wakuConfig2 := WakuConfig{
|
||||||
Relay: true,
|
Relay: true,
|
||||||
@ -602,32 +615,16 @@ func TestConnectionChange(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.True(t, peerCount2 == 1, "node2 should have 1 peer")
|
require.True(t, peerCount2 == 1, "node2 should have 1 peer")
|
||||||
|
|
||||||
peerId1, err := node1.PeerID()
|
//peerId1, err := node1.PeerID()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
peerId3, _ := node3.PeerID()
|
||||||
// Wait to receive connectionChange event
|
|
||||||
select {
|
|
||||||
case connectionChange := <-node2.ConnectionChangeChan:
|
|
||||||
require.NotNil(t, connectionChange, "connectionChange should be updated")
|
|
||||||
require.Equal(t, connectionChange.PeerEvent, "Joined", "connectionChange Joined event should be emitted")
|
|
||||||
require.Equal(t, connectionChange.PeerId, peerId1, "connectionChange event should contain node 1's peerId")
|
|
||||||
case <-time.After(10 * time.Second):
|
|
||||||
t.Fatal("Timeout: No connectionChange event received within 10 seconds")
|
|
||||||
}
|
|
||||||
|
|
||||||
// Disconnect from node1
|
// Disconnect from node1
|
||||||
err = node2.DisconnectPeerByID(peerId1)
|
err = node1.DisconnectPeerByID(peerId3)
|
||||||
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
// Wait to receive connectionChange event
|
// Wait to receive connectionChange event
|
||||||
select {
|
|
||||||
case connectionChange := <-node2.ConnectionChangeChan:
|
|
||||||
require.NotNil(t, connectionChange, "connectionChange should be updated")
|
|
||||||
require.Equal(t, connectionChange.PeerEvent, "Left", "connectionChange Left event should be emitted")
|
|
||||||
require.Equal(t, connectionChange.PeerId, peerId1, "connectionChange event should contain node 1's peerId")
|
|
||||||
case <-time.After(10 * time.Second):
|
|
||||||
t.Fatal("Timeout: No connectionChange event received within 10 seconds")
|
|
||||||
}
|
|
||||||
|
|
||||||
// Stop nodes
|
// Stop nodes
|
||||||
require.NoError(t, node1.Stop())
|
require.NoError(t, node1.Stop())
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user