From 263311cab1918a62ec17b8574eeceb1dc97b80c9 Mon Sep 17 00:00:00 2001 From: DanB Date: Wed, 26 Aug 2015 14:52:09 +0200 Subject: [PATCH] DefaultTimezone configuration fix for cdrs_primary table --- config/config.go | 3 +++ engine/cdrs.go | 6 ++++++ engine/fscdr.go | 1 + general_tests/tutorial_fs_calls_test.go | 2 +- 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/config/config.go b/config/config.go index cbff2ce21..c66943a91 100644 --- a/config/config.go +++ b/config/config.go @@ -549,6 +549,9 @@ func (self *CGRConfig) loadFromJsonCfg(jsnCfg *CgrJsonCfg) error { if jsnGeneralCfg.Tpexport_dir != nil { self.TpExportPath = *jsnGeneralCfg.Tpexport_dir } + if jsnGeneralCfg.Default_timezone != nil { + self.DefaultTimezone = *jsnGeneralCfg.Default_timezone + } } if jsnListenCfg != nil { diff --git a/engine/cdrs.go b/engine/cdrs.go index 1dc7e90f0..7f5b91d8f 100644 --- a/engine/cdrs.go +++ b/engine/cdrs.go @@ -148,6 +148,7 @@ func (self *CdrServer) RateCdrs(cgrIds, runIds, tors, cdrHosts, cdrSources, reqT // Returns error if not able to properly store the CDR, mediation is async since we can always recover offline func (self *CdrServer) processCdr(storedCdr *StoredCdr) (err error) { + Logger.Debug(fmt.Sprintf("***processCdr: %+v", storedCdr)) if storedCdr.Direction == "" { storedCdr.Direction = utils.OUT } @@ -177,6 +178,7 @@ func (self *CdrServer) processCdr(storedCdr *StoredCdr) (err error) { if err := self.cdrDb.SetCdr(storedCdr); err != nil { // Only original CDR stored in primary table, no derived Logger.Err(fmt.Sprintf(" Storing primary CDR %+v, got error: %s", storedCdr, err.Error())) } + Logger.Debug(fmt.Sprintf("***Have set primary CDR to: %+v", storedCdr)) } go self.deriveRateStoreStatsReplicate(storedCdr) return nil @@ -184,23 +186,27 @@ func (self *CdrServer) processCdr(storedCdr *StoredCdr) (err error) { // Returns error if not able to properly store the CDR, mediation is async since we can always recover offline func (self *CdrServer) deriveRateStoreStatsReplicate(storedCdr *StoredCdr) error { + Logger.Debug(fmt.Sprintf("***deriveRateStoreStatsReplicate storedCdr: %+v", storedCdr)) cdrRuns, err := self.deriveCdrs(storedCdr) if err != nil { return err } for _, cdr := range cdrRuns { // Rate CDR + Logger.Debug(fmt.Sprintf("***deriveRateStoreStatsReplicate cdr in runs: %+v", cdr)) if self.rater != nil && !cdr.Rated { if err := self.rateCDR(cdr); err != nil { cdr.Cost = -1.0 // If there was an error, mark the CDR cdr.ExtraInfo = err.Error() } } + Logger.Debug(fmt.Sprintf("***deriveRateStoreStatsReplicate after rating cdr is: %+v", cdr)) if self.cgrCfg.CDRSStoreCdrs { // Store CDRs // Store RatedCDR if err := self.cdrDb.SetRatedCdr(cdr); err != nil { Logger.Err(fmt.Sprintf(" Storing rated CDR %+v, got error: %s", cdr, err.Error())) } + Logger.Debug(fmt.Sprintf("***deriveRateStoreStatsReplicate stored cdr is: %+v", cdr)) // Store CostDetails if cdr.Rated || utils.IsSliceMember([]string{utils.RATED, utils.META_RATED}, cdr.ReqType) { // Account related CDRs are saved automatically, so save the others here if requested if err := self.cdrDb.LogCallCost(cdr.CgrId, utils.CDRS_SOURCE, cdr.MediationRunId, cdr.CostDetails); err != nil { diff --git a/engine/fscdr.go b/engine/fscdr.go index 5f857d54f..459122a88 100644 --- a/engine/fscdr.go +++ b/engine/fscdr.go @@ -142,5 +142,6 @@ func (fsCdr FSCdr) AsStoredCdr(timezone string) *StoredCdr { storCdr.DisconnectCause = utils.FirstNonEmpty(fsCdr.vars[utils.CGR_DISCONNECT_CAUSE], fsCdr.vars["hangup_cause"]) storCdr.ExtraFields = fsCdr.getExtraFields() storCdr.Cost = -1 + Logger.Debug(fmt.Sprintf("***FSCdr.AsStoredCDR, original answer time: %s, timezone: %s, returning storCdr: %+v", fsCdr.vars[FS_ANSWER_TIME], timezone, storCdr)) return storCdr } diff --git a/general_tests/tutorial_fs_calls_test.go b/general_tests/tutorial_fs_calls_test.go index 6ae5fa55f..b8d7458f7 100644 --- a/general_tests/tutorial_fs_calls_test.go +++ b/general_tests/tutorial_fs_calls_test.go @@ -506,7 +506,7 @@ func TestTutFsCalls1006Cdrs(t *testing.T) { if reply[0].Destination != "1002" { t.Errorf("Unexpected Destination for CDR: %+v", reply[0]) } - if reply[0].Usage != "64" && reply[0].Usage != "65" { // Usage as seconds + if reply[0].Usage != "63" && reply[0].Usage != "64" && reply[0].Usage != "65" { // Usage as seconds t.Errorf("Unexpected Usage for CDR: %+v", reply[0]) } if reply[0].Cost == -1.0 { // Cost was not calculated