Fix wrappers for relay

This commit is contained in:
aya 2025-02-01 17:29:32 +02:00
parent a6f653aac4
commit 7f579180ce
8 changed files with 79 additions and 2 deletions

View File

@ -9,6 +9,7 @@ import (
"github.com/waku-org/go-waku/waku/v2/protocol/pb"
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/common"
"go.uber.org/zap"
"google.golang.org/protobuf/proto"
)
@ -379,3 +380,33 @@ func (wrapper *WakuNodeWrapper) Wrappers_CreateMessage() *pb.WakuMessage {
utilities.Debug("Successfully created a valid WakuMessage")
return message
}
func (wrapper *WakuNodeWrapper) Wrappers_VerifyMessageReceived(expectedMessage *pb.WakuMessage, expectedHash common.MessageHash) error {
logger, _ := zap.NewDevelopment()
logger.Debug("Verifying if the message was received")
select {
case envelope := <-wrapper.MsgChan:
if envelope == nil {
logger.Debug("Received envelope is nil")
return errors.New("received envelope is nil")
}
if string(expectedMessage.Payload) != string(envelope.Message().Payload) {
logger.Debug("Payload does not match")
return errors.New("payload does not match")
}
if expectedMessage.ContentTopic != envelope.Message().ContentTopic {
logger.Debug("Content topic does not match")
return errors.New("content topic does not match")
}
if expectedHash != envelope.Hash() {
logger.Debug("Message hash does not match")
return errors.New("message hash does not match")
}
logger.Debug("Message received and verified successfully")
return nil
case <-time.After(5 * time.Second):
logger.Debug("Timeout: message not received within 5 seconds")
return errors.New("timeout: message not received within 5 seconds")
}
}

View File

@ -28,7 +28,7 @@ func (wrapper *WakuNodeWrapper) Wrappers_RelaySubscribe(pubsubTopic string) erro
// 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))
//utilities.Error("Subscription verification failed: no connected relay peers found", zap.Error(err))
return errors.New("subscription verification failed: no connected relay peers")
}

View File

@ -6,5 +6,5 @@ import (
var ConnectPeerTimeout = 10 * time.Second //default timeout for node to connect to another node
var DefaultPubsubTopic = "/waku/2/rs/3/0"
var DefaultPubsubTopic = "/waku/2/rs/16/64"
var PubsubTopic1 = "/waku/2/rs/3/1"

View File

@ -2,6 +2,7 @@ package waku_go_tests
import (
"testing"
"time"
"github.com/stretchr/testify/require"
testlibs "github.com/waku-org/waku-go-bindings/testlibs/src"
@ -48,3 +49,48 @@ func TestRelaySubscribeToDefaultTopic(t *testing.T) {
utilities.Debug("Test successfully verified subscription to the default pubsub topic", zap.String("topic", defaultPubsubTopic))
}
func TestRelayMessageTransmission(t *testing.T) {
logger, err := zap.NewDevelopment()
require.NoError(t, err)
logger.Debug("Starting TestRelayMessageTransmission")
// Configuration for sender node
senderConfig := *utilities.DefaultWakuConfig
senderConfig.Relay = true
senderNode, err := testlibs.Wrappers_StartWakuNode(&senderConfig, logger.Named("SenderNode"))
require.NoError(t, err)
defer senderNode.Wrappers_StopAndDestroy()
// Configuration for receiver node
receiverConfig := *utilities.DefaultWakuConfig
receiverConfig.Relay = true
receiverNode, err := testlibs.Wrappers_StartWakuNode(&receiverConfig, logger.Named("ReceiverNode"))
require.NoError(t, err)
defer receiverNode.Wrappers_StopAndDestroy()
logger.Debug("Connecting sender and receiver")
err = senderNode.Wrappers_ConnectPeer(receiverNode)
require.NoError(t, err)
logger.Debug("Subscribing receiver to the default pubsub topic")
defaultPubsubTopic := utilities.DefaultPubsubTopic
err = receiverNode.Wrappers_RelaySubscribe(defaultPubsubTopic)
require.NoError(t, err)
logger.Debug("Creating and publishing message")
message := senderNode.Wrappers_CreateMessage()
msgHash, err := senderNode.Wrappers_RelayPublish(defaultPubsubTopic, message)
require.NoError(t, err)
require.NotEmpty(t, msgHash)
logger.Debug("Waiting to ensure message delivery")
time.Sleep(2 * time.Second)
logger.Debug("Verifying message reception using the new wrapper")
err = receiverNode.Wrappers_VerifyMessageReceived(message, msgHash)
require.NoError(t, err, "message verification failed")
logger.Debug("TestRelayMessageTransmission completed successfully")
}

BIN
waku/store.sqlite3 Normal file

Binary file not shown.

BIN
waku/store.sqlite3-shm Normal file

Binary file not shown.

BIN
waku/store.sqlite3-wal Normal file

Binary file not shown.