mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-26 06:36:43 +00:00
* internal/cli: add support to overwrite config.toml via cli flags * fix lint and refactor * add extensive tests for flagset * fix type conversion for big.Int * add more tests for coverage * add t.parallel * internal/cli/flagset: handle flag conversion using interface * internal/cli/flagset: fix test
142 lines
4.2 KiB
Go
142 lines
4.2 KiB
Go
package server
|
|
|
|
import (
|
|
"math/big"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
// TestFlagsWithoutConfig tests all types of flags passed only
|
|
// via cli args.
|
|
func TestFlagsWithoutConfig(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
var c Command
|
|
|
|
args := []string{
|
|
"--identity", "",
|
|
"--datadir", "./data",
|
|
"--verbosity", "3",
|
|
"--rpc.batchlimit", "0",
|
|
"--snapshot",
|
|
"--bor.logs=false",
|
|
"--eth.requiredblocks", "a=b",
|
|
"--miner.gasprice", "30000000000",
|
|
"--miner.recommit", "20s",
|
|
"--rpc.evmtimeout", "5s",
|
|
"--rpc.txfeecap", "6.0",
|
|
"--http.api", "eth,bor",
|
|
"--ws.api", "",
|
|
"--gpo.maxprice", "5000000000000",
|
|
}
|
|
|
|
err := c.extractFlags(args)
|
|
|
|
require.NoError(t, err)
|
|
|
|
recommit, _ := time.ParseDuration("20s")
|
|
evmTimeout, _ := time.ParseDuration("5s")
|
|
|
|
require.Equal(t, c.config.Identity, "")
|
|
require.Equal(t, c.config.DataDir, "./data")
|
|
require.Equal(t, c.config.Verbosity, 3)
|
|
require.Equal(t, c.config.RPCBatchLimit, uint64(0))
|
|
require.Equal(t, c.config.Snapshot, true)
|
|
require.Equal(t, c.config.BorLogs, false)
|
|
require.Equal(t, c.config.RequiredBlocks, map[string]string{"a": "b"})
|
|
require.Equal(t, c.config.Sealer.GasPrice, big.NewInt(30000000000))
|
|
require.Equal(t, c.config.Sealer.Recommit, recommit)
|
|
require.Equal(t, c.config.JsonRPC.RPCEVMTimeout, evmTimeout)
|
|
require.Equal(t, c.config.JsonRPC.Http.API, []string{"eth", "bor"})
|
|
require.Equal(t, c.config.JsonRPC.Ws.API, []string(nil))
|
|
require.Equal(t, c.config.Gpo.MaxPrice, big.NewInt(5000000000000))
|
|
}
|
|
|
|
// TestFlagsWithoutConfig tests all types of flags passed only
|
|
// via config file.
|
|
func TestFlagsWithConfig(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
var c Command
|
|
|
|
args := []string{
|
|
"--config", "./testdata/test.toml",
|
|
}
|
|
|
|
err := c.extractFlags(args)
|
|
|
|
require.NoError(t, err)
|
|
|
|
recommit, _ := time.ParseDuration("20s")
|
|
evmTimeout, _ := time.ParseDuration("5s")
|
|
|
|
require.Equal(t, c.config.Identity, "")
|
|
require.Equal(t, c.config.DataDir, "./data")
|
|
require.Equal(t, c.config.Verbosity, 3)
|
|
require.Equal(t, c.config.RPCBatchLimit, uint64(0))
|
|
require.Equal(t, c.config.Snapshot, true)
|
|
require.Equal(t, c.config.BorLogs, false)
|
|
require.Equal(t, c.config.RequiredBlocks,
|
|
map[string]string{
|
|
"31000000": "0x2087b9e2b353209c2c21e370c82daa12278efd0fe5f0febe6c29035352cf050e",
|
|
"32000000": "0x875500011e5eecc0c554f95d07b31cf59df4ca2505f4dbbfffa7d4e4da917c68",
|
|
},
|
|
)
|
|
require.Equal(t, c.config.Sealer.GasPrice, big.NewInt(30000000000))
|
|
require.Equal(t, c.config.Sealer.Recommit, recommit)
|
|
require.Equal(t, c.config.JsonRPC.RPCEVMTimeout, evmTimeout)
|
|
require.Equal(t, c.config.JsonRPC.Http.API, []string{"eth", "bor"})
|
|
require.Equal(t, c.config.JsonRPC.Ws.API, []string{""})
|
|
require.Equal(t, c.config.Gpo.MaxPrice, big.NewInt(5000000000000))
|
|
}
|
|
|
|
// TestFlagsWithConfig tests all types of flags passed via both
|
|
// config file and cli args. The cli args should overwrite the
|
|
// value of flag.
|
|
func TestFlagsWithConfigAndFlags(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
var c Command
|
|
|
|
// Set the config and also override
|
|
args := []string{
|
|
"--config", "./testdata/test.toml",
|
|
"--identity", "Anon",
|
|
"--datadir", "",
|
|
"--verbosity", "0",
|
|
"--rpc.batchlimit", "5",
|
|
"--snapshot=false",
|
|
"--bor.logs=true",
|
|
"--eth.requiredblocks", "x=y",
|
|
"--miner.gasprice", "60000000000",
|
|
"--miner.recommit", "30s",
|
|
"--rpc.evmtimeout", "0s",
|
|
"--rpc.txfeecap", "0",
|
|
"--http.api", "",
|
|
"--ws.api", "eth,bor,web3",
|
|
"--gpo.maxprice", "0",
|
|
}
|
|
|
|
err := c.extractFlags(args)
|
|
|
|
require.NoError(t, err)
|
|
|
|
recommit, _ := time.ParseDuration("30s")
|
|
evmTimeout, _ := time.ParseDuration("0s")
|
|
|
|
require.Equal(t, c.config.Identity, "Anon")
|
|
require.Equal(t, c.config.DataDir, "")
|
|
require.Equal(t, c.config.Verbosity, 0)
|
|
require.Equal(t, c.config.RPCBatchLimit, uint64(5))
|
|
require.Equal(t, c.config.Snapshot, false)
|
|
require.Equal(t, c.config.BorLogs, true)
|
|
require.Equal(t, c.config.RequiredBlocks, map[string]string{"x": "y"})
|
|
require.Equal(t, c.config.Sealer.GasPrice, big.NewInt(60000000000))
|
|
require.Equal(t, c.config.Sealer.Recommit, recommit)
|
|
require.Equal(t, c.config.JsonRPC.RPCEVMTimeout, evmTimeout)
|
|
require.Equal(t, c.config.JsonRPC.Http.API, []string(nil))
|
|
require.Equal(t, c.config.JsonRPC.Ws.API, []string{"eth", "bor", "web3"})
|
|
require.Equal(t, c.config.Gpo.MaxPrice, big.NewInt(0))
|
|
}
|