mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Tests for CDR exporting mask destination, CachedDestHasPrefix not skipping cache
This commit is contained in:
@@ -73,12 +73,12 @@ func NewCfgCdrFieldFromCdrFieldJsonCfg(jsnCfgFld *CdrFieldJsonCfg) (*CfgCdrField
|
||||
if jsnCfgFld.Timezone != nil {
|
||||
cfgFld.Timezone = *jsnCfgFld.Timezone
|
||||
}
|
||||
if jsnCfgFld.Mask_length != nil {
|
||||
cfgFld.MaskLen = *jsnCfgFld.Mask_length
|
||||
}
|
||||
if jsnCfgFld.Mask_destinationd_id != nil {
|
||||
cfgFld.MaskDestID = *jsnCfgFld.Mask_destinationd_id
|
||||
}
|
||||
if jsnCfgFld.Mask_length != nil {
|
||||
cfgFld.MaskLen = *jsnCfgFld.Mask_length
|
||||
}
|
||||
return cfgFld, nil
|
||||
}
|
||||
|
||||
@@ -98,8 +98,8 @@ type CfgCdrField struct {
|
||||
CostShiftDigits int // Used in exports
|
||||
RoundingDecimals int
|
||||
Timezone string
|
||||
MaskLen int
|
||||
MaskDestID string
|
||||
MaskLen int
|
||||
}
|
||||
|
||||
func CfgCdrFieldsFromCdrFieldsJsonCfg(jsnCfgFldss []*CdrFieldJsonCfg) ([]*CfgCdrField, error) {
|
||||
|
||||
@@ -505,7 +505,7 @@ func TestCDRParseFieldValue(t *testing.T) {
|
||||
func TestCDRAsExportRecord(t *testing.T) {
|
||||
cdr := &CDR{CGRID: utils.Sha1("dsafdsaf", time.Unix(1383813745, 0).UTC().String()), ToR: utils.VOICE, OriginID: "dsafdsaf", OriginHost: "192.168.1.1",
|
||||
RequestType: utils.META_RATED, Direction: "*out", Tenant: "cgrates.org",
|
||||
Category: "call", Account: "1001", Subject: "1001", Destination: "1002", SetupTime: time.Unix(1383813745, 0).UTC(), AnswerTime: time.Unix(1383813746, 0).UTC(),
|
||||
Category: "call", Account: "1001", Subject: "1001", Destination: "+4986517174963", SetupTime: time.Unix(1383813745, 0).UTC(), AnswerTime: time.Unix(1383813746, 0).UTC(),
|
||||
Usage: time.Duration(10) * time.Second, RunID: utils.DEFAULT_RUNID, Cost: 1.01,
|
||||
ExtraFields: map[string]string{"stop_time": "2014-06-11 19:19:00 +0000 UTC", "fieldextr2": "valextr2"}}
|
||||
|
||||
@@ -516,6 +516,23 @@ func TestCDRAsExportRecord(t *testing.T) {
|
||||
} else if expRecord[0] != cdr.Destination {
|
||||
t.Errorf("Expecting: %s, received: %s", cdr.Destination, expRecord[0])
|
||||
}
|
||||
if err := ratingStorage.SetReverseDestination(&Destination{Id: "MASKED_DESTINATIONS", Prefixes: []string{"+4986517174963"}},
|
||||
utils.NonTransactional); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
cfgCdrFld = &config.CfgCdrField{Tag: "destination", Type: utils.META_COMPOSED, FieldId: utils.DESTINATION, Value: val, MaskDestID: "MASKED_DESTINATIONS", MaskLen: 3}
|
||||
eDst := "+4986517174***"
|
||||
if expRecord, err := cdr.AsExportRecord([]*config.CfgCdrField{cfgCdrFld}, false, nil, 0); err != nil {
|
||||
t.Error(err)
|
||||
} else if expRecord[0] != eDst {
|
||||
t.Errorf("Expecting: %s, received: %s", eDst, expRecord[0])
|
||||
}
|
||||
cfgCdrFld = &config.CfgCdrField{Tag: "MaskedDest", Type: utils.MetaMaskedDestination, Value: val, MaskDestID: "MASKED_DESTINATIONS"}
|
||||
if expRecord, err := cdr.AsExportRecord([]*config.CfgCdrField{cfgCdrFld}, false, nil, 0); err != nil {
|
||||
t.Error(err)
|
||||
} else if expRecord[0] != "1" {
|
||||
t.Errorf("Expecting: %s, received: %s", "1", expRecord[0])
|
||||
}
|
||||
fltr, _ := utils.ParseRSRFields("Tenant(itsyscom.com)", utils.INFIELD_SEP)
|
||||
cfgCdrFld = &config.CfgCdrField{Tag: "destination", Type: utils.META_COMPOSED, FieldId: utils.DESTINATION, Value: val, FieldFilter: fltr, Timezone: "UTC"}
|
||||
if _, err := cdr.AsExportRecord([]*config.CfgCdrField{cfgCdrFld}, false, nil, 0); err == nil {
|
||||
|
||||
@@ -78,7 +78,7 @@ func (d *Destination) GetHistoryRecord(deleted bool) history.Record {
|
||||
|
||||
// Reverse search in cache to see if prefix belongs to destination id
|
||||
func CachedDestHasPrefix(destId, prefix string) bool {
|
||||
if cached, err := ratingStorage.GetReverseDestination(prefix, true, utils.NonTransactional); err == nil {
|
||||
if cached, err := ratingStorage.GetReverseDestination(prefix, false, utils.NonTransactional); err == nil {
|
||||
return utils.IsSliceMember(cached, destId)
|
||||
}
|
||||
return false
|
||||
|
||||
@@ -470,11 +470,11 @@ func (ms *MapStorage) GetReverseDestination(prefix string, skipCache bool, trans
|
||||
return nil, utils.ErrNotFound
|
||||
}
|
||||
}
|
||||
if idMap, ok := ms.dict.smembers(prefix, ms.ms); ok {
|
||||
ids = idMap.Slice()
|
||||
} else {
|
||||
if idMap, ok := ms.dict.smembers(prefix, ms.ms); !ok {
|
||||
cache.Set(prefix, nil, cacheCommit(transactionID), transactionID)
|
||||
return nil, utils.ErrNotFound
|
||||
} else {
|
||||
ids = idMap.Slice()
|
||||
}
|
||||
cache.Set(prefix, ids, cacheCommit(transactionID), transactionID)
|
||||
return
|
||||
@@ -483,7 +483,6 @@ func (ms *MapStorage) GetReverseDestination(prefix string, skipCache bool, trans
|
||||
func (ms *MapStorage) SetReverseDestination(dest *Destination, transactionID string) (err error) {
|
||||
for _, p := range dest.Prefixes {
|
||||
key := utils.REVERSE_DESTINATION_PREFIX + p
|
||||
|
||||
ms.mu.Lock()
|
||||
ms.dict.sadd(key, dest.Id, ms.ms)
|
||||
ms.mu.Unlock()
|
||||
|
||||
Reference in New Issue
Block a user