PDD in CDRS, small fixes in storedcdr

This commit is contained in:
DanB
2015-06-08 18:47:53 +02:00
parent 45275f08f7
commit e8a08903ee
3 changed files with 10 additions and 10 deletions

View File

@@ -269,13 +269,13 @@ func (self *CdrServer) deriveCdrs(storedCdr *StoredCdr) ([]*StoredCdr, error) {
dcSubjFld, _ := utils.NewRSRField(dc.SubjectField)
dcDstFld, _ := utils.NewRSRField(dc.DestinationField)
dcSTimeFld, _ := utils.NewRSRField(dc.SetupTimeField)
dcPddFld, _ := utils.NewRSRField(dc.PddField)
dcATimeFld, _ := utils.NewRSRField(dc.AnswerTimeField)
dcDurFld, _ := utils.NewRSRField(dc.UsageField)
dcSupplFld, _ := utils.NewRSRField(dc.SupplierField)
dcDCausseld, _ := utils.NewRSRField(dc.DisconnectCauseField)
dcPddFld, _ := utils.NewRSRField("0") // FixMe
forkedCdr, err := storedCdr.ForkCdr(dc.RunId, dcReqTypeFld, dcDirFld, dcTenantFld, dcCategoryFld, dcAcntFld, dcSubjFld, dcDstFld,
dcSTimeFld, dcATimeFld, dcDurFld, dcPddFld, dcSupplFld, dcDCausseld, []*utils.RSRField{}, true)
dcSTimeFld, dcPddFld, dcATimeFld, dcDurFld, dcSupplFld, dcDCausseld, []*utils.RSRField{}, true)
if err != nil {
Logger.Err(fmt.Sprintf("Could not fork CGR with cgrid %s, run: %s, error: %s", storedCdr.CgrId, dc.RunId, err.Error()))
continue // do not add it to the forked CDR list

View File

@@ -157,12 +157,12 @@ func (storedCdr *StoredCdr) FieldAsString(rsrFld *utils.RSRField) string {
return rsrFld.ParseValue(storedCdr.Destination)
case utils.SETUP_TIME:
return rsrFld.ParseValue(storedCdr.SetupTime.Format(time.RFC3339))
case utils.PDD:
return strconv.FormatFloat(utils.Round(storedCdr.Pdd.Seconds(), 0, utils.ROUNDING_MIDDLE), 'f', -1, 64)
case utils.ANSWER_TIME:
return rsrFld.ParseValue(storedCdr.AnswerTime.Format(time.RFC3339))
case utils.USAGE:
return strconv.FormatFloat(utils.Round(storedCdr.Usage.Seconds(), 0, utils.ROUNDING_MIDDLE), 'f', -1, 64)
case utils.PDD:
return strconv.FormatFloat(utils.Round(storedCdr.Pdd.Seconds(), 0, utils.ROUNDING_MIDDLE), 'f', -1, 64)
case utils.SUPPLIER:
return rsrFld.ParseValue(storedCdr.Supplier)
case utils.DISCONNECT_CAUSE:
@@ -224,9 +224,9 @@ func (storedCdr *StoredCdr) AsHttpForm() url.Values {
v.Set(utils.SUBJECT, storedCdr.Subject)
v.Set(utils.DESTINATION, storedCdr.Destination)
v.Set(utils.SETUP_TIME, storedCdr.SetupTime.Format(time.RFC3339))
v.Set(utils.PDD, storedCdr.FieldAsString(&utils.RSRField{Id: utils.PDD}))
v.Set(utils.ANSWER_TIME, storedCdr.AnswerTime.Format(time.RFC3339))
v.Set(utils.USAGE, storedCdr.FormatUsage(utils.SECONDS))
v.Set(utils.PDD, storedCdr.FieldAsString(&utils.RSRField{Id: utils.PDD}))
v.Set(utils.SUPPLIER, storedCdr.Supplier)
v.Set(utils.DISCONNECT_CAUSE, storedCdr.DisconnectCause)
if storedCdr.CostDetails != nil {
@@ -236,8 +236,8 @@ func (storedCdr *StoredCdr) AsHttpForm() url.Values {
}
// Used in mediation, primaryMandatory marks whether missing field out of request represents error or can be ignored
func (storedCdr *StoredCdr) ForkCdr(runId string, reqTypeFld, directionFld, tenantFld, categFld, accountFld, subjectFld, destFld, setupTimeFld,
answerTimeFld, durationFld, pddFld, supplierFld, disconnectCauseFld *utils.RSRField,
func (storedCdr *StoredCdr) ForkCdr(runId string, reqTypeFld, directionFld, tenantFld, categFld, accountFld, subjectFld, destFld, setupTimeFld, pddFld,
answerTimeFld, durationFld, supplierFld, disconnectCauseFld *utils.RSRField,
extraFlds []*utils.RSRField, primaryMandatory bool) (*StoredCdr, error) {
if reqTypeFld == nil {
reqTypeFld, _ = utils.NewRSRField(utils.META_DEFAULT)

View File

@@ -343,7 +343,7 @@ func TestStoredCdrForkCdr(t *testing.T) {
Cost: 1.01, RatedSubject: "dans"}
rtSampleCdrOut, err := storCdr.ForkCdr("sample_run1", &utils.RSRField{Id: utils.REQTYPE}, &utils.RSRField{Id: utils.DIRECTION}, &utils.RSRField{Id: utils.TENANT},
&utils.RSRField{Id: utils.CATEGORY}, &utils.RSRField{Id: utils.ACCOUNT}, &utils.RSRField{Id: utils.SUBJECT}, &utils.RSRField{Id: utils.DESTINATION},
&utils.RSRField{Id: utils.SETUP_TIME}, &utils.RSRField{Id: utils.ANSWER_TIME}, &utils.RSRField{Id: utils.USAGE}, &utils.RSRField{Id: utils.PDD},
&utils.RSRField{Id: utils.SETUP_TIME}, &utils.RSRField{Id: utils.PDD}, &utils.RSRField{Id: utils.ANSWER_TIME}, &utils.RSRField{Id: utils.USAGE},
&utils.RSRField{Id: utils.SUPPLIER}, &utils.RSRField{Id: utils.DISCONNECT_CAUSE},
[]*utils.RSRField{&utils.RSRField{Id: "field_extr1"}, &utils.RSRField{Id: "field_extr2"}}, true)
if err != nil {
@@ -379,7 +379,7 @@ func TestStoredCdrForkCdrStaticVals(t *testing.T) {
rsrStDCause, _ := utils.NewRSRField("^HANGUP_COMPLETE")
rsrPdd, _ := utils.NewRSRField("^3")
rtCdrOut2, err := storCdr.ForkCdr("wholesale_run", rsrStPostpaid, rsrStIn, rsrStCgr, rsrStPC, rsrStFA, rsrStFS, &utils.RSRField{Id: "destination"},
rsrStST, rsrStAT, rsrStDur, rsrPdd, rsrStSuppl, rsrStDCause, []*utils.RSRField{}, true)
rsrStST, rsrPdd, rsrStAT, rsrStDur, rsrStSuppl, rsrStDCause, []*utils.RSRField{}, true)
if err != nil {
t.Error("Unexpected error received", err)
}
@@ -394,7 +394,7 @@ func TestStoredCdrForkCdrStaticVals(t *testing.T) {
}
_, err = storCdr.ForkCdr("wholesale_run", &utils.RSRField{Id: "dummy_header"}, &utils.RSRField{Id: "direction"}, &utils.RSRField{Id: "tenant"},
&utils.RSRField{Id: "tor"}, &utils.RSRField{Id: "account"}, &utils.RSRField{Id: "subject"}, &utils.RSRField{Id: "destination"},
&utils.RSRField{Id: "setup_time"}, &utils.RSRField{Id: "answer_time"}, &utils.RSRField{Id: "duration"}, &utils.RSRField{Id: utils.PDD}, &utils.RSRField{Id: utils.SUPPLIER},
&utils.RSRField{Id: "setup_time"}, &utils.RSRField{Id: utils.PDD}, &utils.RSRField{Id: "answer_time"}, &utils.RSRField{Id: "duration"}, &utils.RSRField{Id: utils.SUPPLIER},
&utils.RSRField{Id: utils.DISCONNECT_CAUSE}, []*utils.RSRField{}, true)
if err == nil {
t.Error("Failed to detect missing header")