mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-12 02:26:26 +05:00
Updated cdrscfg AsMapInterface method
This commit is contained in:
committed by
Dan Christian Bogos
parent
cf430d5d9c
commit
7694a4ef42
@@ -144,85 +144,101 @@ func (cdrscfg *CdrsCfg) loadFromJsonCfg(jsnCdrsCfg *CdrsJsonCfg) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (cdrscfg *CdrsCfg) AsMapInterface() map[string]interface{} {
|
||||
func (cdrscfg *CdrsCfg) AsMapInterface() (initialMP map[string]interface{}) {
|
||||
initialMP = map[string]interface{}{
|
||||
utils.EnabledCfg: cdrscfg.Enabled,
|
||||
utils.StoreCdrsCfg: cdrscfg.StoreCdrs,
|
||||
utils.SMCostRetriesCfg: cdrscfg.SMCostRetries,
|
||||
}
|
||||
|
||||
extraFields := make([]string, len(cdrscfg.ExtraFields))
|
||||
for i, item := range cdrscfg.ExtraFields {
|
||||
extraFields[i] = item.Rules
|
||||
}
|
||||
initialMP[utils.ExtraFieldsCfg] = extraFields
|
||||
|
||||
onlineCDRExports := make([]string, len(cdrscfg.OnlineCDRExports))
|
||||
for i, item := range cdrscfg.OnlineCDRExports {
|
||||
onlineCDRExports[i] = item
|
||||
}
|
||||
initialMP[utils.OnlineCDRExportsCfg] = onlineCDRExports
|
||||
|
||||
chargerSConns := make([]string, len(cdrscfg.ChargerSConns))
|
||||
for i, item := range cdrscfg.ChargerSConns {
|
||||
buf := utils.ConcatenatedKey(utils.MetaInternal, utils.MetaChargers)
|
||||
if item == buf {
|
||||
chargerSConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaChargers, utils.EmptyString)
|
||||
} else {
|
||||
chargerSConns[i] = item
|
||||
if cdrscfg.ChargerSConns != nil {
|
||||
chargerSConns := make([]string, len(cdrscfg.ChargerSConns))
|
||||
for i, item := range cdrscfg.ChargerSConns {
|
||||
if item == utils.ConcatenatedKey(utils.MetaInternal, utils.MetaChargers) {
|
||||
chargerSConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaChargers, utils.EmptyString)
|
||||
} else {
|
||||
chargerSConns[i] = item
|
||||
}
|
||||
}
|
||||
initialMP[utils.ChargerSConnsCfg] = chargerSConns
|
||||
}
|
||||
RALsConns := make([]string, len(cdrscfg.RaterConns))
|
||||
for i, item := range cdrscfg.RaterConns {
|
||||
buf := utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResponder)
|
||||
|
||||
if item == buf {
|
||||
RALsConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaResponder, utils.EmptyString)
|
||||
} else {
|
||||
RALsConns[i] = item
|
||||
if cdrscfg.RaterConns != nil {
|
||||
raterConns := make([]string, len(cdrscfg.RaterConns))
|
||||
for i, item := range cdrscfg.RaterConns {
|
||||
if item == utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResponder) {
|
||||
raterConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaResponder, utils.EmptyString)
|
||||
} else {
|
||||
raterConns[i] = item
|
||||
}
|
||||
}
|
||||
initialMP[utils.RALsConnsCfg] = raterConns
|
||||
}
|
||||
|
||||
attributeSConns := make([]string, len(cdrscfg.AttributeSConns))
|
||||
for i, item := range cdrscfg.AttributeSConns {
|
||||
buf := utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes)
|
||||
if item == buf {
|
||||
attributeSConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaAttributes, utils.EmptyString)
|
||||
} else {
|
||||
attributeSConns[i] = item
|
||||
if cdrscfg.AttributeSConns != nil {
|
||||
attributeSConns := make([]string, len(cdrscfg.AttributeSConns))
|
||||
for i, item := range cdrscfg.AttributeSConns {
|
||||
if item == utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes) {
|
||||
attributeSConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaAttributes, utils.EmptyString)
|
||||
} else {
|
||||
attributeSConns[i] = item
|
||||
}
|
||||
}
|
||||
initialMP[utils.AttributeSConnsCfg] = attributeSConns
|
||||
}
|
||||
|
||||
thresholdSConns := make([]string, len(cdrscfg.ThresholdSConns))
|
||||
for i, item := range cdrscfg.ThresholdSConns {
|
||||
buf := utils.ConcatenatedKey(utils.MetaInternal, utils.MetaThresholds)
|
||||
if item == buf {
|
||||
thresholdSConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaThresholds, utils.EmptyString)
|
||||
} else {
|
||||
thresholdSConns[i] = item
|
||||
if cdrscfg.ThresholdSConns != nil {
|
||||
thresholdSConns := make([]string, len(cdrscfg.ThresholdSConns))
|
||||
for i, item := range cdrscfg.ThresholdSConns {
|
||||
if item == utils.ConcatenatedKey(utils.MetaInternal, utils.MetaThresholds) {
|
||||
thresholdSConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaThresholds, utils.EmptyString)
|
||||
} else {
|
||||
thresholdSConns[i] = item
|
||||
}
|
||||
}
|
||||
initialMP[utils.ThresholdSConnsCfg] = thresholdSConns
|
||||
}
|
||||
statSConns := make([]string, len(cdrscfg.StatSConns))
|
||||
for i, item := range cdrscfg.StatSConns {
|
||||
buf := utils.ConcatenatedKey(utils.MetaInternal, utils.MetaStatS)
|
||||
if item == buf {
|
||||
statSConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaStatS, utils.EmptyString)
|
||||
} else {
|
||||
statSConns[i] = item
|
||||
if cdrscfg.StatSConns != nil {
|
||||
statSConns := make([]string, len(cdrscfg.StatSConns))
|
||||
for i, item := range cdrscfg.StatSConns {
|
||||
if item == utils.ConcatenatedKey(utils.MetaInternal, utils.MetaStatS) {
|
||||
statSConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaStatS, utils.EmptyString)
|
||||
} else {
|
||||
statSConns[i] = item
|
||||
}
|
||||
}
|
||||
initialMP[utils.StatSConnsCfg] = statSConns
|
||||
}
|
||||
schedulerConns := make([]string, len(cdrscfg.SchedulerConns))
|
||||
for i, item := range cdrscfg.SchedulerConns {
|
||||
buf := utils.ConcatenatedKey(utils.MetaInternal, utils.MetaScheduler)
|
||||
if item == buf {
|
||||
schedulerConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaScheduler, utils.EmptyString)
|
||||
} else {
|
||||
schedulerConns[i] = item
|
||||
if cdrscfg.SchedulerConns != nil {
|
||||
schedulerConns := make([]string, len(cdrscfg.SchedulerConns))
|
||||
for i, item := range cdrscfg.SchedulerConns {
|
||||
if item == utils.ConcatenatedKey(utils.MetaInternal, utils.MetaScheduler) {
|
||||
schedulerConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaScheduler, utils.EmptyString)
|
||||
} else {
|
||||
schedulerConns[i] = item
|
||||
}
|
||||
}
|
||||
initialMP[utils.SchedulerConnsCfg] = schedulerConns
|
||||
}
|
||||
|
||||
return map[string]interface{}{
|
||||
utils.EnabledCfg: cdrscfg.Enabled,
|
||||
utils.ExtraFieldsCfg: extraFields,
|
||||
utils.StoreCdrsCfg: cdrscfg.StoreCdrs,
|
||||
utils.SMCostRetriesCfg: cdrscfg.SMCostRetries,
|
||||
utils.ChargerSConnsCfg: chargerSConns,
|
||||
utils.RALsConnsCfg: RALsConns,
|
||||
utils.AttributeSConnsCfg: attributeSConns,
|
||||
utils.ThresholdSConnsCfg: thresholdSConns,
|
||||
utils.StatSConnsCfg: statSConns,
|
||||
utils.OnlineCDRExportsCfg: onlineCDRExports,
|
||||
utils.SchedulerConnsCfg: schedulerConns,
|
||||
if cdrscfg.EEsConns != nil {
|
||||
eesConns := make([]string, len(cdrscfg.EEsConns))
|
||||
for i, item := range cdrscfg.EEsConns {
|
||||
if item == utils.ConcatenatedKey(utils.MetaInternal, utils.MetaEEs) {
|
||||
eesConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaEEs, utils.EmptyString)
|
||||
} else {
|
||||
eesConns[i] = item
|
||||
}
|
||||
}
|
||||
initialMP[utils.EEsConnsCfg] = eesConns
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
@@ -48,6 +48,7 @@ func TestCdrsCfgloadFromJsonCfg(t *testing.T) {
|
||||
"thresholds_conns": [], // address where to reach the thresholds service, empty to disable thresholds functionality: <""|*internal|x.y.z.y:1234>
|
||||
"stats_conns": [], // address where to reach the stat service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
|
||||
"online_cdr_exports":[], // list of CDRE profiles to use for real-time CDR exports
|
||||
"ees_conns": [], // connections to EventExporter
|
||||
},
|
||||
}`
|
||||
expected = CdrsCfg{
|
||||
@@ -58,6 +59,7 @@ func TestCdrsCfgloadFromJsonCfg(t *testing.T) {
|
||||
AttributeSConns: []string{},
|
||||
ThresholdSConns: []string{},
|
||||
StatSConns: []string{},
|
||||
EEsConns: []string{},
|
||||
}
|
||||
if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil {
|
||||
t.Error(err)
|
||||
@@ -71,34 +73,28 @@ func TestCdrsCfgloadFromJsonCfg(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestExtraFieldsinAsMapInterface(t *testing.T) {
|
||||
var cdrscfg CdrsCfg
|
||||
cfgJSONStr := `{
|
||||
"cdrs": {
|
||||
"enabled": true,
|
||||
"extra_fields": ["PayPalAccount", "LCRProfile", "ResourceID"],
|
||||
"extra_fields": ["~effective_caller_id_number:s/(\\d+)/+$1/","~Custom_Val:s/(\\d+)/+$1/"],
|
||||
"chargers_conns":["*localhost"],
|
||||
"store_cdrs": true,
|
||||
"online_cdr_exports": []
|
||||
},
|
||||
}`
|
||||
expectedExtra := []string{"PayPalAccount", "LCRProfile", "ResourceID"}
|
||||
if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil {
|
||||
expectedExtra := []string{`~effective_caller_id_number:s/(\d+)/+$1/`, "~Custom_Val:s/(\\d+)/+$1/"}
|
||||
if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil {
|
||||
t.Error(err)
|
||||
} else if jsnCdrsCfg, err := jsnCfg.CdrsJsonCfg(); err != nil {
|
||||
t.Error(err)
|
||||
} else if err = cdrscfg.loadFromJsonCfg(jsnCdrsCfg); err != nil {
|
||||
t.Error(err)
|
||||
} else if rcv := cdrscfg.AsMapInterface(); !reflect.DeepEqual(rcv[utils.ExtraFieldsCfg], expectedExtra) {
|
||||
t.Errorf("Expecting: '%+v', received: '%+v' ", expectedExtra, rcv[utils.ExtraFieldsCfg])
|
||||
} else if rcv := cgrCfg.cdrsCfg.AsMapInterface(); !reflect.DeepEqual(rcv[utils.ExtraFieldsCfg], expectedExtra) {
|
||||
t.Errorf("Expected %+v \n, recieved %+v \n", expectedExtra, rcv[utils.ExtraFieldsCfg])
|
||||
}
|
||||
}
|
||||
|
||||
func TestCdrsCfgAsMapInterface(t *testing.T) {
|
||||
var cdrscfg CdrsCfg
|
||||
cfgJSONStr := `{
|
||||
"cdrs": {
|
||||
"enabled": false,
|
||||
"extra_fields": [],
|
||||
"extra_fields": ["~Custom_Val:s/(\\d+)/+$1/"],
|
||||
"store_cdrs": true,
|
||||
"session_cost_retries": 5,
|
||||
"chargers_conns":["*localhost"],
|
||||
@@ -107,33 +103,33 @@ func TestCdrsCfgAsMapInterface(t *testing.T) {
|
||||
"thresholds_conns": [],
|
||||
"stats_conns": [],
|
||||
"online_cdr_exports":[],
|
||||
"scheduler_conns": [],
|
||||
"scheduler_conns": [],
|
||||
"ees_conns": [],
|
||||
},
|
||||
}`
|
||||
eMap := map[string]interface{}{
|
||||
"enabled": false,
|
||||
"extra_fields": []string{},
|
||||
"store_cdrs": true,
|
||||
"session_cost_retries": 5,
|
||||
"chargers_conns": []string{"*localhost"},
|
||||
"rals_conns": []string{"*internal"},
|
||||
"attributes_conns": []string{},
|
||||
"thresholds_conns": []string{},
|
||||
"stats_conns": []string{},
|
||||
"online_cdr_exports": []string{},
|
||||
"scheduler_conns": []string{},
|
||||
utils.EnabledCfg: false,
|
||||
utils.ExtraFieldsCfg: []string{"~Custom_Val:s/(\\d+)/+$1/"},
|
||||
utils.StoreCdrsCfg: true,
|
||||
utils.SessionCostRetires: 5,
|
||||
utils.ChargerSConnsCfg: []string{"*localhost"},
|
||||
utils.RALsConnsCfg: []string{"*internal"},
|
||||
utils.AttributeSConnsCfg: []string{},
|
||||
utils.ThresholdSConnsCfg: []string{},
|
||||
utils.StatSConnsCfg: []string{},
|
||||
utils.OnlineCDRExportsCfg: []string{},
|
||||
utils.SchedulerConnsCfg: []string{},
|
||||
utils.EEsConnsCfg: []string{},
|
||||
}
|
||||
if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil {
|
||||
if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil {
|
||||
t.Error(err)
|
||||
} else if jsnCdrsCfg, err := jsnCfg.CdrsJsonCfg(); err != nil {
|
||||
t.Error(err)
|
||||
} else if err = cdrscfg.loadFromJsonCfg(jsnCdrsCfg); err != nil {
|
||||
t.Error(err)
|
||||
} else if rcv := cdrscfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) {
|
||||
t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv))
|
||||
} else if rcv := cgrCfg.cdrsCfg.AsMapInterface(); !reflect.DeepEqual(rcv, eMap) {
|
||||
t.Errorf("Expected %+v \n, recieved %+v ", eMap, rcv)
|
||||
}
|
||||
}
|
||||
|
||||
cfgJSONStr = `{
|
||||
func TestCdrsCfgAsMapInterface1(t *testing.T) {
|
||||
cfgJSONStr := `{
|
||||
"cdrs": {
|
||||
"enabled": true,
|
||||
"extra_fields": ["PayPalAccount", "LCRProfile", "ResourceID"],
|
||||
@@ -145,29 +141,57 @@ func TestCdrsCfgAsMapInterface(t *testing.T) {
|
||||
"thresholds_conns": ["*internal"],
|
||||
"stats_conns": ["*internal"],
|
||||
"online_cdr_exports":["http_localhost", "amqp_localhost", "http_test_file", "amqp_test_file","aws_test_file","sqs_test_file","kafka_localhost","s3_test_file"],
|
||||
"scheduler_conns": ["*internal"],
|
||||
"scheduler_conns": ["*internal"],
|
||||
"ees_conns": [],
|
||||
},
|
||||
}`
|
||||
eMap = map[string]interface{}{
|
||||
"enabled": true,
|
||||
"extra_fields": []string{"PayPalAccount", "LCRProfile", "ResourceID"},
|
||||
"store_cdrs": true,
|
||||
"session_cost_retries": 9,
|
||||
"chargers_conns": []string{"*internal"},
|
||||
"rals_conns": []string{"*internal"},
|
||||
"attributes_conns": []string{"*internal"},
|
||||
"thresholds_conns": []string{"*internal"},
|
||||
"stats_conns": []string{"*internal"},
|
||||
"online_cdr_exports": []string{"http_localhost", "amqp_localhost", "http_test_file", "amqp_test_file", "aws_test_file", "sqs_test_file", "kafka_localhost", "s3_test_file"},
|
||||
"scheduler_conns": []string{"*internal"},
|
||||
eMap := map[string]interface{}{
|
||||
utils.EnabledCfg: true,
|
||||
utils.ExtraFieldsCfg: []string{"PayPalAccount", "LCRProfile", "ResourceID"},
|
||||
utils.StoreCdrsCfg: true,
|
||||
utils.SessionCostRetires: 9,
|
||||
utils.ChargerSConnsCfg: []string{"*internal"},
|
||||
utils.RALsConnsCfg: []string{"*internal"},
|
||||
utils.AttributeSConnsCfg: []string{"*internal"},
|
||||
utils.ThresholdSConnsCfg: []string{"*internal"},
|
||||
utils.StatSConnsCfg: []string{"*internal"},
|
||||
utils.OnlineCDRExportsCfg: []string{"http_localhost", "amqp_localhost", "http_test_file", "amqp_test_file", "aws_test_file", "sqs_test_file", "kafka_localhost", "s3_test_file"},
|
||||
utils.SchedulerConnsCfg: []string{"*internal"},
|
||||
utils.EEsConnsCfg: []string{},
|
||||
}
|
||||
if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil {
|
||||
if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil {
|
||||
t.Error(err)
|
||||
} else if jsnCdrsCfg, err := jsnCfg.CdrsJsonCfg(); err != nil {
|
||||
t.Error(err)
|
||||
} else if err = cdrscfg.loadFromJsonCfg(jsnCdrsCfg); err != nil {
|
||||
t.Error(err)
|
||||
} else if rcv := cdrscfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) {
|
||||
t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv))
|
||||
} else if rcv := cgrCfg.cdrsCfg.AsMapInterface(); !reflect.DeepEqual(rcv, eMap) {
|
||||
t.Errorf("Expected %+v \n, recieved %+v", eMap, rcv)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCdrsCfgAsMapInterface2(t *testing.T) {
|
||||
cfgJsonStr := `{
|
||||
"cdrs": {
|
||||
"enabled":true,
|
||||
"chargers_conns": ["conn1", "conn2"],
|
||||
"attributes_conns": ["*internal"],
|
||||
"ees_conns": ["conn1"],
|
||||
},
|
||||
}`
|
||||
eMap := map[string]interface{}{
|
||||
utils.EnabledCfg: true,
|
||||
utils.ExtraFieldsCfg: []string{},
|
||||
utils.StoreCdrsCfg: true,
|
||||
utils.SessionCostRetires: 5,
|
||||
utils.ChargerSConnsCfg: []string{"conn1", "conn2"},
|
||||
utils.RALsConnsCfg: []string{},
|
||||
utils.AttributeSConnsCfg: []string{"*internal"},
|
||||
utils.ThresholdSConnsCfg: []string{},
|
||||
utils.StatSConnsCfg: []string{},
|
||||
utils.OnlineCDRExportsCfg: []string{},
|
||||
utils.SchedulerConnsCfg: []string{},
|
||||
utils.EEsConnsCfg: []string{"conn1"},
|
||||
}
|
||||
if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJsonStr); err != nil {
|
||||
t.Error(err)
|
||||
} else if rcv := cgrCfg.cdrsCfg.AsMapInterface(); !reflect.DeepEqual(rcv, eMap) {
|
||||
t.Errorf("Expected %+v \n, recieved %+v", eMap, rcv)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1987,6 +1987,7 @@ const (
|
||||
ChargerSConnsCfg = "chargers_conns"
|
||||
AttributeSConnsCfg = "attributes_conns"
|
||||
OnlineCDRExportsCfg = "online_cdr_exports"
|
||||
SessionCostRetires = "session_cost_retries"
|
||||
)
|
||||
|
||||
// SessionSCfg
|
||||
|
||||
Reference in New Issue
Block a user