github.com/prysmaticlabs/prysm@v1.4.4/beacon-chain/node/config_test.go (about)

     1  package node
     2  
     3  import (
     4  	"flag"
     5  	"fmt"
     6  	"strconv"
     7  	"testing"
     8  
     9  	types "github.com/prysmaticlabs/eth2-types"
    10  	"github.com/prysmaticlabs/prysm/cmd/beacon-chain/flags"
    11  	"github.com/prysmaticlabs/prysm/shared/cmd"
    12  	"github.com/prysmaticlabs/prysm/shared/params"
    13  	"github.com/prysmaticlabs/prysm/shared/testutil/assert"
    14  	"github.com/prysmaticlabs/prysm/shared/testutil/require"
    15  	logTest "github.com/sirupsen/logrus/hooks/test"
    16  	"github.com/urfave/cli/v2"
    17  )
    18  
    19  func TestConfigureHistoricalSlasher(t *testing.T) {
    20  	params.SetupTestConfigCleanup(t)
    21  	hook := logTest.NewGlobal()
    22  
    23  	app := cli.App{}
    24  	set := flag.NewFlagSet("test", 0)
    25  	set.Bool(flags.HistoricalSlasherNode.Name, true, "")
    26  	cliCtx := cli.NewContext(&app, set, nil)
    27  
    28  	configureHistoricalSlasher(cliCtx)
    29  
    30  	assert.Equal(t, params.BeaconConfig().SlotsPerEpoch*4, params.BeaconConfig().SlotsPerArchivedPoint)
    31  	assert.LogsContain(t, hook,
    32  		fmt.Sprintf(
    33  			"Setting %d slots per archive point and %d max RPC page size for historical slasher usage",
    34  			params.BeaconConfig().SlotsPerArchivedPoint,
    35  			int(params.BeaconConfig().SlotsPerEpoch.Mul(params.BeaconConfig().MaxAttestations))),
    36  	)
    37  }
    38  
    39  func TestConfigureSlotsPerArchivedPoint(t *testing.T) {
    40  	params.SetupTestConfigCleanup(t)
    41  
    42  	app := cli.App{}
    43  	set := flag.NewFlagSet("test", 0)
    44  	set.Int(flags.SlotsPerArchivedPoint.Name, 0, "")
    45  	require.NoError(t, set.Set(flags.SlotsPerArchivedPoint.Name, strconv.Itoa(100)))
    46  	cliCtx := cli.NewContext(&app, set, nil)
    47  
    48  	configureSlotsPerArchivedPoint(cliCtx)
    49  
    50  	assert.Equal(t, types.Slot(100), params.BeaconConfig().SlotsPerArchivedPoint)
    51  }
    52  
    53  func TestConfigureProofOfWork(t *testing.T) {
    54  	params.SetupTestConfigCleanup(t)
    55  
    56  	app := cli.App{}
    57  	set := flag.NewFlagSet("test", 0)
    58  	set.Uint64(flags.ChainID.Name, 0, "")
    59  	set.Uint64(flags.NetworkID.Name, 0, "")
    60  	set.String(flags.DepositContractFlag.Name, "", "")
    61  	require.NoError(t, set.Set(flags.ChainID.Name, strconv.Itoa(100)))
    62  	require.NoError(t, set.Set(flags.NetworkID.Name, strconv.Itoa(200)))
    63  	require.NoError(t, set.Set(flags.DepositContractFlag.Name, "deposit"))
    64  	cliCtx := cli.NewContext(&app, set, nil)
    65  
    66  	configureEth1Config(cliCtx)
    67  
    68  	assert.Equal(t, uint64(100), params.BeaconConfig().DepositChainID)
    69  	assert.Equal(t, uint64(200), params.BeaconConfig().DepositNetworkID)
    70  	assert.Equal(t, "deposit", params.BeaconConfig().DepositContractAddress)
    71  }
    72  
    73  func TestConfigureNetwork(t *testing.T) {
    74  	params.SetupTestConfigCleanup(t)
    75  
    76  	app := cli.App{}
    77  	set := flag.NewFlagSet("test", 0)
    78  	bootstrapNodes := cli.StringSlice{}
    79  	set.Var(&bootstrapNodes, cmd.BootstrapNode.Name, "")
    80  	set.Int(flags.ContractDeploymentBlock.Name, 0, "")
    81  	require.NoError(t, set.Set(cmd.BootstrapNode.Name, "node1"))
    82  	require.NoError(t, set.Set(cmd.BootstrapNode.Name, "node2"))
    83  	require.NoError(t, set.Set(flags.ContractDeploymentBlock.Name, strconv.Itoa(100)))
    84  	cliCtx := cli.NewContext(&app, set, nil)
    85  
    86  	configureNetwork(cliCtx)
    87  
    88  	assert.DeepEqual(t, []string{"node1", "node2"}, params.BeaconNetworkConfig().BootstrapNodes)
    89  	assert.Equal(t, uint64(100), params.BeaconNetworkConfig().ContractDeploymentBlock)
    90  }
    91  
    92  func TestConfigureInterop(t *testing.T) {
    93  	params.SetupTestConfigCleanup(t)
    94  
    95  	tests := []struct {
    96  		name       string
    97  		flagSetter func() *cli.Context
    98  		configName string
    99  	}{
   100  		{
   101  			"nothing set",
   102  			func() *cli.Context {
   103  				app := cli.App{}
   104  				set := flag.NewFlagSet("test", 0)
   105  				return cli.NewContext(&app, set, nil)
   106  			},
   107  			"mainnet",
   108  		},
   109  		{
   110  			"mock votes set",
   111  			func() *cli.Context {
   112  				app := cli.App{}
   113  				set := flag.NewFlagSet("test", 0)
   114  				set.Bool(flags.InteropMockEth1DataVotesFlag.Name, false, "")
   115  				assert.NoError(t, set.Set(flags.InteropMockEth1DataVotesFlag.Name, "true"))
   116  				return cli.NewContext(&app, set, nil)
   117  			},
   118  			"interop",
   119  		},
   120  		{
   121  			"validators set",
   122  			func() *cli.Context {
   123  				app := cli.App{}
   124  				set := flag.NewFlagSet("test", 0)
   125  				set.Uint64(flags.InteropNumValidatorsFlag.Name, 0, "")
   126  				assert.NoError(t, set.Set(flags.InteropNumValidatorsFlag.Name, "20"))
   127  				return cli.NewContext(&app, set, nil)
   128  			},
   129  			"interop",
   130  		},
   131  		{
   132  			"genesis time set",
   133  			func() *cli.Context {
   134  				app := cli.App{}
   135  				set := flag.NewFlagSet("test", 0)
   136  				set.Uint64(flags.InteropGenesisTimeFlag.Name, 0, "")
   137  				assert.NoError(t, set.Set(flags.InteropGenesisTimeFlag.Name, "200"))
   138  				return cli.NewContext(&app, set, nil)
   139  			},
   140  			"interop",
   141  		},
   142  		{
   143  			"genesis state set",
   144  			func() *cli.Context {
   145  				app := cli.App{}
   146  				set := flag.NewFlagSet("test", 0)
   147  				set.String(flags.InteropGenesisStateFlag.Name, "", "")
   148  				assert.NoError(t, set.Set(flags.InteropGenesisStateFlag.Name, "/path/"))
   149  				return cli.NewContext(&app, set, nil)
   150  			},
   151  			"interop",
   152  		},
   153  	}
   154  
   155  	for _, tt := range tests {
   156  		t.Run(tt.name, func(t *testing.T) {
   157  			configureInteropConfig(tt.flagSetter())
   158  			assert.DeepEqual(t, tt.configName, params.BeaconConfig().ConfigName)
   159  		})
   160  	}
   161  }