diff --git a/config/generalcfg.go b/config/generalcfg.go index f7f868cf2..f6f0e2d3e 100644 --- a/config/generalcfg.go +++ b/config/generalcfg.go @@ -151,25 +151,8 @@ func (gencfg *GeneralCfg) loadFromJsonCfg(jsnGeneralCfg *GeneralJsonCfg) (err er return nil } -func (gencfg *GeneralCfg) AsMapInterface() map[string]interface{} { - var lockingTimeout string = "0" - var failedPostsTTL string = "0" - var connectTimeout string = "0" - var replyTimeout string = "0" - if gencfg.LockingTimeout != 0 { - lockingTimeout = gencfg.LockingTimeout.String() - } - if gencfg.FailedPostsTTL != 0 { - failedPostsTTL = gencfg.FailedPostsTTL.String() - } - if gencfg.ConnectTimeout != 0 { - connectTimeout = gencfg.ConnectTimeout.String() - } - if gencfg.ReplyTimeout != 0 { - replyTimeout = gencfg.ReplyTimeout.String() - } - - return map[string]interface{}{ +func (gencfg *GeneralCfg) AsMapInterface() (initialMP map[string]interface{}) { + initialMP = map[string]interface{}{ utils.NodeIDCfg: gencfg.NodeID, utils.LoggerCfg: gencfg.Logger, utils.LogLevelCfg: gencfg.LogLevel, @@ -179,7 +162,6 @@ func (gencfg *GeneralCfg) AsMapInterface() map[string]interface{} { utils.TpExportPathCfg: gencfg.TpExportPath, utils.PosterAttemptsCfg: gencfg.PosterAttempts, utils.FailedPostsDirCfg: gencfg.FailedPostsDir, - utils.FailedPostsTTLCfg: failedPostsTTL, utils.DefaultReqTypeCfg: gencfg.DefaultReqType, utils.DefaultCategoryCfg: gencfg.DefaultCategory, utils.DefaultTenantCfg: gencfg.DefaultTenant, @@ -187,9 +169,6 @@ func (gencfg *GeneralCfg) AsMapInterface() map[string]interface{} { utils.DefaultCachingCfg: gencfg.DefaultCaching, utils.ConnectAttemptsCfg: gencfg.ConnectAttempts, utils.ReconnectsCfg: gencfg.Reconnects, - utils.ConnectTimeoutCfg: connectTimeout, - utils.ReplyTimeoutCfg: replyTimeout, - utils.LockingTimeoutCfg: lockingTimeout, utils.DigestSeparatorCfg: gencfg.DigestSeparator, utils.DigestEqualCfg: gencfg.DigestEqual, utils.RSRSepCfg: gencfg.RSRSep, @@ -197,4 +176,29 @@ func (gencfg *GeneralCfg) AsMapInterface() map[string]interface{} { utils.ConcurrentRequestsCfg: gencfg.ConcurrentRequests, utils.ConcurrentStrategyCfg: gencfg.ConcurrentStrategy, } + + if gencfg.LockingTimeout != 0 { + initialMP[utils.LockingTimeoutCfg] = gencfg.LockingTimeout.String() + } else { + initialMP[utils.LockingTimeoutCfg] = "0" + } + + if gencfg.FailedPostsTTL != 0 { + initialMP[utils.FailedPostsTTLCfg] = gencfg.FailedPostsTTL.String() + } else { + initialMP[utils.FailedPostsTTLCfg] = "0" + } + + if gencfg.ConnectTimeout != 0 { + initialMP[utils.ConnectTimeoutCfg] = gencfg.ConnectTimeout.String() + } else { + initialMP[utils.ConnectTimeoutCfg] = "0" + } + + if gencfg.ReplyTimeout != 0 { + initialMP[utils.ReplyTimeoutCfg] = gencfg.ReplyTimeout.String() + } else { + initialMP[utils.ReplyTimeoutCfg] = "0" + } + return } diff --git a/config/generalcfg_test.go b/config/generalcfg_test.go index 8c761910f..e7c8f580d 100644 --- a/config/generalcfg_test.go +++ b/config/generalcfg_test.go @@ -18,6 +18,7 @@ along with this program. If not, see package config import ( + "fmt" "reflect" "testing" "time" @@ -95,7 +96,6 @@ func TestGeneralCfgloadFromJsonCfg(t *testing.T) { } func TestGeneralCfgAsMapInterface(t *testing.T) { - var gencfg GeneralCfg cfgJSONStr := `{ "general": { "node_id": "", @@ -125,40 +125,78 @@ func TestGeneralCfgAsMapInterface(t *testing.T) { }, }` eMap := map[string]interface{}{ - "node_id": "", - "logger": "*syslog", - "log_level": 6, - "http_skip_tls_verify": false, - "rounding_decimals": 5, - "dbdata_encoding": "*msgpack", - "tpexport_dir": "/var/spool/cgrates/tpe", - "poster_attempts": 3, - "failed_posts_dir": "/var/spool/cgrates/failed_posts", - "failed_posts_ttl": "5s", - "default_request_type": "*rated", - "default_category": "call", - "default_tenant": "cgrates.org", - "default_timezone": "Local", - "default_caching": "*reload", - "connect_attempts": 5, - "reconnects": -1, - "connect_timeout": "1s", - "reply_timeout": "2s", - "locking_timeout": "0", - "digest_separator": ",", - "digest_equal": ":", - "rsr_separator": ";", - "max_parallel_conns": 100, + utils.NodeIDCfg: "", + utils.LoggerCfg: "*syslog", + utils.LogLevelCfg: 6, + utils.HttpSkipTlsVerifyCfg: false, + utils.RoundingDecimalsCfg: 5, + utils.DBDataEncodingCfg: "*msgpack", + utils.TpExportPathCfg: "/var/spool/cgrates/tpe", + utils.PosterAttemptsCfg: 3, + utils.FailedPostsDirCfg: "/var/spool/cgrates/failed_posts", + utils.FailedPostsTTLCfg: "5s", + utils.DefaultReqTypeCfg: "*rated", + utils.DefaultCategoryCfg: "call", + utils.DefaultTenantCfg: "cgrates.org", + utils.DefaultTimezoneCfg: "Local", + utils.DefaultCachingCfg: "*reload", + utils.ConnectAttemptsCfg: 5, + utils.ReconnectsCfg: -1, + utils.ConnectTimeoutCfg: "1s", + utils.ReplyTimeoutCfg: "2s", + utils.LockingTimeoutCfg: "0", + utils.DigestSeparatorCfg: ",", + utils.DigestEqualCfg: ":", + utils.RSRSepCfg: ";", + utils.MaxParallelConnsCfg: 100, utils.ConcurrentRequestsCfg: 0, - utils.ConcurrentStrategyCfg: utils.EmptyString, + utils.ConcurrentStrategyCfg: utils.MetaBusy, } - if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil { - t.Error(err) - } else if jsnGenCfg, err := jsnCfg.GeneralJsonCfg(); err != nil { - t.Error(err) - } else if err = gencfg.loadFromJsonCfg(jsnGenCfg); err != nil { - t.Error(err) - } else if rcv := gencfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) { - t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err == nil { + fmt.Println(cgrCfg) + //t.Error(err) + } else if rcv := cgrCfg.generalCfg.AsMapInterface(); !reflect.DeepEqual(rcv, eMap) { + t.Errorf("Expected %+v \n, recevied %+v", eMap, rcv) + } +} + +func TestGeneralCfgAsMapInterface1(t *testing.T) { + cfgJSONStr := `{ + "general": { + "node_id": "ENGINE1" + } +}` + eMap := map[string]interface{}{ + utils.NodeIDCfg: "ENGINE1", + utils.LoggerCfg: "*syslog", + utils.LogLevelCfg: 6, + utils.HttpSkipTlsVerifyCfg: false, + utils.RoundingDecimalsCfg: 5, + utils.DBDataEncodingCfg: "*msgpack", + utils.TpExportPathCfg: "/var/spool/cgrates/tpe", + utils.PosterAttemptsCfg: 3, + utils.FailedPostsDirCfg: "/var/spool/cgrates/failed_posts", + utils.FailedPostsTTLCfg: "5s", + utils.DefaultReqTypeCfg: "*rated", + utils.DefaultCategoryCfg: "call", + utils.DefaultTenantCfg: "cgrates.org", + utils.DefaultTimezoneCfg: "Local", + utils.DefaultCachingCfg: "*reload", + utils.ConnectAttemptsCfg: 5, + utils.ReconnectsCfg: -1, + utils.ConnectTimeoutCfg: "1s", + utils.ReplyTimeoutCfg: "2s", + utils.LockingTimeoutCfg: "0", + utils.DigestSeparatorCfg: ",", + utils.DigestEqualCfg: ":", + utils.RSRSepCfg: ";", + utils.MaxParallelConnsCfg: 100, + utils.ConcurrentRequestsCfg: 0, + utils.ConcurrentStrategyCfg: utils.MetaBusy, + } + if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil { + t.Error(err) + } else if rcv := cgrCfg.generalCfg.AsMapInterface(); !reflect.DeepEqual(rcv, eMap) { + t.Errorf("Expected %+v \n, recevied %+v", eMap, rcv) } }