Add rates_conns in routes section + update tests

This commit is contained in:
TeoV
2020-11-17 10:23:08 +02:00
committed by Dan Christian Bogos
parent 83f5ad7b7f
commit 1c0dc4f06a
7 changed files with 53 additions and 18 deletions

View File

@@ -619,6 +619,7 @@ const CGRATES_CFG_JSON = `
"resources_conns": [], // connections to ResourceS for *res sorting, empty to disable functionality: <""|*internal|$rpc_conns_id>
"stats_conns": [], // connections to StatS for *stats sorting, empty to disable stats functionality: <""|*internal|$rpc_conns_id>
"rals_conns": [], // connections to Rater for calculating cost, empty to disable stats functionality: <""|*internal|$rpc_conns_id>
"rates_conns": [], // connections to RateS for calculating cost, empty to disable stats functionality: <""|*internal|$rpc_conns_id>
"default_ratio":1 // default ratio used in case of *load strategy
},

View File

@@ -1037,6 +1037,7 @@ func TestDfRouteSJsonCfg(t *testing.T) {
Resources_conns: &[]string{},
Stats_conns: &[]string{},
Rals_conns: &[]string{},
Rates_conns: &[]string{},
Default_ratio: utils.IntPointer(1),
Nested_fields: utils.BoolPointer(false),
}

File diff suppressed because one or more lines are too long

View File

@@ -462,6 +462,7 @@ type RouteSJsonCfg struct {
Resources_conns *[]string
Stats_conns *[]string
Rals_conns *[]string
Rates_conns *[]string
Default_ratio *int
}

View File

@@ -35,6 +35,7 @@ type RouteSCfg struct {
ResourceSConns []string
StatSConns []string
RALsConns []string
RateSConns []string
DefaultRatio int
NestedFields bool
}
@@ -114,6 +115,17 @@ func (rts *RouteSCfg) loadFromJsonCfg(jsnCfg *RouteSJsonCfg) (err error) {
}
}
}
if jsnCfg.Rates_conns != nil {
rts.RateSConns = make([]string, len(*jsnCfg.Rates_conns))
for idx, conn := range *jsnCfg.Rates_conns {
// if we have the connection internal we change the name so we can have internal rpc for each subsystem
if conn == utils.MetaInternal {
rts.RateSConns[idx] = utils.ConcatenatedKey(utils.MetaInternal, utils.MetaRateS)
} else {
rts.RateSConns[idx] = conn
}
}
}
if jsnCfg.Default_ratio != nil {
rts.DefaultRatio = *jsnCfg.Default_ratio
}
@@ -195,5 +207,16 @@ func (rts *RouteSCfg) AsMapInterface() (initialMP map[string]interface{}) {
}
initialMP[utils.StatSConnsCfg] = statSConns
}
if rts.RateSConns != nil {
rateSConns := make([]string, len(rts.RateSConns))
for i, item := range rts.RateSConns {
if item == utils.ConcatenatedKey(utils.MetaInternal, utils.MetaRateS) {
rateSConns[i] = strings.TrimSuffix(item, utils.CONCATENATED_KEY_SEP+utils.MetaRateS)
} else {
rateSConns[i] = item
}
}
initialMP[utils.RateSConnsCfg] = rateSConns
}
return
}

View File

@@ -31,10 +31,11 @@ func TestRouteSCfgloadFromJsonCfg(t *testing.T) {
String_indexed_fields: &[]string{"*req.index1"},
Prefix_indexed_fields: &[]string{"*req.index1", "*req.index2"},
Suffix_indexed_fields: &[]string{"*req.index1", "*req.index2"},
Attributes_conns: &[]string{utils.MetaInternal, "*conn1"},
Resources_conns: &[]string{utils.MetaInternal, "*conn1"},
Stats_conns: &[]string{utils.MetaInternal, "*conn1"},
Rals_conns: &[]string{utils.MetaInternal, "*conn1"},
Attributes_conns: &[]string{utils.MetaInternal, "conn1"},
Resources_conns: &[]string{utils.MetaInternal, "conn1"},
Stats_conns: &[]string{utils.MetaInternal, "conn1"},
Rals_conns: &[]string{utils.MetaInternal, "conn1"},
Rates_conns: &[]string{utils.MetaInternal, "conn1"},
Default_ratio: utils.IntPointer(10),
Nested_fields: utils.BoolPointer(true),
}
@@ -44,10 +45,11 @@ func TestRouteSCfgloadFromJsonCfg(t *testing.T) {
StringIndexedFields: &[]string{"*req.index1"},
PrefixIndexedFields: &[]string{"*req.index1", "*req.index2"},
SuffixIndexedFields: &[]string{"*req.index1", "*req.index2"},
AttributeSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes), "*conn1"},
ResourceSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResources), "*conn1"},
StatSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaStatS), "*conn1"},
RALsConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResponder), "*conn1"},
AttributeSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes), "conn1"},
ResourceSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResources), "conn1"},
StatSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaStatS), "conn1"},
RALsConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResponder), "conn1"},
RateSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaRateS), "conn1"},
DefaultRatio: 10,
NestedFields: true,
}
@@ -74,6 +76,7 @@ func TestRouteSCfgAsMapInterface(t *testing.T) {
utils.ResourceSConnsCfg: []string{},
utils.StatSConnsCfg: []string{},
utils.RALsConnsCfg: []string{},
utils.RateSConnsCfg: []string{},
utils.DefaultRatioCfg: 1,
}
if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil {
@@ -92,10 +95,11 @@ func TestRouteSCfgAsMapInterface1(t *testing.T) {
"prefix_indexed_fields": ["*req.prefix","*req.indexed","*req.fields"],
"suffix_indexed_fields": ["*req.prefix","*req.indexed"],
"nested_fields": true,
"attributes_conns": ["*internal:*attributes", "*conn1"],
"resources_conns": ["*internal:*resources", "*conn1"],
"stats_conns": ["*internal:*stats", "*conn1"],
"rals_conns": ["*internal:*responder", "*conn1"],
"attributes_conns": ["*internal:*attributes", "conn1"],
"resources_conns": ["*internal:*resources", "conn1"],
"stats_conns": ["*internal:*stats", "conn1"],
"rals_conns": ["*internal:*responder", "conn1"],
"rates_conns": ["*internal:*rates", "conn1"],
"default_ratio":2,
},
}`
@@ -106,10 +110,11 @@ func TestRouteSCfgAsMapInterface1(t *testing.T) {
utils.PrefixIndexedFieldsCfg: []string{"*req.prefix", "*req.indexed", "*req.fields"},
utils.SuffixIndexedFieldsCfg: []string{"*req.prefix", "*req.indexed"},
utils.NestedFieldsCfg: true,
utils.AttributeSConnsCfg: []string{utils.MetaInternal, "*conn1"},
utils.ResourceSConnsCfg: []string{utils.MetaInternal, "*conn1"},
utils.StatSConnsCfg: []string{utils.MetaInternal, "*conn1"},
utils.RALsConnsCfg: []string{utils.MetaInternal, "*conn1"},
utils.AttributeSConnsCfg: []string{utils.MetaInternal, "conn1"},
utils.ResourceSConnsCfg: []string{utils.MetaInternal, "conn1"},
utils.StatSConnsCfg: []string{utils.MetaInternal, "conn1"},
utils.RALsConnsCfg: []string{utils.MetaInternal, "conn1"},
utils.RateSConnsCfg: []string{utils.MetaInternal, "conn1"},
utils.DefaultRatioCfg: 2,
}
if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil {

View File

@@ -2039,6 +2039,7 @@ const (
RetransmissionTimerCfg = "retransmission_timer"
OnlineCDRExportsCfg = "online_cdr_exports"
SessionCostRetires = "session_cost_retries"
RateSConnsCfg = "rates_conns"
)
// SessionSCfg