StoredCdr.AsCgrCdrOut() with tests

This commit is contained in:
DanB
2014-05-28 12:54:03 +02:00
parent 7b2a452c4f
commit 18629002a6
4 changed files with 65 additions and 3 deletions

View File

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

View File

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

View File

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

View File

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