mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Updated FilterS ApierSConns
This commit is contained in:
committed by
Dan Christian Bogos
parent
91687a3111
commit
ceb2c5b718
@@ -156,7 +156,7 @@ func testV1RsGetResourcesForEvent(t *testing.T) {
|
||||
return
|
||||
}
|
||||
if len(*reply) != 1 {
|
||||
t.Errorf("Expecting: %+v, received: %+v", 1, len(*reply))
|
||||
t.Fatalf("Expecting: %+v, received: %+v", 1, len(*reply))
|
||||
}
|
||||
if (*reply)[0].ID != "ResGroup2" {
|
||||
t.Errorf("Expecting: %+v, received: %+v", "ResGroup2", (*reply)[0].ID)
|
||||
|
||||
@@ -227,7 +227,7 @@ const CGRATES_CFG_JSON = `
|
||||
"filters": { // Filters configuration (*new)
|
||||
"stats_conns": [], // connections to StatS for <*stats> filters, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
|
||||
"resources_conns": [], // connections to ResourceS for <*resources> filters, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
|
||||
"rals_conns": [], // connections to RALs for <*accounts> filters, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
|
||||
"apiers_conns": [], // connections to RALs for <*accounts> filters, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
|
||||
},
|
||||
|
||||
|
||||
|
||||
@@ -867,7 +867,7 @@ func TestDfFilterSJsonCfg(t *testing.T) {
|
||||
eCfg := &FilterSJsonCfg{
|
||||
Stats_conns: &[]string{},
|
||||
Resources_conns: &[]string{},
|
||||
Rals_conns: &[]string{},
|
||||
Apiers_conns: &[]string{},
|
||||
}
|
||||
if cfg, err := dfCgrJsonCfg.FilterSJsonCfg(); err != nil {
|
||||
t.Error(err)
|
||||
|
||||
@@ -761,7 +761,7 @@ func TestCgrCfgJSONDefaultFiltersCfg(t *testing.T) {
|
||||
eFiltersCfg := &FilterSCfg{
|
||||
StatSConns: []string{},
|
||||
ResourceSConns: []string{},
|
||||
RALsConns: []string{},
|
||||
ApierSConns: []string{},
|
||||
}
|
||||
if !reflect.DeepEqual(cgrCfg.filterSCfg, eFiltersCfg) {
|
||||
t.Errorf("received: %+v, expecting: %+v", cgrCfg.filterSCfg, eFiltersCfg)
|
||||
|
||||
@@ -510,9 +510,9 @@ func (cfg *CGRConfig) checkConfigSanity() error {
|
||||
return fmt.Errorf("<%s> connection with id: <%s> not defined", utils.FilterS, connID)
|
||||
}
|
||||
}
|
||||
for _, connID := range cfg.filterSCfg.RALsConns {
|
||||
for _, connID := range cfg.filterSCfg.ApierSConns {
|
||||
if strings.HasPrefix(connID, utils.MetaInternal) && !cfg.ralsCfg.Enabled {
|
||||
return fmt.Errorf("<%s> not enabled but requested by <%s> component.", utils.RALService, utils.FilterS)
|
||||
return fmt.Errorf("<%s> not enabled but requested by <%s> component.", utils.ApierS, utils.FilterS)
|
||||
}
|
||||
if _, has := cfg.rpcConns[connID]; !has && !strings.HasPrefix(connID, utils.MetaInternal) {
|
||||
return fmt.Errorf("<%s> connection with id: <%s> not defined", utils.FilterS, connID)
|
||||
|
||||
@@ -872,12 +872,12 @@ func TestConfigSanityFilterS(t *testing.T) {
|
||||
}
|
||||
cfg.filterSCfg.ResourceSConns = []string{}
|
||||
|
||||
cfg.filterSCfg.RALsConns = []string{utils.MetaInternal}
|
||||
cfg.filterSCfg.ApierSConns = []string{utils.MetaInternal}
|
||||
|
||||
if err := cfg.checkConfigSanity(); err == nil || err.Error() != "<RALs> not enabled but requested by <FilterS> component." {
|
||||
if err := cfg.checkConfigSanity(); err == nil || err.Error() != "<ApierS> not enabled but requested by <FilterS> component." {
|
||||
t.Error(err)
|
||||
}
|
||||
cfg.filterSCfg.RALsConns = []string{"test"}
|
||||
cfg.filterSCfg.ApierSConns = []string{"test"}
|
||||
expected = "<FilterS> connection with id: <test> not defined"
|
||||
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
|
||||
t.Errorf("Expecting: %+q received: %+q", expected, err)
|
||||
|
||||
@@ -23,7 +23,7 @@ import "github.com/cgrates/cgrates/utils"
|
||||
type FilterSCfg struct {
|
||||
StatSConns []string
|
||||
ResourceSConns []string
|
||||
RALsConns []string
|
||||
ApierSConns []string
|
||||
}
|
||||
|
||||
func (fSCfg *FilterSCfg) loadFromJsonCfg(jsnCfg *FilterSJsonCfg) (err error) {
|
||||
@@ -52,14 +52,14 @@ func (fSCfg *FilterSCfg) loadFromJsonCfg(jsnCfg *FilterSJsonCfg) (err error) {
|
||||
}
|
||||
}
|
||||
}
|
||||
if jsnCfg.Rals_conns != nil {
|
||||
fSCfg.RALsConns = make([]string, len(*jsnCfg.Rals_conns))
|
||||
for idx, connID := range *jsnCfg.Rals_conns {
|
||||
if jsnCfg.Apiers_conns != nil {
|
||||
fSCfg.ApierSConns = make([]string, len(*jsnCfg.Apiers_conns))
|
||||
for idx, connID := range *jsnCfg.Apiers_conns {
|
||||
// if we have the connection internal we change the name so we can have internal rpc for each subsystem
|
||||
if connID == utils.MetaInternal {
|
||||
fSCfg.RALsConns[idx] = utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResponder)
|
||||
fSCfg.ApierSConns[idx] = utils.ConcatenatedKey(utils.MetaInternal, utils.MetaApier)
|
||||
} else {
|
||||
fSCfg.RALsConns[idx] = connID
|
||||
fSCfg.ApierSConns[idx] = connID
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -107,7 +107,7 @@ type ItemOptJson struct {
|
||||
type FilterSJsonCfg struct {
|
||||
Stats_conns *[]string
|
||||
Resources_conns *[]string
|
||||
Rals_conns *[]string
|
||||
Apiers_conns *[]string
|
||||
}
|
||||
|
||||
// Rater config section
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
"filters": {
|
||||
"stats_conns": ["*localhost"],
|
||||
"resources_conns": ["*localhost"],
|
||||
"rals_conns": ["*localhost"],
|
||||
"apiers_conns": ["*localhost"],
|
||||
},
|
||||
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
"filters": {
|
||||
"stats_conns": ["conn1"],
|
||||
"resources_conns": ["conn1"],
|
||||
"rals_conns": ["conn1"],
|
||||
"apiers_conns": ["conn1"],
|
||||
},
|
||||
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
"filters": {
|
||||
"stats_conns": ["*localhost"],
|
||||
"resources_conns": ["*localhost"],
|
||||
"rals_conns": ["*localhost"],
|
||||
"apiers_conns": ["*localhost"],
|
||||
},
|
||||
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
"filters": {
|
||||
"stats_conns": ["*localhost"],
|
||||
"resources_conns": ["*localhost"],
|
||||
"rals_conns": ["*localhost"],
|
||||
"apiers_conns": ["*localhost"],
|
||||
},
|
||||
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
"filters": {
|
||||
"stats_conns": ["*localhost"],
|
||||
"resources_conns": ["*localhost"],
|
||||
"rals_conns": ["*localhost"],
|
||||
"apiers_conns": ["*localhost"],
|
||||
},
|
||||
|
||||
|
||||
|
||||
@@ -100,4 +100,8 @@
|
||||
},
|
||||
|
||||
|
||||
"filters": {
|
||||
"apiers_conns": ["*internal"],
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
@@ -106,4 +106,8 @@
|
||||
},
|
||||
|
||||
|
||||
"filters": {
|
||||
"apiers_conns": ["*internal"],
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
@@ -119,4 +119,8 @@
|
||||
},
|
||||
|
||||
|
||||
"filters": {
|
||||
"apiers_conns": ["*internal"],
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
@@ -130,4 +130,8 @@
|
||||
},
|
||||
|
||||
|
||||
"filters": {
|
||||
"apiers_conns": ["*internal"],
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
@@ -135,4 +135,8 @@
|
||||
},
|
||||
|
||||
|
||||
"filters": {
|
||||
"apiers_conns": ["*internal"],
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
@@ -142,4 +142,8 @@
|
||||
},
|
||||
|
||||
|
||||
"filters": {
|
||||
"apiers_conns": ["*internal"],
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
@@ -137,4 +137,8 @@
|
||||
},
|
||||
|
||||
|
||||
"filters": {
|
||||
"apiers_conns": ["*internal"],
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
@@ -127,4 +127,8 @@
|
||||
},
|
||||
|
||||
|
||||
"filters": {
|
||||
"apiers_conns": ["*internal"],
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
@@ -127,4 +127,8 @@
|
||||
},
|
||||
|
||||
|
||||
"filters": {
|
||||
"apiers_conns": ["*internal"],
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
@@ -99,4 +99,9 @@
|
||||
"enabled": true,
|
||||
"scheduler_conns": ["*localhost"],
|
||||
},
|
||||
|
||||
"filters": {
|
||||
"apiers_conns": ["*internal"],
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
@@ -108,4 +108,9 @@
|
||||
"enabled": true,
|
||||
"scheduler_conns": ["*internal"],
|
||||
},
|
||||
|
||||
"filters": {
|
||||
"apiers_conns": ["*internal"],
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
@@ -240,4 +240,8 @@
|
||||
},
|
||||
|
||||
|
||||
"filters": {
|
||||
"apiers_conns": ["*internal"],
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
@@ -97,4 +97,10 @@
|
||||
"enabled": true,
|
||||
"scheduler_conns": ["*internal"],
|
||||
},
|
||||
|
||||
|
||||
"filters": {
|
||||
"apiers_conns": ["*internal"],
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
@@ -345,16 +345,19 @@ func (fltr *FilterRule) passDestinations(fielNameDP config.DataProvider, fieldVa
|
||||
return false, err
|
||||
}
|
||||
for _, p := range utils.SplitPrefix(dst, MIN_PREFIX_MATCH) {
|
||||
if destIDs, err := dm.GetReverseDestination(p, false, utils.NonTransactional); err == nil {
|
||||
for _, dID := range destIDs {
|
||||
for i, valDstID := range fltr.Values {
|
||||
valDstID, err := config.DPDynamicString(valDstID, fieldValuesDP[i])
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
if valDstID == dID {
|
||||
return true, nil
|
||||
}
|
||||
var destIDs []string
|
||||
if err = connMgr.Call(config.CgrConfig().FilterSCfg().ApierSConns, nil, utils.APIerSv1GetReverseDestination,
|
||||
p, &destIDs); err != nil {
|
||||
continue
|
||||
}
|
||||
for _, dID := range destIDs {
|
||||
for i, valDstID := range fltr.Values {
|
||||
valDstID, err := config.DPDynamicString(valDstID, fieldValuesDP[i])
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
if valDstID == dID {
|
||||
return true, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -442,7 +445,7 @@ func (fS *FilterS) getFieldNameDataProvider(initialDP config.DataProvider,
|
||||
return nil, fmt.Errorf("invalid fieldname <%s>", fieldName)
|
||||
}
|
||||
var account *Account
|
||||
if err = fS.connMgr.Call(fS.cfg.FilterSCfg().RALsConns, nil, utils.APIerSv2GetAccount,
|
||||
if err = fS.connMgr.Call(fS.cfg.FilterSCfg().ApierSConns, nil, utils.APIerSv2GetAccount,
|
||||
&utils.AttrGetAccount{Tenant: tenant, Account: splitFldName[1]}, &account); err != nil {
|
||||
return
|
||||
}
|
||||
@@ -518,7 +521,7 @@ func (fS *FilterS) getFieldValueDataProvider(initialDP config.DataProvider,
|
||||
return nil, fmt.Errorf("invalid fieldname <%s>", fieldValue)
|
||||
}
|
||||
var account *Account
|
||||
if err = fS.connMgr.Call(fS.cfg.FilterSCfg().RALsConns, nil, utils.APIerSv2GetAccount,
|
||||
if err = fS.connMgr.Call(fS.cfg.FilterSCfg().ApierSConns, nil, utils.APIerSv2GetAccount,
|
||||
&utils.AttrGetAccount{Tenant: tenant, Account: splitFldName[1]}, &account); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ import (
|
||||
|
||||
"github.com/cgrates/cgrates/config"
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
"github.com/cgrates/rpcclient"
|
||||
)
|
||||
|
||||
func TestFilterPassString(t *testing.T) {
|
||||
@@ -305,9 +306,37 @@ func TestFilterPassRSRFields(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// structure to mimic the APIerSv1 to test *destination
|
||||
type apierSv1Dummy struct {
|
||||
DataManager *DataManager
|
||||
}
|
||||
|
||||
func (apiv1 *apierSv1Dummy) GetReverseDestination(prefix string, reply *[]string) (err error) {
|
||||
if prefix == "" {
|
||||
return utils.NewErrMandatoryIeMissing("prefix")
|
||||
}
|
||||
var revLst []string
|
||||
if revLst, err = apiv1.DataManager.GetReverseDestination(prefix, false, utils.NonTransactional); err != nil {
|
||||
return
|
||||
}
|
||||
*reply = revLst
|
||||
return
|
||||
}
|
||||
|
||||
func (apiv1 *apierSv1Dummy) Call(serviceMethod string,
|
||||
args interface{}, reply interface{}) error {
|
||||
return utils.APIerRPCCall(apiv1, serviceMethod, args, reply)
|
||||
}
|
||||
|
||||
func TestFilterPassDestinations(t *testing.T) {
|
||||
Cache.Set(utils.CacheReverseDestinations, "+49",
|
||||
[]string{"DE", "EU_LANDLINE"}, nil, true, "")
|
||||
config.CgrConfig().FilterSCfg().ApierSConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaApier)}
|
||||
internalAPIerSv1Chan := make(chan rpcclient.ClientConnector, 1)
|
||||
internalAPIerSv1Chan <- &apierSv1Dummy{DataManager: dm}
|
||||
connMgr = NewConnManager(config.CgrConfig(), map[string]chan rpcclient.ClientConnector{
|
||||
utils.ConcatenatedKey(utils.MetaInternal, utils.MetaApier): internalAPIerSv1Chan,
|
||||
})
|
||||
cd := &CallDescriptor{
|
||||
Category: "call",
|
||||
Tenant: "cgrates.org",
|
||||
|
||||
Reference in New Issue
Block a user