From 6be464510d5f290c5112a6de904da640e428beef Mon Sep 17 00:00:00 2001 From: Gabriel mermelstein Date: Tue, 22 Jul 2025 18:34:32 +0200 Subject: [PATCH 01/12] chore_: building nwaku by default --- Makefile | 2 +- wakuv2/gowaku.go | 4 ++-- wakuv2/nwaku.go | 3 --- wakuv2/nwaku_test.go | 3 --- wakuv2/nwaku_utils.go | 3 --- wakuv2/pinger.go | 3 --- wakuv2/publisher.go | 3 --- wakuv2/result.go | 3 --- wakuv2/store_message_verifier.go | 3 --- wakuv2/storenode_requestor.go | 3 --- wakuv2/waku_test.go | 4 ++-- 11 files changed, 5 insertions(+), 29 deletions(-) diff --git a/Makefile b/Makefile index 82ea9c62e0c..e209c29b414 100644 --- a/Makefile +++ b/Makefile @@ -149,7 +149,7 @@ $(GO_CMD_BUILDS): ##@build Build any Go project from cmd folder LIBWAKU := $(CURDIR)/vendor/github.com/waku-org/waku-go-bindings/third_party/nwaku/build/libwaku.$(LIBWAKU_EXT) $(LIBWAKU): -ifeq ($(USE_NWAKU),true) +ifeq (true,true) @echo "Building libwaku" $(MAKE) -C $(CURDIR)/vendor/github.com/waku-org/waku-go-bindings/waku SHELL=/bin/bash endif diff --git a/wakuv2/gowaku.go b/wakuv2/gowaku.go index 50fb1e8e2ce..c089681a275 100644 --- a/wakuv2/gowaku.go +++ b/wakuv2/gowaku.go @@ -1,5 +1,5 @@ -//go:build !use_nwaku -// +build !use_nwaku +//go:build use_gowaku +// +build use_gowaku // Copyright 2019 The Waku Library Authors. // diff --git a/wakuv2/nwaku.go b/wakuv2/nwaku.go index 6ec21b259c2..935835b4798 100644 --- a/wakuv2/nwaku.go +++ b/wakuv2/nwaku.go @@ -1,6 +1,3 @@ -//go:build use_nwaku -// +build use_nwaku - package wakuv2 import "C" diff --git a/wakuv2/nwaku_test.go b/wakuv2/nwaku_test.go index ae23ed0a171..d079b608aa4 100644 --- a/wakuv2/nwaku_test.go +++ b/wakuv2/nwaku_test.go @@ -1,6 +1,3 @@ -//go:build use_nwaku -// +build use_nwaku - package wakuv2 import ( diff --git a/wakuv2/nwaku_utils.go b/wakuv2/nwaku_utils.go index c90831be015..2b4ce678e00 100644 --- a/wakuv2/nwaku_utils.go +++ b/wakuv2/nwaku_utils.go @@ -1,6 +1,3 @@ -//go:build use_nwaku -// +build use_nwaku - package wakuv2 // TODO-nwaku remove this entire file once go-waku is removed from status-go diff --git a/wakuv2/pinger.go b/wakuv2/pinger.go index 4fd40f5c2e6..d79ab168a24 100644 --- a/wakuv2/pinger.go +++ b/wakuv2/pinger.go @@ -1,6 +1,3 @@ -//go:build use_nwaku -// +build use_nwaku - package wakuv2 import ( diff --git a/wakuv2/publisher.go b/wakuv2/publisher.go index d530ae8ff65..e81056e0491 100644 --- a/wakuv2/publisher.go +++ b/wakuv2/publisher.go @@ -1,6 +1,3 @@ -//go:build use_nwaku -// +build use_nwaku - package wakuv2 import ( diff --git a/wakuv2/result.go b/wakuv2/result.go index 90eb39d53bd..251c86f482f 100644 --- a/wakuv2/result.go +++ b/wakuv2/result.go @@ -1,6 +1,3 @@ -//go:build use_nwaku -// +build use_nwaku - package wakuv2 import ( diff --git a/wakuv2/store_message_verifier.go b/wakuv2/store_message_verifier.go index 2b57e3da8ab..51e569a0786 100644 --- a/wakuv2/store_message_verifier.go +++ b/wakuv2/store_message_verifier.go @@ -1,6 +1,3 @@ -//go:build use_nwaku -// +build use_nwaku - package wakuv2 import ( diff --git a/wakuv2/storenode_requestor.go b/wakuv2/storenode_requestor.go index 268d8f3dd65..86ab9875614 100644 --- a/wakuv2/storenode_requestor.go +++ b/wakuv2/storenode_requestor.go @@ -1,6 +1,3 @@ -//go:build use_nwaku -// +build use_nwaku - package wakuv2 import ( diff --git a/wakuv2/waku_test.go b/wakuv2/waku_test.go index 845200f5b12..340e6868a24 100644 --- a/wakuv2/waku_test.go +++ b/wakuv2/waku_test.go @@ -1,5 +1,5 @@ -//go:build !use_nwaku -// +build !use_nwaku +//go:build use_gowaku +// +build use_gowaku package wakuv2 From b7c50c82fac53024b9e4403812a13eab679ec413 Mon Sep 17 00:00:00 2001 From: Gabriel mermelstein Date: Tue, 22 Jul 2025 19:24:51 +0200 Subject: [PATCH 02/12] chore_: excluding waku tests --- wakuv2/gowaku_test.go | 3 + wakuv2/nwaku_test.go | 992 ------------------------------------------ 2 files changed, 3 insertions(+), 992 deletions(-) diff --git a/wakuv2/gowaku_test.go b/wakuv2/gowaku_test.go index 8042c6501b7..1e7828aff9e 100644 --- a/wakuv2/gowaku_test.go +++ b/wakuv2/gowaku_test.go @@ -1,3 +1,6 @@ +//go:build use_gowaku +// +build use_gowaku + package wakuv2 import ( diff --git a/wakuv2/nwaku_test.go b/wakuv2/nwaku_test.go index d079b608aa4..99d0b50181f 100644 --- a/wakuv2/nwaku_test.go +++ b/wakuv2/nwaku_test.go @@ -1,993 +1 @@ package wakuv2 - -import ( - "context" - "errors" - "slices" - "testing" - "time" - - "github.com/cenkalti/backoff/v3" - "github.com/libp2p/go-libp2p/core/peer" - "go.uber.org/zap" - - "github.com/waku-org/waku-go-bindings/waku" - - "github.com/waku-org/go-waku/waku/v2/api/history" - "github.com/waku-org/go-waku/waku/v2/protocol/store" - - "github.com/stretchr/testify/require" - - "github.com/status-im/status-go/protocol/tt" -) - -// var testStoreENRBootstrap = "enrtree://AI4W5N5IFEUIHF5LESUAOSMV6TKWF2MB6GU2YK7PU4TYUGUNOCEPW@store.staging.status.nodes.status.im" -// var testBootENRBootstrap = "enrtree://AMOJVZX4V6EXP7NTJPMAYJYST2QP6AJXYW76IU6VGJS7UVSNDYZG4@boot.staging.status.nodes.status.im" - -/* -func setDefaultConfig(config *Config, lightMode bool) { - config.ClusterID = 16 - - if lightMode { - config.EnablePeerExchangeClient = true - config.LightClient = true - config.EnableDiscV5 = false - } else { - config.EnableDiscV5 = true - config.EnablePeerExchangeServer = true - config.LightClient = false - config.EnablePeerExchangeClient = false - } -}*/ - -/* -func TestDiscoveryV5(t *testing.T) { - config := &Config{} - setDefaultConfig(config, false) - config.DiscV5BootstrapNodes = []string{testStoreENRBootstrap} - config.DiscoveryLimit = 20 - w, err := New(nil, "shards.staging", config, nil, nil, nil, nil, nil) - require.NoError(t, err) - require.NoError(t, w.Start()) - err = tt.RetryWithBackOff(func() error { - if len(w.Peers()) == 0 { - return errors.New("no peers discovered") - } - return nil - }) - require.NoError(t, err) - require.NotEqual(t, 0, len(w.Peers())) - require.NoError(t, w.Stop()) -} -*/ -/* -func TestRestartDiscoveryV5(t *testing.T) { - config := &Config{} - setDefaultConfig(config, false) - // Use wrong discv5 bootstrap address, to simulate being offline - config.DiscV5BootstrapNodes = []string{"enrtree://AOGECG2SPND25EEFMAJ5WF3KSGJNSGV356DSTL2YVLLZWIV6SAYBM@1.1.1.2"} - config.DiscoveryLimit = 20 - config.UDPPort = 10002 - config.ClusterID = 16 - w, err := New(nil, "", config, nil, nil, nil, nil, nil) - require.NoError(t, err) - require.NoError(t, w.Start()) - require.False(t, w.seededBootnodesForDiscV5) - options := func(b *backoff.ExponentialBackOff) { - b.MaxElapsedTime = 2 * time.Second - } - // Sanity check, not great, but it's probably helpful - err = tt.RetryWithBackOff(func() error { - if len(w.Peers()) == 0 { - return errors.New("no peers discovered") - } - return nil - }, options) - require.Error(t, err) - w.discV5BootstrapNodes = []string{testStoreENRBootstrap} - options = func(b *backoff.ExponentialBackOff) { - b.MaxElapsedTime = 90 * time.Second - } - err = tt.RetryWithBackOff(func() error { - if len(w.Peers()) == 0 { - return errors.New("no peers discovered") - } - return nil - }, options) - require.NoError(t, err) - require.True(t, w.seededBootnodesForDiscV5) - require.NotEqual(t, 0, len(w.Peers())) - require.NoError(t, w.Stop()) -} -func TestRelayPeers(t *testing.T) { - config := &Config{ - EnableMissingMessageVerification: true, - } - setDefaultConfig(config, false) - w, err := New(nil, "", config, nil, nil, nil, nil, nil) - require.NoError(t, err) - require.NoError(t, w.Start()) - _, err = w.RelayPeersByTopic(config.DefaultShardPubsubTopic) - require.NoError(t, err) - // Ensure function returns an error for lightclient - config = &Config{} - config.ClusterID = 16 - config.LightClient = true - w, err = New(nil, "", config, nil, nil, nil, nil, nil) - require.NoError(t, err) - require.NoError(t, w.Start()) - _, err = w.RelayPeersByTopic(config.DefaultShardPubsubTopic) - require.Error(t, err) -} - -func parseNodes(rec []string) []*enode.Node { - var ns []*enode.Node - for _, r := range rec { - var n enode.Node - if err := n.UnmarshalText([]byte(r)); err != nil { - panic(err) - } - ns = append(ns, &n) - } - return ns -} -*/ -type testStorenodeConfigProvider struct { - storenode peer.AddrInfo -} - -func (t *testStorenodeConfigProvider) UseStorenodes() (bool, error) { - return true, nil -} - -func (t *testStorenodeConfigProvider) GetPinnedStorenode() (peer.AddrInfo, error) { - return peer.AddrInfo{}, nil -} - -func (t *testStorenodeConfigProvider) Storenodes() ([]peer.AddrInfo, error) { - return []peer.AddrInfo{t.storenode}, nil -} - -func newTestStorenodeConfigProvider(storenode peer.AddrInfo) history.StorenodeConfigProvider { - return &testStorenodeConfigProvider{ - storenode: storenode, - } -} - -// In order to run these tests, you must run an nwaku node -// -// Using Docker: -// -// IP_ADDRESS=$(hostname -I | awk '{print $1}'); -// docker run \ -// -p 61000:61000/tcp -p 8000:8000/udp -p 8646:8646/tcp harbor.status.im/wakuorg/nwaku:v0.33.0 \ -// --discv5-discovery=true --cluster-id=16 --log-level=DEBUG --shard=64 --tcp-port=61000 \ -// --nat=extip:${IP_ADDRESS} --discv5-udp-port=8000 --rest-address=0.0.0.0 --store --rest-port=8646 \ - -func TestBasicWakuV2(t *testing.T) { - extNodeRestPort := 8646 - storeNodeInfo, err := GetNwakuInfo(nil, &extNodeRestPort) - require.NoError(t, err) - - ctx := context.Background() - - wakuConfig := Config{ - UseThrottledPublish: true, - ClusterID: 16, - } - - nwakuConfig := waku.WakuConfig{ - TcpPort: 30303, - Nodekey: "11d0dcea28e86f81937a3bd1163473c7fbc0a0db54fd72914849bc47bdf78710", - Relay: true, - LogLevel: "DEBUG", - DnsDiscoveryUrl: "enrtree://AMOJVZX4V6EXP7NTJPMAYJYST2QP6AJXYW76IU6VGJS7UVSNDYZG4@boot.prod.status.nodes.status.im", - DnsDiscovery: true, - Discv5Discovery: true, - Staticnodes: []string{storeNodeInfo.ListenAddresses[0]}, - ClusterID: 16, - Shards: []uint16{64}, - } - - w, err := New(nil, "", &wakuConfig, &nwakuConfig, nil, nil, nil, nil, nil) - require.NoError(t, err) - require.NoError(t, w.Start()) - - enr, err := w.node.ENR() - require.NoError(t, err) - require.NotNil(t, enr) - - options := func(b *backoff.ExponentialBackOff) { - b.MaxElapsedTime = 30 * time.Second - } - - // Sanity check, not great, but it's probably helpful - err = tt.RetryWithBackOff(func() error { - numConnected, err := w.node.GetNumConnectedPeers() - if err != nil { - return err - } - // Have to be connected to at least 3 nodes: the static node, the bootstrap node, and one discovered node - if numConnected > 2 { - return nil - } - return errors.New("no peers discovered") - }, options) - require.NoError(t, err) - - // Get local store node address - storeNode, err := peer.AddrInfoFromString(storeNodeInfo.ListenAddresses[0]) - require.NoError(t, err) - - err = w.node.DialPeer(ctx, storeNode.Addrs[0], "") - require.NoError(t, err) - - w.StorenodeCycle.SetStorenodeConfigProvider(newTestStorenodeConfigProvider(*storeNode)) - - // Check that we are indeed connected to the store node - connectedStoreNodes, err := w.node.GetPeerIDsByProtocol(store.StoreQueryID_v300) - require.NoError(t, err) - require.True(t, slices.Contains(connectedStoreNodes, storeNode.ID), "nwaku should be connected to the store node") - - // Disconnect from the store node - err = w.node.DisconnectPeerByID(storeNode.ID) - require.NoError(t, err) - - // Check that we are indeed disconnected - connectedStoreNodes, err = w.node.GetPeerIDsByProtocol(store.StoreQueryID_v300) - require.NoError(t, err) - isDisconnected := !slices.Contains(connectedStoreNodes, storeNode.ID) - require.True(t, isDisconnected, "nwaku should be disconnected from the store node") - - // Re-connect - err = w.DialPeerByID(storeNode.ID) - require.NoError(t, err) - - // Check that we are connected again - connectedStoreNodes, err = w.node.GetPeerIDsByProtocol(store.StoreQueryID_v300) - require.NoError(t, err) - require.True(t, slices.Contains(connectedStoreNodes, storeNode.ID), "nwaku should be connected to the store node") - - /* filter := &common.Filter{ - PubsubTopic: w.cfg.DefaultShardPubsubTopic, - Messages: common.NewMemoryMessageStore(), - ContentTopics: common.NewTopicSetFromBytes([][]byte{{1, 2, 3, 4}}), - } - - _, err = w.Subscribe(filter) - require.NoError(t, err) - - msgTimestamp := w.timestamp() - contentTopic := maps.Keys(filter.ContentTopics)[0] - - time.Sleep(2 * time.Second) - - msgID, err := w.Send(w.cfg.DefaultShardPubsubTopic, &pb.WakuMessage{ - Payload: []byte{1, 2, 3, 4, 5}, - ContentTopic: contentTopic.ContentTopic(), - Version: proto.Uint32(0), - Timestamp: &msgTimestamp, - }, nil) - - require.NoError(t, err) - require.NotEqual(t, msgID, "1") - - time.Sleep(1 * time.Second) - - messages := filter.Retrieve() - require.Len(t, messages, 1) - - timestampInSeconds := msgTimestamp / int64(time.Second) - marginInSeconds := 20 - - options = func(b *backoff.ExponentialBackOff) { - b.MaxElapsedTime = 60 * time.Second - b.InitialInterval = 500 * time.Millisecond - } - err = tt.RetryWithBackOff(func() error { - err := w.HistoryRetriever.Query( - context.Background(), - store.FilterCriteria{ - ContentFilter: protocol.NewContentFilter(w.cfg.DefaultShardPubsubTopic, contentTopic.ContentTopic()), - TimeStart: proto.Int64((timestampInSeconds - int64(marginInSeconds)) * int64(time.Second)), - TimeEnd: proto.Int64((timestampInSeconds + int64(marginInSeconds)) * int64(time.Second)), - }, - *storeNode, - 10, - nil, false, - ) - - return err - - // TODO-nwaku - /*if err != nil || envelopeCount == 0 { - // in case of failure extend timestamp margin up to 40secs - if marginInSeconds < 40 { - marginInSeconds += 5 - } - return errors.New("no messages received from store node") - } - return nil - - }, options) - require.NoError(t, err) - - time.Sleep(10 * time.Second) */ - - require.NoError(t, w.Stop()) -} - -/* -type mapResolver map[string]string - -func (mr mapResolver) LookupTXT(ctx context.Context, name string) ([]string, error) { - if record, ok := mr[name]; ok { - return []string{record}, nil - } - return nil, errors.New("not found") -} - -var signingKeyForTesting, _ = crypto.ToECDSA(hexutil.MustDecode("0xdc599867fc513f8f5e2c2c9c489cde5e71362d1d9ec6e693e0de063236ed1240")) - -func makeTestTree(domain string, nodes []*enode.Node, links []string) (*ethdnsdisc.Tree, string) { - tree, err := ethdnsdisc.MakeTree(1, nodes, links) - if err != nil { - panic(err) - } - url, err := tree.Sign(signingKeyForTesting, domain) - if err != nil { - panic(err) - } - return tree, url -} -*/ - -func TestPeerExchange(t *testing.T) { - logger, err := zap.NewDevelopment() - require.NoError(t, err) - - discV5NodeConfig := Config{ - UseThrottledPublish: true, - ClusterID: 16, - } - - // start node that will be discovered by PeerExchange - discV5NodeWakuConfig := waku.WakuConfig{ - Relay: true, - LogLevel: "DEBUG", - Discv5Discovery: true, - ClusterID: 16, - Shards: []uint16{64}, - PeerExchange: false, - Discv5UdpPort: 9001, - TcpPort: 60010, - } - - discV5Node, err := New(nil, "", &discV5NodeConfig, &discV5NodeWakuConfig, logger.Named("discV5Node"), nil, nil, nil, nil) - require.NoError(t, err) - require.NoError(t, discV5Node.Start()) - - time.Sleep(1 * time.Second) - - discV5NodePeerId, err := discV5Node.node.PeerID() - require.NoError(t, err) - - discv5NodeEnr, err := discV5Node.node.ENR() - require.NoError(t, err) - - pxServerConfig := Config{ - UseThrottledPublish: true, - ClusterID: 16, - } - - // start node which serves as PeerExchange server - pxServerWakuConfig := waku.WakuConfig{ - Relay: true, - LogLevel: "DEBUG", - Discv5Discovery: true, - ClusterID: 16, - Shards: []uint16{64}, - PeerExchange: true, - Discv5UdpPort: 9000, - Discv5BootstrapNodes: []string{discv5NodeEnr.String()}, - TcpPort: 60011, - } - - pxServerNode, err := New(nil, "", &pxServerConfig, &pxServerWakuConfig, logger.Named("pxServerNode"), nil, nil, nil, nil) - require.NoError(t, err) - require.NoError(t, pxServerNode.Start()) - - // Adding an extra second to make sure PX cache is not empty - time.Sleep(2 * time.Second) - - serverNodeMa, err := pxServerNode.node.ListenAddresses() - require.NoError(t, err) - require.NotNil(t, serverNodeMa) - - // Sanity check, not great, but it's probably helpful - options := func(b *backoff.ExponentialBackOff) { - b.MaxElapsedTime = 30 * time.Second - } - - // Check that pxServerNode has discV5Node in its Peer Store - err = tt.RetryWithBackOff(func() error { - peers, err := pxServerNode.node.GetPeerIDsFromPeerStore() - - if err != nil { - return err - } - - if slices.Contains(peers, discV5NodePeerId) { - return nil - } - - return errors.New("pxServer is missing the discv5 node in its peer store") - }, options) - require.NoError(t, err) - - pxClientConfig := Config{ - UseThrottledPublish: true, - ClusterID: 16, - } - - // start light node which uses PeerExchange to discover peers - pxClientWakuConfig := waku.WakuConfig{ - Relay: false, - LogLevel: "DEBUG", - Discv5Discovery: false, - ClusterID: 16, - Shards: []uint16{64}, - PeerExchange: true, - Discv5UdpPort: 9002, - TcpPort: 60012, - PeerExchangeNode: serverNodeMa[0].String(), - } - - lightNode, err := New(nil, "", &pxClientConfig, &pxClientWakuConfig, logger.Named("lightNode"), nil, nil, nil, nil) - require.NoError(t, err) - require.NoError(t, lightNode.Start()) - - time.Sleep(1 * time.Second) - - pxServerPeerId, err := pxServerNode.node.PeerID() - require.NoError(t, err) - - // Check that the light node discovered the discV5Node and has both nodes in its peer store - err = tt.RetryWithBackOff(func() error { - peers, err := lightNode.node.GetPeerIDsFromPeerStore() - if err != nil { - return err - } - - if slices.Contains(peers, discV5NodePeerId) && slices.Contains(peers, pxServerPeerId) { - return nil - } - return errors.New("lightnode is missing peers") - }, options) - require.NoError(t, err) - - // Now perform the PX request manually to see if it also works - err = tt.RetryWithBackOff(func() error { - numPeersReceived, err := lightNode.node.PeerExchangeRequest(1) - if err != nil { - return err - } - - if numPeersReceived == 1 { - return nil - } - return errors.New("Peer Exchange is not returning peers") - }, options) - require.NoError(t, err) - - // Stop nodes - require.NoError(t, lightNode.Stop()) - require.NoError(t, pxServerNode.Stop()) - require.NoError(t, discV5Node.Stop()) - - /* logger, err := zap.NewDevelopment() - require.NoError(t, err) - // start node which serve as PeerExchange server - config := &Config{} - config.ClusterID = 16 - config.EnableDiscV5 = true - config.EnablePeerExchangeServer = true - config.EnablePeerExchangeClient = false - pxServerNode, err := New(nil, "", config, logger.Named("pxServerNode"), nil, nil, nil, nil) - require.NoError(t, err) - require.NoError(t, pxServerNode.Start()) - time.Sleep(1 * time.Second) - // start node that will be discovered by PeerExchange - config = &Config{} - config.ClusterID = 16 - config.EnableDiscV5 = true - config.EnablePeerExchangeServer = false - config.EnablePeerExchangeClient = false - enr, err := pxServerNode.ENR() - require.NoError(t, err) - config.DiscV5BootstrapNodes = []string{enr.String()} - discV5Node, err := New(nil, "", config, logger.Named("discV5Node"), nil, nil, nil, nil) - require.NoError(t, err) - require.NoError(t, discV5Node.Start()) - time.Sleep(1 * time.Second) - // start light node which use PeerExchange to discover peers - enrNodes := []*enode.Node{enr} - tree, url := makeTestTree("n", enrNodes, nil) - resolver := mapResolver(tree.ToTXT("n")) - config = &Config{} - config.ClusterID = 16 - config.EnablePeerExchangeServer = false - config.EnablePeerExchangeClient = true - config.LightClient = true - config.Resolver = resolver - config.WakuNodes = []string{url} - lightNode, err := New(nil, "", config, logger.Named("lightNode"), nil, nil, nil, nil) - require.NoError(t, err) - require.NoError(t, lightNode.Start()) - // Sanity check, not great, but it's probably helpful - options := func(b *backoff.ExponentialBackOff) { - b.MaxElapsedTime = 30 * time.Second - } - err = tt.RetryWithBackOff(func() error { - // we should not use lightNode.Peers() here as it only indicates peers that are connected right now, - // in light client mode,the peer will be closed via `w.node.Host().Network().ClosePeer(peerInfo.ID)` - // after invoking identifyAndConnect, instead, we should check the peerStore, peers from peerStore - // won't get deleted especially if they are statically added. - numConnected, err := lightNode.GetNumConnectedPeers() - if err != nil { - return err - } - if numConnected == 2 { - return nil - } - return errors.New("no peers discovered") - }, options) - require.NoError(t, err) - _, cancel := context.WithCancel(context.Background()) - defer cancel() - _, err = discV5Node.WakuPeerExchangeRequest(1) - require.NoError(t, err) - _, err = discV5Node.WakuPeerExchangeRequest(1) - require.Error(t, err) //should fail due to rate limit - require.NoError(t, lightNode.Stop()) - require.NoError(t, pxServerNode.Stop()) - require.NoError(t, discV5Node.Stop()) */ -} - -func TestDnsDiscover(t *testing.T) { - logger, err := zap.NewDevelopment() - require.NoError(t, err) - nodeConfig := Config{ - UseThrottledPublish: true, - ClusterID: 16, - Nameserver: "8.8.8.8", - } - nodeWakuConfig := waku.WakuConfig{ - Relay: true, - LogLevel: "DEBUG", - ClusterID: 16, - Shards: []uint16{64}, - Discv5UdpPort: 9040, - TcpPort: 60040, - } - node, err := New(nil, "", &nodeConfig, &nodeWakuConfig, logger.Named("node"), nil, nil, nil, nil) - require.NoError(t, err) - require.NoError(t, node.Start()) - time.Sleep(1 * time.Second) - sampleEnrTree := "enrtree://AMOJVZX4V6EXP7NTJPMAYJYST2QP6AJXYW76IU6VGJS7UVSNDYZG4@boot.prod.status.nodes.status.im" - - ctx, cancel := context.WithTimeout(context.TODO(), requestTimeout) - defer cancel() - res, err := node.node.DnsDiscovery(ctx, sampleEnrTree, nodeConfig.Nameserver) - require.NoError(t, err) - require.True(t, len(res) > 1, "multiple nodes should be returned from the DNS Discovery query") - // Stop nodes - require.NoError(t, node.Stop()) -} - -func TestDial(t *testing.T) { - logger, err := zap.NewDevelopment() - require.NoError(t, err) - dialerNodeConfig := Config{ - UseThrottledPublish: true, - ClusterID: 16, - } - // start node that will initiate the dial - dialerNodeWakuConfig := waku.WakuConfig{ - Relay: true, - LogLevel: "DEBUG", - Discv5Discovery: false, - ClusterID: 16, - Shards: []uint16{64}, - Discv5UdpPort: 9020, - TcpPort: 60020, - } - dialerNode, err := New(nil, "", &dialerNodeConfig, &dialerNodeWakuConfig, logger.Named("dialerNode"), nil, nil, nil, nil) - require.NoError(t, err) - require.NoError(t, dialerNode.Start()) - time.Sleep(1 * time.Second) - receiverNodeConfig := Config{ - UseThrottledPublish: true, - ClusterID: 16, - } - // start node that will receive the dial - receiverNodeWakuConfig := waku.WakuConfig{ - Relay: true, - LogLevel: "DEBUG", - Discv5Discovery: false, - ClusterID: 16, - Shards: []uint16{64}, - Discv5UdpPort: 9021, - TcpPort: 60021, - } - receiverNode, err := New(nil, "", &receiverNodeConfig, &receiverNodeWakuConfig, logger.Named("receiverNode"), nil, nil, nil, nil) - require.NoError(t, err) - require.NoError(t, receiverNode.Start()) - time.Sleep(1 * time.Second) - receiverMultiaddr, err := receiverNode.node.ListenAddresses() - require.NoError(t, err) - require.NotNil(t, receiverMultiaddr) - // Check that both nodes start with no connected peers - dialerPeerCount := dialerNode.PeerCount() - require.NoError(t, err) - require.True(t, dialerPeerCount == 0, "Dialer node should have no connected peers") - receiverPeerCount := receiverNode.PeerCount() - require.NoError(t, err) - require.True(t, receiverPeerCount == 0, "Receiver node should have no connected peers") - // Dial - err = dialerNode.DialPeer(receiverMultiaddr[0]) - require.NoError(t, err) - time.Sleep(1 * time.Second) - // Check that both nodes now have one connected peer - dialerPeerCount = dialerNode.PeerCount() - require.NoError(t, err) - require.True(t, dialerPeerCount == 1, "Dialer node should have 1 peer") - receiverPeerCount = receiverNode.PeerCount() - require.NoError(t, err) - require.True(t, receiverPeerCount == 1, "Receiver node should have 1 peer") - // Stop nodes - require.NoError(t, dialerNode.Stop()) - require.NoError(t, receiverNode.Stop()) -} - -/* -func TestWakuV2Filter(t *testing.T) { - t.Skip("flaky test") - enrTreeAddress := testBootENRBootstrap - envEnrTreeAddress := os.Getenv("ENRTREE_ADDRESS") - if envEnrTreeAddress != "" { - enrTreeAddress = envEnrTreeAddress - } - config := &Config{} - setDefaultConfig(config, true) - config.EnablePeerExchangeClient = false - config.Port = 0 - config.MinPeersForFilter = 2 - config.DiscV5BootstrapNodes = []string{enrTreeAddress} - config.DiscoveryLimit = 20 - config.WakuNodes = []string{enrTreeAddress} - w, err := New(nil, "", config, nil, nil, nil, nil, nil) - require.NoError(t, err) - require.NoError(t, w.Start()) - options := func(b *backoff.ExponentialBackOff) { - b.MaxElapsedTime = 10 * time.Second - } - time.Sleep(10 * time.Second) //TODO: Check if we can remove this sleep. - // Sanity check, not great, but it's probably helpful - err = tt.RetryWithBackOff(func() error { - peers, err := w.GetPeerIdsByProtocol(string(filter.FilterSubscribeID_v20beta1)) - if err != nil { - return err - } - if len(peers) < 2 { - return errors.New("no peers discovered") - } - return nil - }, options) - require.NoError(t, err) - testPubsubTopic := "/waku/2/rs/16/32" - contentTopicBytes := make([]byte, 4) - _, err = rand.Read(contentTopicBytes) - require.NoError(t, err) - filter := &common.Filter{ - Messages: common.NewMemoryMessageStore(), - PubsubTopic: testPubsubTopic, - ContentTopics: common.NewTopicSetFromBytes([][]byte{contentTopicBytes}), - } - fID, err := w.Subscribe(filter) - require.NoError(t, err) - msgTimestamp := w.timestamp() - contentTopic := maps.Keys(filter.ContentTopics)[0] - _, err = w.Send(testPubsubTopic, &pb.WakuMessage{ - Payload: []byte{1, 2, 3, 4, 5}, - ContentTopic: contentTopic.ContentTopic(), - Version: proto.Uint32(0), - Timestamp: &msgTimestamp, - }, nil) - require.NoError(t, err) - time.Sleep(5 * time.Second) - // Ensure there is at least 1 active filter subscription - subscriptions := w.FilterLightnode().Subscriptions() - require.Greater(t, len(subscriptions), 0) - messages := filter.Retrieve() - require.Len(t, messages, 1) - // Mock peers going down - _, err = w.FilterLightnode().UnsubscribeWithSubscription(w.ctx, subscriptions[0]) - require.NoError(t, err) - time.Sleep(10 * time.Second) - // Ensure there is at least 1 active filter subscription - subscriptions = w.FilterLightnode().Subscriptions() - require.Greater(t, len(subscriptions), 0) - // Ensure that messages are retrieved with a fresh sub - _, err = w.Send(testPubsubTopic, &pb.WakuMessage{ - Payload: []byte{1, 2, 3, 4, 5, 6}, - ContentTopic: contentTopic.ContentTopic(), - Version: proto.Uint32(0), - Timestamp: &msgTimestamp, - }, nil) - require.NoError(t, err) - time.Sleep(10 * time.Second) - messages = filter.Retrieve() - require.Len(t, messages, 1) - err = w.Unsubscribe(context.Background(), fID) - require.NoError(t, err) - require.NoError(t, w.Stop()) -} -func TestWakuV2Store(t *testing.T) { - t.Skip("deprecated. Storenode must use nwaku") - // Configuration for the first Waku node - config1 := &Config{ - Port: 0, - ClusterID: 16, - EnableDiscV5: false, - DiscoveryLimit: 20, - EnableStore: false, - StoreCapacity: 100, - StoreSeconds: 3600, - EnableMissingMessageVerification: true, - } - w1PeersCh := make(chan peer.IDSlice, 100) // buffered not to block on the send side - // Start the first Waku node - w1, err := New(nil, "", config1, nil, nil, nil, nil, func(cs types.ConnStatus) { - w1PeersCh <- maps.Keys(cs.Peers) - }) - require.NoError(t, err) - require.NoError(t, w1.Start()) - defer func() { - require.NoError(t, w1.Stop()) - close(w1PeersCh) - }() - // Configuration for the second Waku node - sql2, err := helpers.SetupTestMemorySQLDB(appdatabase.DbInitializer{}) - require.NoError(t, err) - config2 := &Config{ - Port: 0, - ClusterID: 16, - EnableDiscV5: false, - DiscoveryLimit: 20, - EnableStore: true, - StoreCapacity: 100, - StoreSeconds: 3600, - } - // Start the second Waku node - w2, err := New(nil, "", config2, nil, sql2, nil, nil, nil) - require.NoError(t, err) - require.NoError(t, w2.Start()) - w2EnvelopeCh := make(chan common.EnvelopeEvent, 100) - w2.SubscribeEnvelopeEvents(w2EnvelopeCh) - defer func() { - require.NoError(t, w2.Stop()) - close(w2EnvelopeCh) - }() - // Connect the two nodes directly - peer2Addr, err := w2.ListenAddresses() - require.NoError(t, err) - err = w1.DialPeer(peer2Addr[0]) - require.NoError(t, err) - // Create a filter for the second node to catch messages - filter := &common.Filter{ - Messages: common.NewMemoryMessageStore(), - PubsubTopic: config2.DefaultShardPubsubTopic, - ContentTopics: common.NewTopicSetFromBytes([][]byte{{1, 2, 3, 4}}), - } - _, err = w2.Subscribe(filter) - require.NoError(t, err) - time.Sleep(2 * time.Second) - // Send a message from the first node - msgTimestamp := w1.CurrentTime().UnixNano() - contentTopic := maps.Keys(filter.ContentTopics)[0] - _, err = w1.Send(config1.DefaultShardPubsubTopic, &pb.WakuMessage{ - Payload: []byte{1, 2, 3, 4, 5}, - ContentTopic: contentTopic.ContentTopic(), - Version: proto.Uint32(0), - Timestamp: &msgTimestamp, - }, nil) - require.NoError(t, err) - waitForEnvelope(t, contentTopic.ContentTopic(), w2EnvelopeCh) - // Retrieve the message from the second node's filter - messages := filter.Retrieve() - require.Len(t, messages, 1) - timestampInSeconds := msgTimestamp / int64(time.Second) - marginInSeconds := 5 - // Query the second node's store for the message - _, envelopeCount, err := w1.Query( - context.Background(), - w2.Host().ID(), - store.FilterCriteria{ - TimeStart: proto.Int64((timestampInSeconds - int64(marginInSeconds)) * int64(time.Second)), - TimeEnd: proto.Int64((timestampInSeconds + int64(marginInSeconds)) * int64(time.Second)), - ContentFilter: protocol.NewContentFilter(config1.DefaultShardPubsubTopic, contentTopic.ContentTopic()), - }, - nil, - nil, - false, - ) - require.NoError(t, err) - require.True(t, envelopeCount > 0, "no messages received from store node") -} -func waitForPeerConnection(t *testing.T, peerID peer.ID, peerCh chan peer.IDSlice) { - waitForPeerConnectionWithTimeout(t, peerID, peerCh, 3*time.Second) -} -func waitForPeerConnectionWithTimeout(t *testing.T, peerID peer.ID, peerCh chan peer.IDSlice, timeout time.Duration) { - ctx, cancel := context.WithTimeout(context.Background(), timeout) - defer cancel() - for { - select { - case peers := <-peerCh: - for _, p := range peers { - if p == peerID { - return - } - } - case <-ctx.Done(): - require.Fail(t, "timed out waiting for peer "+peerID.String()) - return - } - } -} -func waitForEnvelope(t *testing.T, contentTopic string, envCh chan common.EnvelopeEvent) { - ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) - defer cancel() - for { - select { - case env := <-envCh: - if env.Topic.ContentTopic() == contentTopic { - return - } - case <-ctx.Done(): - require.Fail(t, "timed out waiting for envelope's topic "+contentTopic) - return - } - } -} -func TestOnlineChecker(t *testing.T) { - w, err := New(nil, "shards.staging", nil, nil, nil, nil, nil, nil) - require.NoError(t, w.Start()) - require.NoError(t, err) - require.False(t, w.onlineChecker.IsOnline()) - w.ConnectionChanged(connection.State{Offline: false}) - require.True(t, w.onlineChecker.IsOnline()) - wg := sync.WaitGroup{} - wg.Add(1) - go func() { - defer wg.Done() - <-w.goingOnline - require.True(t, true) - }() - time.Sleep(100 * time.Millisecond) - w.ConnectionChanged(connection.State{Offline: true}) - require.False(t, w.onlineChecker.IsOnline()) - // Test lightnode online checker - config := &Config{} - config.ClusterID = 16 - config.LightClient = true - lightNode, err := New(nil, "shards.staging", config, nil, nil, nil, nil, nil) - require.NoError(t, err) - err = lightNode.Start() - require.NoError(t, err) - require.False(t, lightNode.onlineChecker.IsOnline()) - f := &common.Filter{} - lightNode.filterManager.SubscribeFilter("test", protocol.NewContentFilter(f.PubsubTopic, f.ContentTopics.ContentTopics()...)) -} -func TestLightpushRateLimit(t *testing.T) { - logger, err := zap.NewDevelopment() - require.NoError(t, err) - config0 := &Config{} - setDefaultConfig(config0, false) - w0PeersCh := make(chan peer.IDSlice, 5) // buffered not to block on the send side - // Start the relayu node - w0, err := New(nil, "", config0, logger.Named("relayNode"), nil, nil, nil, func(cs types.ConnStatus) { - w0PeersCh <- maps.Keys(cs.Peers) - }) - require.NoError(t, err) - require.NoError(t, w0.Start()) - defer func() { - require.NoError(t, w0.Stop()) - close(w0PeersCh) - }() - contentTopics := common.NewTopicSetFromBytes([][]byte{{1, 2, 3, 4}}) - filter := &common.Filter{ - PubsubTopic: config0.DefaultShardPubsubTopic, - Messages: common.NewMemoryMessageStore(), - ContentTopics: contentTopics, - } - _, err = w0.Subscribe(filter) - require.NoError(t, err) - config1 := &Config{} - setDefaultConfig(config1, false) - w1PeersCh := make(chan peer.IDSlice, 5) // buffered not to block on the send side - // Start the full node - w1, err := New(nil, "", config1, logger.Named("fullNode"), nil, nil, nil, func(cs types.ConnStatus) { - w1PeersCh <- maps.Keys(cs.Peers) - }) - require.NoError(t, err) - require.NoError(t, w1.Start()) - defer func() { - require.NoError(t, w1.Stop()) - close(w1PeersCh) - }() - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - //Connect the relay peer and full node - err = w1.DialPeer(ctx, w0.ListenAddresses()[0].String()) - require.NoError(t, err) - err = tt.RetryWithBackOff(func() error { - if len(w1.Peers()) == 0 { - return errors.New("no peers discovered") - } - return nil - }) - require.NoError(t, err) - config2 := &Config{} - setDefaultConfig(config2, true) - w2PeersCh := make(chan peer.IDSlice, 5) // buffered not to block on the send side - // Start the light node - w2, err := New(nil, "", config2, logger.Named("lightNode"), nil, nil, nil, func(cs types.ConnStatus) { - w2PeersCh <- maps.Keys(cs.Peers) - }) - require.NoError(t, err) - require.NoError(t, w2.Start()) - defer func() { - require.NoError(t, w2.Stop()) - close(w2PeersCh) - }() - //Use this instead of DialPeer to make sure the peer is added to PeerStore and can be selected for Lighpush - w2.AddDiscoveredPeer(w1.PeerID(), w1.ListenAddresses(), wps.Static, w1.cfg.DefaultShardedPubsubTopics, w1.node.ENR(), true) - waitForPeerConnectionWithTimeout(t, w2.Host().ID(), w1PeersCh, 5*time.Second) - event := make(chan common.EnvelopeEvent, 10) - w2.SubscribeEnvelopeEvents(event) - for i := range [4]int{} { - msgTimestamp := w2.timestamp() - _, err := w2.Send(config2.DefaultShardPubsubTopic, &pb.WakuMessage{ - Payload: []byte{1, 2, 3, 4, 5, 6, byte(i)}, - ContentTopic: maps.Keys(contentTopics)[0].ContentTopic(), - Version: proto.Uint32(0), - Timestamp: &msgTimestamp, - }, nil) - require.NoError(t, err) - time.Sleep(550 * time.Millisecond) - } - messages := filter.Retrieve() - require.Len(t, messages, 2) -} -func TestTelemetryFormat(t *testing.T) { - logger, err := zap.NewDevelopment() - require.NoError(t, err) - tc := NewBandwidthTelemetryClient(logger, "#") - s := metrics.Stats{ - TotalIn: 10, - TotalOut: 20, - RateIn: 30, - RateOut: 40, - } - m := make(map[libp2pprotocol.ID]metrics.Stats) - m[relay.WakuRelayID_v200] = s - m[filter.FilterPushID_v20beta1] = s - m[filter.FilterSubscribeID_v20beta1] = s - m[legacy_store.StoreID_v20beta4] = s - m[lightpush.LightPushID_v20beta1] = s - requestBody := tc.getTelemetryRequestBody(m) - _, err = json.Marshal(requestBody) - require.NoError(t, err) -} -*/ From 6342736b900cb413e26eb1f5a51e8099b66e9417 Mon Sep 17 00:00:00 2001 From: Gabriel mermelstein Date: Tue, 22 Jul 2025 19:30:18 +0200 Subject: [PATCH 03/12] chore_: building libwaku on generate --- Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index e209c29b414..d63f3d85fcb 100644 --- a/Makefile +++ b/Makefile @@ -214,7 +214,7 @@ statusgo-ios: ##@cross-compile Build status-go for iOS @echo "iOS framework cross compilation done in build/bin/Statusgo.xcframework" statusgo-library: generate -statusgo-library: $(LIBWAKU) ##@cross-compile Build status-go as static library for current platform +statusgo-library: ##@cross-compile Build status-go as static library for current platform ## cmd/library/README.md explains the magic incantation behind this mkdir -p build/bin/statusgo-lib go run cmd/library/*.go > build/bin/statusgo-lib/main.go @@ -231,7 +231,7 @@ statusgo-library: $(LIBWAKU) ##@cross-compile Build status-go as static library build-libwaku: $(LIBWAKU) statusgo-shared-library: generate -statusgo-shared-library: $(LIBWAKU) ##@cross-compile Build status-go as shared library for current platform +statusgo-shared-library: ##@cross-compile Build status-go as shared library for current platform ## cmd/library/README.md explains the magic incantation behind this mkdir -p build/bin/statusgo-lib go run cmd/library/*.go > build/bin/statusgo-lib/main.go @@ -282,6 +282,7 @@ generate: export GO_GENERATE_FAST_DEBUG ?= false generate: export GO_GENERATE_FAST_RECACHE ?= false generate: ##@ Run generate for all given packages using go-generate-fast, fallback to `go generate` (e.g. for docker) @GOROOT=$$(go env GOROOT) $(GO_GENERATE_CMD) $(PACKAGES) +generate: $(LIBWAKU) generate-contracts: go generate ./contracts From c62378153788926c68ea3a8c45c4b841e2c6b6a1 Mon Sep 17 00:00:00 2001 From: Gabriel mermelstein Date: Wed, 23 Jul 2025 11:12:27 +0200 Subject: [PATCH 04/12] fix_: exporting libwaku path in test script --- _assets/scripts/run_unit_tests.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/_assets/scripts/run_unit_tests.sh b/_assets/scripts/run_unit_tests.sh index 3750c58b415..69a923cd06a 100755 --- a/_assets/scripts/run_unit_tests.sh +++ b/_assets/scripts/run_unit_tests.sh @@ -1,10 +1,13 @@ #!/usr/bin/env bash set -o pipefail + GIT_ROOT=$(cd "${BASH_SOURCE%/*}" && git rev-parse --show-toplevel) source "${GIT_ROOT}/_assets/scripts/colors.sh" source "${GIT_ROOT}/_assets/scripts/codecov.sh" +export LD_LIBRARY_PATH="${GIT_ROOT}/vendor/github.com/waku-org/waku-go-bindings/third_party/nwaku/build:${LD_LIBRARY_PATH}" + if [[ $UNIT_TEST_RERUN_FAILS == 'true' ]]; then GOTESTSUM_EXTRAFLAGS="${GOTESTSUM_EXTRAFLAGS} --rerun-fails" elif [[ $UNIT_TEST_FAILFAST == 'true' ]]; then From 0404506f9bae68c53008d993d34ee2dd58c69559 Mon Sep 17 00:00:00 2001 From: Gabriel mermelstein Date: Wed, 23 Jul 2025 11:58:06 +0200 Subject: [PATCH 05/12] fix_: waku ports --- messaging/core_test_utils.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/messaging/core_test_utils.go b/messaging/core_test_utils.go index 4ef452e9e15..21b066c1c6f 100644 --- a/messaging/core_test_utils.go +++ b/messaging/core_test_utils.go @@ -10,6 +10,7 @@ import ( "github.com/status-im/status-go/messaging/types" wakutypes "github.com/status-im/status-go/waku/types" "github.com/status-im/status-go/wakuv2" + "github.com/waku-org/waku-go-bindings/waku" ) type TestMessagingEnvironment struct { @@ -113,9 +114,21 @@ func (tp *testPublicWakuAPI) Post(ctx context.Context, req wakutypes.NewMessage) } func newTestWakuWrapper() (*testWakuWrapper, error) { + + config := wakuv2.DefaultConfig + + tcpPort, udpPort, err := waku.GetFreePortIfNeeded(0, 0) + + if err != nil { + return nil, err + } + + config.Port = tcpPort + config.UDPPort = udpPort + w, err := wakuv2.New( nil, - &wakuv2.DefaultConfig, + &config, zap.NewNop(), nil, nil, From 6cf581765536464e9e92d9d114d435c0a6ecbac7 Mon Sep 17 00:00:00 2001 From: Gabriel mermelstein Date: Wed, 23 Jul 2025 12:36:22 +0200 Subject: [PATCH 06/12] fix_: imports --- messaging/core_test_utils.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/messaging/core_test_utils.go b/messaging/core_test_utils.go index 21b066c1c6f..e0f01f1b938 100644 --- a/messaging/core_test_utils.go +++ b/messaging/core_test_utils.go @@ -7,10 +7,11 @@ import ( "github.com/libp2p/go-libp2p/core/peer" "go.uber.org/zap" + "github.com/waku-org/waku-go-bindings/waku" + "github.com/status-im/status-go/messaging/types" wakutypes "github.com/status-im/status-go/waku/types" "github.com/status-im/status-go/wakuv2" - "github.com/waku-org/waku-go-bindings/waku" ) type TestMessagingEnvironment struct { From 9602a9b8e0f02bf6bac40573429e860677f1abc0 Mon Sep 17 00:00:00 2001 From: Gabriel mermelstein Date: Thu, 24 Jul 2025 09:52:48 +0200 Subject: [PATCH 07/12] chore_: Revert "fix_: waku ports" This reverts commit 46aeea14623540274e774d8cc3809a97f6d5f8e6. --- messaging/core_test_utils.go | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/messaging/core_test_utils.go b/messaging/core_test_utils.go index e0f01f1b938..0a727c52f61 100644 --- a/messaging/core_test_utils.go +++ b/messaging/core_test_utils.go @@ -115,21 +115,9 @@ func (tp *testPublicWakuAPI) Post(ctx context.Context, req wakutypes.NewMessage) } func newTestWakuWrapper() (*testWakuWrapper, error) { - - config := wakuv2.DefaultConfig - - tcpPort, udpPort, err := waku.GetFreePortIfNeeded(0, 0) - - if err != nil { - return nil, err - } - - config.Port = tcpPort - config.UDPPort = udpPort - w, err := wakuv2.New( nil, - &config, + &wakuv2.DefaultConfig, zap.NewNop(), nil, nil, From 16b708db16209a33b371d3e464c63e7518dbce93 Mon Sep 17 00:00:00 2001 From: Gabriel mermelstein Date: Thu, 24 Jul 2025 10:51:15 +0200 Subject: [PATCH 08/12] chore_: Revert "chore_: Revert "fix_: waku ports"" This reverts commit 0265cc17577c9d9ff810f31d8590246b750a757f. --- messaging/core_test_utils.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/messaging/core_test_utils.go b/messaging/core_test_utils.go index 0a727c52f61..e0f01f1b938 100644 --- a/messaging/core_test_utils.go +++ b/messaging/core_test_utils.go @@ -115,9 +115,21 @@ func (tp *testPublicWakuAPI) Post(ctx context.Context, req wakutypes.NewMessage) } func newTestWakuWrapper() (*testWakuWrapper, error) { + + config := wakuv2.DefaultConfig + + tcpPort, udpPort, err := waku.GetFreePortIfNeeded(0, 0) + + if err != nil { + return nil, err + } + + config.Port = tcpPort + config.UDPPort = udpPort + w, err := wakuv2.New( nil, - &wakuv2.DefaultConfig, + &config, zap.NewNop(), nil, nil, From 4e826b059c5d660489ff52fc02e810647f365d52 Mon Sep 17 00:00:00 2001 From: Gabriel mermelstein Date: Thu, 24 Jul 2025 11:08:18 +0200 Subject: [PATCH 09/12] fix_: removing double initialization --- protocol/messenger_base_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/protocol/messenger_base_test.go b/protocol/messenger_base_test.go index 49c68d22ad5..749a744586f 100644 --- a/protocol/messenger_base_test.go +++ b/protocol/messenger_base_test.go @@ -14,7 +14,6 @@ func (s *MessengerBaseTestSuite) setupMessaging() { var err error s.messagingEnv, err = messaging.NewTestMessagingEnvironment() s.Require().NoError(err) - s.Require().NoError(s.messagingEnv.Setup()) } func (s *MessengerBaseTestSuite) SetupTest() { From ed6fc0f3984310e4d9c36b319164568591c8bd17 Mon Sep 17 00:00:00 2001 From: Gabriel mermelstein Date: Thu, 24 Jul 2025 11:15:53 +0200 Subject: [PATCH 10/12] fix_: revert unnecessary change --- messaging/core_test_utils.go | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/messaging/core_test_utils.go b/messaging/core_test_utils.go index e0f01f1b938..c4b0bc378f3 100644 --- a/messaging/core_test_utils.go +++ b/messaging/core_test_utils.go @@ -7,8 +7,6 @@ import ( "github.com/libp2p/go-libp2p/core/peer" "go.uber.org/zap" - "github.com/waku-org/waku-go-bindings/waku" - "github.com/status-im/status-go/messaging/types" wakutypes "github.com/status-im/status-go/waku/types" "github.com/status-im/status-go/wakuv2" @@ -116,20 +114,9 @@ func (tp *testPublicWakuAPI) Post(ctx context.Context, req wakutypes.NewMessage) func newTestWakuWrapper() (*testWakuWrapper, error) { - config := wakuv2.DefaultConfig - - tcpPort, udpPort, err := waku.GetFreePortIfNeeded(0, 0) - - if err != nil { - return nil, err - } - - config.Port = tcpPort - config.UDPPort = udpPort - w, err := wakuv2.New( nil, - &config, + &wakuv2.DefaultConfig, zap.NewNop(), nil, nil, From f91e5d2fc091ec7bb524ebc8726a880ede3aba70 Mon Sep 17 00:00:00 2001 From: Gabriel mermelstein Date: Thu, 24 Jul 2025 11:17:05 +0200 Subject: [PATCH 11/12] fix_: remove empty spaces --- _assets/scripts/run_unit_tests.sh | 1 - messaging/core_test_utils.go | 1 - 2 files changed, 2 deletions(-) diff --git a/_assets/scripts/run_unit_tests.sh b/_assets/scripts/run_unit_tests.sh index 69a923cd06a..81fda745480 100755 --- a/_assets/scripts/run_unit_tests.sh +++ b/_assets/scripts/run_unit_tests.sh @@ -1,7 +1,6 @@ #!/usr/bin/env bash set -o pipefail - GIT_ROOT=$(cd "${BASH_SOURCE%/*}" && git rev-parse --show-toplevel) source "${GIT_ROOT}/_assets/scripts/colors.sh" source "${GIT_ROOT}/_assets/scripts/codecov.sh" diff --git a/messaging/core_test_utils.go b/messaging/core_test_utils.go index c4b0bc378f3..4ef452e9e15 100644 --- a/messaging/core_test_utils.go +++ b/messaging/core_test_utils.go @@ -113,7 +113,6 @@ func (tp *testPublicWakuAPI) Post(ctx context.Context, req wakutypes.NewMessage) } func newTestWakuWrapper() (*testWakuWrapper, error) { - w, err := wakuv2.New( nil, &wakuv2.DefaultConfig, From 3f529015870ed8b0a26e7462663c34a68204f2a4 Mon Sep 17 00:00:00 2001 From: Gabriel mermelstein Date: Thu, 24 Jul 2025 15:04:47 +0200 Subject: [PATCH 12/12] fix_: only close channel if not nil --- wakuv2/nwaku.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/wakuv2/nwaku.go b/wakuv2/nwaku.go index 935835b4798..d15e46fcac3 100644 --- a/wakuv2/nwaku.go +++ b/wakuv2/nwaku.go @@ -1064,7 +1064,9 @@ func (w *Waku) Stop() error { } } - close(w.goingOnline) + if w.goingOnline != nil { + close(w.goingOnline) + } w.wg.Wait()