- package config
-
- import (
- "reflect"
- "testing"
- "time"
-
- "github.com/stretchr/testify/assert"
- )
-
- func TestDefaultConfig(t *testing.T) {
- assert := assert.New(t)
-
- // set up some defaults
- cfg := DefaultConfig()
- assert.NotNil(cfg.P2P)
- assert.NotNil(cfg.Mempool)
- assert.NotNil(cfg.Consensus)
-
- // check the root dir stuff...
- cfg.SetRoot("/foo")
- cfg.Genesis = "bar"
- cfg.DBPath = "/opt/data"
- cfg.Mempool.WalPath = "wal/mem/"
-
- assert.Equal("/foo/bar", cfg.GenesisFile())
- assert.Equal("/opt/data", cfg.DBDir())
- assert.Equal("/foo/wal/mem", cfg.Mempool.WalDir())
-
- }
-
- func TestConfigValidateBasic(t *testing.T) {
- cfg := DefaultConfig()
- assert.NoError(t, cfg.ValidateBasic())
-
- // tamper with timeout_propose
- cfg.Consensus.TimeoutPropose = -10 * time.Second
- assert.Error(t, cfg.ValidateBasic())
- }
-
- func TestTLSConfiguration(t *testing.T) {
- assert := assert.New(t)
- cfg := DefaultConfig()
- cfg.SetRoot("/home/user")
-
- cfg.RPC.TLSCertFile = "file.crt"
- assert.Equal("/home/user/config/file.crt", cfg.RPC.CertFile())
- cfg.RPC.TLSKeyFile = "file.key"
- assert.Equal("/home/user/config/file.key", cfg.RPC.KeyFile())
-
- cfg.RPC.TLSCertFile = "/abs/path/to/file.crt"
- assert.Equal("/abs/path/to/file.crt", cfg.RPC.CertFile())
- cfg.RPC.TLSKeyFile = "/abs/path/to/file.key"
- assert.Equal("/abs/path/to/file.key", cfg.RPC.KeyFile())
- }
-
- func TestBaseConfigValidateBasic(t *testing.T) {
- cfg := TestBaseConfig()
- assert.NoError(t, cfg.ValidateBasic())
-
- // tamper with log format
- cfg.LogFormat = "invalid"
- assert.Error(t, cfg.ValidateBasic())
- }
-
- func TestRPCConfigValidateBasic(t *testing.T) {
- cfg := TestRPCConfig()
- assert.NoError(t, cfg.ValidateBasic())
-
- fieldsToTest := []string{
- "GRPCMaxOpenConnections",
- "MaxOpenConnections",
- "MaxSubscriptionClients",
- "MaxSubscriptionsPerClient",
- "TimeoutBroadcastTxCommit",
- "MaxBodyBytes",
- "MaxHeaderBytes",
- }
-
- for _, fieldName := range fieldsToTest {
- reflect.ValueOf(cfg).Elem().FieldByName(fieldName).SetInt(-1)
- assert.Error(t, cfg.ValidateBasic())
- reflect.ValueOf(cfg).Elem().FieldByName(fieldName).SetInt(0)
- }
- }
-
- func TestP2PConfigValidateBasic(t *testing.T) {
- cfg := TestP2PConfig()
- assert.NoError(t, cfg.ValidateBasic())
-
- fieldsToTest := []string{
- "MaxNumInboundPeers",
- "MaxNumOutboundPeers",
- "FlushThrottleTimeout",
- "MaxPacketMsgPayloadSize",
- "SendRate",
- "RecvRate",
- }
-
- for _, fieldName := range fieldsToTest {
- reflect.ValueOf(cfg).Elem().FieldByName(fieldName).SetInt(-1)
- assert.Error(t, cfg.ValidateBasic())
- reflect.ValueOf(cfg).Elem().FieldByName(fieldName).SetInt(0)
- }
- }
-
- func TestMempoolConfigValidateBasic(t *testing.T) {
- cfg := TestMempoolConfig()
- assert.NoError(t, cfg.ValidateBasic())
-
- fieldsToTest := []string{
- "Size",
- "MaxTxsBytes",
- "CacheSize",
- "MaxTxBytes",
- }
-
- for _, fieldName := range fieldsToTest {
- reflect.ValueOf(cfg).Elem().FieldByName(fieldName).SetInt(-1)
- assert.Error(t, cfg.ValidateBasic())
- reflect.ValueOf(cfg).Elem().FieldByName(fieldName).SetInt(0)
- }
- }
-
- func TestFastSyncConfigValidateBasic(t *testing.T) {
- cfg := TestFastSyncConfig()
- assert.NoError(t, cfg.ValidateBasic())
-
- // tamper with version
- cfg.Version = "v1"
- assert.NoError(t, cfg.ValidateBasic())
-
- cfg.Version = "invalid"
- assert.Error(t, cfg.ValidateBasic())
- }
-
- func TestConsensusConfigValidateBasic(t *testing.T) {
- cfg := TestConsensusConfig()
- assert.NoError(t, cfg.ValidateBasic())
-
- fieldsToTest := []string{
- "TimeoutPropose",
- "TimeoutProposeDelta",
- "TimeoutPrevote",
- "TimeoutPrevoteDelta",
- "TimeoutPrecommit",
- "TimeoutPrecommitDelta",
- "TimeoutCommit",
- "CreateEmptyBlocksInterval",
- "PeerGossipSleepDuration",
- "PeerQueryMaj23SleepDuration",
- }
-
- for _, fieldName := range fieldsToTest {
- reflect.ValueOf(cfg).Elem().FieldByName(fieldName).SetInt(-1)
- assert.Error(t, cfg.ValidateBasic())
- reflect.ValueOf(cfg).Elem().FieldByName(fieldName).SetInt(0)
- }
- }
-
- func TestInstrumentationConfigValidateBasic(t *testing.T) {
- cfg := TestInstrumentationConfig()
- assert.NoError(t, cfg.ValidateBasic())
-
- // tamper with maximum open connections
- cfg.MaxOpenConnections = -1
- assert.Error(t, cfg.ValidateBasic())
- }
|