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 }