Add integration test in migrator for Attributes (v3 to Current)

This commit is contained in:
TeoV
2019-04-05 14:16:55 +03:00
committed by Dan Christian Bogos
parent 6e9187754f
commit ff9ffb6e25
2 changed files with 84 additions and 1 deletions

View File

@@ -218,7 +218,7 @@ func (m *Migrator) migrateAttributeProfile() (err error) {
case 2:
return m.migrateV2Attributes()
case 3:
return m.migrateV2Attributes()
return m.migrateV3Attributes()
}
return
}

View File

@@ -47,6 +47,7 @@ var sTestsAttrIT = []func(t *testing.T){
testAttrITMigrateAndMove,
testAttrITFlush,
testAttrITMigrateV2,
testAttrITMigrateV3,
}
func TestAttributeITRedis(t *testing.T) {
@@ -421,3 +422,85 @@ func testAttrITMigrateV2(t *testing.T) {
t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(attrPrf), utils.ToJSON(result))
}
}
func testAttrITMigrateV3(t *testing.T) {
if attrAction != utils.Migrate {
return
}
v3attr := &v3AttributeProfile{
Tenant: "cgrates.org",
ID: "ATTR_1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:Accont:1001"},
ActivationInterval: &utils.ActivationInterval{
ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
ExpiryTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
},
Attributes: []*v3Attribute{
&v3Attribute{
FilterIDs: []string{"*string:FL1:In1"},
FieldName: "FL1",
Substitute: config.NewRSRParsersMustCompile("Al1", true, utils.INFIELD_SEP),
},
},
Weight: 20,
}
attrPrf := &engine.AttributeProfile{
Tenant: "cgrates.org",
ID: "ATTR_1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:Accont:1001"},
ActivationInterval: &utils.ActivationInterval{
ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
ExpiryTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
},
Attributes: []*engine.Attribute{
{
FilterIDs: []string{"*string:FL1:In1"},
FieldName: "FL1",
Type: utils.MetaVariable,
Value: config.NewRSRParsersMustCompile("Al1", true, utils.INFIELD_SEP),
},
},
Weight: 20,
}
err := attrMigrator.dmIN.setV3AttributeProfile(v3attr)
if err != nil {
t.Error("Error when setting v3 AttributeProfile ", err.Error())
}
currentVersion := engine.Versions{utils.Attributes: 3}
err = attrMigrator.dmIN.DataManager().DataDB().SetVersions(currentVersion, false)
if err != nil {
t.Error("Error when setting version for Attributes ", err.Error())
}
if vrs, err := attrMigrator.dmIN.DataManager().DataDB().GetVersions(""); err != nil {
t.Error(err)
} else if vrs[utils.Attributes] != 3 {
t.Errorf("Unexpected version returned: %d", vrs[utils.Attributes])
}
err, _ = attrMigrator.Migrate([]string{utils.MetaAttributes})
if err != nil {
t.Error("Error when migrating Attributes ", err.Error())
}
if vrs, err := attrMigrator.dmOut.DataManager().DataDB().GetVersions(""); err != nil {
t.Error(err)
} else if vrs[utils.Attributes] != 4 {
t.Errorf("Unexpected version returned: %d", vrs[utils.Attributes])
}
result, err := attrMigrator.dmOut.DataManager().GetAttributeProfile("cgrates.org",
"ATTR_1", false, false, utils.NonTransactional)
if err != nil {
t.Fatal("Error when getting Attribute ", err.Error())
}
result.Compile()
attrPrf.Compile()
if !reflect.DeepEqual(result, attrPrf) {
t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(attrPrf), utils.ToJSON(result))
}
}