mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
StoredCdr.AsCgrCdrOut() with tests
This commit is contained in:
@@ -1434,6 +1434,8 @@ func TestLocalGetCdrs(t *testing.T) {
|
||||
req := utils.AttrGetCdrs{}
|
||||
if err := rater.Call("ApierV1.GetCdrs", req, &reply); err != nil {
|
||||
t.Error("Unexpected error: ", err.Error())
|
||||
} else if len(reply) != 2 {
|
||||
t.Error("Unexpected number of CDRs returned: ", len(reply))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ func (apier *ApierV1) GetCallCostLog(attrs AttrGetCallCost, reply *engine.CallCo
|
||||
}
|
||||
|
||||
// Retrieves CDRs based on the filters
|
||||
func (apier *ApierV1) GetCdrs(attrs utils.AttrGetCdrs, reply *[]*utils.StoredCdr) error {
|
||||
func (apier *ApierV1) GetCdrs(attrs utils.AttrGetCdrs, reply *[]*utils.CgrCdrOut) error {
|
||||
var tStart, tEnd time.Time
|
||||
var err error
|
||||
if len(attrs.TimeStart) != 0 {
|
||||
@@ -65,9 +65,8 @@ func (apier *ApierV1) GetCdrs(attrs utils.AttrGetCdrs, reply *[]*utils.StoredCdr
|
||||
return fmt.Errorf("%s:%s", utils.ERR_SERVER_ERROR, err.Error())
|
||||
} else {
|
||||
for _, cdr := range cdrs {
|
||||
cdr.MangleDataUsage(utils.CDR_EXPORT) // Convert data usage to the right format
|
||||
*reply = append(*reply, cdr.AsCgrCdrOut())
|
||||
}
|
||||
*reply = cdrs
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -257,3 +257,48 @@ func (storedCdr *StoredCdr) ForkCdr(runId string, reqTypeFld, directionFld, tena
|
||||
}
|
||||
return frkStorCdr, nil
|
||||
}
|
||||
|
||||
func (storedCdr *StoredCdr) AsCgrCdrOut() *CgrCdrOut {
|
||||
return &CgrCdrOut{CgrId: storedCdr.CgrId,
|
||||
OrderId: storedCdr.OrderId,
|
||||
TOR: storedCdr.TOR,
|
||||
AccId: storedCdr.AccId,
|
||||
CdrHost: storedCdr.CdrHost,
|
||||
CdrSource: storedCdr.CdrSource,
|
||||
ReqType: storedCdr.ReqType,
|
||||
Direction: storedCdr.Direction,
|
||||
Tenant: storedCdr.Tenant,
|
||||
Category: storedCdr.Category,
|
||||
Account: storedCdr.Account,
|
||||
Subject: storedCdr.Subject,
|
||||
Destination: storedCdr.Destination,
|
||||
SetupTime: storedCdr.SetupTime,
|
||||
AnswerTime: storedCdr.AnswerTime,
|
||||
Usage: storedCdr.Usage.Seconds(),
|
||||
ExtraFields: storedCdr.ExtraFields,
|
||||
MediationRunId: storedCdr.MediationRunId,
|
||||
Cost: storedCdr.Cost,
|
||||
}
|
||||
}
|
||||
|
||||
type CgrCdrOut struct {
|
||||
CgrId string
|
||||
OrderId int64
|
||||
TOR string
|
||||
AccId string
|
||||
CdrHost string
|
||||
CdrSource string
|
||||
ReqType string
|
||||
Direction string
|
||||
Tenant string
|
||||
Category string
|
||||
Account string
|
||||
Subject string
|
||||
Destination string
|
||||
SetupTime time.Time
|
||||
AnswerTime time.Time
|
||||
Usage float64
|
||||
ExtraFields map[string]string
|
||||
MediationRunId string
|
||||
Cost float64
|
||||
}
|
||||
|
||||
@@ -272,3 +272,19 @@ func TestStoredCdrForkCdrFromMetaDefaults(t *testing.T) {
|
||||
t.Errorf("Expected: %v, received: %v", expctCdr, cdrOut)
|
||||
}
|
||||
}
|
||||
|
||||
func TestStoredCdrAsCgrCdrOut(t *testing.T) {
|
||||
storCdr := StoredCdr{CgrId: Sha1("dsafdsaf", time.Date(2013, 11, 7, 8, 42, 20, 0, time.UTC).String()), OrderId: 123, TOR: VOICE, AccId: "dsafdsaf", CdrHost: "192.168.1.1",
|
||||
CdrSource: UNIT_TEST, ReqType: "rated", Direction: "*out", Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Destination: "1002",
|
||||
SetupTime: time.Date(2013, 11, 7, 8, 42, 20, 0, time.UTC), AnswerTime: time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC), MediationRunId: DEFAULT_RUNID,
|
||||
Usage: time.Duration(10), ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}, Cost: 1.01,
|
||||
}
|
||||
expectOutCdr := &CgrCdrOut{CgrId: Sha1("dsafdsaf", time.Date(2013, 11, 7, 8, 42, 20, 0, time.UTC).String()), OrderId: 123, TOR: VOICE, AccId: "dsafdsaf", CdrHost: "192.168.1.1",
|
||||
CdrSource: UNIT_TEST, ReqType: "rated", Direction: "*out", Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Destination: "1002",
|
||||
SetupTime: time.Date(2013, 11, 7, 8, 42, 20, 0, time.UTC), AnswerTime: time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC), MediationRunId: DEFAULT_RUNID,
|
||||
Usage: 0.00000001, ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}, Cost: 1.01,
|
||||
}
|
||||
if cdrOut := storCdr.AsCgrCdrOut(); !reflect.DeepEqual(expectOutCdr, cdrOut) {
|
||||
t.Errorf("Expected: %+v, received: %+v", expectOutCdr, cdrOut)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user