mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-21 07:08:45 +05:00
Format time into RFC3339 for more compact representation, GetCdrs returning now CgrExtCdr with SetupTime, AnswerTime and Usage set as string for more interoperability with other languages
This commit is contained in:
@@ -115,9 +115,9 @@ func (storedCdr *StoredCdr) FieldAsString(rsrFld *RSRField) string {
|
||||
case DESTINATION:
|
||||
return rsrFld.ParseValue(storedCdr.Destination)
|
||||
case SETUP_TIME:
|
||||
return rsrFld.ParseValue(storedCdr.SetupTime.String())
|
||||
return rsrFld.ParseValue(storedCdr.SetupTime.Format(time.RFC3339))
|
||||
case ANSWER_TIME:
|
||||
return rsrFld.ParseValue(storedCdr.AnswerTime.String())
|
||||
return rsrFld.ParseValue(storedCdr.AnswerTime.Format(time.RFC3339))
|
||||
case USAGE:
|
||||
return strconv.FormatFloat(Round(storedCdr.Usage.Seconds(), 0, ROUNDING_MIDDLE), 'f', -1, 64)
|
||||
case MEDI_RUNID:
|
||||
@@ -174,8 +174,8 @@ func (storedCdr *StoredCdr) AsHttpForm() url.Values {
|
||||
v.Set(ACCOUNT, storedCdr.Account)
|
||||
v.Set(SUBJECT, storedCdr.Subject)
|
||||
v.Set(DESTINATION, storedCdr.Destination)
|
||||
v.Set(SETUP_TIME, storedCdr.SetupTime.String())
|
||||
v.Set(ANSWER_TIME, storedCdr.AnswerTime.String())
|
||||
v.Set(SETUP_TIME, storedCdr.SetupTime.Format(time.RFC3339))
|
||||
v.Set(ANSWER_TIME, storedCdr.AnswerTime.Format(time.RFC3339))
|
||||
v.Set(USAGE, storedCdr.FormatUsage(SECONDS))
|
||||
return v
|
||||
}
|
||||
@@ -305,8 +305,8 @@ func (storedCdr *StoredCdr) ForkCdr(runId string, reqTypeFld, directionFld, tena
|
||||
return frkStorCdr, nil
|
||||
}
|
||||
|
||||
func (storedCdr *StoredCdr) AsCgrCdrOut() *CgrCdrOut {
|
||||
return &CgrCdrOut{CgrId: storedCdr.CgrId,
|
||||
func (storedCdr *StoredCdr) AsCgrExtCdr() *CgrExtCdr {
|
||||
return &CgrExtCdr{CgrId: storedCdr.CgrId,
|
||||
OrderId: storedCdr.OrderId,
|
||||
TOR: storedCdr.TOR,
|
||||
AccId: storedCdr.AccId,
|
||||
@@ -319,9 +319,9 @@ func (storedCdr *StoredCdr) AsCgrCdrOut() *CgrCdrOut {
|
||||
Account: storedCdr.Account,
|
||||
Subject: storedCdr.Subject,
|
||||
Destination: storedCdr.Destination,
|
||||
SetupTime: storedCdr.SetupTime,
|
||||
AnswerTime: storedCdr.AnswerTime,
|
||||
Usage: storedCdr.Usage.Seconds(),
|
||||
SetupTime: storedCdr.SetupTime.Format(time.RFC3339),
|
||||
AnswerTime: storedCdr.AnswerTime.Format(time.RFC3339),
|
||||
Usage: storedCdr.FormatUsage(SECONDS),
|
||||
ExtraFields: storedCdr.ExtraFields,
|
||||
MediationRunId: storedCdr.MediationRunId,
|
||||
RatedAccount: storedCdr.RatedAccount,
|
||||
@@ -481,7 +481,7 @@ func (storedCdr *StoredCdr) String() string {
|
||||
return string(mrsh)
|
||||
}
|
||||
|
||||
type CgrCdrOut struct {
|
||||
type CgrExtCdr struct {
|
||||
CgrId string
|
||||
OrderId int64
|
||||
TOR string
|
||||
@@ -495,9 +495,9 @@ type CgrCdrOut struct {
|
||||
Account string
|
||||
Subject string
|
||||
Destination string
|
||||
SetupTime time.Time
|
||||
AnswerTime time.Time
|
||||
Usage float64
|
||||
SetupTime string
|
||||
AnswerTime string
|
||||
Usage string
|
||||
ExtraFields map[string]string
|
||||
MediationRunId string
|
||||
RatedAccount string
|
||||
|
||||
@@ -47,8 +47,8 @@ func TestFieldAsString(t *testing.T) {
|
||||
cdr.FieldAsString(&RSRField{Id: ACCOUNT}) != cdr.Account ||
|
||||
cdr.FieldAsString(&RSRField{Id: SUBJECT}) != cdr.Subject ||
|
||||
cdr.FieldAsString(&RSRField{Id: DESTINATION}) != cdr.Destination ||
|
||||
cdr.FieldAsString(&RSRField{Id: SETUP_TIME}) != cdr.SetupTime.String() ||
|
||||
cdr.FieldAsString(&RSRField{Id: ANSWER_TIME}) != cdr.AnswerTime.String() ||
|
||||
cdr.FieldAsString(&RSRField{Id: SETUP_TIME}) != cdr.SetupTime.Format(time.RFC3339) ||
|
||||
cdr.FieldAsString(&RSRField{Id: ANSWER_TIME}) != cdr.AnswerTime.Format(time.RFC3339) ||
|
||||
cdr.FieldAsString(&RSRField{Id: USAGE}) != "10" ||
|
||||
cdr.FieldAsString(&RSRField{Id: MEDI_RUNID}) != cdr.MediationRunId ||
|
||||
cdr.FieldAsString(&RSRField{Id: COST}) != "1.01" ||
|
||||
@@ -70,8 +70,8 @@ func TestFieldAsString(t *testing.T) {
|
||||
cdr.FieldAsString(&RSRField{Id: ACCOUNT}) != cdr.Account,
|
||||
cdr.FieldAsString(&RSRField{Id: SUBJECT}) != cdr.Subject,
|
||||
cdr.FieldAsString(&RSRField{Id: DESTINATION}) != cdr.Destination,
|
||||
cdr.FieldAsString(&RSRField{Id: SETUP_TIME}) != cdr.SetupTime.String(),
|
||||
cdr.FieldAsString(&RSRField{Id: ANSWER_TIME}) != cdr.AnswerTime.String(),
|
||||
cdr.FieldAsString(&RSRField{Id: SETUP_TIME}) != cdr.SetupTime.Format(time.RFC3339),
|
||||
cdr.FieldAsString(&RSRField{Id: ANSWER_TIME}) != cdr.AnswerTime.Format(time.RFC3339),
|
||||
cdr.FieldAsString(&RSRField{Id: USAGE}) != "10",
|
||||
cdr.FieldAsString(&RSRField{Id: MEDI_RUNID}) != cdr.MediationRunId,
|
||||
cdr.FieldAsString(&RSRField{Id: RATED_ACCOUNT}) != "dan",
|
||||
@@ -283,11 +283,11 @@ func TestStoredCdrAsHttpForm(t *testing.T) {
|
||||
if cdrForm.Get(DESTINATION) != "1002" {
|
||||
t.Errorf("Expected: %s, received: %s", "1002", cdrForm.Get(DESTINATION))
|
||||
}
|
||||
if cdrForm.Get(SETUP_TIME) != "2013-11-07 08:42:20 +0000 UTC" {
|
||||
t.Errorf("Expected: %s, received: %s", "2013-11-07 08:42:20 +0000 UTC", cdrForm.Get(SETUP_TIME))
|
||||
if cdrForm.Get(SETUP_TIME) != "2013-11-07T08:42:20Z" {
|
||||
t.Errorf("Expected: %s, received: %s", "2013-11-07T08:42:20Z", cdrForm.Get(SETUP_TIME))
|
||||
}
|
||||
if cdrForm.Get(ANSWER_TIME) != "2013-11-07 08:42:26 +0000 UTC" {
|
||||
t.Errorf("Expected: %s, received: %s", "2013-11-07 08:42:26 +0000 UTC", cdrForm.Get(ANSWER_TIME))
|
||||
if cdrForm.Get(ANSWER_TIME) != "2013-11-07T08:42:26Z" {
|
||||
t.Errorf("Expected: %s, received: %s", "2013-11-07T08:42:26Z", cdrForm.Get(ANSWER_TIME))
|
||||
}
|
||||
if cdrForm.Get(USAGE) != "10" {
|
||||
t.Errorf("Expected: %s, received: %s", "10", cdrForm.Get(USAGE))
|
||||
@@ -388,18 +388,18 @@ func TestStoredCdrForkCdrFromMetaDefaults(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestStoredCdrAsCgrCdrOut(t *testing.T) {
|
||||
func TestStoredCdrAsCgrExtCdr(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, 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",
|
||||
expectOutCdr := &CgrExtCdr{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, RatedAccount: "dan", RatedSubject: "dans",
|
||||
SetupTime: "2013-11-07T08:42:20Z", AnswerTime: "2013-11-07T08:42:26Z", MediationRunId: DEFAULT_RUNID,
|
||||
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) {
|
||||
if cdrOut := storCdr.AsCgrExtCdr(); !reflect.DeepEqual(expectOutCdr, cdrOut) {
|
||||
t.Errorf("Expected: %+v, received: %+v", expectOutCdr, cdrOut)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,10 +31,10 @@ func TestHttpJsonPost(t *testing.T) {
|
||||
if !*testLocal {
|
||||
return
|
||||
}
|
||||
cdrOut := &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",
|
||||
cdrOut := &CgrExtCdr{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: "account1", Subject: "tgooiscs0014", 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,
|
||||
SetupTime: time.Date(2013, 11, 7, 8, 42, 20, 0, time.UTC).String(), AnswerTime: time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC).String(), MediationRunId: DEFAULT_RUNID,
|
||||
Usage: "0.00000001", ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}, Cost: 1.01,
|
||||
}
|
||||
if _, err := HttpJsonPost("http://localhost:8000", false, cdrOut); err == nil || err.Error() != "Post http://localhost:8000: dial tcp 127.0.0.1:8000: connection refused" {
|
||||
t.Error(err)
|
||||
|
||||
Reference in New Issue
Block a user