Remove ActivationInterval for Attributes (tests failing)

This commit is contained in:
ionutboangiu
2021-05-12 11:08:37 +03:00
committed by Dan Christian Bogos
parent 5b62682506
commit 236c61ff1f
9 changed files with 42 additions and 122 deletions

View File

@@ -534,9 +534,6 @@ func TestLoadAttributeProfiles(t *testing.T) {
ID: "ALS1",
Contexts: []string{"con1", "con2", "con3"},
FilterIDs: []string{"*string:~*req.Account:1001"},
ActivationInterval: &utils.TPActivationInterval{
ActivationTime: "2014-07-29T15:00:00Z",
},
Attributes: []*utils.TPAttribute{
{
FilterIDs: []string{"*string:~*req.Field1:Initial"},
@@ -566,8 +563,6 @@ func TestLoadAttributeProfiles(t *testing.T) {
t.Errorf("Expecting: %+v, received: %+v", eAttrProfiles[resKey].Contexts, csvr.attributeProfiles[resKey].Contexts)
} else if !reflect.DeepEqual(eAttrProfiles[resKey].FilterIDs, csvr.attributeProfiles[resKey].FilterIDs) {
t.Errorf("Expecting: %+v, received: %+v", eAttrProfiles[resKey].FilterIDs, csvr.attributeProfiles[resKey].FilterIDs)
} else if !reflect.DeepEqual(eAttrProfiles[resKey].ActivationInterval.ActivationTime, csvr.attributeProfiles[resKey].ActivationInterval.ActivationTime) {
t.Errorf("Expecting: %+v, received: %+v", eAttrProfiles[resKey].ActivationInterval, csvr.attributeProfiles[resKey].ActivationInterval)
} else if !reflect.DeepEqual(eAttrProfiles[resKey].Attributes, csvr.attributeProfiles[resKey].Attributes) {
t.Errorf("Expecting: %+v, received: %+v", eAttrProfiles[resKey].Attributes, csvr.attributeProfiles[resKey].Attributes)
} else if !reflect.DeepEqual(eAttrProfiles[resKey].Blocker, csvr.attributeProfiles[resKey].Blocker) {

View File

@@ -1453,14 +1453,13 @@ func APItoAttributeProfile(tpAttr *utils.TPAttributeProfile, timezone string) (a
func AttributeProfileToAPI(attrPrf *AttributeProfile) (tpAttr *utils.TPAttributeProfile) {
tpAttr = &utils.TPAttributeProfile{
Tenant: attrPrf.Tenant,
ID: attrPrf.ID,
FilterIDs: make([]string, len(attrPrf.FilterIDs)),
Contexts: make([]string, len(attrPrf.Contexts)),
Attributes: make([]*utils.TPAttribute, len(attrPrf.Attributes)),
ActivationInterval: new(utils.TPActivationInterval),
Blocker: attrPrf.Blocker,
Weight: attrPrf.Weight,
Tenant: attrPrf.Tenant,
ID: attrPrf.ID,
FilterIDs: make([]string, len(attrPrf.FilterIDs)),
Contexts: make([]string, len(attrPrf.Contexts)),
Attributes: make([]*utils.TPAttribute, len(attrPrf.Attributes)),
Blocker: attrPrf.Blocker,
Weight: attrPrf.Weight,
}
for i, fli := range attrPrf.FilterIDs {
tpAttr.FilterIDs[i] = fli

View File

@@ -1359,11 +1359,7 @@ func TestAPItoAttributeProfile(t *testing.T) {
Tenant: "cgrates.org",
ID: "ALS1",
Contexts: []string{"con1"},
FilterIDs: []string{"FLTR_ACNT_dan", "FLTR_DST_DE"},
ActivationInterval: &utils.TPActivationInterval{
ActivationTime: "2014-07-14T14:35:00Z",
ExpiryTime: "",
},
FilterIDs: []string{"FLTR_ACNT_dan", "FLTR_DST_DE", "*ai:~*req.AnswerTime:2014-07-14T14:35:00Z"},
Attributes: []*utils.TPAttribute{
{
Path: utils.MetaReq + utils.NestingSep + "FL1",
@@ -1398,11 +1394,7 @@ func TestAttributeProfileToAPI(t *testing.T) {
Tenant: "cgrates.org",
ID: "ALS1",
Contexts: []string{"con1"},
FilterIDs: []string{"FLTR_ACNT_dan", "FLTR_DST_DE"},
ActivationInterval: &utils.TPActivationInterval{
ActivationTime: "2014-07-14T14:35:00Z",
ExpiryTime: "2014-07-15T14:35:00Z",
},
FilterIDs: []string{"FLTR_ACNT_dan", "FLTR_DST_DE", "*ai:~*req.AnswerTime:2014-07-14T14:35:00Z;2014-07-15T14:36:00Z"},
Attributes: []*utils.TPAttribute{
{
Path: utils.MetaReq + utils.NestingSep + "FL1",
@@ -1435,11 +1427,7 @@ func TestAttributeProfileToAPI2(t *testing.T) {
Tenant: "cgrates.org",
ID: "ALS1",
Contexts: []string{"con1"},
FilterIDs: []string{"FLTR_ACNT_dan", "FLTR_DST_DE"},
ActivationInterval: &utils.TPActivationInterval{
ActivationTime: "2014-07-14T14:35:00Z",
ExpiryTime: "",
},
FilterIDs: []string{"FLTR_ACNT_dan", "FLTR_DST_DE", "*ai:~*req.AnswerTime:2014-07-14T14:35:00Z"},
Attributes: []*utils.TPAttribute{
{
Path: utils.MetaReq + utils.NestingSep + "FL1",
@@ -1480,11 +1468,7 @@ func TestAPItoModelTPAttribute(t *testing.T) {
Tenant: "cgrates.org",
ID: "ALS1",
Contexts: []string{"con1", "con2"},
FilterIDs: []string{"FLTR_ACNT_dan", "FLTR_DST_DE"},
ActivationInterval: &utils.TPActivationInterval{
ActivationTime: "2014-07-14T14:35:00Z",
ExpiryTime: "2014-07-15T14:35:00Z",
},
FilterIDs: []string{"FLTR_ACNT_dan", "FLTR_DST_DE", "*ai:~*req.AnswerTime:2014-07-14T14:35:00Z;2014-07-14T14:36:00Z"},
Attributes: []*utils.TPAttribute{
{FilterIDs: []string{"filter_id1", "filter_id2"},
Path: utils.MetaReq + utils.NestingSep + "FL1",
@@ -1499,7 +1483,7 @@ func TestAPItoModelTPAttribute(t *testing.T) {
Tenant: "cgrates.org",
ID: "ALS1",
Contexts: "con1;con2",
FilterIDs: "FLTR_ACNT_dan;FLTR_DST_DE",
FilterIDs: "FLTR_ACNT_dan;FLTR_DST_DE;*ai:~*req.AnswerTime:2014-07-14T14:35:00Z;2014-07-14T14:36:00Z",
AttributeFilterIDs: "filter_id1;filter_id2",
Path: utils.MetaReq + utils.NestingSep + "FL1",
Value: "Al1",
@@ -1518,11 +1502,7 @@ func TestCsvDumpForAttributeModels(t *testing.T) {
Tenant: "cgrates.org",
ID: "ALS1",
Contexts: []string{"con1"},
FilterIDs: []string{"FLTR_ACNT_dan"},
ActivationInterval: &utils.TPActivationInterval{
ActivationTime: "2014-07-14T14:35:00Z",
ExpiryTime: "",
},
FilterIDs: []string{"FLTR_ACNT_dan", "*ai:~*req.AnswerTime:2014-07-14T14:35:00Z"},
Attributes: []*utils.TPAttribute{
{
Path: utils.MetaReq + utils.NestingSep + "FL1",
@@ -1541,7 +1521,7 @@ func TestCsvDumpForAttributeModels(t *testing.T) {
Tenant: "cgrates.org",
ID: "ALS1",
Contexts: "con1",
FilterIDs: "FLTR_ACNT_dan",
FilterIDs: "FLTR_ACNT_dan;*ai:~*req.AnswerTime:2014-07-14T14:35:00Z",
Path: utils.MetaReq + utils.NestingSep + "FL1",
Value: "Al1",
Weight: 20,
@@ -1558,10 +1538,10 @@ func TestCsvDumpForAttributeModels(t *testing.T) {
if !reflect.DeepEqual(expected, rcv) {
t.Errorf("Expecting : %+v,\n received: %+v", utils.ToJSON(expected), utils.ToJSON(rcv))
}
expRecord := []string{"cgrates.org", "ALS1", "con1", "FLTR_ACNT_dan", "2014-07-14T14:35:00Z", "", "*req.FL1", "", "Al1", "false", "20"}
expRecord := []string{"cgrates.org", "ALS1", "con1", "FLTR_ACNT_dan;*ai:~*req.AnswerTime:2014-07-14T14:35:00Z", "20", "", "*req.FL1", "", "Al1", "false"}
for i, model := range rcv {
if i == 1 {
expRecord = []string{"cgrates.org", "ALS1", "", "", "", "", "*req.FL2", "", "Al2", "false", "0"}
expRecord = []string{"cgrates.org", "ALS1", "", "", "0", "", "*req.FL2", "", "Al2", "false"}
}
if csvRecordRcv, _ := CsvDump(model); !reflect.DeepEqual(expRecord, csvRecordRcv) {
t.Errorf("Expecting : %+v, received: %+v", utils.ToJSON(expRecord), utils.ToJSON(csvRecordRcv))
@@ -1577,7 +1557,7 @@ func TestModelAsTPAttribute2(t *testing.T) {
Tenant: "cgrates.org",
ID: "ALS1",
Contexts: "con1",
FilterIDs: "FLTR_ACNT_dan;FLTR_DST_DE",
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,
@@ -1588,11 +1568,7 @@ func TestModelAsTPAttribute2(t *testing.T) {
Tenant: "cgrates.org",
ID: "ALS1",
Contexts: []string{"con1"},
FilterIDs: []string{"FLTR_ACNT_dan", "FLTR_DST_DE"},
ActivationInterval: &utils.TPActivationInterval{
ActivationTime: "2014-07-14T14:35:00Z",
ExpiryTime: "2014-07-15T14:35:00Z",
},
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{},
@@ -1607,11 +1583,7 @@ func TestModelAsTPAttribute2(t *testing.T) {
Tenant: "cgrates.org",
ID: "ALS1",
Contexts: []string{"con1"},
FilterIDs: []string{"FLTR_DST_DE", "FLTR_ACNT_dan"},
ActivationInterval: &utils.TPActivationInterval{
ActivationTime: "2014-07-14T14:35:00Z",
ExpiryTime: "",
},
FilterIDs: []string{"*ai:~*req.AnswerTime:2014-07-14T14:35:00Z", "FLTR_ACNT_dan", "FLTR_DST_DE"},
Attributes: []*utils.TPAttribute{
{
FilterIDs: []string{},
@@ -1635,7 +1607,7 @@ func TestModelAsTPAttribute(t *testing.T) {
Tenant: "cgrates.org",
ID: "ALS1",
Contexts: "con1",
FilterIDs: "FLTR_ACNT_dan;FLTR_DST_DE",
FilterIDs: "FLTR_ACNT_dan;FLTR_DST_DE;*ai:~*req.AnswerTime:2014-07-14T14:35:00Z",
Path: utils.MetaReq + utils.NestingSep + "FL1",
Value: "Al1",
Weight: 20,
@@ -1646,11 +1618,7 @@ func TestModelAsTPAttribute(t *testing.T) {
Tenant: "cgrates.org",
ID: "ALS1",
Contexts: []string{"con1"},
FilterIDs: []string{"FLTR_ACNT_dan", "FLTR_DST_DE"},
ActivationInterval: &utils.TPActivationInterval{
ActivationTime: "2014-07-14T14:35:00Z",
ExpiryTime: "",
},
FilterIDs: []string{"*ai:~*req.AnswerTime:2014-07-14T14:35:00Z", "FLTR_ACNT_dan", "FLTR_DST_DE"},
Attributes: []*utils.TPAttribute{
{
FilterIDs: []string{},
@@ -1665,11 +1633,7 @@ func TestModelAsTPAttribute(t *testing.T) {
Tenant: "cgrates.org",
ID: "ALS1",
Contexts: []string{"con1"},
FilterIDs: []string{"FLTR_DST_DE", "FLTR_ACNT_dan"},
ActivationInterval: &utils.TPActivationInterval{
ActivationTime: "2014-07-14T14:35:00Z",
ExpiryTime: "",
},
FilterIDs: []string{"*ai:~*req.AnswerTime:2014-07-14T14:35:00Z", "FLTR_DST_DE", "FLTR_ACNT_dan"},
Attributes: []*utils.TPAttribute{
{
FilterIDs: []string{},
@@ -4547,11 +4511,7 @@ func TestAPItoAttributeProfileError1(t *testing.T) {
Tenant: "cgrates.org",
ID: "ALS1",
Contexts: []string{"con1"},
FilterIDs: []string{"FLTR_ACNT_dan", "FLTR_DST_DE"},
ActivationInterval: &utils.TPActivationInterval{
ActivationTime: "2014-07-14T14:35:00Z",
ExpiryTime: "",
},
FilterIDs: []string{"FLTR_ACNT_dan", "FLTR_DST_DE", "*ai:~*req.AnswerTime:2014-07-14T14:35:00Z"},
Attributes: []*utils.TPAttribute{
{
Path: "",
@@ -4574,11 +4534,7 @@ func TestAPItoAttributeProfileError2(t *testing.T) {
Tenant: "cgrates.org",
ID: "ALS1",
Contexts: []string{"con1"},
FilterIDs: []string{"FLTR_ACNT_dan", "FLTR_DST_DE"},
ActivationInterval: &utils.TPActivationInterval{
ActivationTime: "2014-07-14T14:35:00Z",
ExpiryTime: "",
},
FilterIDs: []string{"FLTR_ACNT_dan", "FLTR_DST_DE", "*ai:~*req.AnswerTime:2014-07-14T14:35:00Z"},
Attributes: []*utils.TPAttribute{
{
Path: utils.MetaReq + utils.NestingSep + "FL1",
@@ -4596,32 +4552,6 @@ func TestAPItoAttributeProfileError2(t *testing.T) {
}
func TestAPItoAttributeProfileError3(t *testing.T) {
tpAlsPrf := &utils.TPAttributeProfile{
TPid: "TP1",
Tenant: "cgrates.org",
ID: "ALS1",
Contexts: []string{"con1"},
FilterIDs: []string{"FLTR_ACNT_dan", "FLTR_DST_DE"},
ActivationInterval: &utils.TPActivationInterval{
ActivationTime: "cat",
ExpiryTime: "",
},
Attributes: []*utils.TPAttribute{
{
Path: utils.MetaReq + utils.NestingSep + "FL1",
Value: "Al1",
},
},
Weight: 20,
}
_, err := APItoAttributeProfile(tpAlsPrf, "UTC")
if err == nil || err.Error() != "Unsupported time format" {
t.Errorf("\nExpecting <Unsupported time format>,\n Received <%+v>", err)
}
}
func TestAPItoModelTPAttributeNoAttributes(t *testing.T) {
testStruct := &utils.TPAttributeProfile{}
var expStruct AttributeMdls = nil

View File

@@ -676,11 +676,8 @@ func TestGetLoadedIdsAttributeProfiles(t *testing.T) {
TPid: testTPID,
Tenant: "cgrates.org",
ID: "ResGroup1",
FilterIDs: []string{"*string:~*req.Account:1001"},
ActivationInterval: &utils.TPActivationInterval{
ActivationTime: "2014-07-29T15:00:00Z",
},
Contexts: []string{"sessions"},
FilterIDs: []string{"*string:~*req.Account:1001", "*ai:~*req.AnswerTime:2014-07-29T15:00:00Z"},
Contexts: []string{"sessions"},
},
},
}

View File

@@ -73,7 +73,7 @@ func TestVersionCompare(t *testing.T) {
func TestCurrentDBVersions(t *testing.T) {
expVersDataDB := Versions{
utils.StatS: 4, utils.Accounts: 3, utils.Actions: 2,
utils.Thresholds: 4, utils.Routes: 2, utils.Attributes: 6,
utils.Thresholds: 4, utils.Routes: 2, utils.Attributes: 7,
utils.Timing: 1, utils.RQF: 5, utils.Resource: 1,
utils.Subscribers: 1, utils.Destinations: 1, utils.ReverseDestinations: 1,
utils.Chargers: 2,

View File

@@ -133,7 +133,7 @@ func (iDBMig *internalMigrator) remV3AttributeProfile(tenant, id string) (err er
func (iDBMig *internalMigrator) getV4AttributeProfile() (v4attrPrf *v4AttributeProfile, err error) {
return nil, utils.ErrNotImplemented
}
func (iDBMig *internalMigrator) getV5AttributeProfile() (v4attrPrf *engine.AttributeProfile, err error) {
func (iDBMig *internalMigrator) getV5AttributeProfile() (v6attrPrf *v6AttributeProfile, err error) {
return nil, utils.ErrNotImplemented
}

View File

@@ -296,7 +296,7 @@ func (v1ms *mongoMigrator) getV4AttributeProfile() (v4attrPrf *v4AttributeProfil
return v4attrPrf, nil
}
func (v1ms *mongoMigrator) getV5AttributeProfile() (v5attrPrf *engine.AttributeProfile, err error) {
func (v1ms *mongoMigrator) getV5AttributeProfile() (v6attrPrf *v6AttributeProfile, err error) {
if v1ms.cursor == nil {
v1ms.cursor, err = v1ms.mgoDB.DB().Collection(v1AttributeProfilesCol).Find(v1ms.mgoDB.GetContext(), bson.D{})
if err != nil {
@@ -308,11 +308,11 @@ func (v1ms *mongoMigrator) getV5AttributeProfile() (v5attrPrf *engine.AttributeP
v1ms.cursor = nil
return nil, utils.ErrNoMoreData
}
v5attrPrf = new(engine.AttributeProfile)
if err := (*v1ms.cursor).Decode(v5attrPrf); err != nil {
v6attrPrf = new(v6AttributeProfile)
if err := (*v1ms.cursor).Decode(v6attrPrf); err != nil {
return nil, err
}
return v5attrPrf, nil
return v6attrPrf, nil
}
//set

View File

@@ -398,7 +398,7 @@ func (v1rs *redisMigrator) getV4AttributeProfile() (v3attrPrf *v4AttributeProfil
return v4attr, nil
}
func (v1rs *redisMigrator) getV5AttributeProfile() (v5attr *engine.AttributeProfile, err error) {
func (v1rs *redisMigrator) getV5AttributeProfile() (v6attr *v6AttributeProfile, err error) {
if v1rs.qryIdx == nil {
v1rs.dataKeys, err = v1rs.rds.GetKeysForPrefix(context.TODO(), utils.AttributeProfilePrefix)
if err != nil {
@@ -413,7 +413,7 @@ func (v1rs *redisMigrator) getV5AttributeProfile() (v5attr *engine.AttributeProf
if err = v1rs.rds.Cmd(&strVal, "GET", v1rs.dataKeys[*v1rs.qryIdx]); err != nil {
return nil, err
}
if err := v1rs.rds.Marshaler().Unmarshal(strVal, &v5attr); err != nil {
if err := v1rs.rds.Marshaler().Unmarshal(strVal, &v6attr); err != nil {
return nil, err
}
*v1rs.qryIdx = *v1rs.qryIdx + 1

View File

@@ -709,15 +709,14 @@ type TPAttribute struct {
// TPAttributeProfile is used in APIs to manage remotely offline AttributeProfile
type TPAttributeProfile struct {
TPid string
Tenant string
ID string
FilterIDs []string
ActivationInterval *TPActivationInterval // Time when this limit becomes active and expires
Contexts []string // bind this TPAttribute to multiple context
Attributes []*TPAttribute
Blocker bool
Weight float64
TPid string
Tenant string
ID string
FilterIDs []string
Contexts []string // bind this TPAttribute to multiple context
Attributes []*TPAttribute
Blocker bool
Weight float64
}
// TPChargerProfile is used in APIs to manage remotely offline ChargerProfile