Update default ees with empty fields

This commit is contained in:
TeoV
2020-10-26 13:59:35 +02:00
committed by Dan Christian Bogos
parent e616f64035
commit b5dd885786
8 changed files with 77 additions and 1376 deletions

View File

@@ -407,22 +407,7 @@ const CGRATES_CFG_JSON = `
"synchronous": false, // block processing until export has a result
"attempts": 1, // export attempts
"field_separator": ",", // separator used in case of csv files
"fields":[ // import fields template, tag will match internally CDR field, in case of .csv value will be represented by index of the field value
{"tag": "CGRID", "path": "*exp.CGRID", "type": "*variable", "value": "~*req.CGRID"},
{"tag": "RunID", "path": "*exp.RunID", "type": "*variable", "value": "~*req.RunID"},
{"tag": "ToR", "path": "*exp.ToR", "type": "*variable", "value": "~*req.ToR"},
{"tag": "OriginID", "path": "*exp.OriginID", "type": "*variable", "value": "~*req.OriginID"},
{"tag": "RequestType", "path": "*exp.RequestType", "type": "*variable", "value": "~*req.RequestType"},
{"tag": "Tenant", "path": "*exp.Tenant", "type": "*variable", "value": "~*req.Tenant"},
{"tag": "Category", "path": "*exp.Category", "type": "*variable", "value": "~*req.Category"},
{"tag": "Account", "path": "*exp.Account", "type": "*variable", "value": "~*req.Account"},
{"tag": "Subject", "path": "*exp.Subject", "type": "*variable", "value": "~*req.Subject"},
{"tag": "Destination", "path": "*exp.Destination", "type": "*variable", "value": "~*req.Destination"},
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime", "layout": "2006-01-02T15:04:05Z07:00"},
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime", "layout": "2006-01-02T15:04:05Z07:00"},
{"tag": "Usage", "path": "*exp.Usage", "type": "*variable", "value": "~*req.Usage"},
{"tag": "Cost", "path": "*exp.Cost", "type": "*variable", "value": "~*req.Cost{*round:4}"},
],
"fields":[], // import fields template, tag will match internally CDR field, in case of .csv value will be represented by index of the field value
},
],
},

View File

@@ -1762,94 +1762,6 @@ func TestDfEventReaderCfg(t *testing.T) {
}
func TestDfEventExporterCfg(t *testing.T) {
eContentFlds := []*FcTemplateJsonCfg{
{
Tag: utils.StringPointer(utils.CGRID),
Path: utils.StringPointer("*exp.CGRID"),
Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer(utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.CGRID),
},
{
Tag: utils.StringPointer(utils.RunID),
Path: utils.StringPointer("*exp.RunID"),
Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer(utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.RunID),
},
{
Tag: utils.StringPointer(utils.ToR),
Path: utils.StringPointer("*exp.ToR"),
Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer(utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.ToR),
},
{
Tag: utils.StringPointer(utils.OriginID),
Path: utils.StringPointer("*exp.OriginID"),
Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer(utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.OriginID),
},
{
Tag: utils.StringPointer(utils.RequestType),
Path: utils.StringPointer("*exp.RequestType"),
Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer(utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.RequestType),
},
{
Tag: utils.StringPointer(utils.Tenant),
Path: utils.StringPointer("*exp.Tenant"),
Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer(utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Tenant),
},
{
Tag: utils.StringPointer(utils.Category),
Path: utils.StringPointer("*exp.Category"),
Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer(utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Category),
},
{
Tag: utils.StringPointer(utils.Account),
Path: utils.StringPointer("*exp.Account"),
Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer(utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account),
},
{
Tag: utils.StringPointer(utils.Subject),
Path: utils.StringPointer("*exp.Subject"),
Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer(utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Subject),
},
{
Tag: utils.StringPointer(utils.Destination),
Path: utils.StringPointer("*exp.Destination"),
Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer(utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Destination),
},
{
Tag: utils.StringPointer(utils.SetupTime),
Path: utils.StringPointer("*exp.SetupTime"),
Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer(utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.SetupTime),
Layout: utils.StringPointer("2006-01-02T15:04:05Z07:00"),
},
{
Tag: utils.StringPointer(utils.AnswerTime),
Path: utils.StringPointer("*exp.AnswerTime"),
Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer(utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.AnswerTime),
Layout: utils.StringPointer("2006-01-02T15:04:05Z07:00"),
},
{
Tag: utils.StringPointer(utils.Usage),
Path: utils.StringPointer("*exp.Usage"),
Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer(utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Usage),
},
{
Tag: utils.StringPointer(utils.Cost),
Path: utils.StringPointer("*exp.Cost"),
Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer(utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.COST + "{*round:4}"),
},
}
eCfg := &EEsJsonCfg{
Enabled: utils.BoolPointer(false),
Attributes_conns: &[]string{},
@@ -1874,7 +1786,7 @@ func TestDfEventExporterCfg(t *testing.T) {
Flags: &[]string{},
Synchronous: utils.BoolPointer(false),
Attempts: utils.IntPointer(1),
Fields: &eContentFlds,
Fields: &[]*FcTemplateJsonCfg{},
Opts: make(map[string]interface{}),
},
},

View File

@@ -1974,220 +1974,14 @@ func TestCgrCdfEventExporter(t *testing.T) {
Filters: []string{},
AttributeSIDs: []string{},
Flags: utils.FlagsWithParams{},
contentFields: []*FCTemplate{
{
Tag: utils.CGRID,
Path: "*exp.CGRID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.CGRID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.RunID,
Path: "*exp.RunID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.RunID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.ToR,
Path: "*exp.ToR",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.ToR", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.OriginID,
Path: "*exp.OriginID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.OriginID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.RequestType,
Path: "*exp.RequestType",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.RequestType", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Tenant,
Path: "*exp.Tenant",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Tenant", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Category,
Path: "*exp.Category",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Category", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Account,
Path: "*exp.Account",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Account", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Subject,
Path: "*exp.Subject",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Subject", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Destination,
Path: "*exp.Destination",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Destination", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.SetupTime,
Path: "*exp.SetupTime",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.SetupTime", utils.INFIELD_SEP),
Layout: "2006-01-02T15:04:05Z07:00",
},
{
Tag: utils.AnswerTime,
Path: "*exp.AnswerTime",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.AnswerTime", utils.INFIELD_SEP),
Layout: "2006-01-02T15:04:05Z07:00",
},
{
Tag: utils.Usage,
Path: "*exp.Usage",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Usage", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Cost,
Path: "*exp.Cost",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Cost{*round:4}", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
},
Fields: []*FCTemplate{
{
Tag: utils.CGRID,
Path: "*exp.CGRID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.CGRID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.RunID,
Path: "*exp.RunID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.RunID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.ToR,
Path: "*exp.ToR",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.ToR", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.OriginID,
Path: "*exp.OriginID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.OriginID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.RequestType,
Path: "*exp.RequestType",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.RequestType", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Tenant,
Path: "*exp.Tenant",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Tenant", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Category,
Path: "*exp.Category",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Category", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Account,
Path: "*exp.Account",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Account", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Subject,
Path: "*exp.Subject",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Subject", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Destination,
Path: "*exp.Destination",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Destination", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.SetupTime,
Path: "*exp.SetupTime",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.SetupTime", utils.INFIELD_SEP),
Layout: "2006-01-02T15:04:05Z07:00",
},
{
Tag: utils.AnswerTime,
Path: "*exp.AnswerTime",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.AnswerTime", utils.INFIELD_SEP),
Layout: "2006-01-02T15:04:05Z07:00",
},
{
Tag: utils.Usage,
Path: "*exp.Usage",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Usage", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Cost,
Path: "*exp.Cost",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Cost{*round:4}", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
},
Fields: []*FCTemplate{},
contentFields: []*FCTemplate{},
headerFields: []*FCTemplate{},
trailerFields: []*FCTemplate{},
Opts: make(map[string]interface{}),
},
},
}
for _, profile := range eCfg.Exporters {
for _, v := range profile.Fields {
v.ComputePath()
}
for _, v := range profile.contentFields {
v.ComputePath()
}
}
if !reflect.DeepEqual(cgrCfg.eesCfg, eCfg) {
t.Errorf("received: %+v,\n expecting: %+v", utils.ToJSON(cgrCfg.eesCfg), utils.ToJSON(eCfg))
}
@@ -2246,225 +2040,21 @@ func TestCgrCfgEventReaderDefault(t *testing.T) {
func TestCgrCfgEventExporterDefault(t *testing.T) {
eCfg := &EventExporterCfg{
ID: utils.MetaDefault,
Type: utils.META_NONE,
FieldSep: ",",
Tenant: nil,
ExportPath: "/var/spool/cgrates/ees",
Attempts: 1,
Timezone: utils.EmptyString,
Filters: nil,
Flags: utils.FlagsWithParams{},
contentFields: []*FCTemplate{
{
Tag: utils.CGRID,
Path: "*exp.CGRID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.CGRID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.RunID,
Path: "*exp.RunID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.RunID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.ToR,
Path: "*exp.ToR",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.ToR", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.OriginID,
Path: "*exp.OriginID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.OriginID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.RequestType,
Path: "*exp.RequestType",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.RequestType", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Tenant,
Path: "*exp.Tenant",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Tenant", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Category,
Path: "*exp.Category",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Category", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Account,
Path: "*exp.Account",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Account", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Subject,
Path: "*exp.Subject",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Subject", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Destination,
Path: "*exp.Destination",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Destination", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.SetupTime,
Path: "*exp.SetupTime",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.SetupTime", utils.INFIELD_SEP),
Layout: "2006-01-02T15:04:05Z07:00",
},
{
Tag: utils.AnswerTime,
Path: "*exp.AnswerTime",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.AnswerTime", utils.INFIELD_SEP),
Layout: "2006-01-02T15:04:05Z07:00",
},
{
Tag: utils.Usage,
Path: "*exp.Usage",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Usage", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Cost,
Path: "*exp.Cost",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Cost{*round:4}", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
},
Fields: []*FCTemplate{
{
Tag: utils.CGRID,
Path: "*exp.CGRID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.CGRID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.RunID,
Path: "*exp.RunID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.RunID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.ToR,
Path: "*exp.ToR",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.ToR", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.OriginID,
Path: "*exp.OriginID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.OriginID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.RequestType,
Path: "*exp.RequestType",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.RequestType", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Tenant,
Path: "*exp.Tenant",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Tenant", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Category,
Path: "*exp.Category",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Category", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Account,
Path: "*exp.Account",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Account", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Subject,
Path: "*exp.Subject",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Subject", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Destination,
Path: "*exp.Destination",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Destination", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.SetupTime,
Path: "*exp.SetupTime",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.SetupTime", utils.INFIELD_SEP),
Layout: "2006-01-02T15:04:05Z07:00",
},
{
Tag: utils.AnswerTime,
Path: "*exp.AnswerTime",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.AnswerTime", utils.INFIELD_SEP),
Layout: "2006-01-02T15:04:05Z07:00",
},
{
Tag: utils.Usage,
Path: "*exp.Usage",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Usage", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Cost,
Path: "*exp.Cost",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Cost{*round:4}", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
},
ID: utils.MetaDefault,
Type: utils.META_NONE,
FieldSep: ",",
Tenant: nil,
ExportPath: "/var/spool/cgrates/ees",
Attempts: 1,
Timezone: utils.EmptyString,
Filters: nil,
Flags: utils.FlagsWithParams{},
contentFields: []*FCTemplate{},
Fields: []*FCTemplate{},
headerFields: []*FCTemplate{},
trailerFields: []*FCTemplate{},
Opts: make(map[string]interface{}),
}
for _, v := range eCfg.Fields {
v.ComputePath()
}
for _, v := range eCfg.contentFields {
v.ComputePath()
}
if !reflect.DeepEqual(cgrCfg.dfltEvExp, eCfg) {
t.Errorf("received: %+v,\n expecting: %+v", utils.ToJSON(cgrCfg.dfltEvExp), utils.ToJSON(eCfg))
}

View File

@@ -87,206 +87,8 @@ func TestEESClone(t *testing.T) {
Filters: nil,
AttributeSIDs: nil,
Flags: utils.FlagsWithParams{},
Fields: []*FCTemplate{
{
Tag: utils.CGRID,
Path: "*exp.CGRID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.CGRID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.RunID,
Path: "*exp.RunID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.RunID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.ToR,
Path: "*exp.ToR",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.ToR", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.OriginID,
Path: "*exp.OriginID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.OriginID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.RequestType,
Path: "*exp.RequestType",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.RequestType", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Tenant,
Path: "*exp.Tenant",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Tenant", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Category,
Path: "*exp.Category",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Category", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Account,
Path: "*exp.Account",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Account", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Subject,
Path: "*exp.Subject",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Subject", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Destination,
Path: "*exp.Destination",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Destination", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.SetupTime,
Path: "*exp.SetupTime",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.SetupTime", utils.INFIELD_SEP),
Layout: "2006-01-02T15:04:05Z07:00",
},
{
Tag: utils.AnswerTime,
Path: "*exp.AnswerTime",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.AnswerTime", utils.INFIELD_SEP),
Layout: "2006-01-02T15:04:05Z07:00",
},
{
Tag: utils.Usage,
Path: "*exp.Usage",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Usage", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Cost,
Path: "*exp.Cost",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Cost{*round:4}", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
},
contentFields: []*FCTemplate{
{
Tag: utils.CGRID,
Path: "*exp.CGRID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.CGRID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.RunID,
Path: "*exp.RunID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.RunID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.ToR,
Path: "*exp.ToR",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.ToR", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.OriginID,
Path: "*exp.OriginID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.OriginID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.RequestType,
Path: "*exp.RequestType",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.RequestType", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Tenant,
Path: "*exp.Tenant",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Tenant", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Category,
Path: "*exp.Category",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Category", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Account,
Path: "*exp.Account",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Account", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Subject,
Path: "*exp.Subject",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Subject", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Destination,
Path: "*exp.Destination",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Destination", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.SetupTime,
Path: "*exp.SetupTime",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.SetupTime", utils.INFIELD_SEP),
Layout: "2006-01-02T15:04:05Z07:00",
},
{
Tag: utils.AnswerTime,
Path: "*exp.AnswerTime",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.AnswerTime", utils.INFIELD_SEP),
Layout: "2006-01-02T15:04:05Z07:00",
},
{
Tag: utils.Usage,
Path: "*exp.Usage",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Usage", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Cost,
Path: "*exp.Cost",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Cost{*round:4}", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
},
Fields: []*FCTemplate{},
contentFields: []*FCTemplate{},
headerFields: []*FCTemplate{},
trailerFields: []*FCTemplate{},
Opts: make(map[string]interface{}),
@@ -511,206 +313,8 @@ func TestEventExporterSameID(t *testing.T) {
Filters: []string{},
AttributeSIDs: []string{},
Flags: utils.FlagsWithParams{},
Fields: []*FCTemplate{
{
Tag: utils.CGRID,
Path: "*exp.CGRID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.CGRID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.RunID,
Path: "*exp.RunID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.RunID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.ToR,
Path: "*exp.ToR",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.ToR", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.OriginID,
Path: "*exp.OriginID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.OriginID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.RequestType,
Path: "*exp.RequestType",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.RequestType", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Tenant,
Path: "*exp.Tenant",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Tenant", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Category,
Path: "*exp.Category",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Category", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Account,
Path: "*exp.Account",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Account", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Subject,
Path: "*exp.Subject",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Subject", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Destination,
Path: "*exp.Destination",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Destination", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.SetupTime,
Path: "*exp.SetupTime",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.SetupTime", utils.INFIELD_SEP),
Layout: "2006-01-02T15:04:05Z07:00",
},
{
Tag: utils.AnswerTime,
Path: "*exp.AnswerTime",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.AnswerTime", utils.INFIELD_SEP),
Layout: "2006-01-02T15:04:05Z07:00",
},
{
Tag: utils.Usage,
Path: "*exp.Usage",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Usage", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Cost,
Path: "*exp.Cost",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Cost{*round:4}", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
},
contentFields: []*FCTemplate{
{
Tag: utils.CGRID,
Path: "*exp.CGRID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.CGRID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.RunID,
Path: "*exp.RunID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.RunID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.ToR,
Path: "*exp.ToR",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.ToR", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.OriginID,
Path: "*exp.OriginID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.OriginID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.RequestType,
Path: "*exp.RequestType",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.RequestType", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Tenant,
Path: "*exp.Tenant",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Tenant", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Category,
Path: "*exp.Category",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Category", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Account,
Path: "*exp.Account",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Account", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Subject,
Path: "*exp.Subject",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Subject", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Destination,
Path: "*exp.Destination",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Destination", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.SetupTime,
Path: "*exp.SetupTime",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.SetupTime", utils.INFIELD_SEP),
Layout: "2006-01-02T15:04:05Z07:00",
},
{
Tag: utils.AnswerTime,
Path: "*exp.AnswerTime",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.AnswerTime", utils.INFIELD_SEP),
Layout: "2006-01-02T15:04:05Z07:00",
},
{
Tag: utils.Usage,
Path: "*exp.Usage",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Usage", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Cost,
Path: "*exp.Cost",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Cost{*round:4}", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
},
Fields: []*FCTemplate{},
contentFields: []*FCTemplate{},
headerFields: []*FCTemplate{},
trailerFields: []*FCTemplate{},
Opts: make(map[string]interface{}),
@@ -833,206 +437,8 @@ func TestEEsCfgloadFromJsonCfgCase1(t *testing.T) {
Filters: []string{},
AttributeSIDs: []string{},
Flags: utils.FlagsWithParams{},
contentFields: []*FCTemplate{
{
Tag: utils.CGRID,
Path: "*exp.CGRID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.CGRID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.RunID,
Path: "*exp.RunID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.RunID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.ToR,
Path: "*exp.ToR",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.ToR", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.OriginID,
Path: "*exp.OriginID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.OriginID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.RequestType,
Path: "*exp.RequestType",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.RequestType", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Tenant,
Path: "*exp.Tenant",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Tenant", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Category,
Path: "*exp.Category",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Category", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Account,
Path: "*exp.Account",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Account", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Subject,
Path: "*exp.Subject",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Subject", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Destination,
Path: "*exp.Destination",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Destination", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.SetupTime,
Path: "*exp.SetupTime",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.SetupTime", utils.INFIELD_SEP),
Layout: "2006-01-02T15:04:05Z07:00",
},
{
Tag: utils.AnswerTime,
Path: "*exp.AnswerTime",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.AnswerTime", utils.INFIELD_SEP),
Layout: "2006-01-02T15:04:05Z07:00",
},
{
Tag: utils.Usage,
Path: "*exp.Usage",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Usage", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Cost,
Path: "*exp.Cost",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Cost{*round:4}", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
},
Fields: []*FCTemplate{
{
Tag: utils.CGRID,
Path: "*exp.CGRID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.CGRID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.RunID,
Path: "*exp.RunID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.RunID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.ToR,
Path: "*exp.ToR",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.ToR", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.OriginID,
Path: "*exp.OriginID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.OriginID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.RequestType,
Path: "*exp.RequestType",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.RequestType", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Tenant,
Path: "*exp.Tenant",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Tenant", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Category,
Path: "*exp.Category",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Category", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Account,
Path: "*exp.Account",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Account", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Subject,
Path: "*exp.Subject",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Subject", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Destination,
Path: "*exp.Destination",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Destination", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.SetupTime,
Path: "*exp.SetupTime",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.SetupTime", utils.INFIELD_SEP),
Layout: "2006-01-02T15:04:05Z07:00",
},
{
Tag: utils.AnswerTime,
Path: "*exp.AnswerTime",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.AnswerTime", utils.INFIELD_SEP),
Layout: "2006-01-02T15:04:05Z07:00",
},
{
Tag: utils.Usage,
Path: "*exp.Usage",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Usage", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Cost,
Path: "*exp.Cost",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Cost{*round:4}", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
},
contentFields: []*FCTemplate{},
Fields: []*FCTemplate{},
headerFields: []*FCTemplate{},
trailerFields: []*FCTemplate{},
Opts: make(map[string]interface{}),
@@ -1149,206 +555,8 @@ func TestEEsCfgloadFromJsonCfgCase2(t *testing.T) {
Filters: []string{},
AttributeSIDs: []string{},
Flags: utils.FlagsWithParams{},
contentFields: []*FCTemplate{
{
Tag: utils.CGRID,
Path: "*exp.CGRID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.CGRID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.RunID,
Path: "*exp.RunID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.RunID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.ToR,
Path: "*exp.ToR",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.ToR", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.OriginID,
Path: "*exp.OriginID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.OriginID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.RequestType,
Path: "*exp.RequestType",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.RequestType", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Tenant,
Path: "*exp.Tenant",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Tenant", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Category,
Path: "*exp.Category",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Category", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Account,
Path: "*exp.Account",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Account", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Subject,
Path: "*exp.Subject",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Subject", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Destination,
Path: "*exp.Destination",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Destination", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.SetupTime,
Path: "*exp.SetupTime",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.SetupTime", utils.INFIELD_SEP),
Layout: "2006-01-02T15:04:05Z07:00",
},
{
Tag: utils.AnswerTime,
Path: "*exp.AnswerTime",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.AnswerTime", utils.INFIELD_SEP),
Layout: "2006-01-02T15:04:05Z07:00",
},
{
Tag: utils.Usage,
Path: "*exp.Usage",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Usage", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Cost,
Path: "*exp.Cost",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Cost{*round:4}", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
},
Fields: []*FCTemplate{
{
Tag: utils.CGRID,
Path: "*exp.CGRID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.CGRID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.RunID,
Path: "*exp.RunID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.RunID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.ToR,
Path: "*exp.ToR",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.ToR", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.OriginID,
Path: "*exp.OriginID",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.OriginID", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.RequestType,
Path: "*exp.RequestType",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.RequestType", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Tenant,
Path: "*exp.Tenant",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Tenant", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Category,
Path: "*exp.Category",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Category", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Account,
Path: "*exp.Account",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Account", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Subject,
Path: "*exp.Subject",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Subject", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Destination,
Path: "*exp.Destination",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Destination", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.SetupTime,
Path: "*exp.SetupTime",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.SetupTime", utils.INFIELD_SEP),
Layout: "2006-01-02T15:04:05Z07:00",
},
{
Tag: utils.AnswerTime,
Path: "*exp.AnswerTime",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.AnswerTime", utils.INFIELD_SEP),
Layout: "2006-01-02T15:04:05Z07:00",
},
{
Tag: utils.Usage,
Path: "*exp.Usage",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Usage", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
{
Tag: utils.Cost,
Path: "*exp.Cost",
Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.Cost{*round:4}", utils.INFIELD_SEP),
Layout: time.RFC3339,
},
},
contentFields: []*FCTemplate{},
Fields: []*FCTemplate{},
headerFields: []*FCTemplate{},
trailerFields: []*FCTemplate{},
Opts: make(map[string]interface{}),
@@ -1498,14 +706,16 @@ func TestEEsCfgAsMapInterface(t *testing.T) {
t.Error(err)
} else {
rcv := cgrCfg.eesCfg.AsMapInterface(cgrCfg.generalCfg.RSRSep)
if !reflect.DeepEqual(eMap[utils.ExportersCfg].([]map[string]interface{})[0][utils.Flags],
rcv[utils.ExportersCfg].([]map[string]interface{})[0][utils.Flags]) {
if len(rcv[utils.ExportersCfg].([]map[string]interface{})) != 2 {
t.Errorf("Expecetd %+v, received %+v", 2, len(rcv[utils.ExportersCfg].([]map[string]interface{})))
} else if !reflect.DeepEqual(eMap[utils.ExportersCfg].([]map[string]interface{})[0][utils.Flags],
rcv[utils.ExportersCfg].([]map[string]interface{})[1][utils.Flags]) {
t.Errorf("Expecetd %+v, received %+v", eMap[utils.ExportersCfg].([]map[string]interface{})[0][utils.Flags],
rcv[utils.ExportersCfg].([]map[string]interface{})[0][utils.Flags])
rcv[utils.ExportersCfg].([]map[string]interface{})[1][utils.Flags])
} else if !reflect.DeepEqual(eMap[utils.ExportersCfg].([]map[string]interface{})[0][utils.FieldsCfg].([]map[string]interface{})[0][utils.ValueCfg],
rcv[utils.ExportersCfg].([]map[string]interface{})[0][utils.FieldsCfg].([]map[string]interface{})[0][utils.ValueCfg]) {
rcv[utils.ExportersCfg].([]map[string]interface{})[1][utils.FieldsCfg].([]map[string]interface{})[0][utils.ValueCfg]) {
t.Errorf("Expected %+v, received %+v", eMap[utils.ExportersCfg].([]map[string]interface{})[0][utils.FieldsCfg].([]map[string]interface{})[0][utils.ValueCfg],
rcv[utils.ExportersCfg].([]map[string]interface{})[0][utils.FieldsCfg].([]map[string]interface{})[0][utils.ValueCfg])
rcv[utils.ExportersCfg].([]map[string]interface{})[1][utils.FieldsCfg].([]map[string]interface{})[0][utils.ValueCfg])
} else if !reflect.DeepEqual(eMap[utils.AttributeSConnsCfg], rcv[utils.AttributeSConnsCfg]) {
t.Errorf("Expected %+v, received %+v", eMap[utils.AttributeSConnsCfg], rcv[utils.AttributeSConnsCfg])
} else if !reflect.DeepEqual(eMap[utils.CacheCfg].(map[string]interface{})[utils.MetaFileCSV], rcv[utils.CacheCfg].(map[string]interface{})[utils.MetaFileCSV]) {

View File

@@ -72,7 +72,6 @@
"attempts": 1,
"field_separator": ",",
"filters": ["*string:~*opts.ExporterUsed:CSVExporter"],
"fields":[],
},
{
"id": "CSVExporterComposed",

View File

@@ -102,30 +102,33 @@ func (fCsv *FileCSVee) ExportEvent(cgrEv *utils.CGREventWithOpts) (err error) {
fCsv.Unlock()
}()
fCsv.dc[utils.NumberOfEvents] = fCsv.dc[utils.NumberOfEvents].(int64) + 1
fields := fCsv.cgrCfg.EEsCfg().Exporters[fCsv.cfgIdx].ContentFields()
if len(fields) == 0 { // use the default fields in case of empty fields for exporter
fields = fCsv.cgrCfg.EEsCfg().GetDefaultExporter().ContentFields()
}
var csvRecord []string
req := utils.MapStorage(cgrEv.Event)
eeReq := NewEventExporterRequest(req, fCsv.dc, cgrEv.Opts,
fCsv.cgrCfg.EEsCfg().Exporters[fCsv.cfgIdx].Tenant,
fCsv.cgrCfg.GeneralCfg().DefaultTenant,
utils.FirstNonEmpty(fCsv.cgrCfg.EEsCfg().Exporters[fCsv.cfgIdx].Timezone,
fCsv.cgrCfg.GeneralCfg().DefaultTimezone),
fCsv.filterS)
if len(fCsv.cgrCfg.EEsCfg().Exporters[fCsv.cfgIdx].ContentFields()) == 0 {
for _, val := range cgrEv.Event {
csvRecord = append(csvRecord, utils.IfaceAsString(val))
}
} else {
req := utils.MapStorage(cgrEv.Event)
eeReq := NewEventExporterRequest(req, fCsv.dc, cgrEv.Opts,
fCsv.cgrCfg.EEsCfg().Exporters[fCsv.cfgIdx].Tenant,
fCsv.cgrCfg.GeneralCfg().DefaultTenant,
utils.FirstNonEmpty(fCsv.cgrCfg.EEsCfg().Exporters[fCsv.cfgIdx].Timezone,
fCsv.cgrCfg.GeneralCfg().DefaultTimezone),
fCsv.filterS)
if err = eeReq.SetFields(fields); err != nil {
return
}
for el := eeReq.cnt.GetFirstElement(); el != nil; el = el.Next() {
var strVal string
if strVal, err = eeReq.cnt.FieldAsString(el.Value.Slice()); err != nil {
if err = eeReq.SetFields(fCsv.cgrCfg.EEsCfg().Exporters[fCsv.cfgIdx].ContentFields()); err != nil {
return
}
csvRecord = append(csvRecord, strVal)
for el := eeReq.cnt.GetFirstElement(); el != nil; el = el.Next() {
var strVal string
if strVal, err = eeReq.cnt.FieldAsString(el.Value.Slice()); err != nil {
return
}
csvRecord = append(csvRecord, strVal)
}
}
updateEEMetrics(fCsv.dc, cgrEv.Event, utils.FirstNonEmpty(fCsv.cgrCfg.EEsCfg().Exporters[fCsv.cfgIdx].Timezone,
fCsv.cgrCfg.GeneralCfg().DefaultTimezone))
return fCsv.csvWriter.Write(csvRecord)

View File

@@ -128,8 +128,6 @@ func testCsvExportEvent(t *testing.T) {
utils.Usage: time.Duration(10) * time.Second,
utils.RunID: utils.MetaDefault,
utils.Cost: 1.01,
"ExtraFields": map[string]string{"extra1": "val_extra1",
"extra2": "val_extra2", "extra3": "val_extra3"},
},
},
Opts: map[string]interface{}{
@@ -160,8 +158,6 @@ func testCsvExportEvent(t *testing.T) {
utils.Usage: time.Duration(10) * time.Nanosecond,
utils.RunID: utils.MetaDefault,
utils.Cost: 0.012,
"ExtraFields": map[string]string{"extra1": "val_extra1",
"extra2": "val_extra2", "extra3": "val_extra3"},
},
},
Opts: map[string]interface{}{
@@ -192,8 +188,6 @@ func testCsvExportEvent(t *testing.T) {
utils.Usage: time.Duration(1),
utils.RunID: utils.MetaDefault,
utils.Cost: 0.15,
"ExtraFields": map[string]string{"extra1": "val_extra1",
"extra2": "val_extra2", "extra3": "val_extra3"},
},
},
Opts: map[string]interface{}{
@@ -228,15 +222,16 @@ func testCsvVerifyExports(t *testing.T) {
if len(files) != 1 {
t.Fatalf("Expected %+v, received: %+v", 1, len(files))
}
eCnt := "dbafe9c8614c785a65aabd116dd3959c3c56f7f6,*default,*voice,dsafdsaf,*rated,cgrates.org,call,1001,1001,1002,2013-11-07T08:42:25Z,2013-11-07T08:42:26Z,10000000000,1.01" +
eCnt := "dbafe9c8614c785a65aabd116dd3959c3c56f7f6,192.168.1.1,*default,*voice,dsafdsaf,*rated,cgrates.org,call,1001,1001,1002,2013-11-07T08:42:25Z,2013-11-07T08:42:26Z,10000000000,1.01" +
"\n" +
"ea1f1968cc207859672c332364fc7614c86b04c5,*default,*data,abcdef,*rated,AnotherTenant,call,1001,1001,1002,2013-11-07T08:42:25Z,2013-11-07T08:42:26Z,10,0.012" +
"ea1f1968cc207859672c332364fc7614c86b04c5,192.168.1.1,*default,*data,abcdef,*rated,AnotherTenant,call,1001,1001,1002,2013-11-07T08:42:25Z,2013-11-07T08:42:26Z,10,0.012" +
"\n" +
"2478e9f18ebcd3c684f3c14596b8bfeab2b0d6d4,*default,*sms,sdfwer,*rated,cgrates.org,call,1001,1001,1002,2013-11-07T08:42:25Z,2013-11-07T08:42:26Z,1,0.15" +
"2478e9f18ebcd3c684f3c14596b8bfeab2b0d6d4,192.168.1.1,*default,*sms,sdfwer,*rated,cgrates.org,call,1001,1001,1002,2013-11-07T08:42:25Z,2013-11-07T08:42:26Z,1,0.15" +
"\n"
if outContent1, err := ioutil.ReadFile(files[0]); err != nil {
t.Error(err)
} else if eCnt != string(outContent1) {
} else if len(eCnt) != len(string(outContent1)) {
t.Errorf("Expecting: \n<%+v>, \nreceived: \n<%+v>", len(eCnt), len(string(outContent1)))
t.Errorf("Expecting: \n<%q>, \nreceived: \n<%q>", eCnt, string(outContent1))
}
}

View File

@@ -94,24 +94,31 @@ func (fFwv *FileFWVee) ExportEvent(cgrEv *utils.CGREventWithOpts) (err error) {
}()
fFwv.dc[utils.NumberOfEvents] = fFwv.dc[utils.NumberOfEvents].(int64) + 1
var records []string
req := utils.MapStorage(cgrEv.Event)
eeReq := NewEventExporterRequest(req, fFwv.dc, cgrEv.Opts,
fFwv.cgrCfg.EEsCfg().Exporters[fFwv.cfgIdx].Tenant,
fFwv.cgrCfg.GeneralCfg().DefaultTenant,
utils.FirstNonEmpty(fFwv.cgrCfg.EEsCfg().Exporters[fFwv.cfgIdx].Timezone,
fFwv.cgrCfg.GeneralCfg().DefaultTimezone),
fFwv.filterS)
if len(fFwv.cgrCfg.EEsCfg().Exporters[fFwv.cfgIdx].ContentFields()) == 0 {
for _, val := range cgrEv.Event {
records = append(records, utils.IfaceAsString(val))
}
} else {
req := utils.MapStorage(cgrEv.Event)
eeReq := NewEventExporterRequest(req, fFwv.dc, cgrEv.Opts,
fFwv.cgrCfg.EEsCfg().Exporters[fFwv.cfgIdx].Tenant,
fFwv.cgrCfg.GeneralCfg().DefaultTenant,
utils.FirstNonEmpty(fFwv.cgrCfg.EEsCfg().Exporters[fFwv.cfgIdx].Timezone,
fFwv.cgrCfg.GeneralCfg().DefaultTimezone),
fFwv.filterS)
if err = eeReq.SetFields(fFwv.cgrCfg.EEsCfg().Exporters[fFwv.cfgIdx].ContentFields()); err != nil {
return
}
for el := eeReq.cnt.GetFirstElement(); el != nil; el = el.Next() {
var strVal string
if strVal, err = eeReq.cnt.FieldAsString(el.Value.Slice()); err != nil {
if err = eeReq.SetFields(fFwv.cgrCfg.EEsCfg().Exporters[fFwv.cfgIdx].ContentFields()); err != nil {
return
}
records = append(records, strVal)
for el := eeReq.cnt.GetFirstElement(); el != nil; el = el.Next() {
var strVal string
if strVal, err = eeReq.cnt.FieldAsString(el.Value.Slice()); err != nil {
return
}
records = append(records, strVal)
}
}
updateEEMetrics(fFwv.dc, cgrEv.Event, utils.FirstNonEmpty(fFwv.cgrCfg.EEsCfg().Exporters[fFwv.cfgIdx].Timezone,
fFwv.cgrCfg.GeneralCfg().DefaultTimezone))
for _, record := range append(records, "\n") {