mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Adding FieldAsString method to extract RatedAccount and RatedSubject, tests
This commit is contained in:
@@ -93,6 +93,8 @@ const (
|
||||
ANSWER_TIME = "answer_time"
|
||||
USAGE = "usage"
|
||||
MEDI_RUNID = "mediation_runid"
|
||||
RATED_ACCOUNT = "rated_account"
|
||||
RATED_SUBJECT = "rated_subject"
|
||||
COST = "cost"
|
||||
DEFAULT_RUNID = "default"
|
||||
STATIC_VALUE_PREFIX = "^"
|
||||
|
||||
@@ -128,6 +128,10 @@ func (storedCdr *StoredCdr) FieldAsString(rsrFld *RSRField) string {
|
||||
return rsrFld.ParseValue(strconv.FormatInt(storedCdr.Usage.Nanoseconds(), 10))
|
||||
case MEDI_RUNID:
|
||||
return rsrFld.ParseValue(storedCdr.MediationRunId)
|
||||
case RATED_ACCOUNT:
|
||||
return rsrFld.ParseValue(storedCdr.RatedAccount)
|
||||
case RATED_SUBJECT:
|
||||
return rsrFld.ParseValue(storedCdr.RatedSubject)
|
||||
case COST:
|
||||
return rsrFld.ParseValue(strconv.FormatFloat(storedCdr.Cost, 'f', -1, 64)) // Recommended to use FormatCost
|
||||
default:
|
||||
@@ -159,7 +163,7 @@ func (storedCdr *StoredCdr) AsStoredCdr() *StoredCdr {
|
||||
return storedCdr
|
||||
}
|
||||
|
||||
// Ability to send the CgrCdr remotely to another CDR server
|
||||
// Ability to send the CgrCdr remotely to another CDR server, we do not include rating variables for now
|
||||
func (storedCdr *StoredCdr) AsHttpForm() url.Values {
|
||||
v := url.Values{}
|
||||
for fld, val := range storedCdr.ExtraFields {
|
||||
@@ -326,6 +330,8 @@ func (storedCdr *StoredCdr) AsCgrCdrOut() *CgrCdrOut {
|
||||
Usage: storedCdr.Usage.Seconds(),
|
||||
ExtraFields: storedCdr.ExtraFields,
|
||||
MediationRunId: storedCdr.MediationRunId,
|
||||
RatedAccount: storedCdr.RatedAccount,
|
||||
RatedSubject: storedCdr.RatedSubject,
|
||||
Cost: storedCdr.Cost,
|
||||
}
|
||||
}
|
||||
@@ -349,5 +355,7 @@ type CgrCdrOut struct {
|
||||
Usage float64
|
||||
ExtraFields map[string]string
|
||||
MediationRunId string
|
||||
RatedAccount string
|
||||
RatedSubject string
|
||||
Cost float64
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ func TestStoredCdrInterfaces(t *testing.T) {
|
||||
func TestFieldAsString(t *testing.T) {
|
||||
cdr := StoredCdr{CgrId: Sha1("dsafdsaf", time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC).String()), OrderId: 123, TOR: VOICE, AccId: "dsafdsaf", CdrHost: "192.168.1.1", CdrSource: "test", ReqType: "rated", Direction: "*out", Tenant: "cgrates.org",
|
||||
Category: "call", Account: "1001", Subject: "1001", Destination: "1002", SetupTime: time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC), AnswerTime: time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC), MediationRunId: DEFAULT_RUNID,
|
||||
Usage: time.Duration(10) * time.Second, ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}, Cost: 1.01,
|
||||
Usage: time.Duration(10) * time.Second, ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}, Cost: 1.01, RatedAccount: "dan", RatedSubject: "dans",
|
||||
}
|
||||
if cdr.FieldAsString(&RSRField{Id: CGRID}) != cdr.CgrId ||
|
||||
cdr.FieldAsString(&RSRField{Id: ORDERID}) != "123" ||
|
||||
@@ -51,6 +51,8 @@ func TestFieldAsString(t *testing.T) {
|
||||
cdr.FieldAsString(&RSRField{Id: USAGE}) != "10000000000" ||
|
||||
cdr.FieldAsString(&RSRField{Id: MEDI_RUNID}) != cdr.MediationRunId ||
|
||||
cdr.FieldAsString(&RSRField{Id: COST}) != "1.01" ||
|
||||
cdr.FieldAsString(&RSRField{Id: RATED_ACCOUNT}) != "dan" ||
|
||||
cdr.FieldAsString(&RSRField{Id: RATED_SUBJECT}) != "dans" ||
|
||||
cdr.FieldAsString(&RSRField{Id: "field_extr1"}) != cdr.ExtraFields["field_extr1"] ||
|
||||
cdr.FieldAsString(&RSRField{Id: "fieldextr2"}) != cdr.ExtraFields["fieldextr2"] ||
|
||||
cdr.FieldAsString(&RSRField{Id: "dummy_field"}) != "" {
|
||||
@@ -71,6 +73,8 @@ func TestFieldAsString(t *testing.T) {
|
||||
cdr.FieldAsString(&RSRField{Id: ANSWER_TIME}) != cdr.AnswerTime.String(),
|
||||
cdr.FieldAsString(&RSRField{Id: USAGE}) != "10000000000",
|
||||
cdr.FieldAsString(&RSRField{Id: MEDI_RUNID}) != cdr.MediationRunId,
|
||||
cdr.FieldAsString(&RSRField{Id: RATED_ACCOUNT}) != "dan",
|
||||
cdr.FieldAsString(&RSRField{Id: RATED_SUBJECT}) != "dans",
|
||||
cdr.FieldAsString(&RSRField{Id: COST}) != "1.01",
|
||||
cdr.FieldAsString(&RSRField{Id: "field_extr1"}) != cdr.ExtraFields["field_extr1"],
|
||||
cdr.FieldAsString(&RSRField{Id: "fieldextr2"}) != cdr.ExtraFields["fieldextr2"],
|
||||
@@ -234,7 +238,7 @@ func TestStoredCdrAsHttpForm(t *testing.T) {
|
||||
storCdr := StoredCdr{CgrId: Sha1("dsafdsaf", time.Date(2013, 11, 7, 8, 42, 26, 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) * time.Second, ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}, Cost: 1.01,
|
||||
Usage: time.Duration(10) * time.Second, ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}, RatedSubject: "dans", Cost: 1.01,
|
||||
}
|
||||
cdrForm := storCdr.AsHttpForm()
|
||||
if cdrForm.Get(TOR) != VOICE {
|
||||
@@ -291,7 +295,7 @@ func TestStoredCdrForkCdr(t *testing.T) {
|
||||
storCdr := StoredCdr{CgrId: Sha1("dsafdsaf", time.Date(2013, 11, 7, 8, 42, 26, 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) * time.Second, ExtraFields: map[string]string{"field_extr1": "val_extr1", "field_extr2": "valextr2"}, Cost: 1.01,
|
||||
Usage: time.Duration(10) * time.Second, ExtraFields: map[string]string{"field_extr1": "val_extr1", "field_extr2": "valextr2"}, Cost: 1.01, RatedSubject: "dans",
|
||||
}
|
||||
rtSampleCdrOut, err := storCdr.ForkCdr("sample_run1", &RSRField{Id: REQTYPE}, &RSRField{Id: DIRECTION}, &RSRField{Id: TENANT}, &RSRField{Id: CATEGORY},
|
||||
&RSRField{Id: ACCOUNT}, &RSRField{Id: SUBJECT}, &RSRField{Id: DESTINATION}, &RSRField{Id: SETUP_TIME}, &RSRField{Id: ANSWER_TIME}, &RSRField{Id: USAGE},
|
||||
@@ -379,12 +383,12 @@ 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,
|
||||
Usage: time.Duration(10), ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}, Cost: 1.01, RatedAccount: "dan", RatedSubject: "dans",
|
||||
}
|
||||
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,
|
||||
Usage: 0.00000001, ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}, Cost: 1.01, RatedAccount: "dan", RatedSubject: "dans",
|
||||
}
|
||||
if cdrOut := storCdr.AsCgrCdrOut(); !reflect.DeepEqual(expectOutCdr, cdrOut) {
|
||||
t.Errorf("Expected: %+v, received: %+v", expectOutCdr, cdrOut)
|
||||
|
||||
Reference in New Issue
Block a user