From ff9ffb6e25f26621b21837190d9bc8fb563b1686 Mon Sep 17 00:00:00 2001 From: TeoV Date: Fri, 5 Apr 2019 14:16:55 +0300 Subject: [PATCH] Add integration test in migrator for Attributes (v3 to Current) --- migrator/attributes.go | 2 +- migrator/attributes_it_test.go | 83 ++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+), 1 deletion(-) diff --git a/migrator/attributes.go b/migrator/attributes.go index 35604728a..f8f0b2624 100644 --- a/migrator/attributes.go +++ b/migrator/attributes.go @@ -218,7 +218,7 @@ func (m *Migrator) migrateAttributeProfile() (err error) { case 2: return m.migrateV2Attributes() case 3: - return m.migrateV2Attributes() + return m.migrateV3Attributes() } return } diff --git a/migrator/attributes_it_test.go b/migrator/attributes_it_test.go index e798bdf4a..41f3724b0 100755 --- a/migrator/attributes_it_test.go +++ b/migrator/attributes_it_test.go @@ -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)) + } +}