Adding wrappers and new test

This commit is contained in:
aya 2025-01-21 13:26:06 +02:00
parent d517abc07b
commit 80670e54f5
3 changed files with 116 additions and 0 deletions

View File

@ -0,0 +1,42 @@
package testlibs
import (
"github.com/waku-org/waku-go-bindings/waku"
"go.uber.org/zap"
)
func Wrappers_CreateWakuNode(customConfig *waku.WakuConfig, logger *zap.Logger) (*waku.WakuNode, error) {
config := *DefaultWakuConfig
config.Discv5UdpPort = GenerateUniquePort()
config.TcpPort = GenerateUniquePort()
if customConfig != nil {
if customConfig.Relay {
config.Relay = customConfig.Relay
}
if customConfig.LogLevel != "" {
config.LogLevel = customConfig.LogLevel
}
if customConfig.Discv5Discovery {
config.Discv5Discovery = customConfig.Discv5Discovery
}
if customConfig.ClusterID != 0 {
config.ClusterID = customConfig.ClusterID
}
if len(customConfig.Shards) > 0 {
config.Shards = customConfig.Shards
}
if customConfig.PeerExchange {
config.PeerExchange = customConfig.PeerExchange
}
}
node, err := waku.NewWakuNode(&config, logger)
if err != nil {
return nil, err
}
return node, nil
}

42
testlibs/src/utils.go Normal file
View File

@ -0,0 +1,42 @@
package testlibs
import (
"math/rand"
"sync"
"time"
"github.com/waku-org/waku-go-bindings/waku"
)
var (
MinPort = 1024 // Minimum allowable port (exported)
MaxPort = 65535 // Maximum allowable port (exported)
usedPorts = make(map[int]bool) // Tracks used ports (internal to package)
portsMutex sync.Mutex // Ensures thread-safe access to usedPorts
)
// Default configuration values
var DefaultWakuConfig = &waku.WakuConfig{
Relay: false,
LogLevel: "DEBUG",
Discv5Discovery: true,
ClusterID: 16,
Shards: []uint16{64},
PeerExchange: false,
}
func GenerateUniquePort() int {
rng := rand.New(rand.NewSource(time.Now().UnixNano())) // Local RNG instance
for {
port := rng.Intn(MaxPort-MinPort+1) + MinPort
portsMutex.Lock()
if !usedPorts[port] {
usedPorts[port] = true
portsMutex.Unlock()
return port
}
portsMutex.Unlock()
}
}

View File

@ -0,0 +1,32 @@
package waku_go_tests
import (
"testing"
testlibs "github.com/waku-org/waku-go-bindings/testlibs/src"
"go.uber.org/zap"
)
func TestCreateTwoWakuNodes(t *testing.T) {
logger, _ := zap.NewDevelopment()
node1, err := testlibs.Wrappers_CreateWakuNode(nil, logger)
if err != nil {
t.Fatalf("Failed to create node1: %v", err)
}
node2, err := testlibs.Wrappers_CreateWakuNode(nil, logger)
if err != nil {
t.Fatalf("Failed to create node2: %v", err)
}
if err := node1.Start(); err != nil {
t.Fatalf("Failed to start node1: %v", err)
}
if err := node2.Start(); err != nil {
t.Fatalf("Failed to start node2: %v", err)
}
node1.Stop()
node2.Stop()
}