github.com/unicornultrafoundation/go-u2u@v1.0.0-rc1.0.20240205080301-e74a83d3fadc/cmd/u2u/launcher/config_custom_test.go (about)

     1  package launcher
     2  
     3  import (
     4  	"bytes"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  	"github.com/unicornultrafoundation/go-helios/consensus"
     9  	"github.com/unicornultrafoundation/go-helios/utils/cachescale"
    10  	"github.com/unicornultrafoundation/go-u2u/p2p/enode"
    11  
    12  	"github.com/unicornultrafoundation/go-u2u/evmcore"
    13  	"github.com/unicornultrafoundation/go-u2u/gossip"
    14  	"github.com/unicornultrafoundation/go-u2u/gossip/emitter"
    15  	"github.com/unicornultrafoundation/go-u2u/vecmt"
    16  )
    17  
    18  func TestConfigFile(t *testing.T) {
    19  	cacheRatio := cachescale.Ratio{
    20  		Base:   uint64(DefaultCacheSize*1 - ConstantCacheSize),
    21  		Target: uint64(DefaultCacheSize*2 - ConstantCacheSize),
    22  	}
    23  
    24  	src := config{
    25  		Node:           defaultNodeConfig(),
    26  		U2U:            gossip.DefaultConfig(cacheRatio),
    27  		Emitter:        emitter.DefaultConfig(),
    28  		TxPool:         evmcore.DefaultTxPoolConfig,
    29  		U2UStore:       gossip.DefaultStoreConfig(cacheRatio),
    30  		Hashgraph:      consensus.DefaultConfig(),
    31  		HashgraphStore: consensus.DefaultStoreConfig(cacheRatio),
    32  		VectorClock:    vecmt.DefaultConfig(cacheRatio),
    33  	}
    34  
    35  	canonical := func(nn []*enode.Node) []*enode.Node {
    36  		if len(nn) == 0 {
    37  			return []*enode.Node{}
    38  		}
    39  		return nn
    40  	}
    41  
    42  	for name, val := range map[string][]*enode.Node{
    43  		"Nil":     nil,
    44  		"Empty":   {},
    45  		"Default": asDefault,
    46  		"UserDefined": {enode.MustParse(
    47  			"enr:-HW4QIEFxJwyZzPQJPE2DbQpEu7FM1Gv99VqJ3CbLb22fm9_V9cfdZdSBpZCyrEb5UfMeC6k9WT0iaaeAjRcuzCfr4yAgmlkgnY0iXNlY3AyNTZrMaECps0D9hhmXEN5BMgVVe0xT5mpYU9zv4YxCdTApmfP-l0",
    48  		)},
    49  	} {
    50  		t.Run(name+"BootstrapNodes", func(t *testing.T) {
    51  			require := require.New(t)
    52  
    53  			src.Node.P2P.BootstrapNodes = val
    54  			src.Node.P2P.BootstrapNodesV5 = val
    55  
    56  			stream, err := tomlSettings.Marshal(&src)
    57  			require.NoError(err)
    58  
    59  			var got config
    60  			err = tomlSettings.NewDecoder(bytes.NewReader(stream)).Decode(&got)
    61  			require.NoError(err)
    62  
    63  			{ // toml workaround
    64  				src.Node.P2P.BootstrapNodes = canonical(src.Node.P2P.BootstrapNodes)
    65  				got.Node.P2P.BootstrapNodes = canonical(got.Node.P2P.BootstrapNodes)
    66  				src.Node.P2P.BootstrapNodesV5 = canonical(src.Node.P2P.BootstrapNodesV5)
    67  				got.Node.P2P.BootstrapNodesV5 = canonical(got.Node.P2P.BootstrapNodesV5)
    68  			}
    69  
    70  			require.Equal(src.Node.P2P.BootstrapNodes, got.Node.P2P.BootstrapNodes)
    71  			require.Equal(src.Node.P2P.BootstrapNodesV5, got.Node.P2P.BootstrapNodesV5)
    72  		})
    73  	}
    74  }