From 596f19c8bc85a5d534ab32cd13d807f9154758dc Mon Sep 17 00:00:00 2001 From: DanB Date: Thu, 24 Nov 2016 15:39:56 +0100 Subject: [PATCH] CDRC - allow RunID value on import --- cdrc/csv_test.go | 13 ++++++++----- config/config_defaults.go | 2 +- engine/cdr.go | 2 ++ engine/cdr_test.go | 5 +++++ 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/cdrc/csv_test.go b/cdrc/csv_test.go index 6f84d5f4a..83e80f28d 100644 --- a/cdrc/csv_test.go +++ b/cdrc/csv_test.go @@ -27,14 +27,16 @@ import ( "github.com/cgrates/cgrates/utils" ) -func TestCsvRecordForkCdr(t *testing.T) { +func TestCsvRecordToCDR(t *testing.T) { cgrConfig, _ := config.NewDefaultCGRConfig() cdrcConfig := cgrConfig.CdrcProfiles["/var/spool/cgrates/cdrc/in"][0] cdrcConfig.CdrSourceId = "TEST_CDRC" - cdrcConfig.ContentFields = append(cdrcConfig.ContentFields, &config.CfgCdrField{Tag: "SupplierTest", Type: utils.META_COMPOSED, FieldId: utils.SUPPLIER, Value: []*utils.RSRField{&utils.RSRField{Id: "14"}}}) - cdrcConfig.ContentFields = append(cdrcConfig.ContentFields, &config.CfgCdrField{Tag: "DisconnectCauseTest", Type: utils.META_COMPOSED, FieldId: utils.DISCONNECT_CAUSE, - Value: []*utils.RSRField{&utils.RSRField{Id: "16"}}}) - // + cdrcConfig.ContentFields = append(cdrcConfig.ContentFields, &config.CfgCdrField{Tag: "RunID", Type: utils.META_COMPOSED, + FieldId: utils.MEDI_RUNID, Value: utils.ParseRSRFieldsMustCompile("^*default", utils.INFIELD_SEP)}) + cdrcConfig.ContentFields = append(cdrcConfig.ContentFields, &config.CfgCdrField{Tag: "SupplierTest", Type: utils.META_COMPOSED, + FieldId: utils.SUPPLIER, Value: []*utils.RSRField{&utils.RSRField{Id: "14"}}}) + cdrcConfig.ContentFields = append(cdrcConfig.ContentFields, &config.CfgCdrField{Tag: "DisconnectCauseTest", Type: utils.META_COMPOSED, + FieldId: utils.DISCONNECT_CAUSE, Value: []*utils.RSRField{&utils.RSRField{Id: "16"}}}) csvProcessor := &CsvRecordsProcessor{dfltCdrcCfg: cdrcConfig, cdrcCfgs: []*config.CdrcConfig{cdrcConfig}} cdrRow := []string{"firstField", "secondField"} _, err := csvProcessor.recordToStoredCdr(cdrRow, cdrcConfig) @@ -49,6 +51,7 @@ func TestCsvRecordForkCdr(t *testing.T) { } expectedCdr := &engine.CDR{ CGRID: utils.Sha1(cdrRow[3], time.Date(2013, 2, 3, 19, 50, 0, 0, time.UTC).String()), + RunID: "*default", ToR: cdrRow[2], OriginID: cdrRow[3], OriginHost: "0.0.0.0", // Got it over internal interface diff --git a/config/config_defaults.go b/config/config_defaults.go index f1b64c32a..79c648c14 100644 --- a/config/config_defaults.go +++ b/config/config_defaults.go @@ -223,7 +223,7 @@ const CGRATES_CFG_JSON = ` {"tag": "Usage", "field_id": "Usage", "type": "*composed", "value": "13", "mandatory": true}, ], "trailer_fields": [], // template of the import trailer fields - "cache_dump_fields": [ + "cache_dump_fields": [ // template used when dumping cached CDR, eg: partial CDRs {"tag": "CGRID", "type": "*composed", "value": "CGRID"}, {"tag": "RunID", "type": "*composed", "value": "RunID"}, {"tag": "TOR", "type": "*composed", "value": "ToR"}, diff --git a/engine/cdr.go b/engine/cdr.go index 569bd252c..7498f0241 100644 --- a/engine/cdr.go +++ b/engine/cdr.go @@ -212,6 +212,8 @@ func (cdr *CDR) ParseFieldValue(fieldId, fieldVal, timezone string) error { } case utils.TOR: cdr.ToR += fieldVal + case utils.MEDI_RUNID: + cdr.RunID += fieldVal case utils.ACCID: cdr.OriginID += fieldVal case utils.REQTYPE: diff --git a/engine/cdr_test.go b/engine/cdr_test.go index 2d9ba1c19..55c07cc00 100644 --- a/engine/cdr_test.go +++ b/engine/cdr_test.go @@ -495,6 +495,11 @@ func TestCDRParseFieldValue(t *testing.T) { } else if cdr.OrderID != 5 { t.Errorf("Received cdr: %+v", cdr) } + if err := cdr.ParseFieldValue(utils.MEDI_RUNID, "*default", ""); err != nil { + t.Error(err) + } else if cdr.RunID != "*default" { + t.Errorf("Received cdr: %+v", cdr) + } } func TestCDRAsExportRecord(t *testing.T) {