Move config/rsrparser.go to utils package

This commit is contained in:
ionutboangiu
2025-02-17 10:50:56 +02:00
committed by Dan Christian Bogos
parent 36a7d174ab
commit b1a5874215
81 changed files with 1511 additions and 1524 deletions

View File

@@ -34,7 +34,7 @@ func NewAgentRequest(req utils.DataProvider,
vars, cgrRply *utils.DataNode,
rply *utils.OrderedNavigableMap,
opts utils.MapStorage,
tntTpl config.RSRParsers,
tntTpl utils.RSRParsers,
dfltTenant, timezone string,
filterS *engine.FilterS,
extraDP map[string]utils.DataProvider) (ar *AgentRequest) {

View File

@@ -68,44 +68,44 @@ func TestAgReqSetFields(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "Tenant",
Path: utils.MetaRep + utils.NestingSep + utils.Tenant, Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
{Tag: "Account",
Path: utils.MetaRep + utils.NestingSep + utils.AccountField, Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*cgreq.Account", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgreq.Account", utils.InfieldSep)},
{Tag: "Destination",
Path: utils.MetaRep + utils.NestingSep + utils.Destination, Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*cgreq.Destination", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgreq.Destination", utils.InfieldSep)},
{Tag: "RequestedUsageVoice",
Path: utils.MetaRep + utils.NestingSep + "RequestedUsage", Type: utils.MetaVariable,
Filters: []string{"*string:~*cgreq.ToR:*voice"},
Value: config.NewRSRParsersMustCompile(
Value: utils.NewRSRParsersMustCompile(
"~*cgreq.Usage{*duration_seconds}", utils.InfieldSep)},
{Tag: "RequestedUsageData",
Path: utils.MetaRep + utils.NestingSep + "RequestedUsage", Type: utils.MetaVariable,
Filters: []string{"*string:~*cgreq.ToR:*data"},
Value: config.NewRSRParsersMustCompile(
Value: utils.NewRSRParsersMustCompile(
"~*cgreq.Usage{*duration_nanoseconds}", utils.InfieldSep)},
{Tag: "RequestedUsageSMS",
Path: utils.MetaRep + utils.NestingSep + "RequestedUsage", Type: utils.MetaVariable,
Filters: []string{"*string:~*cgreq.ToR:*sms"},
Value: config.NewRSRParsersMustCompile(
Value: utils.NewRSRParsersMustCompile(
"~*cgreq.Usage{*duration_nanoseconds}", utils.InfieldSep)},
{Tag: "AttrPaypalAccount",
Path: utils.MetaRep + utils.NestingSep + "PaypalAccount", Type: utils.MetaVariable,
Filters: []string{"*empty:~*cgrep.Error:"},
Value: config.NewRSRParsersMustCompile(
Value: utils.NewRSRParsersMustCompile(
"~*cgrep.Attributes.PaypalAccount", utils.InfieldSep)},
{Tag: "MaxUsage",
Path: utils.MetaRep + utils.NestingSep + "MaxUsage", Type: utils.MetaVariable,
Filters: []string{"*empty:~*cgrep.Error:"},
Value: config.NewRSRParsersMustCompile(
Value: utils.NewRSRParsersMustCompile(
"~*cgrep.MaxUsage{*duration_seconds}", utils.InfieldSep)},
{Tag: "Error",
Path: utils.MetaRep + utils.NestingSep + "Error", Type: utils.MetaVariable,
Filters: []string{"*rsr:~*cgrep.Error:!^$"},
Value: config.NewRSRParsersMustCompile(
Value: utils.NewRSRParsersMustCompile(
"~*cgrep.Error", utils.InfieldSep)},
}
for _, v := range tplFlds {
@@ -144,7 +144,7 @@ func TestAgentRequestSetFields(t *testing.T) {
dm := engine.NewDataManager(engine.NewInternalDB(nil, nil, cfg.DataDbCfg().Items),
config.CgrConfig().CacheCfg(), nil)
ar := NewAgentRequest(utils.MapStorage(req), nil,
nil, nil, nil, config.NewRSRParsersMustCompile("", utils.NestingSep),
nil, nil, nil, utils.NewRSRParsersMustCompile("", utils.NestingSep),
"cgrates.org", "", engine.NewFilterS(cfg, nil, dm),
map[string]utils.DataProvider{utils.MetaHdr: utils.MapStorage(req), utils.MetaTrl: utils.MapStorage(req)})
input := []*config.FCTemplate{}
@@ -167,7 +167,7 @@ func TestAgentRequestSetFields(t *testing.T) {
Path: fmt.Sprintf("%s.Account", utils.MetaVars),
Tag: fmt.Sprintf("%s.Account", utils.MetaVars),
Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~"+utils.MetaReq+".Account", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~"+utils.MetaReq+".Account", utils.InfieldSep),
},
}
input[0].ComputePath()
@@ -190,7 +190,7 @@ func TestAgentRequestSetFields(t *testing.T) {
Path: fmt.Sprintf("%s.Account", utils.MetaCgreq),
Tag: fmt.Sprintf("%s.Account", utils.MetaCgreq),
Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~"+utils.MetaReq+".Account", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~"+utils.MetaReq+".Account", utils.InfieldSep),
},
}
input[0].ComputePath()
@@ -212,7 +212,7 @@ func TestAgentRequestSetFields(t *testing.T) {
Path: fmt.Sprintf("%s.Account", utils.MetaCgrep),
Tag: fmt.Sprintf("%s.Account", utils.MetaCgrep),
Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~"+utils.MetaReq+".Account", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~"+utils.MetaReq+".Account", utils.InfieldSep),
},
}
input[0].ComputePath()
@@ -234,7 +234,7 @@ func TestAgentRequestSetFields(t *testing.T) {
Path: fmt.Sprintf("%s.Account", utils.MetaRep),
Tag: fmt.Sprintf("%s.Account", utils.MetaRep),
Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~"+utils.MetaReq+".Account", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~"+utils.MetaReq+".Account", utils.InfieldSep),
},
}
input[0].ComputePath()
@@ -256,7 +256,7 @@ func TestAgentRequestSetFields(t *testing.T) {
Path: fmt.Sprintf("%s.Account", utils.MetaDiamreq),
Tag: fmt.Sprintf("%s.Account", utils.MetaDiamreq),
Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~"+utils.MetaReq+".Account", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~"+utils.MetaReq+".Account", utils.InfieldSep),
},
}
input[0].ComputePath()
@@ -278,19 +278,19 @@ func TestAgentRequestSetFields(t *testing.T) {
Path: fmt.Sprintf("%s.AccountID", utils.MetaVars),
Tag: fmt.Sprintf("%s.AccountID", utils.MetaVars),
Type: utils.MetaComposed,
Value: config.NewRSRParsersMustCompile("~"+utils.MetaReq+".Tenant", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~"+utils.MetaReq+".Tenant", utils.InfieldSep),
},
{
Path: fmt.Sprintf("%s.AccountID", utils.MetaVars),
Tag: fmt.Sprintf("%s.AccountID", utils.MetaVars),
Type: utils.MetaComposed,
Value: config.NewRSRParsersMustCompile(":", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile(":", utils.InfieldSep),
},
{
Path: fmt.Sprintf("%s.AccountID", utils.MetaVars),
Tag: fmt.Sprintf("%s.AccountID", utils.MetaVars),
Type: utils.MetaComposed,
Value: config.NewRSRParsersMustCompile("~"+utils.MetaReq+".Account", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~"+utils.MetaReq+".Account", utils.InfieldSep),
},
}
for _, v := range input {
@@ -315,7 +315,7 @@ func TestAgentRequestSetFields(t *testing.T) {
Path: fmt.Sprintf("%s.Account", utils.MetaVars),
Tag: fmt.Sprintf("%s.Account", utils.MetaVars),
Type: utils.MetaConstant,
Value: config.NewRSRParsersMustCompile("2020", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("2020", utils.InfieldSep),
},
}
input[0].ComputePath()
@@ -338,7 +338,7 @@ func TestAgentRequestSetFields(t *testing.T) {
Tag: fmt.Sprintf("%s.AccountID", utils.MetaVars),
Filters: []string{utils.MetaString + ":~" + utils.MetaVars + ".Account:1003"},
Type: utils.MetaConstant,
Value: config.NewRSRParsersMustCompile("2021", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("2021", utils.InfieldSep),
},
}
input[0].ComputePath()
@@ -360,7 +360,7 @@ func TestAgentRequestSetFields(t *testing.T) {
Tag: fmt.Sprintf("%s.Account", utils.MetaVars),
Filters: []string{"Not really a filter"},
Type: utils.MetaConstant,
Value: config.NewRSRParsersMustCompile("2021", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("2021", utils.InfieldSep),
},
}
input[0].ComputePath()
@@ -374,14 +374,14 @@ func TestAgentRequestSetFields(t *testing.T) {
Path: fmt.Sprintf("%s.Name", utils.MetaVars),
Tag: fmt.Sprintf("%s.Name", utils.MetaVars),
Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~"+utils.MetaReq+".Account", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~"+utils.MetaReq+".Account", utils.InfieldSep),
Blocker: true,
},
{
Path: fmt.Sprintf("%s.Name", utils.MetaVars),
Tag: fmt.Sprintf("%s.Name", utils.MetaVars),
Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("1005", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("1005", utils.InfieldSep),
},
}
for _, v := range input {
@@ -405,7 +405,7 @@ func TestAgentRequestSetFields(t *testing.T) {
Path: fmt.Sprintf("%s.Test", utils.MetaVars),
Tag: fmt.Sprintf("%s.Test", utils.MetaVars),
Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~"+utils.MetaReq+".Test", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~"+utils.MetaReq+".Test", utils.InfieldSep),
},
}
input[0].ComputePath()
@@ -419,7 +419,7 @@ func TestAgentRequestSetFields(t *testing.T) {
Path: fmt.Sprintf("%s.Test", utils.MetaVars),
Tag: fmt.Sprintf("%s.Test", utils.MetaVars),
Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~"+utils.MetaReq+".Test", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~"+utils.MetaReq+".Test", utils.InfieldSep),
Mandatory: true,
},
}
@@ -434,7 +434,7 @@ func TestAgentRequestSetFields(t *testing.T) {
Path: "wrong",
Tag: "wrong",
Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*req.Account", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~*req.Account", utils.InfieldSep),
Mandatory: true,
},
}
@@ -449,7 +449,7 @@ func TestAgentRequestSetFields(t *testing.T) {
Path: fmt.Sprintf("%s.Account4", utils.MetaVars),
Tag: fmt.Sprintf("%s.Account4", utils.MetaVars),
Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~"+utils.MetaHdr+".Account", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~"+utils.MetaHdr+".Account", utils.InfieldSep),
},
}
input[0].ComputePath()
@@ -470,7 +470,7 @@ func TestAgentRequestSetFields(t *testing.T) {
Path: fmt.Sprintf("%s.Account5", utils.MetaVars),
Tag: fmt.Sprintf("%s.Account5", utils.MetaVars),
Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~"+utils.MetaTrl+".Account", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~"+utils.MetaTrl+".Account", utils.InfieldSep),
},
}
input[0].ComputePath()
@@ -504,7 +504,7 @@ func TestAgReqMaxCost(t *testing.T) {
{Tag: "MaxUsage",
Path: utils.MetaRep + utils.NestingSep + "MaxUsage", Type: utils.MetaVariable,
Filters: []string{"*rsr:~*cgrep.MaxUsage:>0s"},
Value: config.NewRSRParsersMustCompile(
Value: utils.NewRSRParsersMustCompile(
"~*cgrep.MaxUsage{*duration_seconds}", utils.InfieldSep)},
}
tplFlds[0].ComputePath()
@@ -544,15 +544,15 @@ func TestAgReqParseFieldDiameter(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "MandatoryFalse",
Path: "MandatoryFalse", Type: utils.MetaComposed,
Value: config.NewRSRParsersMustCompile("~*req.MandatoryFalse", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~*req.MandatoryFalse", utils.InfieldSep),
Mandatory: false},
{Tag: "MandatoryTrue",
Path: "MandatoryTrue", Type: utils.MetaComposed,
Value: config.NewRSRParsersMustCompile("~*req.MandatoryTrue", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~*req.MandatoryTrue", utils.InfieldSep),
Mandatory: true},
{Tag: "Session-Id", Filters: []string{},
Path: "Session-Id", Type: utils.MetaComposed,
Value: config.NewRSRParsersMustCompile("~*req.Session-Id", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~*req.Session-Id", utils.InfieldSep),
Mandatory: true},
}
for _, v := range tplFlds {
@@ -596,11 +596,11 @@ func TestAgReqParseFieldRadius(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "MandatoryFalse",
Path: "MandatoryFalse", Type: utils.MetaComposed,
Value: config.NewRSRParsersMustCompile("~*req.MandatoryFalse", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~*req.MandatoryFalse", utils.InfieldSep),
Mandatory: false},
{Tag: "MandatoryTrue",
Path: "MandatoryTrue", Type: utils.MetaComposed,
Value: config.NewRSRParsersMustCompile("~*req.MandatoryTrue", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~*req.MandatoryTrue", utils.InfieldSep),
Mandatory: true},
}
for _, v := range tplFlds {
@@ -639,11 +639,11 @@ Host: api.cgrates.org
tplFlds := []*config.FCTemplate{
{Tag: "MandatoryFalse",
Path: "MandatoryFalse", Type: utils.MetaComposed,
Value: config.NewRSRParsersMustCompile("~*req.MandatoryFalse", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~*req.MandatoryFalse", utils.InfieldSep),
Mandatory: false},
{Tag: "MandatoryTrue",
Path: "MandatoryTrue", Type: utils.MetaComposed,
Value: config.NewRSRParsersMustCompile("~*req.MandatoryTrue", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~*req.MandatoryTrue", utils.InfieldSep),
Mandatory: true},
}
expected := ""
@@ -711,11 +711,11 @@ func TestAgReqParseFieldHttpXml(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "MandatoryFalse",
Path: "MandatoryFalse", Type: utils.MetaComposed,
Value: config.NewRSRParsersMustCompile("~*req.MandatoryFalse", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~*req.MandatoryFalse", utils.InfieldSep),
Mandatory: false},
{Tag: "MandatoryTrue",
Path: "MandatoryTrue", Type: utils.MetaComposed,
Value: config.NewRSRParsersMustCompile("~*req.MandatoryTrue", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~*req.MandatoryTrue", utils.InfieldSep),
Mandatory: true},
}
expected := ""
@@ -744,14 +744,14 @@ func TestAgReqEmptyFilter(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "Tenant", Filters: []string{},
Path: utils.MetaCgrep + utils.NestingSep + utils.Tenant, Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
{Tag: "Account", Filters: []string{},
Path: utils.MetaCgrep + utils.NestingSep + utils.AccountField, Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*cgreq.Account", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgreq.Account", utils.InfieldSep)},
{Tag: "Destination", Filters: []string{},
Path: utils.MetaCgrep + utils.NestingSep + utils.Destination, Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*cgreq.Destination", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgreq.Destination", utils.InfieldSep)},
}
for _, v := range tplFlds {
v.ComputePath()
@@ -783,7 +783,7 @@ func TestAgReqMetaExponent(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "TestExpo", Filters: []string{},
Path: utils.MetaCgrep + utils.NestingSep + "TestExpo", Type: utils.MetaValueExponent,
Value: config.NewRSRParsersMustCompile("~*cgreq.Value;~*cgreq.Exponent", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgreq.Value;~*cgreq.Exponent", utils.InfieldSep)},
}
tplFlds[0].ComputePath()
eMp := &utils.DataNode{Type: utils.NMMapType, Map: map[string]*utils.DataNode{}}
@@ -811,14 +811,14 @@ func TestAgReqFieldAsNone(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "Tenant",
Path: utils.MetaCgrep + utils.NestingSep + utils.Tenant, Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
{Tag: "Account",
Path: utils.MetaCgrep + utils.NestingSep + utils.AccountField, Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*cgreq.Account", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgreq.Account", utils.InfieldSep)},
{Type: utils.MetaNone, Blocker: true},
{Tag: "Destination",
Path: utils.MetaCgrep + utils.NestingSep + utils.Destination, Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*cgreq.Destination", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgreq.Destination", utils.InfieldSep)},
}
for _, v := range tplFlds {
v.ComputePath()
@@ -849,14 +849,14 @@ func TestAgReqFieldAsNone2(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "Tenant",
Path: utils.MetaCgrep + utils.NestingSep + utils.Tenant, Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
{Tag: "Account",
Path: utils.MetaCgrep + utils.NestingSep + utils.AccountField, Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*cgreq.Account", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgreq.Account", utils.InfieldSep)},
{Type: utils.MetaNone},
{Tag: "Destination",
Path: utils.MetaCgrep + utils.NestingSep + utils.Destination, Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*cgreq.Destination", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgreq.Destination", utils.InfieldSep)},
}
for _, v := range tplFlds {
v.ComputePath()
@@ -894,19 +894,19 @@ func TestAgReqSetField2(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "Tenant",
Path: utils.MetaCgrep + utils.NestingSep + utils.Tenant, Type: utils.MetaComposed,
Value: config.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
{Tag: "Account",
Path: utils.MetaCgrep + utils.NestingSep + utils.AccountField, Type: utils.MetaComposed,
Value: config.NewRSRParsersMustCompile("~*cgreq.Account", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgreq.Account", utils.InfieldSep)},
{Tag: "Destination",
Path: utils.MetaCgrep + utils.NestingSep + utils.Destination, Type: utils.MetaComposed,
Value: config.NewRSRParsersMustCompile("~*cgreq.Destination", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgreq.Destination", utils.InfieldSep)},
{Tag: "Usage",
Path: utils.MetaCgrep + utils.NestingSep + utils.Usage, Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("30s", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("30s", utils.InfieldSep)},
{Tag: "CalculatedUsage",
Path: utils.MetaCgrep + utils.NestingSep + "CalculatedUsage",
Type: "*difference", Value: config.NewRSRParsersMustCompile("~*cgreq.AnswerTime;~*cgrep.Usage", utils.InfieldSep),
Type: "*difference", Value: utils.NewRSRParsersMustCompile("~*cgreq.AnswerTime;~*cgrep.Usage", utils.InfieldSep),
},
}
for _, v := range tplFlds {
@@ -1252,10 +1252,10 @@ func TestAgReqNewARWithCGRRplyAndRply(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "Fld1",
Path: utils.MetaCgreq + utils.NestingSep + "Fld1", Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*rep.FirstLevel.SecondLevel.Fld1", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*rep.FirstLevel.SecondLevel.Fld1", utils.InfieldSep)},
{Tag: "Fld2",
Path: utils.MetaCgreq + utils.NestingSep + "Fld2", Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*cgrep.Attributes.PaypalAccount", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgrep.Attributes.PaypalAccount", utils.InfieldSep)},
}
for _, v := range tplFlds {
v.ComputePath()
@@ -1291,10 +1291,10 @@ func TestAgReqSetCGRReplyWithError(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "Fld1",
Path: utils.MetaCgreq + utils.NestingSep + "Fld1", Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*rep.FirstLevel.SecondLevel.Fld1", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*rep.FirstLevel.SecondLevel.Fld1", utils.InfieldSep)},
{Tag: "Fld2",
Path: utils.MetaCgreq + utils.NestingSep + "Fld2", Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*cgrep.Attributes.PaypalAccount", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~*cgrep.Attributes.PaypalAccount", utils.InfieldSep),
Mandatory: true},
}
for _, v := range tplFlds {
@@ -1339,10 +1339,10 @@ func TestAgReqSetCGRReplyWithoutError(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "Fld1",
Path: utils.MetaCgreq + utils.NestingSep + "Fld1", Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*rep.FirstLevel.SecondLevel.Fld1", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*rep.FirstLevel.SecondLevel.Fld1", utils.InfieldSep)},
{Tag: "Fld2",
Path: utils.MetaCgreq + utils.NestingSep + "Fld2", Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*cgrep.Attributes.PaypalAccount", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgrep.Attributes.PaypalAccount", utils.InfieldSep)},
}
for _, v := range tplFlds {
v.ComputePath()
@@ -1384,7 +1384,7 @@ func TestAgReqParseFieldMetaCCUsage(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "CCUsage", Filters: []string{},
Path: "CCUsage", Type: utils.MetaCCUsage,
Value: config.NewRSRParsersMustCompile("~*req.Session-Id", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~*req.Session-Id", utils.InfieldSep),
Mandatory: true},
}
tplFlds[0].ComputePath()
@@ -1397,7 +1397,7 @@ func TestAgReqParseFieldMetaCCUsage(t *testing.T) {
tplFlds = []*config.FCTemplate{
{Tag: "CCUsage", Filters: []string{},
Path: "CCUsage", Type: utils.MetaCCUsage,
Value: config.NewRSRParsersMustCompile("~*req.Session-Id;12s;12s", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~*req.Session-Id;12s;12s", utils.InfieldSep),
Mandatory: true},
}
tplFlds[0].ComputePath()
@@ -1409,7 +1409,7 @@ func TestAgReqParseFieldMetaCCUsage(t *testing.T) {
tplFlds = []*config.FCTemplate{
{Tag: "CCUsage", Filters: []string{},
Path: "CCUsage", Type: utils.MetaCCUsage,
Value: config.NewRSRParsersMustCompile("10;~*req.Session-Id;12s", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("10;~*req.Session-Id;12s", utils.InfieldSep),
Mandatory: true},
}
tplFlds[0].ComputePath()
@@ -1421,7 +1421,7 @@ func TestAgReqParseFieldMetaCCUsage(t *testing.T) {
tplFlds = []*config.FCTemplate{
{Tag: "CCUsage", Filters: []string{},
Path: "CCUsage", Type: utils.MetaCCUsage,
Value: config.NewRSRParsersMustCompile("10;12s;~*req.Session-Id", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("10;12s;~*req.Session-Id", utils.InfieldSep),
Mandatory: true},
}
tplFlds[0].ComputePath()
@@ -1433,7 +1433,7 @@ func TestAgReqParseFieldMetaCCUsage(t *testing.T) {
tplFlds = []*config.FCTemplate{
{Tag: "CCUsage", Filters: []string{},
Path: "CCUsage", Type: utils.MetaCCUsage,
Value: config.NewRSRParsersMustCompile("3;10s;5s", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("3;10s;5s", utils.InfieldSep),
Mandatory: true},
}
tplFlds[0].ComputePath()
@@ -1468,7 +1468,7 @@ func TestAgReqParseFieldMetaUsageDifference(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "Usage", Filters: []string{},
Path: "Usage", Type: utils.MetaUsageDifference,
Value: config.NewRSRParsersMustCompile("~*req.Session-Id", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~*req.Session-Id", utils.InfieldSep),
Mandatory: true},
}
if _, err := agReq.ParseField(tplFlds[0]); err == nil ||
@@ -1479,7 +1479,7 @@ func TestAgReqParseFieldMetaUsageDifference(t *testing.T) {
tplFlds = []*config.FCTemplate{
{Tag: "Usage", Filters: []string{},
Path: "Usage", Type: utils.MetaUsageDifference,
Value: config.NewRSRParsersMustCompile("1560325161;~*req.Session-Id", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("1560325161;~*req.Session-Id", utils.InfieldSep),
Mandatory: true},
}
if _, err := agReq.ParseField(tplFlds[0]); err == nil ||
@@ -1490,7 +1490,7 @@ func TestAgReqParseFieldMetaUsageDifference(t *testing.T) {
tplFlds = []*config.FCTemplate{
{Tag: "Usage", Filters: []string{},
Path: "Usage", Type: utils.MetaUsageDifference,
Value: config.NewRSRParsersMustCompile("~*req.Session-Id;1560325161", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~*req.Session-Id;1560325161", utils.InfieldSep),
Mandatory: true},
}
if _, err := agReq.ParseField(tplFlds[0]); err == nil ||
@@ -1501,7 +1501,7 @@ func TestAgReqParseFieldMetaUsageDifference(t *testing.T) {
tplFlds = []*config.FCTemplate{
{Tag: "Usage", Filters: []string{},
Path: "Usage", Type: utils.MetaUsageDifference,
Value: config.NewRSRParsersMustCompile("1560325161;1560325151", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("1560325161;1560325151", utils.InfieldSep),
Mandatory: true},
}
expected := "10s"
@@ -1534,7 +1534,7 @@ func TestAgReqParseFieldMetaSum(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "Sum", Filters: []string{},
Path: "Sum", Type: utils.MetaSum,
Value: config.NewRSRParsersMustCompile("15;~*req.Session-Id", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("15;~*req.Session-Id", utils.InfieldSep),
Mandatory: true},
}
if _, err := agReq.ParseField(tplFlds[0]); err == nil ||
@@ -1545,7 +1545,7 @@ func TestAgReqParseFieldMetaSum(t *testing.T) {
tplFlds = []*config.FCTemplate{
{Tag: "Sum", Filters: []string{},
Path: "Sum", Type: utils.MetaSum,
Value: config.NewRSRParsersMustCompile("15;15", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("15;15", utils.InfieldSep),
Mandatory: true},
}
expected := int64(30)
@@ -1578,7 +1578,7 @@ func TestAgReqParseFieldMetaDifference(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "Diff", Filters: []string{},
Path: "Diff", Type: utils.MetaDifference,
Value: config.NewRSRParsersMustCompile("15;~*req.Session-Id", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("15;~*req.Session-Id", utils.InfieldSep),
Mandatory: true},
}
if _, err := agReq.ParseField(tplFlds[0]); err == nil ||
@@ -1589,7 +1589,7 @@ func TestAgReqParseFieldMetaDifference(t *testing.T) {
tplFlds = []*config.FCTemplate{
{Tag: "Diff", Filters: []string{},
Path: "Diff", Type: utils.MetaDifference,
Value: config.NewRSRParsersMustCompile("15;12;2", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("15;12;2", utils.InfieldSep),
Mandatory: true},
}
expected := int64(1)
@@ -1622,7 +1622,7 @@ func TestAgReqParseFieldMetaMultiply(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "Multiply", Filters: []string{},
Path: "Multiply", Type: utils.MetaMultiply,
Value: config.NewRSRParsersMustCompile("15;~*req.Session-Id", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("15;~*req.Session-Id", utils.InfieldSep),
Mandatory: true},
}
if _, err := agReq.ParseField(tplFlds[0]); err == nil ||
@@ -1633,7 +1633,7 @@ func TestAgReqParseFieldMetaMultiply(t *testing.T) {
tplFlds = []*config.FCTemplate{
{Tag: "Multiply", Filters: []string{},
Path: "Multiply", Type: utils.MetaMultiply,
Value: config.NewRSRParsersMustCompile("15;15", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("15;15", utils.InfieldSep),
Mandatory: true},
}
expected := int64(225)
@@ -1666,7 +1666,7 @@ func TestAgReqParseFieldMetaDivide(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "Divide", Filters: []string{},
Path: "Divide", Type: utils.MetaDivide,
Value: config.NewRSRParsersMustCompile("15;~*req.Session-Id", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("15;~*req.Session-Id", utils.InfieldSep),
Mandatory: true},
}
if _, err := agReq.ParseField(tplFlds[0]); err == nil ||
@@ -1677,7 +1677,7 @@ func TestAgReqParseFieldMetaDivide(t *testing.T) {
tplFlds = []*config.FCTemplate{
{Tag: "Divide", Filters: []string{},
Path: "Divide", Type: utils.MetaDivide,
Value: config.NewRSRParsersMustCompile("15;3", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("15;3", utils.InfieldSep),
Mandatory: true},
}
expected := int64(5)
@@ -1710,7 +1710,7 @@ func TestAgReqParseFieldMetaValueExponent(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "ValExp", Filters: []string{},
Path: "ValExp", Type: utils.MetaValueExponent,
Value: config.NewRSRParsersMustCompile("~*req.Session-Id", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~*req.Session-Id", utils.InfieldSep),
Mandatory: true},
}
if _, err := agReq.ParseField(tplFlds[0]); err == nil ||
@@ -1721,7 +1721,7 @@ func TestAgReqParseFieldMetaValueExponent(t *testing.T) {
tplFlds = []*config.FCTemplate{
{Tag: "ValExp", Filters: []string{},
Path: "ValExp", Type: utils.MetaValueExponent,
Value: config.NewRSRParsersMustCompile("15;~*req.Session-Id", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("15;~*req.Session-Id", utils.InfieldSep),
Mandatory: true},
}
if _, err := agReq.ParseField(tplFlds[0]); err == nil ||
@@ -1732,7 +1732,7 @@ func TestAgReqParseFieldMetaValueExponent(t *testing.T) {
tplFlds = []*config.FCTemplate{
{Tag: "ValExp", Filters: []string{},
Path: "ValExp", Type: utils.MetaValueExponent,
Value: config.NewRSRParsersMustCompile("~*req.Session-Id;15", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~*req.Session-Id;15", utils.InfieldSep),
Mandatory: true},
}
if _, err := agReq.ParseField(tplFlds[0]); err == nil ||
@@ -1742,7 +1742,7 @@ func TestAgReqParseFieldMetaValueExponent(t *testing.T) {
tplFlds = []*config.FCTemplate{
{Tag: "ValExp", Filters: []string{},
Path: "ValExp", Type: utils.MetaValueExponent,
Value: config.NewRSRParsersMustCompile("2;3", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("2;3", utils.InfieldSep),
Mandatory: true},
}
expected := "2000"
@@ -1772,19 +1772,19 @@ func TestAgReqOverwrite(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "Account",
Path: utils.MetaCgrep + utils.NestingSep + utils.AccountField, Type: utils.MetaComposed,
Value: config.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
{Tag: "Account",
Path: utils.MetaCgrep + utils.NestingSep + utils.AccountField, Type: utils.MetaComposed,
Value: config.NewRSRParsersMustCompile(":", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile(":", utils.InfieldSep)},
{Tag: "Account",
Path: utils.MetaCgrep + utils.NestingSep + utils.AccountField, Type: utils.MetaComposed,
Value: config.NewRSRParsersMustCompile("~*cgreq.Account", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgreq.Account", utils.InfieldSep)},
{Tag: "Account",
Path: utils.MetaCgrep + utils.NestingSep + utils.AccountField, Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("OverwrittenAccount", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("OverwrittenAccount", utils.InfieldSep)},
{Tag: "Account",
Path: utils.MetaCgrep + utils.NestingSep + utils.AccountField, Type: utils.MetaComposed,
Value: config.NewRSRParsersMustCompile("WithComposed", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("WithComposed", utils.InfieldSep)},
}
for _, v := range tplFlds {
v.ComputePath()
@@ -1824,10 +1824,10 @@ func TestAgReqGroupType(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "Account",
Path: utils.MetaCgrep + utils.NestingSep + utils.AccountField, Type: utils.MetaGroup,
Value: config.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
{Tag: "Account",
Path: utils.MetaCgrep + utils.NestingSep + utils.AccountField, Type: utils.MetaGroup,
Value: config.NewRSRParsersMustCompile("test", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("test", utils.InfieldSep)},
}
for _, v := range tplFlds {
v.ComputePath()
@@ -1860,10 +1860,10 @@ func TestAgReqSetFieldsInTmp(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "Tenant",
Path: utils.MetaTmp + utils.NestingSep + utils.Tenant, Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
{Tag: "Account",
Path: utils.MetaTmp + utils.NestingSep + utils.AccountField, Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*cgreq.Account", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgreq.Account", utils.InfieldSep)},
}
for _, v := range tplFlds {
v.ComputePath()
@@ -1892,7 +1892,7 @@ func TestAgReqSetFieldsIp2Hex(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "IP",
Path: utils.MetaTmp + utils.NestingSep + "IP", Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*cgreq.IP{*ip2hex}", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgreq.IP{*ip2hex}", utils.InfieldSep)},
}
for _, v := range tplFlds {
v.ComputePath()
@@ -1919,7 +1919,7 @@ func TestAgReqSetFieldsString2Hex(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "CustomField",
Path: utils.MetaTmp + utils.NestingSep + "CustomField", Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*cgreq.CustomField{*string2hex}", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgreq.CustomField{*string2hex}", utils.InfieldSep)},
}
for _, v := range tplFlds {
v.ComputePath()
@@ -1962,44 +1962,44 @@ func TestAgReqSetFieldsWithRemove(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "Tenant",
Path: utils.MetaRep + utils.NestingSep + utils.Tenant, Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
{Tag: "Account",
Path: utils.MetaRep + utils.NestingSep + utils.AccountField, Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*cgreq.Account", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgreq.Account", utils.InfieldSep)},
{Tag: "Destination",
Path: utils.MetaRep + utils.NestingSep + utils.Destination, Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*cgreq.Destination", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgreq.Destination", utils.InfieldSep)},
{Tag: "RequestedUsageVoice",
Path: utils.MetaRep + utils.NestingSep + "RequestedUsage", Type: utils.MetaVariable,
Filters: []string{"*string:~*cgreq.ToR:*voice"},
Value: config.NewRSRParsersMustCompile(
Value: utils.NewRSRParsersMustCompile(
"~*cgreq.Usage{*duration_seconds}", utils.InfieldSep)},
{Tag: "RequestedUsageData",
Path: utils.MetaRep + utils.NestingSep + "RequestedUsage", Type: utils.MetaVariable,
Filters: []string{"*string:~*cgreq.ToR:*data"},
Value: config.NewRSRParsersMustCompile(
Value: utils.NewRSRParsersMustCompile(
"~*cgreq.Usage{*duration_nanoseconds}", utils.InfieldSep)},
{Tag: "RequestedUsageSMS",
Path: utils.MetaRep + utils.NestingSep + "RequestedUsage", Type: utils.MetaVariable,
Filters: []string{"*string:~*cgreq.ToR:*sms"},
Value: config.NewRSRParsersMustCompile(
Value: utils.NewRSRParsersMustCompile(
"~*cgreq.Usage{*duration_nanoseconds}", utils.InfieldSep)},
{Tag: "AttrPaypalAccount",
Path: utils.MetaRep + utils.NestingSep + "PaypalAccount", Type: utils.MetaVariable,
Filters: []string{"*empty:~*cgrep.Error:"},
Value: config.NewRSRParsersMustCompile(
Value: utils.NewRSRParsersMustCompile(
"~*cgrep.Attributes.PaypalAccount", utils.InfieldSep)},
{Tag: "MaxUsage",
Path: utils.MetaRep + utils.NestingSep + "MaxUsage", Type: utils.MetaVariable,
Filters: []string{"*empty:~*cgrep.Error:"},
Value: config.NewRSRParsersMustCompile(
Value: utils.NewRSRParsersMustCompile(
"~*cgrep.MaxUsage{*duration_seconds}", utils.InfieldSep)},
{Tag: "Error",
Path: utils.MetaRep + utils.NestingSep + "Error", Type: utils.MetaVariable,
Filters: []string{"*rsr:~*cgrep.Error:!^$"},
Value: config.NewRSRParsersMustCompile(
Value: utils.NewRSRParsersMustCompile(
"~*cgrep.Error", utils.InfieldSep)},
}
for _, v := range tplFlds {
@@ -2075,10 +2075,10 @@ func TestAgReqSetFieldsInCache(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "Tenant",
Path: utils.MetaUCH + utils.NestingSep + utils.Tenant, Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
{Tag: "Account",
Path: utils.MetaUCH + utils.NestingSep + utils.AccountField, Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*cgreq.Account", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgreq.Account", utils.InfieldSep)},
}
for _, v := range tplFlds {
v.ComputePath()
@@ -2119,10 +2119,10 @@ func TestAgReqSetFieldsInCacheWithTimeOut(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "Tenant",
Path: utils.MetaUCH + utils.NestingSep + utils.Tenant, Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
{Tag: "Account",
Path: utils.MetaUCH + utils.NestingSep + utils.AccountField, Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*cgreq.Account", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgreq.Account", utils.InfieldSep)},
}
for _, v := range tplFlds {
v.ComputePath()
@@ -2240,12 +2240,12 @@ func TestAgReqFiltersInsideField(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "Usage",
Path: utils.MetaCgreq + utils.NestingSep + utils.Usage, Type: utils.MetaCCUsage,
Value: config.NewRSRParsersMustCompile("~*req.CC-Request-Number;~*req.Used-Service-Unit.CC-Time:s/(.*)/${1}s/;5m",
Value: utils.NewRSRParsersMustCompile("~*req.CC-Request-Number;~*req.Used-Service-Unit.CC-Time:s/(.*)/${1}s/;5m",
utils.InfieldSep)},
{Tag: "AnswerTime",
Path: utils.MetaCgreq + utils.NestingSep + utils.AnswerTime, Type: utils.MetaDifference,
Filters: []string{"*gt:~*cgreq.Usage:0s"}, // populate answer time if usage is greater than zero
Value: config.NewRSRParsersMustCompile("~*req.Event-Timestamp;~*cgreq.Usage", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*req.Event-Timestamp;~*cgreq.Usage", utils.InfieldSep)},
}
for _, v := range tplFlds {
v.ComputePath()
@@ -2278,30 +2278,30 @@ func TestAgReqDynamicPath(t *testing.T) {
agReq.CGRRequest.Set(&utils.FullPath{Path: "BestRoute", PathSlice: []string{"BestRoute"}}, utils.NewLeafNode("ROUTE1"))
agReq.CGRReply = &utils.DataNode{Type: utils.NMMapType, Map: map[string]*utils.DataNode{}}
val1, err := config.NewRSRParsersFromSlice([]string{"~*cgreq.Routes.<CGR_;~*cgreq.BestRoute>"})
val1, err := utils.NewRSRParsersFromSlice([]string{"~*cgreq.Routes.<CGR_;~*cgreq.BestRoute>"})
if err != nil {
t.Error(err)
}
tplFlds := []*config.FCTemplate{
{Tag: "Tenant",
Path: utils.MetaCgrep + utils.NestingSep + utils.Tenant, Type: utils.MetaComposed,
Value: config.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
{Tag: "Account",
Path: utils.MetaCgrep + utils.NestingSep + utils.AccountField, Type: utils.MetaComposed,
Value: config.NewRSRParsersMustCompile("~*cgreq.Account", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgreq.Account", utils.InfieldSep)},
{Tag: "Destination",
Path: utils.MetaCgrep + utils.NestingSep + utils.Destination, Type: utils.MetaComposed,
Value: config.NewRSRParsersMustCompile("~*cgreq.Destination", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgreq.Destination", utils.InfieldSep)},
{Tag: "Usage",
Path: utils.MetaCgrep + utils.NestingSep + utils.Usage, Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("30s", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("30s", utils.InfieldSep)},
{Tag: "Route",
Path: utils.MetaCgrep + utils.NestingSep + "Route",
Type: utils.MetaVariable, Value: val1,
},
{Tag: "Route2",
Path: utils.MetaCgrep + utils.NestingSep + "Route2.<CGR_;~*cgreq.BestRoute>",
Type: utils.MetaVariable, Value: config.NewRSRParsersMustCompile("~*cgreq.Routes[CGR_ROUTE2]", utils.InfieldSep),
Type: utils.MetaVariable, Value: utils.NewRSRParsersMustCompile("~*cgreq.Routes[CGR_ROUTE2]", utils.InfieldSep),
},
}
for _, v := range tplFlds {
@@ -2348,7 +2348,7 @@ func TestAgReqRoundingDecimals(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "Cost",
Path: utils.MetaCgrep + utils.NestingSep + utils.Cost, Type: utils.MetaComposed,
Value: config.NewRSRParsersMustCompile("~*cgreq.Cost{*round:3}", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgreq.Cost{*round:3}", utils.InfieldSep)},
}
for _, v := range tplFlds {
v.ComputePath()
@@ -2388,13 +2388,13 @@ func BenchmarkAgReqSetField(b *testing.B) {
tplFlds := []*config.FCTemplate{
{Tag: "Tenant",
Path: utils.MetaCgrep + utils.NestingSep + utils.Tenant, Type: utils.MetaComposed,
Value: config.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep)},
{Tag: "Account",
Path: utils.MetaCgrep + utils.NestingSep + utils.AccountField + "[0].ID", Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*cgreq.Account", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgreq.Account", utils.InfieldSep)},
{Tag: "Account2",
Path: utils.MetaCgrep + utils.NestingSep + utils.AccountField + "[1].ID", Type: utils.MetaConstant,
Value: config.NewRSRParsersMustCompile("1003", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("1003", utils.InfieldSep)},
}
for _, v := range tplFlds {
v.ComputePath()
@@ -2455,7 +2455,7 @@ func TestAgReqSetFieldsFromCfg(t *testing.T) {
tplFlds := []*config.FCTemplate{
{Tag: "CfgField",
Path: utils.MetaCgreq + utils.NestingSep + "NodeID", Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*cfg.general.node_id", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cfg.general.node_id", utils.InfieldSep)},
}
for _, v := range tplFlds {
v.ComputePath()
@@ -2503,11 +2503,11 @@ func TestFieldAsInterface(t *testing.T) {
}
func TestAgentRequestParseFieldDateTimeDaily(t *testing.T) {
tntTpl := config.NewRSRParsersMustCompile("*daily", utils.InfieldSep)
tntTpl := utils.NewRSRParsersMustCompile("*daily", utils.InfieldSep)
AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil)
fctTemp := &config.FCTemplate{
Type: utils.MetaDateTime,
Value: config.NewRSRParsersMustCompile("*daily", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("*daily", utils.InfieldSep),
Layout: "“Mon Jan _2 15:04:05 2006”",
Timezone: "",
}
@@ -2532,10 +2532,10 @@ func TestAgentRequestParseFieldDateTimeDaily(t *testing.T) {
}
func TestAgentRequestParseFieldDateTimeTimeZone(t *testing.T) {
tntTpl := config.NewRSRParsersMustCompile("*daily", utils.InfieldSep)
tntTpl := utils.NewRSRParsersMustCompile("*daily", utils.InfieldSep)
AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil)
fctTemp := &config.FCTemplate{Type: utils.MetaDateTime,
Value: config.NewRSRParsersMustCompile("*daily", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("*daily", utils.InfieldSep),
Layout: "“Mon Jan _2 15:04:05 2006”",
Timezone: "Local",
}
@@ -2560,10 +2560,10 @@ func TestAgentRequestParseFieldDateTimeTimeZone(t *testing.T) {
}
func TestAgentRequestParseFieldDateTimeMonthly(t *testing.T) {
tntTpl := config.NewRSRParsersMustCompile("*monthly", utils.InfieldSep)
tntTpl := utils.NewRSRParsersMustCompile("*monthly", utils.InfieldSep)
AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil)
fctTemp := &config.FCTemplate{Type: utils.MetaDateTime,
Value: config.NewRSRParsersMustCompile("*monthly", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("*monthly", utils.InfieldSep),
Layout: "“Mon Jan _2 15:04:05 2006”",
Timezone: "Local",
}
@@ -2588,10 +2588,10 @@ func TestAgentRequestParseFieldDateTimeMonthly(t *testing.T) {
}
func TestAgentRequestParseFieldDateTimeMonthlyEstimated(t *testing.T) {
tntTpl := config.NewRSRParsersMustCompile("*monthly_estimated", utils.InfieldSep)
tntTpl := utils.NewRSRParsersMustCompile("*monthly_estimated", utils.InfieldSep)
AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil)
fctTemp := &config.FCTemplate{Type: utils.MetaDateTime,
Value: config.NewRSRParsersMustCompile("*monthly_estimated", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("*monthly_estimated", utils.InfieldSep),
Layout: "“Mon Jan _2 15:04:05 2006”",
Timezone: "Local",
}
@@ -2616,10 +2616,10 @@ func TestAgentRequestParseFieldDateTimeMonthlyEstimated(t *testing.T) {
}
func TestAgentRequestParseFieldDateTimeYearly(t *testing.T) {
tntTpl := config.NewRSRParsersMustCompile("*yearly", utils.InfieldSep)
tntTpl := utils.NewRSRParsersMustCompile("*yearly", utils.InfieldSep)
AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil)
fctTemp := &config.FCTemplate{Type: utils.MetaDateTime,
Value: config.NewRSRParsersMustCompile("*yearly", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("*yearly", utils.InfieldSep),
Layout: "“Mon Jan _2 15:04:05 2006”",
Timezone: "Local",
}
@@ -2644,10 +2644,10 @@ func TestAgentRequestParseFieldDateTimeYearly(t *testing.T) {
}
func TestAgentRequestParseFieldDateTimeMetaUnlimited(t *testing.T) {
tntTpl := config.NewRSRParsersMustCompile(utils.MetaUnlimited, utils.InfieldSep)
tntTpl := utils.NewRSRParsersMustCompile(utils.MetaUnlimited, utils.InfieldSep)
AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil)
fctTemp := &config.FCTemplate{Type: utils.MetaDateTime,
Value: config.NewRSRParsersMustCompile(utils.MetaUnlimited, utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile(utils.MetaUnlimited, utils.InfieldSep),
Layout: "“Mon Jan _2 15:04:05 2006”",
Timezone: "Local",
}
@@ -2672,10 +2672,10 @@ func TestAgentRequestParseFieldDateTimeMetaUnlimited(t *testing.T) {
}
func TestAgentRequestParseFieldDateTimeEmpty(t *testing.T) {
tntTpl := config.NewRSRParsersMustCompile("", utils.InfieldSep)
tntTpl := utils.NewRSRParsersMustCompile("", utils.InfieldSep)
AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil)
fctTemp := &config.FCTemplate{Type: utils.MetaDateTime,
Value: config.NewRSRParsersMustCompile("", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("", utils.InfieldSep),
Layout: "“Mon Jan _2 15:04:05 2006”",
Timezone: "Local",
}
@@ -2700,10 +2700,10 @@ func TestAgentRequestParseFieldDateTimeEmpty(t *testing.T) {
}
func TestAgentRequestParseFieldDateTimeMonthEnd(t *testing.T) {
tntTpl := config.NewRSRParsersMustCompile("*month_endTest", utils.InfieldSep)
tntTpl := utils.NewRSRParsersMustCompile("*month_endTest", utils.InfieldSep)
AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil)
fctTemp := &config.FCTemplate{Type: utils.MetaDateTime,
Value: config.NewRSRParsersMustCompile("*month_endTest", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("*month_endTest", utils.InfieldSep),
Layout: "“Mon Jan _2 15:04:05 2006”",
Timezone: "Local",
}
@@ -2728,10 +2728,10 @@ func TestAgentRequestParseFieldDateTimeMonthEnd(t *testing.T) {
}
func TestAgentRequestParseFieldDateTimeError(t *testing.T) {
tntTpl := config.NewRSRParsersMustCompile("*month_endTest", utils.InfieldSep)
tntTpl := utils.NewRSRParsersMustCompile("*month_endTest", utils.InfieldSep)
AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil)
fctTemp := &config.FCTemplate{Type: utils.MetaDateTime,
Value: config.NewRSRParsersMustCompile("*month_endTest", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("*month_endTest", utils.InfieldSep),
Layout: "“Mon Jan _2 15:04:05 2006”",
Timezone: "/",
}
@@ -2744,7 +2744,7 @@ func TestAgentRequestParseFieldDateTimeError(t *testing.T) {
}
func TestAgentRequestParseFieldDateTimeError2(t *testing.T) {
prsr, err := config.NewRSRParsersFromSlice([]string{"2.", "~*opts.*originID<~*opts.Converter>"})
prsr, err := utils.NewRSRParsersFromSlice([]string{"2.", "~*opts.*originID<~*opts.Converter>"})
if err != nil {
t.Fatal(err)
}

View File

@@ -69,38 +69,38 @@ func TestProcessRequest(t *testing.T) {
}
reqProcessor := &config.RequestProcessor{
ID: "Default",
Tenant: config.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep),
Tenant: utils.NewRSRParsersMustCompile("cgrates.org", utils.InfieldSep),
Filters: []string{},
RequestFields: []*config.FCTemplate{
{Tag: utils.ToR,
Type: utils.MetaConstant, Path: utils.MetaCgreq + utils.NestingSep + utils.ToR,
Value: config.NewRSRParsersMustCompile(utils.MetaVoice, utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile(utils.MetaVoice, utils.InfieldSep)},
{Tag: utils.OriginID,
Type: utils.MetaComposed, Path: utils.MetaCgreq + utils.NestingSep + utils.OriginID,
Value: config.NewRSRParsersMustCompile("~*req.SessionId", utils.InfieldSep), Mandatory: true},
Value: utils.NewRSRParsersMustCompile("~*req.SessionId", utils.InfieldSep), Mandatory: true},
{Tag: utils.OriginHost,
Type: utils.MetaVariable, Path: utils.MetaCgreq + utils.NestingSep + utils.OriginHost,
Value: config.NewRSRParsersMustCompile("~*vars.RemoteHost", utils.InfieldSep), Mandatory: true},
Value: utils.NewRSRParsersMustCompile("~*vars.RemoteHost", utils.InfieldSep), Mandatory: true},
{Tag: utils.Category,
Type: utils.MetaConstant, Path: utils.MetaCgreq + utils.NestingSep + utils.Category,
Value: config.NewRSRParsersMustCompile(utils.Call, utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile(utils.Call, utils.InfieldSep)},
{Tag: utils.AccountField,
Type: utils.MetaComposed, Path: utils.MetaCgreq + utils.NestingSep + utils.AccountField,
Value: config.NewRSRParsersMustCompile("~*req.Account", utils.InfieldSep), Mandatory: true},
Value: utils.NewRSRParsersMustCompile("~*req.Account", utils.InfieldSep), Mandatory: true},
{Tag: utils.Destination,
Type: utils.MetaComposed, Path: utils.MetaCgreq + utils.NestingSep + utils.Destination,
Value: config.NewRSRParsersMustCompile("~*req.Destination", utils.InfieldSep), Mandatory: true},
Value: utils.NewRSRParsersMustCompile("~*req.Destination", utils.InfieldSep), Mandatory: true},
{Tag: utils.Usage,
Type: utils.MetaComposed, Path: utils.MetaCgreq + utils.NestingSep + utils.Usage,
Value: config.NewRSRParsersMustCompile("~*req.Usage", utils.InfieldSep), Mandatory: true},
Value: utils.NewRSRParsersMustCompile("~*req.Usage", utils.InfieldSep), Mandatory: true},
},
ReplyFields: []*config.FCTemplate{
{Tag: "ResultCode",
Type: utils.MetaConstant, Path: utils.MetaRep + utils.NestingSep + "ResultCode",
Value: config.NewRSRParsersMustCompile("2001", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("2001", utils.InfieldSep)},
{Tag: "GrantedUnits",
Type: utils.MetaVariable, Path: utils.MetaRep + utils.NestingSep + "Granted-Service-Unit.CC-Time",
Value: config.NewRSRParsersMustCompile("~*cgrep.MaxUsage{*duration_seconds}", utils.InfieldSep),
Value: utils.NewRSRParsersMustCompile("~*cgrep.MaxUsage{*duration_seconds}", utils.InfieldSep),
Mandatory: true},
},
}
@@ -466,9 +466,9 @@ func TestProcessRequest(t *testing.T) {
tmpls := []*config.FCTemplate{
{Type: utils.MetaConstant, Path: utils.MetaOpts + utils.NestingSep + utils.OptsSesInitiate,
Value: config.NewRSRParsersMustCompile("true", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("true", utils.InfieldSep)},
{Type: utils.MetaConstant, Path: utils.MetaOpts + utils.NestingSep + utils.MetaAttributes,
Value: config.NewRSRParsersMustCompile("true", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("true", utils.InfieldSep)},
}
for _, v := range tmpls {
v.ComputePath()
@@ -495,9 +495,9 @@ func TestProcessRequest(t *testing.T) {
tmpls = []*config.FCTemplate{
{Type: utils.MetaConstant, Path: utils.MetaOpts + utils.NestingSep + utils.OptsSesUpdate,
Value: config.NewRSRParsersMustCompile("true", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("true", utils.InfieldSep)},
{Type: utils.MetaConstant, Path: utils.MetaOpts + utils.NestingSep + utils.MetaAttributes,
Value: config.NewRSRParsersMustCompile("true", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("true", utils.InfieldSep)},
}
for _, v := range tmpls {
v.ComputePath()
@@ -522,14 +522,14 @@ func TestProcessRequest(t *testing.T) {
reqProcessor.Flags = utils.FlagsWithParamsFromSlice([]string{utils.MetaTerminate, utils.MetaAccounts, utils.MetaAttributes, utils.MetaCDRs})
tmpls = []*config.FCTemplate{
{Type: utils.MetaConstant, Path: utils.MetaOpts + utils.NestingSep + utils.OptsSesTerminate,
Value: config.NewRSRParsersMustCompile("true", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("true", utils.InfieldSep)},
}
for _, v := range tmpls {
v.ComputePath()
}
reqProcessor.ReplyFields = []*config.FCTemplate{{Tag: "ResultCode",
Type: utils.MetaConstant, Path: utils.MetaRep + utils.NestingSep + "ResultCode",
Value: config.NewRSRParsersMustCompile("2001", utils.InfieldSep)}}
Value: utils.NewRSRParsersMustCompile("2001", utils.InfieldSep)}}
for _, v := range reqProcessor.ReplyFields {
v.ComputePath()
}
@@ -554,9 +554,9 @@ func TestProcessRequest(t *testing.T) {
reqProcessor.Flags = utils.FlagsWithParamsFromSlice([]string{utils.MetaMessage, utils.MetaAccounts, utils.MetaAttributes})
tmpls = []*config.FCTemplate{
{Type: utils.MetaConstant, Path: utils.MetaOpts + utils.NestingSep + utils.OptsSesMessage,
Value: config.NewRSRParsersMustCompile("true", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("true", utils.InfieldSep)},
{Type: utils.MetaConstant, Path: utils.MetaOpts + utils.NestingSep + utils.MetaAttributes,
Value: config.NewRSRParsersMustCompile("true", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("true", utils.InfieldSep)},
}
for _, v := range tmpls {
v.ComputePath()

View File

@@ -304,7 +304,7 @@ func (fsev FSEvent) GetExtraFields() map[string]string {
}
// Used in derived charging and sittuations when we need to run regexp on fields
func (fsev FSEvent) ParseEventValue(attrName string, rsrFld *config.RSRParser, timezone string) (parsed string, err error) {
func (fsev FSEvent) ParseEventValue(attrName string, rsrFld *utils.RSRParser, timezone string) (parsed string, err error) {
switch attrName {
case utils.ToR:
return rsrFld.ParseValue(utils.MetaVoice)

View File

@@ -490,60 +490,60 @@ func TestParseEventValue(t *testing.T) {
cfg := config.NewDefaultCGRConfig()
config.SetCgrConfig(cfg)
ev := NewFSEvent(hangupEv)
if tor, _ := ev.ParseEventValue(utils.ToR, config.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.ToR), ""); tor != utils.MetaVoice {
if tor, _ := ev.ParseEventValue(utils.ToR, utils.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.ToR), ""); tor != utils.MetaVoice {
t.Errorf("Unexpected tor parsed %q", tor)
}
if accid, _ := ev.ParseEventValue(utils.OriginID, config.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.OriginID), ""); accid != "e3133bf7-dcde-4daf-9663-9a79ffcef5ad" {
if accid, _ := ev.ParseEventValue(utils.OriginID, utils.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.OriginID), ""); accid != "e3133bf7-dcde-4daf-9663-9a79ffcef5ad" {
t.Error("Unexpected result parsed", accid)
}
if parsed, _ := ev.ParseEventValue(utils.OriginHost, config.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.OriginHost), ""); parsed != "10.0.3.15" {
if parsed, _ := ev.ParseEventValue(utils.OriginHost, utils.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.OriginHost), ""); parsed != "10.0.3.15" {
t.Error("Unexpected result parsed", parsed)
}
if parsed, _ := ev.ParseEventValue(utils.Source, config.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.Source), ""); parsed != "FS_EVENT" {
if parsed, _ := ev.ParseEventValue(utils.Source, utils.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.Source), ""); parsed != "FS_EVENT" {
t.Error("Unexpected result parsed", parsed)
}
if parsed, _ := ev.ParseEventValue(utils.RequestType, config.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.RequestType), ""); parsed != utils.MetaPrepaid {
if parsed, _ := ev.ParseEventValue(utils.RequestType, utils.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.RequestType), ""); parsed != utils.MetaPrepaid {
t.Error("Unexpected result parsed", parsed)
}
if parsed, _ := ev.ParseEventValue(utils.Tenant, config.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.Tenant), ""); parsed != "cgrates.org" {
if parsed, _ := ev.ParseEventValue(utils.Tenant, utils.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.Tenant), ""); parsed != "cgrates.org" {
t.Error("Unexpected result parsed", parsed)
}
if parsed, _ := ev.ParseEventValue(utils.Category, config.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.Category), ""); parsed != "call" {
if parsed, _ := ev.ParseEventValue(utils.Category, utils.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.Category), ""); parsed != "call" {
t.Error("Unexpected result parsed", parsed)
}
if parsed, _ := ev.ParseEventValue(utils.AccountField, config.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.AccountField), ""); parsed != "1001" {
if parsed, _ := ev.ParseEventValue(utils.AccountField, utils.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.AccountField), ""); parsed != "1001" {
t.Error("Unexpected result parsed", parsed)
}
if parsed, _ := ev.ParseEventValue(utils.Subject, config.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.Subject), ""); parsed != "1001" {
if parsed, _ := ev.ParseEventValue(utils.Subject, utils.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.Subject), ""); parsed != "1001" {
t.Error("Unexpected result parsed", parsed)
}
if parsed, _ := ev.ParseEventValue(utils.Destination, config.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.Destination), ""); parsed != "1003" {
if parsed, _ := ev.ParseEventValue(utils.Destination, utils.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.Destination), ""); parsed != "1003" {
t.Error("Unexpected result parsed", parsed)
}
sTime, _ := utils.ParseTimeDetectLayout("1436280728471153"[:len("1436280728471153")-6], "") // We discard nanoseconds information so we can correlate csv
if parsed, _ := ev.ParseEventValue(utils.SetupTime, config.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.SetupTime), ""); parsed != sTime.String() {
if parsed, _ := ev.ParseEventValue(utils.SetupTime, utils.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.SetupTime), ""); parsed != sTime.String() {
t.Errorf("Expecting: %s, parsed: %s", sTime.String(), parsed)
}
aTime, _ := utils.ParseTimeDetectLayout("1436280728971147"[:len("1436280728971147")-6], "")
if parsed, _ := ev.ParseEventValue(utils.AnswerTime, config.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.AnswerTime), ""); parsed != aTime.String() {
if parsed, _ := ev.ParseEventValue(utils.AnswerTime, utils.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.AnswerTime), ""); parsed != aTime.String() {
t.Errorf("Expecting: %s, parsed: %s", aTime.String(), parsed)
}
if parsed, _ := ev.ParseEventValue(utils.Usage, config.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.Usage), ""); parsed != "66000000000" {
if parsed, _ := ev.ParseEventValue(utils.Usage, utils.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.Usage), ""); parsed != "66000000000" {
t.Error("Unexpected result parsed", parsed)
}
if parsed, _ := ev.ParseEventValue(utils.PDD, config.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.PDD), ""); parsed != "0.028" {
if parsed, _ := ev.ParseEventValue(utils.PDD, utils.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.PDD), ""); parsed != "0.028" {
t.Error("Unexpected result parsed", parsed)
}
if parsed, _ := ev.ParseEventValue(utils.Route, config.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.Route), ""); parsed != "supplier1" {
if parsed, _ := ev.ParseEventValue(utils.Route, utils.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.Route), ""); parsed != "supplier1" {
t.Error("Unexpected result parsed", parsed)
}
if parsed, _ := ev.ParseEventValue(utils.RunID, config.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.RunID), ""); parsed != utils.MetaDefault {
if parsed, _ := ev.ParseEventValue(utils.RunID, utils.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.RunID), ""); parsed != utils.MetaDefault {
t.Error("Unexpected result parsed", parsed)
}
if parsed, _ := ev.ParseEventValue(utils.Cost, config.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.Cost), ""); parsed != "-1" {
if parsed, _ := ev.ParseEventValue(utils.Cost, utils.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+utils.Cost), ""); parsed != "-1" {
t.Error("Unexpected result parsed", parsed)
}
if parsed, _ := ev.ParseEventValue("Hangup-Cause", config.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+"Hangup-Cause"), ""); parsed != "NORMAL_CLEARING" {
if parsed, _ := ev.ParseEventValue("Hangup-Cause", utils.NewRSRParserMustCompile(utils.MetaDynReq+utils.NestingSep+"Hangup-Cause"), ""); parsed != "NORMAL_CLEARING" {
t.Error("Unexpected result parsed", parsed)
}
}
@@ -597,7 +597,7 @@ func TestFsEvGetExtraFields(t *testing.T) {
cfg := config.NewDefaultCGRConfig()
var err error
err = nil
cfg.FsAgentCfg().ExtraFields, err = config.NewRSRParsersFromSlice([]string{
cfg.FsAgentCfg().ExtraFields, err = utils.NewRSRParsersFromSlice([]string{
"~*req.Channel-Read-Codec-Name",
"~*req.Channel-Write-Codec-Name",
"~*req.NonExistingHeader",

View File

@@ -368,7 +368,7 @@ func (dP *diameterDP) FieldAsInterface(fldPath []string) (data any, err error) {
slctrStr = slctrStr[:fltrStart] // Take the filter part out before compiling further
}
slctr, err := config.NewRSRParser(slctrStr)
slctr, err := utils.NewRSRParser(slctrStr)
if err != nil {
return nil, err
}

View File

@@ -81,10 +81,10 @@ func TestRadReplyAppendAttributes(t *testing.T) {
rplyFlds := []*config.FCTemplate{
{Tag: "ReplyCode", Path: utils.MetaRep + utils.NestingSep + MetaRadReplyCode,
Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*cgrep.Attributes.RadReply", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgrep.Attributes.RadReply", utils.InfieldSep)},
{Tag: "Acct-Session-Time", Path: utils.MetaRep + utils.NestingSep + "Acct-Session-Time",
Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*cgrep.MaxUsage{*duration_seconds}", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgrep.MaxUsage{*duration_seconds}", utils.InfieldSep)},
}
for _, v := range rplyFlds {
v.ComputePath()

View File

@@ -33,10 +33,10 @@ func TestUpdateSIPMsgFromNavMap(t *testing.T) {
rplyFlds := []*config.FCTemplate{
{Tag: "Request", Path: utils.MetaRep + utils.NestingSep + "Request",
Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*cgrep.Attributes.Request", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgrep.Attributes.Request", utils.InfieldSep)},
{Tag: "Contact", Path: utils.MetaRep + utils.NestingSep + "Contact",
Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*cgrep.Attributes.Account", utils.InfieldSep)},
Value: utils.NewRSRParsersMustCompile("~*cgrep.Attributes.Account", utils.InfieldSep)},
}
for _, v := range rplyFlds {
v.ComputePath()