From 50440f5490e312b1b4ba654805aab8ae2bb88dbc Mon Sep 17 00:00:00 2001 From: DanB Date: Thu, 16 Feb 2017 10:50:08 +0100 Subject: [PATCH] CDRS using goroutines for rating to release the CDR faster, tests improvements --- apier/v1/apier_it_test.go | 2 +- config/multifiles_it_test.go | 20 ++++++++----------- data/conf/samples/apier/apier.json | 2 +- .../conf/samples/cdrsv2mysql/cdrsv2mysql.json | 5 +++++ data/conf/samples/multifiles/b/b.json | 4 ++-- .../multiplecdrc/multiplecdrc_fwexport.json | 2 +- engine/cdrs.go | 3 +-- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/apier/v1/apier_it_test.go b/apier/v1/apier_it_test.go index c92db0707..392886847 100644 --- a/apier/v1/apier_it_test.go +++ b/apier/v1/apier_it_test.go @@ -77,7 +77,7 @@ func TestApierLoadConfig(t *testing.T) { } func TestApierCreateDirs(t *testing.T) { - for _, pathDir := range []string{cfg.CdreProfiles[utils.META_DEFAULT].ExportDirectory, "/var/log/cgrates/cdrc/in", "/var/log/cgrates/cdrc/out", cfg.HistoryDir} { + for _, pathDir := range []string{cfg.CdreProfiles[utils.META_DEFAULT].ExportPath, "/var/log/cgrates/cdrc/in", "/var/log/cgrates/cdrc/out", cfg.HistoryDir} { if err := os.RemoveAll(pathDir); err != nil { t.Fatal("Error removing folder: ", pathDir, err) } diff --git a/config/multifiles_it_test.go b/config/multifiles_it_test.go index f10a945a1..25a0ea364 100644 --- a/config/multifiles_it_test.go +++ b/config/multifiles_it_test.go @@ -28,7 +28,6 @@ import ( var mfCgrCfg *CGRConfig func TestMfInitConfig(t *testing.T) { - var err error if mfCgrCfg, err = NewCGRConfigFromFolder("/usr/share/cgrates/conf/samples/multifiles"); err != nil { t.Fatal("Got config error: ", err.Error()) @@ -36,7 +35,6 @@ func TestMfInitConfig(t *testing.T) { } func TestMfGeneralItems(t *testing.T) { - if mfCgrCfg.DefaultReqType != utils.META_PSEUDOPREPAID { // Twice reconfigured t.Error("DefaultReqType: ", mfCgrCfg.DefaultReqType) } @@ -46,18 +44,17 @@ func TestMfGeneralItems(t *testing.T) { } func TestMfCdreDefaultInstance(t *testing.T) { - for _, prflName := range []string{"*default", "export1"} { if _, hasIt := mfCgrCfg.CdreProfiles[prflName]; !hasIt { t.Error("Cdre does not contain profile ", prflName) } } prfl := "*default" - if mfCgrCfg.CdreProfiles[prfl].CdrFormat != "csv" { - t.Error("Default instance has cdrFormat: ", mfCgrCfg.CdreProfiles[prfl].CdrFormat) + if mfCgrCfg.CdreProfiles[prfl].ExportFormat != utils.MetaFileCSV { + t.Error("Default instance has cdrFormat: ", mfCgrCfg.CdreProfiles[prfl].ExportFormat) } - if mfCgrCfg.CdreProfiles[prfl].DataUsageMultiplyFactor != 1024.0 { - t.Error("Default instance has cdrFormat: ", mfCgrCfg.CdreProfiles[prfl].DataUsageMultiplyFactor) + if mfCgrCfg.CdreProfiles[prfl].CostMultiplyFactor != 1024.0 { + t.Error("Default instance has cdrFormat: ", mfCgrCfg.CdreProfiles[prfl].CostMultiplyFactor) } if len(mfCgrCfg.CdreProfiles[prfl].HeaderFields) != 0 { t.Error("Default instance has number of header fields: ", len(mfCgrCfg.CdreProfiles[prfl].HeaderFields)) @@ -71,13 +68,12 @@ func TestMfCdreDefaultInstance(t *testing.T) { } func TestMfCdreExport1Instance(t *testing.T) { - prfl := "export1" - if mfCgrCfg.CdreProfiles[prfl].CdrFormat != "csv" { - t.Error("Export1 instance has cdrFormat: ", mfCgrCfg.CdreProfiles[prfl].CdrFormat) + if mfCgrCfg.CdreProfiles[prfl].ExportFormat != utils.MetaFileCSV { + t.Error("Export1 instance has cdrFormat: ", mfCgrCfg.CdreProfiles[prfl].ExportFormat) } - if mfCgrCfg.CdreProfiles[prfl].DataUsageMultiplyFactor != 1.0 { - t.Error("Export1 instance has DataUsageMultiplyFormat: ", mfCgrCfg.CdreProfiles[prfl].DataUsageMultiplyFactor) + if mfCgrCfg.CdreProfiles[prfl].CostMultiplyFactor != 1.0 { + t.Error("Export1 instance has DataUsageMultiplyFormat: ", mfCgrCfg.CdreProfiles[prfl].CostMultiplyFactor) } if len(mfCgrCfg.CdreProfiles[prfl].HeaderFields) != 2 { t.Error("Export1 instance has number of header fields: ", len(mfCgrCfg.CdreProfiles[prfl].HeaderFields)) diff --git a/data/conf/samples/apier/apier.json b/data/conf/samples/apier/apier.json index 4290c0ca3..51b00893c 100644 --- a/data/conf/samples/apier/apier.json +++ b/data/conf/samples/apier/apier.json @@ -57,7 +57,7 @@ "cdre": { "*default": { - "export_dir": "/tmp/cgrates/cdr/cdrexport/csv", // path where the exported CDRs will be placed + "export_path": "/tmp/cgrates/cdr/cdrexport/csv", // path where the exported CDRs will be placed } }, diff --git a/data/conf/samples/cdrsv2mysql/cdrsv2mysql.json b/data/conf/samples/cdrsv2mysql/cdrsv2mysql.json index 4f424a0f8..96f37ecf6 100644 --- a/data/conf/samples/cdrsv2mysql/cdrsv2mysql.json +++ b/data/conf/samples/cdrsv2mysql/cdrsv2mysql.json @@ -4,6 +4,11 @@ // Used in apier_local_tests // Starts rater, cdrs and mediator connecting over internal channel +"general": { + "log_level": 7, +}, + + "rals": { "enabled": true, // enable Rater service: }, diff --git a/data/conf/samples/multifiles/b/b.json b/data/conf/samples/multifiles/b/b.json index 84e72f697..d7f1e7003 100644 --- a/data/conf/samples/multifiles/b/b.json +++ b/data/conf/samples/multifiles/b/b.json @@ -9,8 +9,8 @@ "cdre": { "*default": { - "data_usage_multiply_factor": 1024, // multiply data usage before export (eg: convert from KBytes to Bytes) - "export_dir": "/tmp/cgrates/cdre", // path where the exported CDRs will be placed + "cost_multiply_factor": 1024, // multiply data usage before export (eg: convert from KBytes to Bytes) + "export_path": "/tmp/cgrates/cdre", // path where the exported CDRs will be placed }, "export1": { "header_fields": [ diff --git a/data/conf/samples/multiplecdrc/multiplecdrc_fwexport.json b/data/conf/samples/multiplecdrc/multiplecdrc_fwexport.json index a9b18ad40..d9e52f393 100644 --- a/data/conf/samples/multiplecdrc/multiplecdrc_fwexport.json +++ b/data/conf/samples/multiplecdrc/multiplecdrc_fwexport.json @@ -71,7 +71,7 @@ "cdre": { "CDRE-FW1": { - "cdr_format": "fwv", + "export_format": "*file_fwv", "field_separator": "", "header_fields": [ {"tag": "ToR", "type": "constant", "value": "10", "width": 2}, diff --git a/engine/cdrs.go b/engine/cdrs.go index 0a85f628b..70d2f97e9 100644 --- a/engine/cdrs.go +++ b/engine/cdrs.go @@ -194,9 +194,8 @@ func (self *CdrServer) processCdr(cdr *CDR) (err error) { if len(self.cgrCfg.CDRSOnlineCDRExports) != 0 { // Replicate raw CDR self.replicateCDRs([]*CDR{cdr}) } - if self.rals != nil && !cdr.Rated { // CDRs not rated will be processed by Rating - self.deriveRateStoreStatsReplicate(cdr, self.cgrCfg.CDRSStoreCdrs, self.stats != nil, len(self.cgrCfg.CDRSOnlineCDRExports) != 0) + go self.deriveRateStoreStatsReplicate(cdr, self.cgrCfg.CDRSStoreCdrs, self.stats != nil, len(self.cgrCfg.CDRSOnlineCDRExports) != 0) } return nil }