diff --git a/cdrc/cdrc.go b/cdrc/cdrc.go index 985878c54..cd0eb162b 100644 --- a/cdrc/cdrc.go +++ b/cdrc/cdrc.go @@ -107,7 +107,7 @@ type Cdrc struct { cdrSourceId string runDelay time.Duration csvSep rune - duMultiplyFactor int64 + duMultiplyFactor float64 cdrFields []*config.CfgCdrField httpSkipTlsCheck bool cdrServer *engine.CDRS // Reference towards internal cdrServer if that is the case @@ -160,7 +160,7 @@ func (self *Cdrc) recordToStoredCdr(record []string) (*utils.StoredCdr, error) { } storedCdr.CgrId = utils.Sha1(storedCdr.AccId, storedCdr.SetupTime.String()) if storedCdr.TOR == utils.DATA && self.duMultiplyFactor != 0 { - storedCdr.Usage = time.Duration(storedCdr.Usage.Nanoseconds() * self.duMultiplyFactor) + storedCdr.Usage = time.Duration(float64(storedCdr.Usage.Nanoseconds()) * self.duMultiplyFactor) } for _, httpFieldCfg := range lazyHttpFields { // Lazy process the http fields var outValByte []byte diff --git a/config/cdrcconfig.go b/config/cdrcconfig.go index 8a2fe7310..bec3d904a 100644 --- a/config/cdrcconfig.go +++ b/config/cdrcconfig.go @@ -90,7 +90,7 @@ func NewDefaultCdrcConfig() *CdrcConfig { CdrsAddress: "", CdrFormat: utils.CSV, FieldSeparator: utils.FIELDS_SEP, - DataUsageMultiplyFactor: 1, + DataUsageMultiplyFactor: 1.0, RunDelay: time.Duration(0), CdrInDir: "/var/log/cgrates/cdrc/in", CdrOutDir: "/var/log/cgrates/cdrc/out", @@ -116,8 +116,7 @@ func NewCdrcConfigFromFileParams(c *conf.ConfigFile) (*CdrcConfig, error) { cdrcCfg.FieldSeparator, _ = c.GetString("cdrc", "field_separator") } if hasOpt := c.HasOption("cdrc", "data_usage_multiply_factor"); hasOpt { - mf, _ := c.GetInt("cdrc", "data_usage_multiply_factor") - cdrcCfg.DataUsageMultiplyFactor = int64(mf) + cdrcCfg.DataUsageMultiplyFactor, _ = c.GetFloat64("cdrc", "data_usage_multiply_factor") } if hasOpt := c.HasOption("cdrc", "run_delay"); hasOpt { durStr, _ := c.GetString("cdrc", "run_delay") @@ -200,7 +199,7 @@ type CdrcConfig struct { CdrsAddress string // The address where CDRs can be reached CdrFormat string // The type of CDR file to process FieldSeparator string // The separator to use when reading csvs - DataUsageMultiplyFactor int64 // Conversion factor for data usage + DataUsageMultiplyFactor float64 // Conversion factor for data usage RunDelay time.Duration // Delay between runs, 0 for inotify driven requests CdrInDir string // Folder to process CDRs from CdrOutDir string // Folder to move processed CDRs to diff --git a/config/xmlcdrc_test.go b/config/xmlcdrc_test.go index 1fc3c270b..d34df847c 100644 --- a/config/xmlcdrc_test.go +++ b/config/xmlcdrc_test.go @@ -112,7 +112,7 @@ func TestGetCdrcCfgs(t *testing.T) { cdrsAddr := "internal" cdrFormat := "csv" fldSep := "," - dataUsageMultiplyFactor := int64(1024) + dataUsageMultiplyFactor := 1024.0 runDelay := int64(0) cdrInDir := "/var/log/cgrates/cdrc/in" cdrOutDir := "/var/log/cgrates/cdrc/out" diff --git a/config/xmlconfig.go b/config/xmlconfig.go index bc7ccd7e2..a6433068b 100644 --- a/config/xmlconfig.go +++ b/config/xmlconfig.go @@ -59,7 +59,7 @@ type CgrXmlCdrcCfg struct { CdrsAddress *string `xml:"cdrs_address"` // The address where CDRs can be reached CdrFormat *string `xml:"cdr_format"` // The type of CDR to process FieldSeparator *string `xml:"field_separator"` // The separator to use when reading csvs - DataUsageMultiplyFactor *int64 `xml:"data_usage_multiply_factor"` // Conversion factor for data usage + DataUsageMultiplyFactor *float64 `xml:"data_usage_multiply_factor"` // Conversion factor for data usage RunDelay *int64 `xml:"run_delay"` // Delay between runs CdrInDir *string `xml:"cdr_in_dir"` // Folder to process CDRs from CdrOutDir *string `xml:"cdr_out_dir"` // Folder to move processed CDRs to