This commit is contained in:
Alessio Treglia
2020-11-29 12:07:15 +00:00
parent 1b665fe822
commit 02a2ce6b10
8 changed files with 166 additions and 109 deletions
+54 -2
View File
@@ -3,13 +3,12 @@ package config
import (
"bytes"
"fmt"
tmos "github.com/tendermint/tendermint/libs/os"
"io/ioutil"
"os"
"path/filepath"
"strings"
"text/template"
tmos "github.com/tendermint/tendermint/libs/os"
)
// DefaultDirPerm is the default permissions used when creating directories.
@@ -458,6 +457,59 @@ max_open_connections = {{ .Instrumentation.MaxOpenConnections }}
namespace = "{{ .Instrumentation.Namespace }}"
`
type T interface {
TempDir() string
Fatal(...interface{})
Fatalf(string, ...interface{})
}
func SetupTestConfiguration(t T) *Config {
return SetupTestConfigurationWithChainID(t, "")
}
func SetupTestConfigurationWithChainID(t T, chainID string) *Config {
// create a unique, concurrency-safe test directory under os.TempDir()
rootDir := t.TempDir()
// ensure config and data subdirs are created
if err := tmos.EnsureDir(filepath.Join(rootDir, defaultConfigDir), DefaultDirPerm); err != nil {
t.Fatal(err)
}
if err := tmos.EnsureDir(filepath.Join(rootDir, defaultDataDir), DefaultDirPerm); err != nil {
t.Fatal(err)
}
baseConfig := DefaultBaseConfig()
configFilePath := filepath.Join(rootDir, defaultConfigFilePath)
genesisFilePath := filepath.Join(rootDir, baseConfig.Genesis)
privKeyFilePath := filepath.Join(rootDir, baseConfig.PrivValidatorKey)
privStateFilePath := filepath.Join(rootDir, baseConfig.PrivValidatorState)
// Write default config file if missing.
if !tmos.FileExists(configFilePath) {
writeDefaultConfigFile(configFilePath)
}
if !tmos.FileExists(genesisFilePath) {
if chainID == "" {
chainID = "tendermint_test"
}
testGenesis := fmt.Sprintf(testGenesisFmt, chainID)
mustWriteFileHelper(t, genesisFilePath, []byte(testGenesis), 0644)
}
// we always overwrite the priv val
mustWriteFileHelper(t, privKeyFilePath, []byte(testPrivValidatorKey), 0644)
mustWriteFileHelper(t, privStateFilePath, []byte(testPrivValidatorState), 0644)
config := TestConfig().SetRoot(rootDir)
return config
}
func mustWriteFileHelper(t T, filePath string, contents []byte, mode os.FileMode) {
if err := ioutil.WriteFile(filePath, contents, mode); err != nil {
t.Fatalf("failed to write file: %v", err)
}
}
/****** these are for test settings ***********/
func ResetTestRoot(testName string) *Config {
+19
View File
@@ -41,6 +41,25 @@ func TestEnsureRoot(t *testing.T) {
ensureFiles(t, tmpDir, "data")
}
func TestSetupConfiguration(t *testing.T) {
require := require.New(t)
// create root dir
cfg := SetupTestConfiguration(t)
rootDir := cfg.RootDir
// make sure config is set properly
data, err := ioutil.ReadFile(filepath.Join(rootDir, defaultConfigFilePath))
require.Nil(err)
if !checkConfig(string(data)) {
t.Fatalf("config file missing some information")
}
// TODO: make sure the cfg returned and testconfig are the same!
baseConfig := DefaultBaseConfig()
ensureFiles(t, rootDir, defaultDataDir, baseConfig.Genesis, baseConfig.PrivValidatorKey, baseConfig.PrivValidatorState)
}
func TestEnsureTestRoot(t *testing.T) {
require := require.New(t)