Remove ActivationInterval for Attributes

This commit is contained in:
ionutboangiu
2021-05-12 13:48:17 +03:00
committed by Dan Christian Bogos
parent 3d17faaaa9
commit e0d77a4b8a
5 changed files with 132 additions and 86 deletions

View File

@@ -1557,7 +1557,7 @@ func TestModelAsTPAttribute2(t *testing.T) {
Tenant: "cgrates.org",
ID: "ALS1",
Contexts: "con1",
FilterIDs: "FLTR_ACNT_dan;FLTR_DST_DE;*ai:~*req.AnswerTime:2014-07-14T14:35:00Z;2014-07-14T14:36:00Z",
FilterIDs: "FLTR_ACNT_dan;FLTR_DST_DE;*ai:~*req.AnswerTime:2014-07-14T14:35:00Z|2014-07-14T14:36:00Z",
Path: utils.MetaReq + utils.NestingSep + "FL1",
Value: "Al1",
Weight: 20,
@@ -1568,7 +1568,7 @@ func TestModelAsTPAttribute2(t *testing.T) {
Tenant: "cgrates.org",
ID: "ALS1",
Contexts: []string{"con1"},
FilterIDs: []string{"*ai:~*req.AnswerTime:2014-07-14T14:35:00Z;2014-07-14T14:36:00Z", "FLTR_ACNT_dan", "FLTR_DST_DE"},
FilterIDs: []string{"*ai:~*req.AnswerTime:2014-07-14T14:35:00Z|2014-07-14T14:36:00Z", "FLTR_ACNT_dan", "FLTR_DST_DE"},
Attributes: []*utils.TPAttribute{
{
FilterIDs: []string{},

View File

@@ -485,7 +485,7 @@ func TestAttributeProcessWithMultipleRuns1(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.InitialField:InitialValue", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.InitialField:InitialValue", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field1",
@@ -498,7 +498,7 @@ func TestAttributeProcessWithMultipleRuns1(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_2",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field2",
@@ -511,7 +511,7 @@ func TestAttributeProcessWithMultipleRuns1(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_3",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.Field2:Value2", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.Field2:Value2", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field3",
@@ -589,7 +589,7 @@ func TestAttributeProcessWithMultipleRuns2(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.InitialField:InitialValue", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.InitialField:InitialValue", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field1",
@@ -602,7 +602,7 @@ func TestAttributeProcessWithMultipleRuns2(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_2",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field2",
@@ -615,7 +615,7 @@ func TestAttributeProcessWithMultipleRuns2(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_3",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.NotFound:NotFound", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.NotFound:NotFound", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field3",
@@ -689,7 +689,7 @@ func TestAttributeProcessWithMultipleRuns3(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.InitialField:InitialValue", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.InitialField:InitialValue", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field1",
@@ -702,7 +702,7 @@ func TestAttributeProcessWithMultipleRuns3(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_2",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field2",
@@ -715,7 +715,7 @@ func TestAttributeProcessWithMultipleRuns3(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_3",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.Field2:Value2", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.Field2:Value2", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field3",
@@ -789,7 +789,7 @@ func TestAttributeProcessWithMultipleRuns4(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.InitialField:InitialValue", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.InitialField:InitialValue", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field1",
@@ -802,7 +802,7 @@ func TestAttributeProcessWithMultipleRuns4(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_2",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field2",
@@ -875,7 +875,7 @@ func TestAttributeMultipleProcessWithBlocker(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.InitialField:InitialValue", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.InitialField:InitialValue", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field1",
@@ -888,7 +888,7 @@ func TestAttributeMultipleProcessWithBlocker(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_2",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field2",
@@ -902,7 +902,7 @@ func TestAttributeMultipleProcessWithBlocker(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_3",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.Field2:Value2", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.Field2:Value2", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field3",
@@ -977,7 +977,7 @@ func TestAttributeMultipleProcessWithBlocker2(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.InitialField:InitialValue", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.InitialField:InitialValue", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field1",
@@ -991,7 +991,7 @@ func TestAttributeMultipleProcessWithBlocker2(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_2",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field2",
@@ -1004,7 +1004,7 @@ func TestAttributeMultipleProcessWithBlocker2(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_3",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.Field2:Value2", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.Field2:Value2", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field3",
@@ -1076,7 +1076,7 @@ func TestAttributeProcessValue(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field2",
@@ -1221,7 +1221,7 @@ func TestAttributeProcessEventConstant(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field2",
@@ -1289,7 +1289,7 @@ func TestAttributeProcessEventVariable(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field2",
@@ -1364,7 +1364,7 @@ func TestAttributeProcessEventComposed(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field2",
@@ -1444,7 +1444,7 @@ func TestAttributeProcessEventSum(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field2",
@@ -1516,7 +1516,7 @@ func TestAttributeProcessEventUsageDifference(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field2",
@@ -1590,7 +1590,7 @@ func TestAttributeProcessEventValueExponent(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field2",
@@ -1669,7 +1669,7 @@ func BenchmarkAttributeProcessEventConstant(b *testing.B) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field2",
@@ -1725,7 +1725,7 @@ func BenchmarkAttributeProcessEventVariable(b *testing.B) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*string:~*req.Field1:Value1", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field2",
@@ -2673,7 +2673,7 @@ func TestAttributeMultipleProcessWithFiltersExists(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_1_EXISTS",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*exists:~*req.InitialField:", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*exists:~*req.InitialField:", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field1",
@@ -2686,7 +2686,7 @@ func TestAttributeMultipleProcessWithFiltersExists(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_2_EXISTS",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*exists:~*req.Field1:", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*exists:~*req.Field1:", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field2",
@@ -2761,7 +2761,7 @@ func TestAttributeMultipleProcessWithFiltersNotEmpty(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_1_NOTEMPTY",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*notempty:~*req.InitialField:", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*notempty:~*req.InitialField:", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field1",
@@ -2774,7 +2774,7 @@ func TestAttributeMultipleProcessWithFiltersNotEmpty(t *testing.T) {
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_2_NOTEMPTY",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*notempty:~*req.Field1:", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z"},
FilterIDs: []string{"*notempty:~*req.Field1:", "*ai:*now:2014-07-14T14:25:00Z"},
Attributes: []*Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "Field2",

View File

@@ -2871,40 +2871,6 @@ true
}
}
func TestLoaderAttributesAsStructErrConversion(t *testing.T) {
data := engine.NewInternalDB(nil, nil, true)
ldr := &Loader{
ldrID: "TestLoaderAttributesAsStructErrConversion",
bufLoaderData: map[string][]LoaderData{},
dm: engine.NewDataManager(data, config.CgrConfig().CacheCfg(), nil),
timezone: "UTC",
}
ldr.dataTpls = map[string][]*config.FCTemplate{
utils.MetaAttributes: {
{Tag: "ActivationInterval",
Path: "ActivationInterval",
Type: utils.MetaComposed,
Value: config.NewRSRParsersMustCompile("~*req.0", utils.InfieldSep)},
},
}
attributeCsv := `
#ActivationInterval
* * * * * *
`
rdr := io.NopCloser(strings.NewReader(attributeCsv))
csvRdr := csv.NewReader(rdr)
csvRdr.Comment = '#'
ldr.rdrs = map[string]map[string]*openedCSVFile{
utils.MetaAttributes: {
utils.AttributesCsv: &openedCSVFile{fileName: utils.AttributesCsv,
rdr: rdr, csvRdr: csvRdr}},
}
expectedErr := "Unsupported time format"
if err := ldr.processContent(utils.MetaAttributes, utils.EmptyString); err == nil || err.Error() != expectedErr {
t.Errorf("Expected %+v, received %+v", expectedErr, err)
}
}
func TestLoadResourcesAsStructErrType(t *testing.T) {
data := engine.NewInternalDB(nil, nil, true)
ldr := &Loader{

View File

@@ -316,7 +316,7 @@ func (v2AttrPrf v2AttributeProfile) AsAttributeProfile() (attrPrf *v3AttributePr
for _, attr := range v2AttrPrf.Attributes {
filterIDs := make([]string, 0)
//append false translate to if FieldName exist do stuff
if attr.Append == false {
if !attr.Append {
filterIDs = append(filterIDs, utils.MetaExists+utils.InInFieldSep+attr.FieldName+utils.InInFieldSep)
}
//Initial not *any translate to if value of fieldName = initial do stuff
@@ -396,11 +396,12 @@ func (v3AttrPrf v3AttributeProfile) AsAttributeProfile() (attrPrf *v4AttributePr
func (v4AttrPrf v4AttributeProfile) AsAttributeProfile() (attrPrf *v6AttributeProfile, err error) {
attrPrf = &v6AttributeProfile{
Tenant: v4AttrPrf.Tenant,
ID: v4AttrPrf.ID,
Contexts: v4AttrPrf.Contexts,
FilterIDs: v4AttrPrf.FilterIDs,
Weight: v4AttrPrf.Weight,
Tenant: v4AttrPrf.Tenant,
ID: v4AttrPrf.ID,
Contexts: v4AttrPrf.Contexts,
FilterIDs: v4AttrPrf.FilterIDs,
Weight: v4AttrPrf.Weight,
ActivationInterval: v4AttrPrf.ActivationInterval,
}
for _, attr := range v4AttrPrf.Attributes { // ToDo:redo this
val := attr.Value.GetRule(utils.InfieldSep)
@@ -536,16 +537,17 @@ func (m *Migrator) migrateV6ToV7AttributeProfile(v5Attr *v6AttributeProfile) (_
}
if v5Attr.ActivationInterval != nil &&
(v5Attr.ActivationInterval.ActivationTime.IsZero() ||
v5Attr.ActivationInterval.ExpiryTime.IsZero()) {
(!v5Attr.ActivationInterval.ActivationTime.IsZero() ||
!v5Attr.ActivationInterval.ExpiryTime.IsZero()) {
fltr := "*ai:~*req.AnswerTime:"
if v5Attr.ActivationInterval.ActivationTime.IsZero() {
if !v5Attr.ActivationInterval.ActivationTime.IsZero() {
fltr += v5Attr.ActivationInterval.ActivationTime.Format(time.RFC3339)
}
fltr += ";"
if v5Attr.ActivationInterval.ExpiryTime.IsZero() {
fltr += "|"
if !v5Attr.ActivationInterval.ExpiryTime.IsZero() {
fltr += v5Attr.ActivationInterval.ExpiryTime.Format(time.RFC3339)
}
v7Attr.FilterIDs = append(v7Attr.FilterIDs, fltr)
}
return v7Attr, nil

View File

@@ -233,14 +233,17 @@ func TestV4AttributeProfileAsAttributeProfile(t *testing.T) {
},
Weight: 20,
}
expTimeStr := cloneExpTime.Format("2006-01-02T15:04:05Z")
attrPrf := &engine.AttributeProfile{
attrPrf := &v6AttributeProfile{
Tenant: "cgrates.org",
ID: "attributeprofile1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"filter1", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z;" + expTimeStr},
Attributes: []*engine.Attribute{
&engine.Attribute{
FilterIDs: []string{"filter1"},
ActivationInterval: &utils.ActivationInterval{
ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
ExpiryTime: cloneExpTime,
},
Attributes: []*v6Attribute{
&v6Attribute{
Path: utils.MetaReq + utils.NestingSep + "FL1",
Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*req.Category:s/(.*)/${1}_UK_Mobile_Vodafone_GBRVF/", utils.InfieldSep),
@@ -421,13 +424,17 @@ func TestAsAttributeProfileV5(t *testing.T) {
Weight: 20,
}
eOut := &engine.AttributeProfile{
eOut := &v6AttributeProfile{
Tenant: "cgrates.org",
ID: "attributeprofile1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"filter1", "*ai:~*req.AnswerTime:2014-07-14T14:25:00Z;2014-04-18T14:26:00Z"},
Attributes: []*engine.Attribute{
&engine.Attribute{
FilterIDs: []string{"filter1"},
ActivationInterval: &utils.ActivationInterval{
ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
ExpiryTime: time.Date(2020, 4, 18, 14, 25, 0, 0, time.UTC),
},
Attributes: []*v6Attribute{
&v6Attribute{
FilterIDs: []string{"*string:FL1:In1"},
Path: utils.MetaReq + utils.NestingSep + "FL1",
Type: utils.MetaVariable,
@@ -495,3 +502,74 @@ func TestAsAttributeProfileV1To4(t *testing.T) {
}
}
func TestAttributesMigrateV6ToV7AttributeProfileNilPrf(t *testing.T) {
var v6AttrPrf *v6AttributeProfile
cfg := config.NewDefaultCGRConfig()
dataDB := engine.NewInternalDB(nil, nil, true)
dm := engine.NewDataManager(dataDB, cfg.CacheCfg(), nil)
m := &Migrator{
dmIN: newInternalMigrator(dm),
}
experr := utils.ErrNotImplemented
v7AttrPrf, err := m.migrateV6ToV7AttributeProfile(v6AttrPrf)
if err == nil || err != experr {
t.Fatalf("\nexpected: <%+v>, \nreceived: <%+v>", experr, err)
}
if v7AttrPrf != nil {
t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", nil, v7AttrPrf)
}
}
func TestAttributesMigrateV6ToV7AttributeProfile2(t *testing.T) {
v6Attr := &v6AttributeProfile{
Tenant: "cgrates.org",
ID: "ATTR_1001_SESSIONAUTH",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"filter1"},
ActivationInterval: &utils.ActivationInterval{
ActivationTime: time.Date(2014, 7, 14, 14, 35, 0, 0, time.UTC),
ExpiryTime: time.Date(2014, 7, 14, 14, 36, 0, 0, time.UTC),
},
Attributes: []*v6Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "FL1",
Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*req.Category:s/(.*)/${1}_UK_Mobile_Vodafone_GBRVF/", utils.InfieldSep),
},
},
Weight: 20,
}
cfg := config.NewDefaultCGRConfig()
dataDB := engine.NewInternalDB(nil, nil, true)
dm := engine.NewDataManager(dataDB, cfg.CacheCfg(), nil)
m := &Migrator{
dmIN: newInternalMigrator(dm),
}
exp := &engine.AttributeProfile{
Tenant: "cgrates.org",
ID: "ATTR_1001_SESSIONAUTH",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"filter1", "*ai:~*req.AnswerTime:2014-07-14T14:35:00Z|2014-07-14T14:36:00Z"},
Attributes: []*engine.Attribute{
{
Path: utils.MetaReq + utils.NestingSep + "FL1",
Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("~*req.Category:s/(.*)/${1}_UK_Mobile_Vodafone_GBRVF/", utils.InfieldSep),
},
},
Weight: 20,
}
v7Attr, err := m.migrateV6ToV7AttributeProfile(v6Attr)
if err != nil {
t.Fatalf("\nexpected: <%+v>, \nreceived: <%+v>", nil, err)
}
if !reflect.DeepEqual(v7Attr, exp) {
t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", utils.ToJSON(exp), utils.ToJSON(v7Attr))
}
}