Corelate CgrIds between FS answer_event and FsJsonCdr

This commit is contained in:
DanB
2014-04-09 12:23:56 +02:00
parent a7b71bae43
commit 9fcf43f8b4
4 changed files with 14 additions and 23 deletions

View File

@@ -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

View File

@@ -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()

View File

@@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>
*/
package engine
package charging_tests
import (
"testing"

View File

@@ -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) {