updated tests after changing from *composed to *variable

This commit is contained in:
adragusin
2020-01-28 18:09:09 +02:00
committed by Dan Christian Bogos
parent da9c00d50a
commit 921115ad3c
4 changed files with 78 additions and 79 deletions

View File

@@ -638,24 +638,24 @@ func TestDiameterAgentJsonCfg(t *testing.T) {
utils.MetaErr: {
{Tag: utils.StringPointer("SessionId"),
Field_id: utils.StringPointer("Session-Id"),
Type: utils.StringPointer(utils.META_COMPOSED),
Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer("~*req.Session-Id"),
Mandatory: utils.BoolPointer(true)},
{Tag: utils.StringPointer("OriginHost"),
Field_id: utils.StringPointer("Origin-Host"),
Type: utils.StringPointer(utils.META_COMPOSED),
Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer("~*vars.OriginHost"),
Mandatory: utils.BoolPointer(true)},
{Tag: utils.StringPointer("OriginRealm"),
Field_id: utils.StringPointer("Origin-Realm"),
Type: utils.StringPointer(utils.META_COMPOSED),
Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer("~*vars.OriginRealm"),
Mandatory: utils.BoolPointer(true)},
},
utils.MetaCCA: {
{Tag: utils.StringPointer("SessionId"),
Field_id: utils.StringPointer("Session-Id"),
Type: utils.StringPointer(utils.META_COMPOSED),
Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer("~*req.Session-Id"),
Mandatory: utils.BoolPointer(true)},
{Tag: utils.StringPointer("ResultCode"),
@@ -664,27 +664,27 @@ func TestDiameterAgentJsonCfg(t *testing.T) {
Value: utils.StringPointer("2001")},
{Tag: utils.StringPointer("OriginHost"),
Field_id: utils.StringPointer("Origin-Host"),
Type: utils.StringPointer(utils.META_COMPOSED),
Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer("~*vars.OriginHost"),
Mandatory: utils.BoolPointer(true)},
{Tag: utils.StringPointer("OriginRealm"),
Field_id: utils.StringPointer("Origin-Realm"),
Type: utils.StringPointer(utils.META_COMPOSED),
Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer("~*vars.OriginRealm"),
Mandatory: utils.BoolPointer(true)},
{Tag: utils.StringPointer("AuthApplicationId"),
Field_id: utils.StringPointer("Auth-Application-Id"),
Type: utils.StringPointer(utils.META_COMPOSED),
Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer("~*vars.*appid"),
Mandatory: utils.BoolPointer(true)},
{Tag: utils.StringPointer("CCRequestType"),
Field_id: utils.StringPointer("CC-Request-Type"),
Type: utils.StringPointer(utils.META_COMPOSED),
Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer("~*req.CC-Request-Type"),
Mandatory: utils.BoolPointer(true)},
{Tag: utils.StringPointer("CCRequestNumber"),
Field_id: utils.StringPointer("CC-Request-Number"),
Type: utils.StringPointer(utils.META_COMPOSED),
Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer("~*req.CC-Request-Number"),
Mandatory: utils.BoolPointer(true)},
},
@@ -1598,27 +1598,27 @@ func TestDfApierCfg(t *testing.T) {
func TestDfEventReaderCfg(t *testing.T) {
cdrFields := []*FcTemplateJsonCfg{
{Tag: utils.StringPointer("TOR"), Field_id: utils.StringPointer(utils.ToR), Type: utils.StringPointer(utils.META_COMPOSED),
{Tag: utils.StringPointer("TOR"), Field_id: utils.StringPointer(utils.ToR), Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer("~*req.2"), Mandatory: utils.BoolPointer(true)},
{Tag: utils.StringPointer("OriginID"), Field_id: utils.StringPointer(utils.OriginID), Type: utils.StringPointer(utils.META_COMPOSED),
{Tag: utils.StringPointer("OriginID"), Field_id: utils.StringPointer(utils.OriginID), Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer("~*req.3"), Mandatory: utils.BoolPointer(true)},
{Tag: utils.StringPointer("RequestType"), Field_id: utils.StringPointer(utils.RequestType), Type: utils.StringPointer(utils.META_COMPOSED),
{Tag: utils.StringPointer("RequestType"), Field_id: utils.StringPointer(utils.RequestType), Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer("~*req.4"), Mandatory: utils.BoolPointer(true)},
{Tag: utils.StringPointer("Tenant"), Field_id: utils.StringPointer(utils.Tenant), Type: utils.StringPointer(utils.META_COMPOSED),
{Tag: utils.StringPointer("Tenant"), Field_id: utils.StringPointer(utils.Tenant), Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer("~*req.6"), Mandatory: utils.BoolPointer(true)},
{Tag: utils.StringPointer("Category"), Field_id: utils.StringPointer(utils.Category), Type: utils.StringPointer(utils.META_COMPOSED),
{Tag: utils.StringPointer("Category"), Field_id: utils.StringPointer(utils.Category), Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer("~*req.7"), Mandatory: utils.BoolPointer(true)},
{Tag: utils.StringPointer("Account"), Field_id: utils.StringPointer(utils.Account), Type: utils.StringPointer(utils.META_COMPOSED),
{Tag: utils.StringPointer("Account"), Field_id: utils.StringPointer(utils.Account), Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer("~*req.8"), Mandatory: utils.BoolPointer(true)},
{Tag: utils.StringPointer("Subject"), Field_id: utils.StringPointer(utils.Subject), Type: utils.StringPointer(utils.META_COMPOSED),
{Tag: utils.StringPointer("Subject"), Field_id: utils.StringPointer(utils.Subject), Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer("~*req.9"), Mandatory: utils.BoolPointer(true)},
{Tag: utils.StringPointer("Destination"), Field_id: utils.StringPointer(utils.Destination), Type: utils.StringPointer(utils.META_COMPOSED),
{Tag: utils.StringPointer("Destination"), Field_id: utils.StringPointer(utils.Destination), Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer("~*req.10"), Mandatory: utils.BoolPointer(true)},
{Tag: utils.StringPointer("SetupTime"), Field_id: utils.StringPointer(utils.SetupTime), Type: utils.StringPointer(utils.META_COMPOSED),
{Tag: utils.StringPointer("SetupTime"), Field_id: utils.StringPointer(utils.SetupTime), Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer("~*req.11"), Mandatory: utils.BoolPointer(true)},
{Tag: utils.StringPointer("AnswerTime"), Field_id: utils.StringPointer(utils.AnswerTime), Type: utils.StringPointer(utils.META_COMPOSED),
{Tag: utils.StringPointer("AnswerTime"), Field_id: utils.StringPointer(utils.AnswerTime), Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer("~*req.12"), Mandatory: utils.BoolPointer(true)},
{Tag: utils.StringPointer("Usage"), Field_id: utils.StringPointer(utils.Usage), Type: utils.StringPointer(utils.META_COMPOSED),
{Tag: utils.StringPointer("Usage"), Field_id: utils.StringPointer(utils.Usage), Type: utils.StringPointer(utils.MetaVariable),
Value: utils.StringPointer("~*req.13"), Mandatory: utils.BoolPointer(true)},
}
eCfg := &ERsJsonCfg{

View File

@@ -1628,27 +1628,27 @@ func TestCgrCdfEventReader(t *testing.T) {
Filters: []string{},
Flags: utils.FlagsWithParams{},
Fields: []*FCTemplate{
{Tag: "TOR", FieldId: "ToR", Type: utils.META_COMPOSED,
{Tag: "TOR", FieldId: "ToR", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "OriginID", FieldId: "OriginID", Type: utils.META_COMPOSED,
{Tag: "OriginID", FieldId: "OriginID", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "RequestType", FieldId: "RequestType", Type: utils.META_COMPOSED,
{Tag: "RequestType", FieldId: "RequestType", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Tenant", FieldId: "Tenant", Type: utils.META_COMPOSED,
{Tag: "Tenant", FieldId: "Tenant", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Category", FieldId: "Category", Type: utils.META_COMPOSED,
{Tag: "Category", FieldId: "Category", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.7", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Account", FieldId: "Account", Type: utils.META_COMPOSED,
{Tag: "Account", FieldId: "Account", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.8", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Subject", FieldId: "Subject", Type: utils.META_COMPOSED,
{Tag: "Subject", FieldId: "Subject", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.9", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Destination", FieldId: "Destination", Type: utils.META_COMPOSED,
{Tag: "Destination", FieldId: "Destination", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.10", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "SetupTime", FieldId: "SetupTime", Type: utils.META_COMPOSED,
{Tag: "SetupTime", FieldId: "SetupTime", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.11", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "AnswerTime", FieldId: "AnswerTime", Type: utils.META_COMPOSED,
{Tag: "AnswerTime", FieldId: "AnswerTime", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.12", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Usage", FieldId: "Usage", Type: utils.META_COMPOSED,
{Tag: "Usage", FieldId: "Usage", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.13", true, utils.INFIELD_SEP), Mandatory: true},
},
},
@@ -1674,27 +1674,27 @@ func TestCgrCfgEventReaderDefault(t *testing.T) {
Filters: nil,
Flags: utils.FlagsWithParams{},
Fields: []*FCTemplate{
{Tag: "TOR", FieldId: "ToR", Type: utils.META_COMPOSED,
{Tag: "TOR", FieldId: "ToR", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "OriginID", FieldId: "OriginID", Type: utils.META_COMPOSED,
{Tag: "OriginID", FieldId: "OriginID", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "RequestType", FieldId: "RequestType", Type: utils.META_COMPOSED,
{Tag: "RequestType", FieldId: "RequestType", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Tenant", FieldId: "Tenant", Type: utils.META_COMPOSED,
{Tag: "Tenant", FieldId: "Tenant", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Category", FieldId: "Category", Type: utils.META_COMPOSED,
{Tag: "Category", FieldId: "Category", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.7", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Account", FieldId: "Account", Type: utils.META_COMPOSED,
{Tag: "Account", FieldId: "Account", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.8", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Subject", FieldId: "Subject", Type: utils.META_COMPOSED,
{Tag: "Subject", FieldId: "Subject", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.9", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Destination", FieldId: "Destination", Type: utils.META_COMPOSED,
{Tag: "Destination", FieldId: "Destination", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.10", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "SetupTime", FieldId: "SetupTime", Type: utils.META_COMPOSED,
{Tag: "SetupTime", FieldId: "SetupTime", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.11", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "AnswerTime", FieldId: "AnswerTime", Type: utils.META_COMPOSED,
{Tag: "AnswerTime", FieldId: "AnswerTime", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.12", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Usage", FieldId: "Usage", Type: utils.META_COMPOSED,
{Tag: "Usage", FieldId: "Usage", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.13", true, utils.INFIELD_SEP), Mandatory: true},
},
CacheDumpFields: make([]*FCTemplate, 0),

View File

@@ -112,27 +112,27 @@ func TestEventReaderLoadFromJSON(t *testing.T) {
Filters: []string{},
Flags: utils.FlagsWithParams{},
Fields: []*FCTemplate{
{Tag: "TOR", FieldId: "ToR", Type: utils.META_COMPOSED,
{Tag: "TOR", FieldId: "ToR", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "OriginID", FieldId: "OriginID", Type: utils.META_COMPOSED,
{Tag: "OriginID", FieldId: "OriginID", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "RequestType", FieldId: "RequestType", Type: utils.META_COMPOSED,
{Tag: "RequestType", FieldId: "RequestType", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Tenant", FieldId: "Tenant", Type: utils.META_COMPOSED,
{Tag: "Tenant", FieldId: "Tenant", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Category", FieldId: "Category", Type: utils.META_COMPOSED,
{Tag: "Category", FieldId: "Category", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.7", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Account", FieldId: "Account", Type: utils.META_COMPOSED,
{Tag: "Account", FieldId: "Account", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.8", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Subject", FieldId: "Subject", Type: utils.META_COMPOSED,
{Tag: "Subject", FieldId: "Subject", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.9", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Destination", FieldId: "Destination", Type: utils.META_COMPOSED,
{Tag: "Destination", FieldId: "Destination", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.10", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "SetupTime", FieldId: "SetupTime", Type: utils.META_COMPOSED,
{Tag: "SetupTime", FieldId: "SetupTime", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.11", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "AnswerTime", FieldId: "AnswerTime", Type: utils.META_COMPOSED,
{Tag: "AnswerTime", FieldId: "AnswerTime", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.12", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Usage", FieldId: "Usage", Type: utils.META_COMPOSED,
{Tag: "Usage", FieldId: "Usage", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.13", true, utils.INFIELD_SEP), Mandatory: true},
},
},
@@ -149,28 +149,27 @@ func TestEventReaderLoadFromJSON(t *testing.T) {
Timezone: utils.EmptyString,
Filters: nil,
Flags: utils.FlagsWithParams{},
Fields: []*FCTemplate{
{Tag: "TOR", FieldId: "ToR", Type: utils.META_COMPOSED,
Value: NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "OriginID", FieldId: "OriginID", Type: utils.META_COMPOSED,
{Tag: "OriginID", FieldId: "OriginID", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "RequestType", FieldId: "RequestType", Type: utils.META_COMPOSED,
{Tag: "RequestType", FieldId: "RequestType", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Tenant", FieldId: "Tenant", Type: utils.META_COMPOSED,
{Tag: "Tenant", FieldId: "Tenant", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Category", FieldId: "Category", Type: utils.META_COMPOSED,
{Tag: "Category", FieldId: "Category", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.7", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Account", FieldId: "Account", Type: utils.META_COMPOSED,
{Tag: "Account", FieldId: "Account", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.8", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Subject", FieldId: "Subject", Type: utils.META_COMPOSED,
{Tag: "Subject", FieldId: "Subject", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.9", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Destination", FieldId: "Destination", Type: utils.META_COMPOSED,
{Tag: "Destination", FieldId: "Destination", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.10", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "SetupTime", FieldId: "SetupTime", Type: utils.META_COMPOSED,
{Tag: "SetupTime", FieldId: "SetupTime", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.11", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "AnswerTime", FieldId: "AnswerTime", Type: utils.META_COMPOSED,
{Tag: "AnswerTime", FieldId: "AnswerTime", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.12", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Usage", FieldId: "Usage", Type: utils.META_COMPOSED,
{Tag: "Usage", FieldId: "Usage", Type: utils.MetaVariable,
Value: NewRSRParsersMustCompile("~*req.13", true, utils.INFIELD_SEP), Mandatory: true},
},
CacheDumpFields: make([]*FCTemplate, 0),

View File

@@ -273,23 +273,23 @@
{"tag": "RequestType", "field_id": "RequestType", "type": "*constant", "value": "*rated", "mandatory": true},
{"tag": "Tenant", "field_id": "Tenant", "type": "*constant", "value": "cgrates.org", "mandatory": true},
{"tag": "Category", "field_id": "Category", "type": "*constant", "value": "call", "mandatory": true},
{"tag": "Account", "field_id": "Account", "type": "*variable", "value": "~*req.0:s/^49([1-9]\\d+)$/0$1/", "mandatory": true},
{"tag": "Destination", "field_id": "Destination", "type": "*variable", "value": "~*req.1:s/^00(\\d+)$/+$1/", "mandatory": true},
{"tag": "SetupTime", "field_id": "SetupTime", "type": "*variable", "value": "~*req.4", "mandatory": true},
{"tag": "AnswerTime", "field_id": "AnswerTime", "type": "*variable", "value": "~*req.4", "mandatory": true},
{"tag": "Usage", "field_id": "Usage", "type": "*variable", "value": "~*req.6:s/^(\\d+)$/${1}s/", "mandatory": true},
{"tag": "Account", "field_id": "Account", "type": "*composed", "value": "~*req.0:s/^49([1-9]\\d+)$/0$1/", "mandatory": true},
{"tag": "Destination", "field_id": "Destination", "type": "*composed", "value": "~*req.1:s/^00(\\d+)$/+$1/", "mandatory": true},
{"tag": "SetupTime", "field_id": "SetupTime", "type": "*composed", "value": "~*req.4", "mandatory": true},
{"tag": "AnswerTime", "field_id": "AnswerTime", "type": "*composed", "value": "~*req.4", "mandatory": true},
{"tag": "Usage", "field_id": "Usage", "type": "*composed", "value": "~*req.6:s/^(\\d+)$/${1}s/", "mandatory": true},
{"tag": "Partial", "field_id": "Partial", "type": "*constant", "value": "true", "filters":["*string:~*req.10:partial"]},
],
"cache_dump_fields": [
{"tag": "OriginID", "type": "*variable", "value": "~OriginID"},
{"tag": "OrderID", "type": "*variable", "value": "~OrderID"},
{"tag": "RequestType", "type": "*variable", "value": "~RequestType"},
{"tag": "Account", "type": "*variable", "value": "~Account"},
{"tag": "Destination", "type": "*variable", "value": "~Destination"},
{"tag": "SetupTime", "type": "*variable", "value": "~SetupTime", "layout": "2006-01-02T15:04:05Z07:00"},
{"tag": "AnswerTime", "type": "*variable", "value": "~AnswerTime", "layout": "2006-01-02T15:04:05Z07:00"},
{"tag": "Usage", "type": "*variable", "value": "~Usage"},
{"tag": "Cost", "type": "*variable", "value": "~Cost","rounding_decimals":5},
{"tag": "OriginID", "type": "*composed", "value": "~OriginID"},
{"tag": "OrderID", "type": "*composed", "value": "~OrderID"},
{"tag": "RequestType", "type": "*composed", "value": "~RequestType"},
{"tag": "Account", "type": "*composed", "value": "~Account"},
{"tag": "Destination", "type": "*composed", "value": "~Destination"},
{"tag": "SetupTime", "type": "*composed", "value": "~SetupTime", "layout": "2006-01-02T15:04:05Z07:00"},
{"tag": "AnswerTime", "type": "*composed", "value": "~AnswerTime", "layout": "2006-01-02T15:04:05Z07:00"},
{"tag": "Usage", "type": "*composed", "value": "~Usage"},
{"tag": "Cost", "type": "*composed", "value": "~Cost","rounding_decimals":5},
],
},
{