Skip to content
Snippets Groups Projects
Unverified Commit 23714526 authored by Xin.Zh's avatar Xin.Zh Committed by GitHub
Browse files

Merge pull request #382 from zouyx/feature/optimizeLoadConfig

Add: optimize load config file
parents af5510b4 3964718d
No related branches found
No related tags found
No related merge requests found
......@@ -27,6 +27,7 @@ import (
import (
perrors "github.com/pkg/errors"
"gopkg.in/yaml.v2"
)
import (
......@@ -366,15 +367,24 @@ func initializeStruct(t reflect.Type, v reflect.Value) {
}
// loadYmlConfig Load yml config byte from file
func loadYmlConfig(confRouterFile string) ([]byte, error) {
if len(confRouterFile) == 0 {
// loadYMLConfig Load yml config byte from file
func loadYMLConfig(confProFile string) ([]byte, error) {
if len(confProFile) == 0 {
return nil, perrors.Errorf("application configure(provider) file name is nil")
}
if path.Ext(confRouterFile) != ".yml" {
return nil, perrors.Errorf("application configure file name{%v} suffix must be .yml", confRouterFile)
if path.Ext(confProFile) != ".yml" {
return nil, perrors.Errorf("application configure file name{%v} suffix must be .yml", confProFile)
}
return ioutil.ReadFile(confRouterFile)
return ioutil.ReadFile(confProFile)
}
// unmarshalYMLConfig Load yml config byte from file , then unmarshal to object
func unmarshalYMLConfig(confProFile string, out interface{}) error {
confFileStream, err := loadYMLConfig(confProFile)
if err != nil {
return perrors.Errorf("ioutil.ReadFile(file:%s) = error:%v", confProFile, perrors.WithStack(err))
}
return yaml.Unmarshal(confFileStream, out)
}
......@@ -18,6 +18,7 @@ package config
import (
"fmt"
"path/filepath"
"reflect"
"testing"
)
......@@ -517,3 +518,13 @@ func Test_initializeStruct(t *testing.T) {
return consumerConfig.References != nil
})
}
func TestUnmarshalYMLConfig(t *testing.T) {
conPath, err := filepath.Abs("./testdata/consumer_config_with_configcenter.yml")
assert.NoError(t, err)
c := &ConsumerConfig{}
assert.NoError(t, unmarshalYMLConfig(conPath, c))
assert.Equal(t, "default", c.ProxyFactory)
assert.Equal(t, "dubbo.properties", c.ConfigCenterConfig.ConfigFile)
assert.Equal(t, "100ms", c.Connect_Timeout)
}
......@@ -30,7 +30,7 @@ import (
//RouterInit Load config file to init router config
func RouterInit(confRouterFile string) error {
fileRouterFactories := extension.GetFileRouterFactories()
bytes, err := loadYmlConfig(confRouterFile)
bytes, err := loadYMLConfig(confRouterFile)
if err != nil {
return perrors.Errorf("ioutil.ReadFile(file:%s) = error:%v", confRouterFile, perrors.WithStack(err))
}
......
......@@ -18,8 +18,6 @@
package config
import (
"io/ioutil"
"path"
"time"
)
......@@ -27,7 +25,6 @@ import (
"github.com/creasty/defaults"
"github.com/dubbogo/getty"
perrors "github.com/pkg/errors"
"gopkg.in/yaml.v2"
)
import (
......@@ -90,16 +87,8 @@ func ConsumerInit(confConFile string) error {
return perrors.Errorf("application configure(consumer) file name is nil")
}
if path.Ext(confConFile) != ".yml" {
return perrors.Errorf("application configure file name{%v} suffix must be .yml", confConFile)
}
confFileStream, err := ioutil.ReadFile(confConFile)
if err != nil {
return perrors.Errorf("ioutil.ReadFile(file:%s) = error:%v", confConFile, perrors.WithStack(err))
}
consumerConfig = &ConsumerConfig{}
err = yaml.Unmarshal(confFileStream, consumerConfig)
err := unmarshalYMLConfig(confConFile, consumerConfig)
if err != nil {
return perrors.Errorf("yaml.Unmarshal() = error:%v", perrors.WithStack(err))
}
......
......@@ -17,15 +17,9 @@
package config
import (
"io/ioutil"
"path"
)
import (
"github.com/creasty/defaults"
perrors "github.com/pkg/errors"
"gopkg.in/yaml.v2"
)
import (
......@@ -81,16 +75,8 @@ func ProviderInit(confProFile string) error {
return perrors.Errorf("application configure(provider) file name is nil")
}
if path.Ext(confProFile) != ".yml" {
return perrors.Errorf("application configure file name{%v} suffix must be .yml", confProFile)
}
confFileStream, err := ioutil.ReadFile(confProFile)
if err != nil {
return perrors.Errorf("ioutil.ReadFile(file:%s) = error:%v", confProFile, perrors.WithStack(err))
}
providerConfig = &ProviderConfig{}
err = yaml.Unmarshal(confFileStream, providerConfig)
err := unmarshalYMLConfig(confProFile, providerConfig)
if err != nil {
return perrors.Errorf("yaml.Unmarshal() = error:%v", perrors.WithStack(err))
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment