Add basic test new wrappers

This commit is contained in:
aya 2025-01-21 21:44:14 +02:00
parent 80670e54f5
commit 8ccbabd7a4
4 changed files with 181 additions and 45 deletions

View File

@ -1,42 +1,92 @@
package testlibs
import (
"errors"
utilities "github.com/waku-org/waku-go-bindings/testlibs/utilities"
"github.com/waku-org/waku-go-bindings/waku"
"go.uber.org/zap"
)
func Wrappers_CreateWakuNode(customConfig *waku.WakuConfig, logger *zap.Logger) (*waku.WakuNode, error) {
type WakuNodeWrapper struct {
*waku.WakuNode
}
config := *DefaultWakuConfig
config.Discv5UdpPort = GenerateUniquePort()
config.TcpPort = GenerateUniquePort()
func Wrappers_CreateWakuNode(customCfg *waku.WakuConfig, logger *zap.Logger) (*waku.WakuNode, error) {
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
}
var nodeCfg waku.WakuConfig
if customCfg == nil {
nodeCfg = *utilities.DefaultWakuConfig
} else {
nodeCfg = *customCfg
}
node, err := waku.NewWakuNode(&config, logger)
nodeCfg.Discv5UdpPort = utilities.GenerateUniquePort()
nodeCfg.TcpPort = utilities.GenerateUniquePort()
utilities.Debug("Create node with default config")
node, err := waku.NewWakuNode(&nodeCfg, logger)
if err != nil {
utilities.Error("Can't create node")
return nil, err
}
return node, nil
}
func (node *WakuNodeWrapper) Wrappers_Start() error {
if node== nil || node.WakuNode == nil {
err := errors.New("WakuNode instance is nil")
utilities.Error("Failed to start WakuNode", zap.Error(err))
return err
}
utilities.Debug("Attempting to start WakuNode")
err := node.WakuNode.Start()
if err != nil {
utilities.Error("Failed to start WakuNode", zap.Error(err))
return err
}
utilities.Debug("Successfully started WakuNode")
return nil
}
// Stops the WakuNode instance.
func (node*WakuNodeWrapper) Wrappers_Stop() error {
if node== nil || node.WakuNode == nil {
err := errors.New("WakuNode instance is nil")
utilities.Error("Failed to stop WakuNode", zap.Error(err))
return err
}
utilities.Debug("Attempting to stop WakuNode")
err := node.WakuNode.Stop()
if err != nil {
utilities.Error("Failed to stop WakuNode", zap.Error(err))
return err
}
utilities.Debug("Successfully stopped WakuNode")
return nil
}
// Destroys the WakuNode instance.
func (node*WakuNodeWrapper) Wrappers_Destroy() error {
if node== nil || node.WakuNode == nil {
err := errors.New("WakuNode instance is nil")
utilities.Error("Failed to destroy WakuNode", zap.Error(err))
return err
}
utilities.Debug("Attempting to destroy WakuNode")
err := node.WakuNode.Destroy()
if err != nil {
utilities.Error("Failed to destroy WakuNode", zap.Error(err))
return err
}
utilities.Debug("Successfully destroyed WakuNode")
return nil
}

View File

@ -0,0 +1,48 @@
package utilities
import (
"go.uber.org/zap"
)
var devLogger *zap.Logger
func init() {
var err error
devLogger, err = zap.NewDevelopment()
if err != nil {
panic("Failed to create development logger: " + err.Error())
}
}
func Debug(msg string, fields ...zap.Field) {
devLogger.Debug(msg, fields...)
}
func Info(msg string, fields ...zap.Field) {
devLogger.Info(msg, fields...)
}
func Warn(msg string, fields ...zap.Field) {
devLogger.Warn(msg, fields...)
}
func Error(msg string, fields ...zap.Field) {
devLogger.Error(msg, fields...)
}
func DPanic(msg string, fields ...zap.Field) {
devLogger.DPanic(msg, fields...)
}
func Panic(msg string, fields ...zap.Field) {
devLogger.Panic(msg, fields...)
}
func Fatal(msg string, fields ...zap.Field) {
devLogger.Fatal(msg, fields...)
}
func Sync() {
_ = devLogger.Sync()
}

View File

@ -1,4 +1,4 @@
package testlibs
package utilities
import (
"math/rand"
@ -23,8 +23,14 @@ var DefaultWakuConfig = &waku.WakuConfig{
ClusterID: 16,
Shards: []uint16{64},
PeerExchange: false,
Store: false,
Filter: false,
Lightpush: false,
}
// WakuConfigOption is a function that applies a change to a WakuConfig.
type WakuConfigOption func(*waku.WakuConfig)
func GenerateUniquePort() int {
rng := rand.New(rand.NewSource(time.Now().UnixNano())) // Local RNG instance

View File

@ -2,31 +2,63 @@ package waku_go_tests
import (
"testing"
utilities "github.com/waku-org/waku-go-bindings/testlibs/utilities"
testlibs "github.com/waku-org/waku-go-bindings/testlibs/src"
"go.uber.org/zap"
"github.com/stretchr/testify/require"
)
func TestCreateTwoWakuNodes(t *testing.T) {
logger, _ := zap.NewDevelopment()
func TestBasicWakuNodes(t *testing.T) {
utilities.Debug("Create logger isntance")
logger, err := zap.NewDevelopment()
defaultConfig := *utilities.DefaultWakuConfig
node1, err := testlibs.Wrappers_CreateWakuNode(nil, logger)
if err != nil {
t.Fatalf("Failed to create node1: %v", err)
}
utilities.Debug("Creating the first WakuNodeWrapper")
node1, err := testlibs.Wrappers_CreateWakuNode(&defaultConfig, logger)
require.NoError(t, err, "Failed to create the first WakuNodeWrapper")
utilities.Debug("Successfully created the first WakuNodeWrapper")
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)
}
utilities.Debug("Creating the second WakuNodeWrapper")
node2, err := testlibs.Wrappers_CreateWakuNode(&defaultConfig, logger)
require.NoError(t, err, "Failed to create the second WakuNodeWrapper")
utilities.Debug("Successfully created the second WakuNodeWrapper")
node1.Stop()
node2.Stop()
utilities.Debug("Starting the first WakuNodeWrapper")
err =
require.NoError(t, err, "Failed to start the first WakuNodeWrapper")
utilities.Debug("Successfully started the first WakuNodeWrapper")
utilities.Debug("Starting the second WakuNodeWrapper")
err = node2.Wrappers_Start()
require.NoError(t, err, "Failed to start the second WakuNodeWrapper")
utilities.Debug("Successfully started the second WakuNodeWrapper")
utilities.Debug("Stopping the first WakuNodeWrapper")
err = node1.Wrappers_Stop()
require.NoError(t, err, "Failed to stop the first WakuNodeWrapper")
utilities.Debug("Successfully stopped the first WakuNodeWrapper")
utilities.Debug("Stopping the second WakuNodeWrapper")
err = node2.Wrappers_Stop()
require.NoError(t, err, "Failed to stop the second WakuNodeWrapper")
utilities.Debug("Successfully stopped the second WakuNodeWrapper")
utilities.Debug("Destroying the first WakuNodeWrapper")
err = node1.Wrappers_Destroy()
require.NoError(t, err, "Failed to destroy the first WakuNodeWrapper")
utilities.Debug("Successfully destroyed the first WakuNodeWrapper")
utilities.Debug("Destroying the second WakuNodeWrapper")
err = node2.Wrappers_Destroy()
require.NoError(t, err, "Failed to destroy the second WakuNodeWrapper")
utilities.Debug("Successfully destroyed the second WakuNodeWrapper")
}