2019-02-06 01:33:49 +00:00
|
|
|
// Package config provides interfaces and utilities for different Cluster
|
|
|
|
// components to register, read, write and validate configuration sections
|
|
|
|
// stored in a central configuration file.
|
|
|
|
package config_test
|
|
|
|
|
|
|
|
import (
|
|
|
|
"bytes"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/ipfs/ipfs-cluster/config"
|
|
|
|
)
|
|
|
|
|
2019-02-06 07:48:58 +00:00
|
|
|
type mockCfg struct {
|
|
|
|
config.Saver
|
2019-02-06 01:33:49 +00:00
|
|
|
}
|
|
|
|
|
2019-02-06 07:48:58 +00:00
|
|
|
func (m *mockCfg) ConfigKey() string {
|
|
|
|
return "mock"
|
2019-02-06 01:33:49 +00:00
|
|
|
}
|
2019-02-06 07:48:58 +00:00
|
|
|
|
|
|
|
func (m *mockCfg) LoadJSON([]byte) error {
|
|
|
|
return nil
|
2019-02-06 01:33:49 +00:00
|
|
|
}
|
2019-02-06 07:48:58 +00:00
|
|
|
|
|
|
|
func (m *mockCfg) ToJSON() ([]byte, error) {
|
|
|
|
return []byte(`{"a":"b"}`), nil
|
2019-02-06 01:33:49 +00:00
|
|
|
}
|
|
|
|
|
2019-02-06 07:48:58 +00:00
|
|
|
func (m *mockCfg) Default() error {
|
|
|
|
return nil
|
|
|
|
}
|
2019-02-06 01:33:49 +00:00
|
|
|
|
2019-02-18 11:36:51 +00:00
|
|
|
func (m *mockCfg) ApplyEnvVars() error {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2019-02-06 07:48:58 +00:00
|
|
|
func (m *mockCfg) Validate() error {
|
|
|
|
return nil
|
|
|
|
}
|
2019-02-06 01:33:49 +00:00
|
|
|
|
2019-02-06 07:48:58 +00:00
|
|
|
func setupConfigManager() *config.Manager {
|
|
|
|
cfg := config.NewManager()
|
|
|
|
mockCfg := &mockCfg{}
|
|
|
|
cfg.RegisterComponent(config.Cluster, mockCfg)
|
2019-02-06 22:41:29 +00:00
|
|
|
for _, sect := range config.SectionTypes() {
|
|
|
|
cfg.RegisterComponent(sect, mockCfg)
|
|
|
|
}
|
2019-02-06 07:48:58 +00:00
|
|
|
return cfg
|
2019-02-06 01:33:49 +00:00
|
|
|
}
|
|
|
|
|
2019-02-06 07:48:58 +00:00
|
|
|
func TestManager_ToJSON(t *testing.T) {
|
|
|
|
want := []byte(`{
|
|
|
|
"cluster": {
|
|
|
|
"a": "b"
|
|
|
|
},
|
|
|
|
"consensus": {
|
|
|
|
"mock": {
|
|
|
|
"a": "b"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"api": {
|
|
|
|
"mock": {
|
|
|
|
"a": "b"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"ipfs_connector": {
|
|
|
|
"mock": {
|
|
|
|
"a": "b"
|
|
|
|
}
|
|
|
|
},
|
2019-02-06 22:41:29 +00:00
|
|
|
"state": {
|
|
|
|
"mock": {
|
|
|
|
"a": "b"
|
|
|
|
}
|
|
|
|
},
|
2019-02-06 07:48:58 +00:00
|
|
|
"pin_tracker": {
|
|
|
|
"mock": {
|
|
|
|
"a": "b"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"monitor": {
|
|
|
|
"mock": {
|
|
|
|
"a": "b"
|
|
|
|
}
|
|
|
|
},
|
2019-02-06 22:41:29 +00:00
|
|
|
"allocator": {
|
|
|
|
"mock": {
|
|
|
|
"a": "b"
|
|
|
|
}
|
|
|
|
},
|
2019-02-06 07:48:58 +00:00
|
|
|
"informer": {
|
|
|
|
"mock": {
|
|
|
|
"a": "b"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"observations": {
|
|
|
|
"mock": {
|
|
|
|
"a": "b"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}`)
|
|
|
|
cfgMgr := setupConfigManager()
|
|
|
|
err := cfgMgr.Default()
|
2019-02-06 01:33:49 +00:00
|
|
|
if err != nil {
|
2019-02-06 07:48:58 +00:00
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
got, err := cfgMgr.ToJSON()
|
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if !bytes.Equal(got, want) {
|
|
|
|
t.Errorf("mismatch between got: %s and want: %s", got, want)
|
2019-02-06 01:33:49 +00:00
|
|
|
}
|
|
|
|
}
|