mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-21 15:18:44 +05:00
Merge branch 'master' into hapool
This commit is contained in:
@@ -182,7 +182,7 @@ func (fsev FSEvent) MissingParameter(timezone string) bool {
|
||||
func (fsev FSEvent) GetSetupTime(fieldName, timezone string) (t time.Time, err error) {
|
||||
fsSTimeStr, hasKey := fsev[SETUP_TIME]
|
||||
if hasKey && fsSTimeStr != "0" {
|
||||
// Discard the nanoseconds information since MySQL cannot store them in early versions and csv uses default seconds so cgrid will not corelate
|
||||
// Discard the nanoseconds information since MySQL cannot store them in early versions and csv uses default seconds so CGRID will not corelate
|
||||
fsSTimeStr = fsSTimeStr[:len(fsSTimeStr)-6]
|
||||
}
|
||||
sTimeStr := utils.FirstNonEmpty(fsev[fieldName], fsSTimeStr)
|
||||
@@ -194,7 +194,7 @@ func (fsev FSEvent) GetSetupTime(fieldName, timezone string) (t time.Time, err e
|
||||
func (fsev FSEvent) GetAnswerTime(fieldName, timezone string) (t time.Time, err error) {
|
||||
fsATimeStr, hasKey := fsev[ANSWER_TIME]
|
||||
if hasKey && fsATimeStr != "0" {
|
||||
// Discard the nanoseconds information since MySQL cannot store them in early versions and csv uses default seconds so cgrid will not corelate
|
||||
// Discard the nanoseconds information since MySQL cannot store them in early versions and csv uses default seconds so CGRID will not corelate
|
||||
fsATimeStr = fsATimeStr[:len(fsATimeStr)-6]
|
||||
}
|
||||
aTimeStr := utils.FirstNonEmpty(fsev[fieldName], fsATimeStr)
|
||||
@@ -217,18 +217,18 @@ func (fsev FSEvent) GetDuration(fieldName string) (time.Duration, error) {
|
||||
}
|
||||
|
||||
func (fsev FSEvent) GetPdd(fieldName string) (time.Duration, error) {
|
||||
var pddStr string
|
||||
var PDDStr string
|
||||
if utils.IsSliceMember([]string{utils.PDD, utils.META_DEFAULT}, fieldName) {
|
||||
pddStr = utils.FirstNonEmpty(fsev[PDD_MEDIA_MS], fsev[PDD_NOMEDIA_MS])
|
||||
if len(pddStr) != 0 {
|
||||
pddStr = pddStr + "ms" // PDD is in milliseconds and CGR expects it in seconds
|
||||
PDDStr = utils.FirstNonEmpty(fsev[PDD_MEDIA_MS], fsev[PDD_NOMEDIA_MS])
|
||||
if len(PDDStr) != 0 {
|
||||
PDDStr = PDDStr + "ms" // PDD is in milliseconds and CGR expects it in seconds
|
||||
}
|
||||
} else if strings.HasPrefix(fieldName, utils.STATIC_VALUE_PREFIX) { // Static value
|
||||
pddStr = fieldName[len(utils.STATIC_VALUE_PREFIX):]
|
||||
PDDStr = fieldName[len(utils.STATIC_VALUE_PREFIX):]
|
||||
} else {
|
||||
pddStr = fsev[fieldName]
|
||||
PDDStr = fsev[fieldName]
|
||||
}
|
||||
return utils.ParseDurationWithSecs(pddStr)
|
||||
return utils.ParseDurationWithSecs(PDDStr)
|
||||
}
|
||||
|
||||
func (fsev FSEvent) GetSupplier(fieldName string) string {
|
||||
@@ -297,8 +297,8 @@ func (fsev FSEvent) ParseEventValue(rsrFld *utils.RSRField, timezone string) str
|
||||
dur, _ := fsev.GetDuration("")
|
||||
return rsrFld.ParseValue(strconv.FormatInt(dur.Nanoseconds(), 10))
|
||||
case utils.PDD:
|
||||
pdd, _ := fsev.GetPdd(utils.META_DEFAULT)
|
||||
return rsrFld.ParseValue(strconv.FormatFloat(pdd.Seconds(), 'f', -1, 64))
|
||||
PDD, _ := fsev.GetPdd(utils.META_DEFAULT)
|
||||
return rsrFld.ParseValue(strconv.FormatFloat(PDD.Seconds(), 'f', -1, 64))
|
||||
case utils.SUPPLIER:
|
||||
return rsrFld.ParseValue(fsev.GetSupplier(""))
|
||||
case utils.DISCONNECT_CAUSE:
|
||||
@@ -337,14 +337,14 @@ func (fsev FSEvent) PassesFieldFilter(fieldFilter *utils.RSRField) (bool, string
|
||||
return false, ""
|
||||
}
|
||||
|
||||
func (fsev FSEvent) AsStoredCdr(timezone string) *engine.StoredCdr {
|
||||
storCdr := new(engine.StoredCdr)
|
||||
storCdr.CgrId = fsev.GetCgrId(timezone)
|
||||
storCdr.TOR = utils.VOICE
|
||||
storCdr.AccId = fsev.GetUUID()
|
||||
storCdr.CdrHost = fsev.GetOriginatorIP(utils.META_DEFAULT)
|
||||
storCdr.CdrSource = "FS_" + fsev.GetName()
|
||||
storCdr.ReqType = fsev.GetReqType(utils.META_DEFAULT)
|
||||
func (fsev FSEvent) AsStoredCdr(timezone string) *engine.CDR {
|
||||
storCdr := new(engine.CDR)
|
||||
storCdr.CGRID = fsev.GetCgrId(timezone)
|
||||
storCdr.ToR = utils.VOICE
|
||||
storCdr.OriginID = fsev.GetUUID()
|
||||
storCdr.OriginHost = fsev.GetOriginatorIP(utils.META_DEFAULT)
|
||||
storCdr.Source = "FS_" + fsev.GetName()
|
||||
storCdr.RequestType = fsev.GetReqType(utils.META_DEFAULT)
|
||||
storCdr.Direction = fsev.GetDirection(utils.META_DEFAULT)
|
||||
storCdr.Tenant = fsev.GetTenant(utils.META_DEFAULT)
|
||||
storCdr.Category = fsev.GetCategory(utils.META_DEFAULT)
|
||||
@@ -354,7 +354,7 @@ func (fsev FSEvent) AsStoredCdr(timezone string) *engine.StoredCdr {
|
||||
storCdr.SetupTime, _ = fsev.GetSetupTime(utils.META_DEFAULT, timezone)
|
||||
storCdr.AnswerTime, _ = fsev.GetAnswerTime(utils.META_DEFAULT, timezone)
|
||||
storCdr.Usage, _ = fsev.GetDuration(utils.META_DEFAULT)
|
||||
storCdr.Pdd, _ = fsev.GetPdd(utils.META_DEFAULT)
|
||||
storCdr.PDD, _ = fsev.GetPdd(utils.META_DEFAULT)
|
||||
storCdr.ExtraFields = fsev.GetExtraFields()
|
||||
storCdr.Cost = -1
|
||||
storCdr.Supplier = fsev.GetSupplier(utils.META_DEFAULT)
|
||||
|
||||
@@ -633,11 +633,12 @@ func TestFsEvAsStoredCdr(t *testing.T) {
|
||||
ev := new(FSEvent).AsEvent(hangupEv)
|
||||
setupTime, _ := utils.ParseTimeDetectLayout("1436280728", "")
|
||||
aTime, _ := utils.ParseTimeDetectLayout("1436280728", "")
|
||||
eStoredCdr := &engine.StoredCdr{CgrId: "164b0422fdc6a5117031b427439482c6a4f90e41",
|
||||
TOR: utils.VOICE, AccId: "e3133bf7-dcde-4daf-9663-9a79ffcef5ad", CdrHost: "10.0.3.15", CdrSource: "FS_CHANNEL_HANGUP_COMPLETE", ReqType: utils.META_PREPAID,
|
||||
eStoredCdr := &engine.CDR{CGRID: "164b0422fdc6a5117031b427439482c6a4f90e41",
|
||||
ToR: utils.VOICE, OriginID: "e3133bf7-dcde-4daf-9663-9a79ffcef5ad", OriginHost: "10.0.3.15", Source: "FS_CHANNEL_HANGUP_COMPLETE", RequestType: utils.META_PREPAID,
|
||||
Direction: utils.OUT, Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001",
|
||||
Destination: "1003", SetupTime: setupTime, AnswerTime: aTime,
|
||||
Usage: time.Duration(66) * time.Second, Pdd: time.Duration(28) * time.Millisecond, Supplier: "supplier1", DisconnectCause: "NORMAL_CLEARING", ExtraFields: make(map[string]string), Cost: -1}
|
||||
Usage: time.Duration(66) * time.Second, PDD: time.Duration(28) * time.Millisecond, Supplier: "supplier1",
|
||||
DisconnectCause: "NORMAL_CLEARING", ExtraFields: make(map[string]string), Cost: -1}
|
||||
if storedCdr := ev.AsStoredCdr(""); !reflect.DeepEqual(eStoredCdr, storedCdr) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", eStoredCdr, storedCdr)
|
||||
}
|
||||
|
||||
@@ -296,10 +296,10 @@ func (sm *FSSessionManager) DisconnectSession(ev engine.Event, connId, notify st
|
||||
return nil
|
||||
}
|
||||
|
||||
func (sm *FSSessionManager) ProcessCdr(storedCdr *engine.StoredCdr) error {
|
||||
func (sm *FSSessionManager) ProcessCdr(storedCdr *engine.CDR) error {
|
||||
var reply string
|
||||
if err := sm.cdrsrv.Call("CdrServer.ProcessCdr", storedCdr, &reply); err != nil {
|
||||
utils.Logger.Err(fmt.Sprintf("<SM-FreeSWITCH> Failed processing CDR, cgrid: %s, accid: %s, error: <%s>", storedCdr.CgrId, storedCdr.AccId, err.Error()))
|
||||
utils.Logger.Err(fmt.Sprintf("<SM-FreeSWITCH> Failed processing CDR, cgrid: %s, accid: %s, error: <%s>", storedCdr.CGRID, storedCdr.OriginID, err.Error()))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -205,13 +205,13 @@ func (self *KamailioSessionManager) Rater() rpcclient.RpcClientConnection {
|
||||
return self.rater
|
||||
}
|
||||
|
||||
func (self *KamailioSessionManager) ProcessCdr(cdr *engine.StoredCdr) error {
|
||||
func (self *KamailioSessionManager) ProcessCdr(cdr *engine.CDR) error {
|
||||
if !self.cfg.CreateCdr {
|
||||
return nil
|
||||
}
|
||||
var reply string
|
||||
if err := self.cdrsrv.Call("CdrServer.ProcessCdr", cdr, &reply); err != nil {
|
||||
utils.Logger.Err(fmt.Sprintf("<SM-Kamailio> Failed processing CDR, cgrid: %s, accid: %s, error: <%s>", cdr.CgrId, cdr.AccId, err.Error()))
|
||||
utils.Logger.Err(fmt.Sprintf("<SM-Kamailio> Failed processing CDR, cgrid: %s, accid: %s, error: <%s>", cdr.CGRID, cdr.OriginID, err.Error()))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -316,14 +316,14 @@ func (kev KamEvent) PassesFieldFilter(*utils.RSRField) (bool, string) {
|
||||
return false, ""
|
||||
}
|
||||
|
||||
func (kev KamEvent) AsStoredCdr(timezone string) *engine.StoredCdr {
|
||||
storCdr := new(engine.StoredCdr)
|
||||
storCdr.CgrId = kev.GetCgrId(timezone)
|
||||
storCdr.TOR = utils.VOICE
|
||||
storCdr.AccId = kev.GetUUID()
|
||||
storCdr.CdrHost = kev.GetOriginatorIP(utils.META_DEFAULT)
|
||||
storCdr.CdrSource = kev.GetCdrSource()
|
||||
storCdr.ReqType = kev.GetReqType(utils.META_DEFAULT)
|
||||
func (kev KamEvent) AsStoredCdr(timezone string) *engine.CDR {
|
||||
storCdr := new(engine.CDR)
|
||||
storCdr.CGRID = kev.GetCgrId(timezone)
|
||||
storCdr.ToR = utils.VOICE
|
||||
storCdr.OriginID = kev.GetUUID()
|
||||
storCdr.OriginHost = kev.GetOriginatorIP(utils.META_DEFAULT)
|
||||
storCdr.Source = kev.GetCdrSource()
|
||||
storCdr.RequestType = kev.GetReqType(utils.META_DEFAULT)
|
||||
storCdr.Direction = kev.GetDirection(utils.META_DEFAULT)
|
||||
storCdr.Tenant = kev.GetTenant(utils.META_DEFAULT)
|
||||
storCdr.Category = kev.GetCategory(utils.META_DEFAULT)
|
||||
@@ -333,7 +333,7 @@ func (kev KamEvent) AsStoredCdr(timezone string) *engine.StoredCdr {
|
||||
storCdr.SetupTime, _ = kev.GetSetupTime(utils.META_DEFAULT, timezone)
|
||||
storCdr.AnswerTime, _ = kev.GetAnswerTime(utils.META_DEFAULT, timezone)
|
||||
storCdr.Usage, _ = kev.GetDuration(utils.META_DEFAULT)
|
||||
storCdr.Pdd, _ = kev.GetPdd(utils.META_DEFAULT)
|
||||
storCdr.PDD, _ = kev.GetPdd(utils.META_DEFAULT)
|
||||
storCdr.Supplier = kev.GetSupplier(utils.META_DEFAULT)
|
||||
storCdr.DisconnectCause = kev.GetDisconnectCause(utils.META_DEFAULT)
|
||||
storCdr.ExtraFields = kev.GetExtraFields()
|
||||
|
||||
@@ -264,14 +264,14 @@ func (osipsev *OsipsEvent) DialogId() string {
|
||||
return osipsev.osipsEvent.AttrValues[OSIPS_DIALOG_ID]
|
||||
}
|
||||
|
||||
func (osipsEv *OsipsEvent) AsStoredCdr(timezone string) *engine.StoredCdr {
|
||||
storCdr := new(engine.StoredCdr)
|
||||
storCdr.CgrId = osipsEv.GetCgrId(timezone)
|
||||
storCdr.TOR = utils.VOICE
|
||||
storCdr.AccId = osipsEv.GetUUID()
|
||||
storCdr.CdrHost = osipsEv.GetOriginatorIP(utils.META_DEFAULT)
|
||||
storCdr.CdrSource = "OSIPS_" + osipsEv.GetName()
|
||||
storCdr.ReqType = osipsEv.GetReqType(utils.META_DEFAULT)
|
||||
func (osipsEv *OsipsEvent) AsStoredCdr(timezone string) *engine.CDR {
|
||||
storCdr := new(engine.CDR)
|
||||
storCdr.CGRID = osipsEv.GetCgrId(timezone)
|
||||
storCdr.ToR = utils.VOICE
|
||||
storCdr.OriginID = osipsEv.GetUUID()
|
||||
storCdr.OriginHost = osipsEv.GetOriginatorIP(utils.META_DEFAULT)
|
||||
storCdr.Source = "OSIPS_" + osipsEv.GetName()
|
||||
storCdr.RequestType = osipsEv.GetReqType(utils.META_DEFAULT)
|
||||
storCdr.Direction = osipsEv.GetDirection(utils.META_DEFAULT)
|
||||
storCdr.Tenant = osipsEv.GetTenant(utils.META_DEFAULT)
|
||||
storCdr.Category = osipsEv.GetCategory(utils.META_DEFAULT)
|
||||
@@ -281,7 +281,7 @@ func (osipsEv *OsipsEvent) AsStoredCdr(timezone string) *engine.StoredCdr {
|
||||
storCdr.SetupTime, _ = osipsEv.GetSetupTime(utils.META_DEFAULT, timezone)
|
||||
storCdr.AnswerTime, _ = osipsEv.GetAnswerTime(utils.META_DEFAULT, timezone)
|
||||
storCdr.Usage, _ = osipsEv.GetDuration(utils.META_DEFAULT)
|
||||
storCdr.Pdd, _ = osipsEv.GetPdd(utils.META_DEFAULT)
|
||||
storCdr.PDD, _ = osipsEv.GetPdd(utils.META_DEFAULT)
|
||||
storCdr.Supplier = osipsEv.GetSupplier(utils.META_DEFAULT)
|
||||
storCdr.DisconnectCause = osipsEv.GetDisconnectCause(utils.META_DEFAULT)
|
||||
storCdr.ExtraFields = osipsEv.GetExtraFields()
|
||||
|
||||
@@ -44,7 +44,7 @@ func TestOsipsEventParseStatic(t *testing.T) {
|
||||
setupTime, _ := osipsEv.GetSetupTime("^2013-12-07 08:42:24", "")
|
||||
answerTime, _ := osipsEv.GetAnswerTime("^2013-12-07 08:42:24", "")
|
||||
dur, _ := osipsEv.GetDuration("^60s")
|
||||
pdd, _ := osipsEv.GetPdd("^10s")
|
||||
PDD, _ := osipsEv.GetPdd("^10s")
|
||||
if osipsEv.GetReqType("^test") != "test" ||
|
||||
osipsEv.GetDirection("^test") != "test" ||
|
||||
osipsEv.GetTenant("^test") != "test" ||
|
||||
@@ -55,7 +55,7 @@ func TestOsipsEventParseStatic(t *testing.T) {
|
||||
setupTime != time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC) ||
|
||||
answerTime != time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC) ||
|
||||
dur != time.Duration(60)*time.Second ||
|
||||
pdd != time.Duration(10)*time.Second ||
|
||||
PDD != time.Duration(10)*time.Second ||
|
||||
osipsEv.GetSupplier("^test") != "test" ||
|
||||
osipsEv.GetDisconnectCause("^test") != "test" {
|
||||
t.Error("Values out of static not matching",
|
||||
@@ -69,7 +69,7 @@ func TestOsipsEventParseStatic(t *testing.T) {
|
||||
setupTime != time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC),
|
||||
answerTime != time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC),
|
||||
dur != time.Duration(60)*time.Second,
|
||||
pdd != time.Duration(10)*time.Second,
|
||||
PDD != time.Duration(10)*time.Second,
|
||||
osipsEv.GetSupplier("^test") != "test",
|
||||
osipsEv.GetDisconnectCause("^test") != "test")
|
||||
}
|
||||
@@ -83,7 +83,7 @@ func TestOsipsEventGetValues(t *testing.T) {
|
||||
answerTime, _ := osipsEv.GetAnswerTime(utils.META_DEFAULT, "")
|
||||
eAnswerTime, _ := utils.ParseTimeDetectLayout("1406370499", "")
|
||||
dur, _ := osipsEv.GetDuration(utils.META_DEFAULT)
|
||||
pdd, _ := osipsEv.GetPdd(utils.META_DEFAULT)
|
||||
PDD, _ := osipsEv.GetPdd(utils.META_DEFAULT)
|
||||
endTime, _ := osipsEv.GetEndTime(utils.META_DEFAULT, "")
|
||||
if osipsEv.GetName() != "E_ACC_CDR" ||
|
||||
osipsEv.GetCgrId("") != utils.Sha1("ODVkMDI2Mzc2MDY5N2EzODhjNTAzNTdlODhiZjRlYWQ", setupTime.UTC().String()) ||
|
||||
@@ -100,7 +100,7 @@ func TestOsipsEventGetValues(t *testing.T) {
|
||||
!answerTime.Equal(eAnswerTime) ||
|
||||
!endTime.Equal(eAnswerTime.Add(dur)) ||
|
||||
dur != time.Duration(20*time.Second) ||
|
||||
pdd != time.Duration(3)*time.Second ||
|
||||
PDD != time.Duration(3)*time.Second ||
|
||||
osipsEv.GetSupplier(utils.META_DEFAULT) != "supplier3" ||
|
||||
osipsEv.GetDisconnectCause(utils.META_DEFAULT) != "200" ||
|
||||
osipsEv.GetOriginatorIP(utils.META_DEFAULT) != "172.16.254.77" {
|
||||
@@ -119,7 +119,7 @@ func TestOsipsEventGetValues(t *testing.T) {
|
||||
!answerTime.Equal(time.Date(2014, 7, 26, 12, 28, 19, 0, time.Local)),
|
||||
!endTime.Equal(time.Date(2014, 7, 26, 12, 28, 39, 0, time.Local)),
|
||||
dur != time.Duration(20*time.Second),
|
||||
pdd != time.Duration(3)*time.Second,
|
||||
PDD != time.Duration(3)*time.Second,
|
||||
osipsEv.GetSupplier(utils.META_DEFAULT) != "supplier3",
|
||||
osipsEv.GetDisconnectCause(utils.META_DEFAULT) != "200",
|
||||
osipsEv.GetOriginatorIP(utils.META_DEFAULT) != "172.16.254.77",
|
||||
@@ -143,12 +143,12 @@ func TestOsipsEventMissingParameter(t *testing.T) {
|
||||
func TestOsipsEventAsStoredCdr(t *testing.T) {
|
||||
setupTime, _ := utils.ParseTimeDetectLayout("1406370492", "")
|
||||
answerTime, _ := utils.ParseTimeDetectLayout("1406370499", "")
|
||||
eStoredCdr := &engine.StoredCdr{CgrId: utils.Sha1("ODVkMDI2Mzc2MDY5N2EzODhjNTAzNTdlODhiZjRlYWQ", setupTime.UTC().String()),
|
||||
TOR: utils.VOICE, AccId: "ODVkMDI2Mzc2MDY5N2EzODhjNTAzNTdlODhiZjRlYWQ", CdrHost: "172.16.254.77", CdrSource: "OSIPS_E_ACC_CDR",
|
||||
ReqType: utils.META_PREPAID,
|
||||
Direction: utils.OUT, Tenant: "itsyscom.com", Category: "call", Account: "dan", Subject: "dan",
|
||||
eStoredCdr := &engine.CDR{CGRID: utils.Sha1("ODVkMDI2Mzc2MDY5N2EzODhjNTAzNTdlODhiZjRlYWQ", setupTime.UTC().String()),
|
||||
ToR: utils.VOICE, OriginID: "ODVkMDI2Mzc2MDY5N2EzODhjNTAzNTdlODhiZjRlYWQ", OriginHost: "172.16.254.77", Source: "OSIPS_E_ACC_CDR",
|
||||
RequestType: utils.META_PREPAID,
|
||||
Direction: utils.OUT, Tenant: "itsyscom.com", Category: "call", Account: "dan", Subject: "dan",
|
||||
Destination: "+4986517174963", SetupTime: setupTime, AnswerTime: answerTime,
|
||||
Usage: time.Duration(20) * time.Second, Pdd: time.Duration(3) * time.Second, Supplier: "supplier3", DisconnectCause: "200", ExtraFields: map[string]string{"extra1": "val1", "extra2": "val2"}, Cost: -1}
|
||||
Usage: time.Duration(20) * time.Second, PDD: time.Duration(3) * time.Second, Supplier: "supplier3", DisconnectCause: "200", ExtraFields: map[string]string{"extra1": "val1", "extra2": "val2"}, Cost: -1}
|
||||
if storedCdr := osipsEv.AsStoredCdr(""); !reflect.DeepEqual(eStoredCdr, storedCdr) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", eStoredCdr, storedCdr)
|
||||
}
|
||||
@@ -162,9 +162,9 @@ func TestOsipsAccMissedToStoredCdr(t *testing.T) {
|
||||
"cgr_account": "1001", "cgr_destination": "1002", utils.CGR_SUPPLIER: "supplier1",
|
||||
"duration": "", "dialog_id": "3547:277000822", "extra1": "val1", "extra2": "val2"}, OriginatorAddress: addr,
|
||||
}}
|
||||
eStoredCdr := &engine.StoredCdr{CgrId: utils.Sha1("27b1e6679ad0109b5d756e42bb4c9c28@0:0:0:0:0:0:0:0", setupTime.UTC().String()),
|
||||
TOR: utils.VOICE, AccId: "27b1e6679ad0109b5d756e42bb4c9c28@0:0:0:0:0:0:0:0", CdrHost: "172.16.254.77", CdrSource: "OSIPS_E_ACC_MISSED_EVENT",
|
||||
ReqType: utils.META_PSEUDOPREPAID, Direction: utils.OUT, Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Supplier: "supplier1",
|
||||
eStoredCdr := &engine.CDR{CGRID: utils.Sha1("27b1e6679ad0109b5d756e42bb4c9c28@0:0:0:0:0:0:0:0", setupTime.UTC().String()),
|
||||
ToR: utils.VOICE, OriginID: "27b1e6679ad0109b5d756e42bb4c9c28@0:0:0:0:0:0:0:0", OriginHost: "172.16.254.77", Source: "OSIPS_E_ACC_MISSED_EVENT",
|
||||
RequestType: utils.META_PSEUDOPREPAID, Direction: utils.OUT, Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Supplier: "supplier1",
|
||||
DisconnectCause: "404", Destination: "1002", SetupTime: setupTime, AnswerTime: setupTime,
|
||||
Usage: time.Duration(0), ExtraFields: map[string]string{"extra1": "val1", "extra2": "val2"}, Cost: -1}
|
||||
if storedCdr := osipsEv.AsStoredCdr(""); !reflect.DeepEqual(eStoredCdr, storedCdr) {
|
||||
|
||||
@@ -151,7 +151,7 @@ func (osm *OsipsSessionManager) Shutdown() error {
|
||||
}
|
||||
|
||||
// Process the CDR with CDRS component
|
||||
func (osm *OsipsSessionManager) ProcessCdr(storedCdr *engine.StoredCdr) error {
|
||||
func (osm *OsipsSessionManager) ProcessCdr(storedCdr *engine.CDR) error {
|
||||
var reply string
|
||||
return osm.cdrsrv.Call("CdrServer.ProcessCdr", storedCdr, &reply)
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ type Session struct {
|
||||
|
||||
func (s *Session) GetSessionRun(runid string) *engine.SessionRun {
|
||||
for _, sr := range s.sessionRuns {
|
||||
if sr.DerivedCharger.RunId == runid {
|
||||
if sr.DerivedCharger.RunID == runid {
|
||||
return sr
|
||||
}
|
||||
}
|
||||
@@ -237,7 +237,7 @@ func (s *Session) SaveOperations() {
|
||||
err := s.sessionManager.CdrSrv().Call("CdrServer.LogCallCost", &engine.CallCostLog{
|
||||
CgrId: s.eventStart.GetCgrId(s.sessionManager.Timezone()),
|
||||
Source: utils.SESSION_MANAGER_SOURCE,
|
||||
RunId: sr.DerivedCharger.RunId,
|
||||
RunId: sr.DerivedCharger.RunID,
|
||||
CallCost: firstCC,
|
||||
CheckDuplicate: true,
|
||||
}, &reply)
|
||||
@@ -283,7 +283,7 @@ func (s *Session) AsActiveSessions() []*ActiveSession {
|
||||
SMId: "UNKNOWN",
|
||||
}
|
||||
if sessionRun.DerivedCharger != nil {
|
||||
aSession.RunId = sessionRun.DerivedCharger.RunId
|
||||
aSession.RunId = sessionRun.DerivedCharger.RunID
|
||||
}
|
||||
if sessionRun.CallDescriptor != nil {
|
||||
aSession.LoopIndex = sessionRun.CallDescriptor.LoopIndex
|
||||
|
||||
@@ -299,14 +299,14 @@ func (self SMGenericEvent) PassesFieldFilter(*utils.RSRField) (bool, string) {
|
||||
return true, ""
|
||||
}
|
||||
|
||||
func (self SMGenericEvent) AsStoredCdr(cfg *config.CGRConfig, timezone string) *engine.StoredCdr {
|
||||
storCdr := engine.NewStoredCdrWithDefaults(cfg)
|
||||
storCdr.CgrId = self.GetCgrId(timezone)
|
||||
storCdr.TOR = utils.FirstNonEmpty(self.GetTOR(utils.META_DEFAULT), storCdr.TOR) // Keep default if none in the event
|
||||
storCdr.AccId = self.GetUUID()
|
||||
storCdr.CdrHost = self.GetOriginatorIP(utils.META_DEFAULT)
|
||||
storCdr.CdrSource = self.GetCdrSource()
|
||||
storCdr.ReqType = utils.FirstNonEmpty(self.GetReqType(utils.META_DEFAULT), storCdr.ReqType)
|
||||
func (self SMGenericEvent) AsStoredCdr(cfg *config.CGRConfig, timezone string) *engine.CDR {
|
||||
storCdr := engine.NewCDRWithDefaults(cfg)
|
||||
storCdr.CGRID = self.GetCgrId(timezone)
|
||||
storCdr.ToR = utils.FirstNonEmpty(self.GetTOR(utils.META_DEFAULT), storCdr.ToR) // Keep default if none in the event
|
||||
storCdr.OriginID = self.GetUUID()
|
||||
storCdr.OriginHost = self.GetOriginatorIP(utils.META_DEFAULT)
|
||||
storCdr.Source = self.GetCdrSource()
|
||||
storCdr.RequestType = utils.FirstNonEmpty(self.GetReqType(utils.META_DEFAULT), storCdr.RequestType)
|
||||
storCdr.Direction = utils.FirstNonEmpty(self.GetDirection(utils.META_DEFAULT), storCdr.Direction)
|
||||
storCdr.Tenant = utils.FirstNonEmpty(self.GetTenant(utils.META_DEFAULT), storCdr.Tenant)
|
||||
storCdr.Category = utils.FirstNonEmpty(self.GetCategory(utils.META_DEFAULT), storCdr.Category)
|
||||
@@ -316,7 +316,7 @@ func (self SMGenericEvent) AsStoredCdr(cfg *config.CGRConfig, timezone string) *
|
||||
storCdr.SetupTime, _ = self.GetSetupTime(utils.META_DEFAULT, timezone)
|
||||
storCdr.AnswerTime, _ = self.GetAnswerTime(utils.META_DEFAULT, timezone)
|
||||
storCdr.Usage, _ = self.GetUsage(utils.META_DEFAULT)
|
||||
storCdr.Pdd, _ = self.GetPdd(utils.META_DEFAULT)
|
||||
storCdr.PDD, _ = self.GetPdd(utils.META_DEFAULT)
|
||||
storCdr.Supplier = self.GetSupplier(utils.META_DEFAULT)
|
||||
storCdr.DisconnectCause = self.GetDisconnectCause(utils.META_DEFAULT)
|
||||
storCdr.ExtraFields = self.GetExtraFields()
|
||||
|
||||
@@ -147,11 +147,11 @@ func TestSMGenericEventAsStoredCdr(t *testing.T) {
|
||||
smGev[utils.CDRHOST] = "10.0.3.15"
|
||||
smGev["Extra1"] = "Value1"
|
||||
smGev["Extra2"] = 5
|
||||
eStoredCdr := &engine.StoredCdr{CgrId: "0711eaa78e53937f1593dabc08c83ea04a915f2e",
|
||||
TOR: utils.VOICE, AccId: "12345", CdrHost: "10.0.3.15", CdrSource: "SMG_TEST_EVENT", ReqType: utils.META_PREPAID,
|
||||
eStoredCdr := &engine.CDR{CGRID: "0711eaa78e53937f1593dabc08c83ea04a915f2e",
|
||||
ToR: utils.VOICE, OriginID: "12345", OriginHost: "10.0.3.15", Source: "SMG_TEST_EVENT", RequestType: utils.META_PREPAID,
|
||||
Direction: utils.OUT, Tenant: "cgrates.org", Category: "call", Account: "account1", Subject: "subject1",
|
||||
Destination: "+4986517174963", SetupTime: time.Date(2015, 11, 9, 14, 21, 24, 0, time.UTC), AnswerTime: time.Date(2015, 11, 9, 14, 22, 2, 0, time.UTC),
|
||||
Usage: time.Duration(83) * time.Second, Pdd: time.Duration(300) * time.Millisecond, Supplier: "supplier1", DisconnectCause: "NORMAL_DISCONNECT",
|
||||
Usage: time.Duration(83) * time.Second, PDD: time.Duration(300) * time.Millisecond, Supplier: "supplier1", DisconnectCause: "NORMAL_DISCONNECT",
|
||||
ExtraFields: map[string]string{"Extra1": "Value1", "Extra2": "5"}, Cost: -1}
|
||||
if storedCdr := smGev.AsStoredCdr(cfg, "UTC"); !reflect.DeepEqual(eStoredCdr, storedCdr) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", eStoredCdr, storedCdr)
|
||||
|
||||
@@ -91,7 +91,7 @@ func (self *SMGeneric) sessionStart(evStart SMGenericEvent, connId string) error
|
||||
}
|
||||
stopDebitChan := make(chan struct{})
|
||||
for _, sessionRun := range sessionRuns {
|
||||
s := &SMGSession{eventStart: evStart, connId: connId, runId: sessionRun.DerivedCharger.RunId, timezone: self.timezone,
|
||||
s := &SMGSession{eventStart: evStart, connId: connId, runId: sessionRun.DerivedCharger.RunID, timezone: self.timezone,
|
||||
rater: self.rater, cdrsrv: self.cdrsrv, cd: sessionRun.CallDescriptor}
|
||||
self.indexSession(sessionId, s)
|
||||
if self.cgrCfg.SmGenericConfig.DebitInterval != 0 {
|
||||
|
||||
Reference in New Issue
Block a user