diff --git a/data/conf/samples/ees/cgrates.json b/data/conf/samples/ees/cgrates.json index 90e27ea02..743d767ab 100644 --- a/data/conf/samples/ees/cgrates.json +++ b/data/conf/samples/ees/cgrates.json @@ -71,7 +71,7 @@ "attribute_context": "customContext", "attempts": 1, "field_separator": ",", - "filters": ["*string:~*req.ExporterUsed:CSVExporter"], + "filters": ["*string:~*opts.ExporterUsed:CSVExporter"], "fields":[], }, { @@ -83,7 +83,7 @@ "attribute_context": "customContext", "attempts": 1, "field_separator": ",", - "filters": ["*string:~*req.ExporterUsed:CSVExporterComposed"], + "filters": ["*string:~*opts.ExporterUsed:CSVExporterComposed"], "fields":[ {"tag": "Number", "path": "*hdr.Number", "type": "*constant", "value": "NumberOfEvent"}, {"tag": "CGRID", "path": "*hdr.CGRID", "type": "*constant", "value": "CGRID"}, @@ -132,7 +132,7 @@ "flags": ["*attributes"], "attribute_context": "customContext", "attempts": 1, - "filters": ["*string:~*req.ExporterUsed:FWVExporter"], + "filters": ["*string:~*opts.ExporterUsed:FWVExporter"], "fields":[ {"tag": "TypeOfRecord", "path": "*hdr.TypeOfRecord", "type": "*constant", "value": "10", "width": 2}, @@ -207,7 +207,7 @@ "flags": ["*attributes"], "attribute_context": "customContext", "attempts": 1, - "filters": ["*string:~*req.ExporterUsed:HTTPPostExporter"], + "filters": ["*string:~*opts.ExporterUsed:HTTPPostExporter"], "fields":[ {"tag": "CGRID", "path": "*exp.CGRID", "type": "*variable", "value": "~*req.CGRID"}, {"tag": "RunID", "path": "*exp.RunID", "type": "*variable", "value": "~*req.RunID"}, @@ -233,7 +233,7 @@ "flags": ["*attributes"], "attribute_context": "customContext", "attempts": 1, - "filters": ["*string:~*req.ExporterUsed:HTTPJsonMapExporter"], + "filters": ["*string:~*opts.ExporterUsed:HTTPJsonMapExporter"], "fields":[ {"tag": "CGRID", "path": "*exp.CGRID", "type": "*variable", "value": "~*req.CGRID"}, {"tag": "RunID", "path": "*exp.RunID", "type": "*variable", "value": "~*req.RunID"}, @@ -249,6 +249,7 @@ {"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime"}, {"tag": "Usage", "path": "*exp.Usage", "type": "*variable", "value": "~*req.Usage"}, {"tag": "Cost", "path": "*exp.Cost", "type": "*variable", "value": "~*req.Cost{*round:4}"}, + {"tag": "EvenType", "path": "*exp.EventType", "type": "*variable", "value": "~*opts.*eventType"}, ], }, { @@ -260,7 +261,7 @@ "attribute_context": "customContext", "attempts": 1, "field_separator": ",", - "filters": ["*string:~*req.ExporterUsed:CSVMaskedDestination"], + "filters": ["*string:~*opts.ExporterUsed:CSVMaskedDestination"], "fields":[ {"tag": "CGRID", "path": "*exp.CGRID", "type": "*variable", "value": "~*req.CGRID"}, {"tag": "RunID", "path": "*exp.RunID", "type": "*variable", "value": "~*req.RunID"}, @@ -284,7 +285,7 @@ "type": "*virt", "tenant": "cgrates.org", "attempts": 1, - "filters": ["*string:~*req.ExporterUsed:RouteExporter"], + "filters": ["*string:~*opts.ExporterUsed:RouteExporter"], "fields":[ {"tag": "Cost", "path": "*uch.<~*req.CGRID;~*req.RunID;-Cost>", "type": "*variable", "value": "~*req.Cost", "rounding_decimals": 4}, @@ -303,7 +304,7 @@ "attribute_context": "customContext", "attempts": 1, "field_separator": ",", - "filters": ["*string:~*req.ExporterUsed:CSVExporterFromVirt"], + "filters": ["*string:~*opts.ExporterUsed:CSVExporterFromVirt"], "fields":[ {"tag": "CGRID", "path": "*exp.CGRID", "type": "*variable", "value": "~*req.CGRID"}, {"tag": "RunID", "path": "*exp.RunID", "type": "*variable", "value": "~*req.RunID"}, @@ -328,7 +329,7 @@ "attribute_context": "customContext", "attempts": 1, "field_separator": ",", - "filters": ["*string:~*req.ExporterUsed:CSVExporterWIthTemplate"], + "filters": ["*string:~*opts.ExporterUsed:CSVExporterWIthTemplate"], "fields":[ {"tag": "RequiredTemplate","type": "*template", "value": "requiredFields"}, ], @@ -339,7 +340,7 @@ "export_path": "http://localhost:9200", "tenant": "cgrates.org", "attempts": 1, - "filters": ["*string:~*req.ExporterUsed:ElasticExporter"], + "filters": ["*string:~*opts.ExporterUsed:ElasticExporter"], "opts": { "index": "cdrs", //"if_primary_term": 0, @@ -378,7 +379,7 @@ "flags": ["*attributes"], "attribute_context": "customContext", "attempts": 1, - "filters": ["*string:~*req.ExporterUsed:HTTPJsonMapExporterWithNoFields"], + "filters": ["*string:~*opts.ExporterUsed:HTTPJsonMapExporterWithNoFields"], "fields":[] }, { @@ -387,7 +388,7 @@ "export_path": "http://localhost:9200", "tenant": "cgrates.org", "attempts": 1, - "filters": ["*string:~*req.ExporterUsed:ElasticExporterWithNoFields"], + "filters": ["*string:~*opts.ExporterUsed:ElasticExporterWithNoFields"], "fields":[], }, { @@ -398,7 +399,7 @@ "flags": ["*attributes"], "attribute_context": "customContext", "attempts": 1, - "filters": ["*string:~*req.ExporterUsed:HTTPPostExporterWithNoFields"], + "filters": ["*string:~*opts.ExporterUsed:HTTPPostExporterWithNoFields"], "fields":[] } ] diff --git a/ees/ees.go b/ees/ees.go index 07f508c9a..f20a86529 100644 --- a/ees/ees.go +++ b/ees/ees.go @@ -148,7 +148,10 @@ func (eeS *EventExporterS) V1ProcessEvent(cgrEv *utils.CGREventWithIDs, rply *ma expIDs := utils.NewStringSet(cgrEv.IDs) lenExpIDs := expIDs.Size() - cgrDp := utils.MapStorage{utils.MetaReq: cgrEv.Event} + cgrDp := utils.MapStorage{ + utils.MetaReq: cgrEv.Event, + utils.MetaOpts: cgrEv.Opts, + } var wg sync.WaitGroup var withErr bool diff --git a/ees/elastic_it_test.go b/ees/elastic_it_test.go index 02bfd54c6..1b0986d32 100644 --- a/ees/elastic_it_test.go +++ b/ees/elastic_it_test.go @@ -140,11 +140,13 @@ func testElasticExportEvents(t *testing.T) { utils.Usage: time.Duration(10) * time.Second, utils.RunID: utils.MetaDefault, utils.Cost: 1.01, - "ExporterUsed": "ElasticExporter", "ExtraFields": map[string]string{"extra1": "val_extra1", "extra2": "val_extra2", "extra3": "val_extra3"}, }, }, + Opts: map[string]interface{}{ + "ExporterUsed": "ElasticExporter", + }, }, } @@ -170,11 +172,13 @@ func testElasticExportEvents(t *testing.T) { utils.Usage: time.Duration(10) * time.Nanosecond, utils.RunID: utils.MetaDefault, utils.Cost: 0.012, - "ExporterUsed": "ElasticExporter", "ExtraFields": map[string]string{"extra1": "val_extra1", "extra2": "val_extra2", "extra3": "val_extra3"}, }, }, + Opts: map[string]interface{}{ + "ExporterUsed": "ElasticExporter", + }, }, } @@ -199,11 +203,13 @@ func testElasticExportEvents(t *testing.T) { utils.Usage: time.Duration(1), utils.RunID: utils.MetaDefault, utils.Cost: 0.15, - "ExporterUsed": "ElasticExporter", "ExtraFields": map[string]string{"extra1": "val_extra1", "extra2": "val_extra2", "extra3": "val_extra3"}, }, }, + Opts: map[string]interface{}{ + "ExporterUsed": "ElasticExporter", + }, } eventSMSNoFields := &utils.CGREventWithOpts{ @@ -220,9 +226,11 @@ func testElasticExportEvents(t *testing.T) { utils.Subject: "1001", utils.Destination: "1002", utils.RunID: utils.MetaDefault, - "ExporterUsed": "ElasticExporterWithNoFields", }, }, + Opts: map[string]interface{}{ + "ExporterUsed": "ElasticExporterWithNoFields", + }, } var reply map[string]utils.MapStorage if err := elasticRpc.Call(utils.EventExporterSv1ProcessEvent, eventVoice, &reply); err != nil { @@ -333,7 +341,6 @@ func testElasticVerifyExports(t *testing.T) { utils.Subject: "1001", utils.Destination: "1002", utils.RunID: utils.MetaDefault, - "ExporterUsed": "ElasticExporterWithNoFields", } if !reflect.DeepEqual(eMp, hit.(map[string]interface{})["_source"]) { t.Errorf("Expected %+v, received: %+v", eMp, hit.(map[string]interface{})["_source"]) diff --git a/ees/filecsv_it_test.go b/ees/filecsv_it_test.go index 0cd8492ba..baf1ac5c2 100644 --- a/ees/filecsv_it_test.go +++ b/ees/filecsv_it_test.go @@ -128,11 +128,13 @@ func testCsvExportEvent(t *testing.T) { utils.Usage: time.Duration(10) * time.Second, utils.RunID: utils.MetaDefault, utils.Cost: 1.01, - "ExporterUsed": "CSVExporter", "ExtraFields": map[string]string{"extra1": "val_extra1", "extra2": "val_extra2", "extra3": "val_extra3"}, }, }, + Opts: map[string]interface{}{ + "ExporterUsed": "CSVExporter", + }, }, } @@ -158,11 +160,13 @@ func testCsvExportEvent(t *testing.T) { utils.Usage: time.Duration(10) * time.Nanosecond, utils.RunID: utils.MetaDefault, utils.Cost: 0.012, - "ExporterUsed": "CSVExporter", "ExtraFields": map[string]string{"extra1": "val_extra1", "extra2": "val_extra2", "extra3": "val_extra3"}, }, }, + Opts: map[string]interface{}{ + "ExporterUsed": "CSVExporter", + }, }, } @@ -188,11 +192,13 @@ func testCsvExportEvent(t *testing.T) { utils.Usage: time.Duration(1), utils.RunID: utils.MetaDefault, utils.Cost: 0.15, - "ExporterUsed": "CSVExporter", "ExtraFields": map[string]string{"extra1": "val_extra1", "extra2": "val_extra2", "extra3": "val_extra3"}, }, }, + Opts: map[string]interface{}{ + "ExporterUsed": "CSVExporter", + }, }, } var reply map[string]utils.MapStorage @@ -220,7 +226,7 @@ func testCsvVerifyExports(t *testing.T) { t.Error(err) } if len(files) != 1 { - t.Errorf("Expected %+v, received: %+v", 1, len(files)) + 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" + "\n" + @@ -259,11 +265,13 @@ func testCsvExportComposedEvent(t *testing.T) { utils.Usage: time.Duration(10) * time.Second, utils.RunID: utils.MetaDefault, utils.Cost: 1.016374, - "ExporterUsed": "CSVExporterComposed", "ExtraFields": map[string]string{"extra1": "val_extra1", "extra2": "val_extra2", "extra3": "val_extra3"}, }, }, + Opts: map[string]interface{}{ + "ExporterUsed": "CSVExporterComposed", + }, }, } @@ -290,11 +298,13 @@ func testCsvExportComposedEvent(t *testing.T) { utils.Usage: time.Duration(1), utils.RunID: utils.MetaDefault, utils.Cost: 0.155462, - "ExporterUsed": "CSVExporterComposed", "ExtraFields": map[string]string{"extra1": "val_extra1", "extra2": "val_extra2", "extra3": "val_extra3"}, }, }, + Opts: map[string]interface{}{ + "ExporterUsed": "CSVExporterComposed", + }, }, } var reply map[string]utils.MapStorage @@ -364,9 +374,11 @@ func testCsvExportMaskedDestination(t *testing.T) { utils.Usage: time.Duration(10) * time.Second, utils.RunID: utils.MetaDefault, utils.Cost: 1.01, - "ExporterUsed": "CSVMaskedDestination", }, }, + Opts: map[string]interface{}{ + "ExporterUsed": "CSVMaskedDestination", + }, }, } var rply map[string]utils.MapStorage @@ -421,11 +433,13 @@ func testCsvExportEventWithInflateTemplate(t *testing.T) { utils.Usage: time.Duration(10) * time.Second, utils.RunID: utils.MetaDefault, utils.Cost: 1.01, - "ExporterUsed": "CSVExporterWIthTemplate", "ExtraFields": map[string]string{"extra1": "val_extra1", "extra2": "val_extra2", "extra3": "val_extra3"}, }, }, + Opts: map[string]interface{}{ + "ExporterUsed": "CSVExporterWIthTemplate", + }, }, } @@ -451,11 +465,13 @@ func testCsvExportEventWithInflateTemplate(t *testing.T) { utils.Usage: time.Duration(10) * time.Nanosecond, utils.RunID: utils.MetaDefault, utils.Cost: 0.012, - "ExporterUsed": "CSVExporterWIthTemplate", "ExtraFields": map[string]string{"extra1": "val_extra1", "extra2": "val_extra2", "extra3": "val_extra3"}, }, }, + Opts: map[string]interface{}{ + "ExporterUsed": "CSVExporterWIthTemplate", + }, }, } @@ -481,11 +497,13 @@ func testCsvExportEventWithInflateTemplate(t *testing.T) { utils.Usage: time.Duration(1), utils.RunID: utils.MetaDefault, utils.Cost: 0.15, - "ExporterUsed": "CSVExporterWIthTemplate", "ExtraFields": map[string]string{"extra1": "val_extra1", "extra2": "val_extra2", "extra3": "val_extra3"}, }, }, + Opts: map[string]interface{}{ + "ExporterUsed": "CSVExporterWIthTemplate", + }, }, } var reply map[string]utils.MapStorage @@ -551,11 +569,13 @@ func testCsvExportNotFoundExporter(t *testing.T) { utils.Usage: time.Duration(10) * time.Second, utils.RunID: utils.MetaDefault, utils.Cost: 1.01, - "ExporterUsed": "ExporterNotFound", "ExtraFields": map[string]string{"extra1": "val_extra1", "extra2": "val_extra2", "extra3": "val_extra3"}, }, }, + Opts: map[string]interface{}{ + "ExporterUsed": "ExporterNotFound", + }, }, } diff --git a/ees/filefwv_it_test.go b/ees/filefwv_it_test.go index a879d7a54..527f09376 100644 --- a/ees/filefwv_it_test.go +++ b/ees/filefwv_it_test.go @@ -120,10 +120,12 @@ func testFwvExportEvent(t *testing.T) { utils.Usage: time.Duration(10) * time.Second, utils.RunID: utils.MetaDefault, utils.Cost: 2.34567, - "ExporterUsed": "FWVExporter", "ExtraFields": map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}, }, }, + Opts: map[string]interface{}{ + "ExporterUsed": "FWVExporter", + }, }, } var reply map[string]utils.MapStorage diff --git a/ees/httpjsonmap_it_test.go b/ees/httpjsonmap_it_test.go index a5970ea88..401fad85a 100644 --- a/ees/httpjsonmap_it_test.go +++ b/ees/httpjsonmap_it_test.go @@ -135,11 +135,14 @@ func testHTTPJsonMapExportEvent(t *testing.T) { utils.Usage: time.Duration(10) * time.Second, utils.RunID: utils.MetaDefault, utils.Cost: 1.01, - "ExporterUsed": "HTTPJsonMapExporter", "ExtraFields": map[string]string{"extra1": "val_extra1", "extra2": "val_extra2", "extra3": "val_extra3"}, }, }, + Opts: map[string]interface{}{ + "ExporterUsed": "HTTPJsonMapExporter", + utils.MetaEventType: utils.CDR, + }, }, } @@ -165,11 +168,14 @@ func testHTTPJsonMapExportEvent(t *testing.T) { utils.Usage: time.Duration(10) * time.Nanosecond, utils.RunID: utils.MetaDefault, utils.Cost: 0.012, - "ExporterUsed": "HTTPJsonMapExporter", "ExtraFields": map[string]string{"extra1": "val_extra1", "extra2": "val_extra2", "extra3": "val_extra3"}, }, }, + Opts: map[string]interface{}{ + "ExporterUsed": "HTTPJsonMapExporter", + utils.MetaEventType: utils.CDR, + }, }, } @@ -196,11 +202,14 @@ func testHTTPJsonMapExportEvent(t *testing.T) { utils.RunID: utils.MetaDefault, utils.Cost: 0.15, utils.OrderID: 10, - "ExporterUsed": "HTTPJsonMapExporter", "ExtraFields": map[string]string{"extra1": "val_extra1", "extra2": "val_extra2", "extra3": "val_extra3"}, }, }, + Opts: map[string]interface{}{ + "ExporterUsed": "HTTPJsonMapExporter", + utils.MetaEventType: utils.CDR, + }, }, } @@ -218,9 +227,11 @@ func testHTTPJsonMapExportEvent(t *testing.T) { utils.Account: "1001", utils.Destination: "1002", utils.RunID: utils.MetaDefault, - "ExporterUsed": "HTTPJsonMapExporterWithNoFields", }, }, + Opts: map[string]interface{}{ + "ExporterUsed": "HTTPJsonMapExporterWithNoFields", + }, }, } var reply map[string]utils.MapStorage @@ -237,6 +248,7 @@ func testHTTPJsonMapExportEvent(t *testing.T) { utils.Subject: utils.IfaceAsString(eventVoice.Event[utils.Subject]), utils.Destination: utils.IfaceAsString(eventVoice.Event[utils.Destination]), utils.Cost: utils.IfaceAsString(eventVoice.Event[utils.Cost]), + utils.EventType: utils.CDR, } { if rcv := httpJsonMap[key]; rcv != strVal { t.Errorf("Expected %+v, received: %+v", strVal, rcv) @@ -255,6 +267,7 @@ func testHTTPJsonMapExportEvent(t *testing.T) { utils.Subject: utils.IfaceAsString(eventData.Event[utils.Subject]), utils.Destination: utils.IfaceAsString(eventData.Event[utils.Destination]), utils.Cost: utils.IfaceAsString(eventData.Event[utils.Cost]), + utils.EventType: utils.CDR, } { if rcv := httpJsonMap[key]; rcv != strVal { t.Errorf("Expected %+v, received: %+v", strVal, rcv) @@ -273,6 +286,7 @@ func testHTTPJsonMapExportEvent(t *testing.T) { utils.Subject: utils.IfaceAsString(eventSMS.Event[utils.Subject]), utils.Destination: utils.IfaceAsString(eventSMS.Event[utils.Destination]), utils.Cost: utils.IfaceAsString(eventSMS.Event[utils.Cost]), + utils.EventType: utils.CDR, } { if rcv := httpJsonMap[key]; rcv != strVal { t.Errorf("Expected %+v, received: %+v", strVal, rcv) diff --git a/ees/httppost_it_test.go b/ees/httppost_it_test.go index 4cd38b7f9..8a35095f9 100644 --- a/ees/httppost_it_test.go +++ b/ees/httppost_it_test.go @@ -135,11 +135,13 @@ func testHTTPExportEvent(t *testing.T) { utils.Usage: time.Duration(10) * time.Second, utils.RunID: utils.MetaDefault, utils.Cost: 1.01, - "ExporterUsed": "HTTPPostExporter", "ExtraFields": map[string]string{"extra1": "val_extra1", "extra2": "val_extra2", "extra3": "val_extra3"}, }, }, + Opts: map[string]interface{}{ + "ExporterUsed": "HTTPPostExporter", + }, }, } @@ -165,11 +167,13 @@ func testHTTPExportEvent(t *testing.T) { utils.Usage: time.Duration(10) * time.Nanosecond, utils.RunID: utils.MetaDefault, utils.Cost: 0.012, - "ExporterUsed": "HTTPPostExporter", "ExtraFields": map[string]string{"extra1": "val_extra1", "extra2": "val_extra2", "extra3": "val_extra3"}, }, }, + Opts: map[string]interface{}{ + "ExporterUsed": "HTTPPostExporter", + }, }, } @@ -194,11 +198,13 @@ func testHTTPExportEvent(t *testing.T) { utils.Usage: time.Duration(1), utils.RunID: utils.MetaDefault, utils.Cost: 0.15, - "ExporterUsed": "HTTPPostExporter", "ExtraFields": map[string]string{"extra1": "val_extra1", "extra2": "val_extra2", "extra3": "val_extra3"}, }, }, + Opts: map[string]interface{}{ + "ExporterUsed": "HTTPPostExporter", + }, } eventSMSNoFields := &utils.CGREventWithOpts{ @@ -217,9 +223,11 @@ func testHTTPExportEvent(t *testing.T) { utils.Subject: "1001", utils.Destination: "1002", utils.RunID: utils.MetaDefault, - "ExporterUsed": "HTTPPostExporterWithNoFields", }, }, + Opts: map[string]interface{}{ + "ExporterUsed": "HTTPPostExporterWithNoFields", + }, } var reply map[string]utils.MapStorage diff --git a/ees/virtual_ee_it_test.go b/ees/virtual_ee_it_test.go index 3ff32143a..be6801384 100644 --- a/ees/virtual_ee_it_test.go +++ b/ees/virtual_ee_it_test.go @@ -121,9 +121,11 @@ func testVirtExportSupplierEvent(t *testing.T) { utils.Usage: time.Duration(10) * time.Second, utils.RunID: "SupplierRun", utils.Cost: 1.23, - "ExporterUsed": "RouteExporter", }, }, + Opts: map[string]interface{}{ + "ExporterUsed": "RouteExporter", + }, }, } @@ -157,9 +159,11 @@ func testVirtExportEvents(t *testing.T) { utils.Usage: time.Duration(10) * time.Second, utils.RunID: "SupplierRun", utils.Cost: 1.01, - "ExporterUsed": "CSVExporterFromVirt", }, }, + Opts: map[string]interface{}{ + "ExporterUsed": "CSVExporterFromVirt", + }, }, } var reply map[string]utils.MapStorage