diff --git a/testlibs/src/main-wrappers.go b/testlibs/src/main-wrappers.go index 86204bc..fe48e7e 100644 --- a/testlibs/src/main-wrappers.go +++ b/testlibs/src/main-wrappers.go @@ -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") + } +} diff --git a/testlibs/src/relay_wrapper.go b/testlibs/src/relay_wrapper.go index 7f3d059..2d6700f 100644 --- a/testlibs/src/relay_wrapper.go +++ b/testlibs/src/relay_wrapper.go @@ -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") } diff --git a/testlibs/src/store_wrappers.go b/testlibs/src/store_wrappers.go deleted file mode 100644 index e69de29..0000000 diff --git a/testlibs/utilities/test_data.go b/testlibs/utilities/test_data.go index 19d3556..357a852 100644 --- a/testlibs/utilities/test_data.go +++ b/testlibs/utilities/test_data.go @@ -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" diff --git a/testlibs/waku-go-tests/relay_test.go b/testlibs/waku-go-tests/relay_test.go index 52828b7..7f2185f 100644 --- a/testlibs/waku-go-tests/relay_test.go +++ b/testlibs/waku-go-tests/relay_test.go @@ -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") +} diff --git a/waku/store.sqlite3 b/waku/store.sqlite3 new file mode 100644 index 0000000..0de02ec Binary files /dev/null and b/waku/store.sqlite3 differ diff --git a/waku/store.sqlite3-shm b/waku/store.sqlite3-shm new file mode 100644 index 0000000..d192b63 Binary files /dev/null and b/waku/store.sqlite3-shm differ diff --git a/waku/store.sqlite3-wal b/waku/store.sqlite3-wal new file mode 100644 index 0000000..cf3c1ae Binary files /dev/null and b/waku/store.sqlite3-wal differ