Merge pull request #659 from ipfs/fix/update-json-config
Fix/update json config
This commit is contained in:
commit
4324889c79
|
@ -178,26 +178,26 @@ type jsonConfig struct {
|
|||
Observations jsonSection `json:"observations,omitempty"`
|
||||
}
|
||||
|
||||
func (jcfg *jsonConfig) getSection(i SectionType) jsonSection {
|
||||
func (jcfg *jsonConfig) getSection(i SectionType) *jsonSection {
|
||||
switch i {
|
||||
case Consensus:
|
||||
return jcfg.Consensus
|
||||
return &jcfg.Consensus
|
||||
case API:
|
||||
return jcfg.API
|
||||
return &jcfg.API
|
||||
case IPFSConn:
|
||||
return jcfg.IPFSConn
|
||||
return &jcfg.IPFSConn
|
||||
case State:
|
||||
return jcfg.State
|
||||
return &jcfg.State
|
||||
case PinTracker:
|
||||
return jcfg.PinTracker
|
||||
return &jcfg.PinTracker
|
||||
case Monitor:
|
||||
return jcfg.Monitor
|
||||
return &jcfg.Monitor
|
||||
case Allocator:
|
||||
return jcfg.Allocator
|
||||
return &jcfg.Allocator
|
||||
case Informer:
|
||||
return jcfg.Informer
|
||||
return &jcfg.Informer
|
||||
case Observations:
|
||||
return jcfg.Observations
|
||||
return &jcfg.Observations
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
|
@ -356,7 +356,7 @@ func (cfg *Manager) LoadJSON(bs []byte) error {
|
|||
if t == Cluster {
|
||||
continue
|
||||
}
|
||||
err := loadSectionJSON(sections[t], jcfg.getSection(t))
|
||||
err := loadSectionJSON(sections[t], *jcfg.getSection(t))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -445,7 +445,7 @@ func (cfg *Manager) ToJSON() ([]byte, error) {
|
|||
continue
|
||||
}
|
||||
jsection := jcfg.getSection(t)
|
||||
err := updateJSONConfigs(cfg.sections[t], &jsection)
|
||||
err := updateJSONConfigs(cfg.sections[t], jsection)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
111
config/config_test.go
Normal file
111
config/config_test.go
Normal file
|
@ -0,0 +1,111 @@
|
|||
// 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"
|
||||
)
|
||||
|
||||
type mockCfg struct {
|
||||
config.Saver
|
||||
}
|
||||
|
||||
func (m *mockCfg) ConfigKey() string {
|
||||
return "mock"
|
||||
}
|
||||
|
||||
func (m *mockCfg) LoadJSON([]byte) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *mockCfg) ToJSON() ([]byte, error) {
|
||||
return []byte(`{"a":"b"}`), nil
|
||||
}
|
||||
|
||||
func (m *mockCfg) Default() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *mockCfg) Validate() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func setupConfigManager() *config.Manager {
|
||||
cfg := config.NewManager()
|
||||
mockCfg := &mockCfg{}
|
||||
cfg.RegisterComponent(config.Cluster, mockCfg)
|
||||
for _, sect := range config.SectionTypes() {
|
||||
cfg.RegisterComponent(sect, mockCfg)
|
||||
}
|
||||
return cfg
|
||||
}
|
||||
|
||||
func TestManager_ToJSON(t *testing.T) {
|
||||
want := []byte(`{
|
||||
"cluster": {
|
||||
"a": "b"
|
||||
},
|
||||
"consensus": {
|
||||
"mock": {
|
||||
"a": "b"
|
||||
}
|
||||
},
|
||||
"api": {
|
||||
"mock": {
|
||||
"a": "b"
|
||||
}
|
||||
},
|
||||
"ipfs_connector": {
|
||||
"mock": {
|
||||
"a": "b"
|
||||
}
|
||||
},
|
||||
"state": {
|
||||
"mock": {
|
||||
"a": "b"
|
||||
}
|
||||
},
|
||||
"pin_tracker": {
|
||||
"mock": {
|
||||
"a": "b"
|
||||
}
|
||||
},
|
||||
"monitor": {
|
||||
"mock": {
|
||||
"a": "b"
|
||||
}
|
||||
},
|
||||
"allocator": {
|
||||
"mock": {
|
||||
"a": "b"
|
||||
}
|
||||
},
|
||||
"informer": {
|
||||
"mock": {
|
||||
"a": "b"
|
||||
}
|
||||
},
|
||||
"observations": {
|
||||
"mock": {
|
||||
"a": "b"
|
||||
}
|
||||
}
|
||||
}`)
|
||||
cfgMgr := setupConfigManager()
|
||||
err := cfgMgr.Default()
|
||||
if err != nil {
|
||||
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)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user