From 9fcf43f8b4e826fb390c7e2205e501fc21ac5f2c Mon Sep 17 00:00:00 2001 From: DanB Date: Wed, 9 Apr 2014 12:23:56 +0200 Subject: [PATCH] Corelate CgrIds between FS answer_event and FsJsonCdr --- cdrs/fscdr.go | 20 +++++++------------- cdrs/fscdr_test.go | 10 +++++----- charging_tests/ddazmbl1_test.go | 2 +- sessionmanager/fsevent.go | 5 +---- 4 files changed, 14 insertions(+), 23 deletions(-) diff --git a/cdrs/fscdr.go b/cdrs/fscdr.go index 82f342f91..9d3410938 100644 --- a/cdrs/fscdr.go +++ b/cdrs/fscdr.go @@ -43,10 +43,10 @@ const ( FS_UUID = "uuid" // -Unique ID for this call leg FS_CSTMID = "cgr_tenant" FS_CALL_DEST_NR = "dialed_extension" - FS_PARK_TIME = "start_epoch" - FS_SETUP_TIME = "start_epoch" - FS_ANSWER_TIME = "answer_epoch" - FS_HANGUP_TIME = "end_epoch" + FS_PARK_TIME = "start_uepoch" + FS_SETUP_TIME = "start_uepoch" + FS_ANSWER_TIME = "answer_uepoch" + FS_HANGUP_TIME = "end_uepoch" FS_DURATION = "billsec" FS_USERNAME = "user_name" FS_IP = "sip_local_network_addr" @@ -155,19 +155,13 @@ func (fsCdr FSCdr) searchExtraField(field string, body map[string]interface{}) ( } func (fsCdr FSCdr) GetSetupTime() (t time.Time, err error) { - at, err := strconv.ParseInt(fsCdr.vars[FS_SETUP_TIME], 0, 64) - t = time.Unix(at, 0) - return + return utils.ParseTimeDetectLayout(fsCdr.vars[FS_SETUP_TIME]) } func (fsCdr FSCdr) GetAnswerTime() (t time.Time, err error) { - at, err := strconv.ParseInt(fsCdr.vars[FS_ANSWER_TIME], 0, 64) - t = time.Unix(at, 0) - return + return utils.ParseTimeDetectLayout(fsCdr.vars[FS_ANSWER_TIME]) } func (fsCdr FSCdr) GetHangupTime() (t time.Time, err error) { - hupt, err := strconv.ParseInt(fsCdr.vars[FS_HANGUP_TIME], 0, 64) - t = time.Unix(hupt, 0) - return + return utils.ParseTimeDetectLayout(fsCdr.vars[FS_HANGUP_TIME]) } // Extracts duration as considered by the telecom switch diff --git a/cdrs/fscdr_test.go b/cdrs/fscdr_test.go index b640d97ba..165c4427d 100644 --- a/cdrs/fscdr_test.go +++ b/cdrs/fscdr_test.go @@ -78,17 +78,17 @@ func TestCDRFields(t *testing.T) { if fsCdr.GetReqType() != utils.RATED { t.Error("Error parsing cdr: ", fsCdr) } - expectedSTime, _ := time.Parse(time.RFC3339, "2013-08-04T09:50:54Z") + expectedSTime := time.Date(2013, 8, 4, 9, 50, 54, 385581000, time.UTC) if setupTime.UTC() != expectedSTime { - t.Error("Error parsing cdr: ", fsCdr) + t.Error("Error parsing setupTime: ", setupTime.UTC()) } answerTime, _ := fsCdr.GetAnswerTime() - expectedATime, _ := time.Parse(time.RFC3339, "2013-08-04T09:50:56Z") + expectedATime := time.Date(2013, 8, 4, 9, 50, 56, 285587000, time.UTC) if answerTime.UTC() != expectedATime { - t.Error("Error parsing cdr: ", fsCdr) + t.Error("Error parsing answerTime: ", answerTime.UTC()) } if fsCdr.GetDuration() != 4000000000 { - t.Error("Error parsing cdr: ", fsCdr) + t.Error("Error parsing duration: ", fsCdr.GetDuration()) } cfg.CDRSExtraFields = []*utils.RSRField{&utils.RSRField{Id: "sip_user_agent"}, &utils.RSRField{Id: "read_codec"}, &utils.RSRField{Id: "write_codec"}} extraFields := fsCdr.GetExtraFields() diff --git a/charging_tests/ddazmbl1_test.go b/charging_tests/ddazmbl1_test.go index 85c13696c..1cdb01492 100644 --- a/charging_tests/ddazmbl1_test.go +++ b/charging_tests/ddazmbl1_test.go @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see */ -package engine +package charging_tests import ( "testing" diff --git a/sessionmanager/fsevent.go b/sessionmanager/fsevent.go index dad7b98a3..95baddc51 100644 --- a/sessionmanager/fsevent.go +++ b/sessionmanager/fsevent.go @@ -23,7 +23,6 @@ import ( "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/utils" "github.com/cgrates/fsock" - "strconv" "strings" "time" ) @@ -166,9 +165,7 @@ func (fsev FSEvent) GetAnswerTime(fieldName string) (t time.Time, err error) { } func (fsev FSEvent) GetEndTime() (t time.Time, err error) { - st, err := strconv.ParseInt(fsev[END_TIME], 0, 64) - t = time.Unix(0, st*1000) - return + return utils.ParseTimeDetectLayout(fsev[END_TIME]) } func (fsev FSEvent) GetDuration(fieldName string) (dur time.Duration, err error) {