diff --git a/migrator/accounts.go b/migrator/accounts.go
index 55ed3fc8f..697624542 100755
--- a/migrator/accounts.go
+++ b/migrator/accounts.go
@@ -46,17 +46,16 @@ func (m *Migrator) migrateCurrentAccounts() (err error) {
if err != nil {
return err
}
- if acc != nil {
- if m.dryRun != true {
- if err := m.dmOut.DataManager().DataDB().SetAccount(acc); err != nil {
- return err
- }
- if err := m.dmIN.DataManager().DataDB().RemoveAccount(idg); err != nil {
- return err
- }
- m.stats[utils.Accounts] += 1
- }
+ if acc == nil || m.dryRun {
+ continue
}
+ if err := m.dmOut.DataManager().DataDB().SetAccount(acc); err != nil {
+ return err
+ }
+ if err := m.dmIN.DataManager().DataDB().RemoveAccount(idg); err != nil {
+ return err
+ }
+ m.stats[utils.Accounts] += 1
}
return
}
@@ -71,28 +70,28 @@ func (m *Migrator) migrateV1Accounts() (err error) {
if err == utils.ErrNoMoreData {
break
}
- if v1Acnt != nil {
- acnt := v1Acnt.V1toV3Account()
- if m.dryRun != true {
- if err = m.dmOut.DataManager().DataDB().SetAccount(acnt); err != nil {
- return err
- }
- if err = m.dmIN.remV1Account(v1Acnt.Id); err != nil {
- return err
- }
- m.stats[utils.Accounts] += 1
- }
+ if v1Acnt == nil || m.dryRun {
+ continue
}
+ acnt := v1Acnt.V1toV3Account()
+ if err = m.dmOut.DataManager().DataDB().SetAccount(acnt); err != nil {
+ return err
+ }
+ if err = m.dmIN.remV1Account(v1Acnt.Id); err != nil {
+ return err
+ }
+ m.stats[utils.Accounts] += 1
}
- if m.dryRun != true {
- // All done, update version wtih current one
- vrs := engine.Versions{utils.Accounts: engine.CurrentDataDBVersions()[utils.Accounts]}
- if err = m.dmOut.DataManager().DataDB().SetVersions(vrs, false); err != nil {
- return utils.NewCGRError(utils.Migrator,
- utils.ServerErrorCaps,
- err.Error(),
- fmt.Sprintf("error: <%s> when updating Accounts version into StorDB", err.Error()))
- }
+ if m.dryRun {
+ return
+ }
+ // All done, update version wtih current one
+ vrs := engine.Versions{utils.Accounts: engine.CurrentDataDBVersions()[utils.Accounts]}
+ if err = m.dmOut.DataManager().DataDB().SetVersions(vrs, false); err != nil {
+ return utils.NewCGRError(utils.Migrator,
+ utils.ServerErrorCaps,
+ err.Error(),
+ fmt.Sprintf("error: <%s> when updating Accounts version into StorDB", err.Error()))
}
return
}
@@ -107,28 +106,28 @@ func (m *Migrator) migrateV2Accounts() (err error) {
if err == utils.ErrNoMoreData {
break
}
- if v2Acnt != nil {
- acnt := v2Acnt.V2toV3Account()
- if m.dryRun != true {
- if err = m.dmOut.DataManager().DataDB().SetAccount(acnt); err != nil {
- return err
- }
- if err = m.dmIN.remV2Account(v2Acnt.ID); err != nil {
- return err
- }
- m.stats[utils.Accounts] += 1
- }
+ if v2Acnt == nil || m.dryRun {
+ continue
}
+ acnt := v2Acnt.V2toV3Account()
+ if err = m.dmOut.DataManager().DataDB().SetAccount(acnt); err != nil {
+ return err
+ }
+ if err = m.dmIN.remV2Account(v2Acnt.ID); err != nil {
+ return err
+ }
+ m.stats[utils.Accounts] += 1
}
- if m.dryRun != true {
- // All done, update version wtih current one
- vrs := engine.Versions{utils.Accounts: engine.CurrentDataDBVersions()[utils.Accounts]}
- if err = m.dmOut.DataManager().DataDB().SetVersions(vrs, false); err != nil {
- return utils.NewCGRError(utils.Migrator,
- utils.ServerErrorCaps,
- err.Error(),
- fmt.Sprintf("error: <%s> when updating Accounts version into StorDB", err.Error()))
- }
+ if m.dryRun {
+ return
+ }
+ // All done, update version wtih current one
+ vrs := engine.Versions{utils.Accounts: engine.CurrentDataDBVersions()[utils.Accounts]}
+ if err = m.dmOut.DataManager().DataDB().SetVersions(vrs, false); err != nil {
+ return utils.NewCGRError(utils.Migrator,
+ utils.ServerErrorCaps,
+ err.Error(),
+ fmt.Sprintf("error: <%s> when updating Accounts version into StorDB", err.Error()))
}
return
}
@@ -149,7 +148,6 @@ func (m *Migrator) migrateAccounts() (err error) {
}
current := engine.CurrentDataDBVersions()
switch vrs[utils.Accounts] {
-
case 1:
return m.migrateV1Accounts()
case 2:
diff --git a/migrator/action.go b/migrator/action.go
index c418fc431..95552d684 100644
--- a/migrator/action.go
+++ b/migrator/action.go
@@ -51,14 +51,13 @@ func (m *Migrator) migrateCurrentActions() (err error) {
if err != nil {
return err
}
- if acts != nil {
- if m.dryRun != true {
- if err := m.dmOut.DataManager().SetActions(idg, acts, utils.NonTransactional); err != nil {
- return err
- }
- m.stats[utils.Actions] += 1
- }
+ if acts == nil || m.dryRun {
+ continue
}
+ if err := m.dmOut.DataManager().SetActions(idg, acts, utils.NonTransactional); err != nil {
+ return err
+ }
+ m.stats[utils.Actions] += 1
}
return
}
@@ -74,29 +73,29 @@ func (m *Migrator) migrateV1Actions() (err error) {
if err == utils.ErrNoMoreData {
break
}
- if *v1ACs != nil {
- for _, v1ac := range *v1ACs {
- act := v1ac.AsAction()
- acts = append(acts, act)
+ if *v1ACs == nil || m.dryRun {
+ continue
+ }
+ for _, v1ac := range *v1ACs {
+ act := v1ac.AsAction()
+ acts = append(acts, act)
- }
- if !m.dryRun {
- if err := m.dmOut.DataManager().SetActions(acts[0].Id, acts, utils.NonTransactional); err != nil {
- return err
- }
- m.stats[utils.Actions] += 1
- }
}
+ if err := m.dmOut.DataManager().SetActions(acts[0].Id, acts, utils.NonTransactional); err != nil {
+ return err
+ }
+ m.stats[utils.Actions] += 1
}
- if !m.dryRun {
- // All done, update version wtih current one
- vrs := engine.Versions{utils.Actions: engine.CurrentStorDBVersions()[utils.Actions]}
- if err = m.dmOut.DataManager().DataDB().SetVersions(vrs, false); err != nil {
- return utils.NewCGRError(utils.Migrator,
- utils.ServerErrorCaps,
- err.Error(),
- fmt.Sprintf("error: <%s> when updating Actions version into dataDB", err.Error()))
- }
+ if m.dryRun {
+ return
+ }
+ // All done, update version wtih current one
+ vrs := engine.Versions{utils.Actions: engine.CurrentStorDBVersions()[utils.Actions]}
+ if err = m.dmOut.DataManager().DataDB().SetVersions(vrs, false); err != nil {
+ return utils.NewCGRError(utils.Migrator,
+ utils.ServerErrorCaps,
+ err.Error(),
+ fmt.Sprintf("error: <%s> when updating Actions version into dataDB", err.Error()))
}
return
}
@@ -121,15 +120,9 @@ func (m *Migrator) migrateActions() (err error) {
if m.sameDataDB {
return
}
- if err := m.migrateCurrentActions(); err != nil {
- return err
- }
- return
-
+ return m.migrateCurrentActions()
case 1:
- if err := m.migrateV1Actions(); err != nil {
- return err
- }
+ return m.migrateV1Actions()
}
return
}
diff --git a/migrator/action_plan.go b/migrator/action_plan.go
index a44b459f9..3e79aca70 100644
--- a/migrator/action_plan.go
+++ b/migrator/action_plan.go
@@ -59,17 +59,16 @@ func (m *Migrator) migrateCurrentActionPlans() (err error) {
if err != nil {
return err
}
- if acts != nil {
- if m.dryRun != true {
- if err := m.dmOut.DataManager().DataDB().SetActionPlan(idg, acts, true, utils.NonTransactional); err != nil {
- return err
- }
- if err := m.dmIN.DataManager().DataDB().RemoveActionPlan(idg, utils.NonTransactional); err != nil {
- return err
- }
- m.stats[utils.ActionPlans] += 1
- }
+ if acts == nil || m.dryRun {
+ continue
}
+ if err := m.dmOut.DataManager().DataDB().SetActionPlan(idg, acts, true, utils.NonTransactional); err != nil {
+ return err
+ }
+ if err := m.dmIN.DataManager().DataDB().RemoveActionPlan(idg, utils.NonTransactional); err != nil {
+ return err
+ }
+ m.stats[utils.ActionPlans] += 1
}
return
}
@@ -84,27 +83,27 @@ func (m *Migrator) migrateV1ActionPlans() (err error) {
if err == utils.ErrNoMoreData {
break
}
- if *v1APs != nil {
- for _, v1ap := range *v1APs {
- ap := v1ap.AsActionPlan()
- if m.dryRun != true {
- if err = m.dmOut.DataManager().DataDB().SetActionPlan(ap.Id, ap, true, utils.NonTransactional); err != nil {
- return err
- }
- m.stats[utils.ActionPlans] += 1
- }
+ if *v1APs == nil || m.dryRun {
+ continue
+ }
+ for _, v1ap := range *v1APs {
+ ap := v1ap.AsActionPlan()
+ if err = m.dmOut.DataManager().DataDB().SetActionPlan(ap.Id, ap, true, utils.NonTransactional); err != nil {
+ return err
}
+ m.stats[utils.ActionPlans] += 1
}
}
- if m.dryRun != true {
- // All done, update version wtih current one
- vrs := engine.Versions{utils.ActionPlans: engine.CurrentDataDBVersions()[utils.ActionPlans]}
- if err = m.dmOut.DataManager().DataDB().SetVersions(vrs, false); err != nil {
- return utils.NewCGRError(utils.Migrator,
- utils.ServerErrorCaps,
- err.Error(),
- fmt.Sprintf("error: <%s> when updating ActionPlans version into dataDB", err.Error()))
- }
+ if m.dryRun {
+ return
+ }
+ // All done, update version wtih current one
+ vrs := engine.Versions{utils.ActionPlans: engine.CurrentDataDBVersions()[utils.ActionPlans]}
+ if err = m.dmOut.DataManager().DataDB().SetVersions(vrs, false); err != nil {
+ return utils.NewCGRError(utils.Migrator,
+ utils.ServerErrorCaps,
+ err.Error(),
+ fmt.Sprintf("error: <%s> when updating ActionPlans version into dataDB", err.Error()))
}
return
}
@@ -129,14 +128,9 @@ func (m *Migrator) migrateActionPlans() (err error) {
if m.sameDataDB {
return
}
- if err := m.migrateCurrentActionPlans(); err != nil {
- return err
- }
- return
+ return m.migrateCurrentActionPlans()
case 1:
- if err := m.migrateV1ActionPlans(); err != nil {
- return err
- }
+ return m.migrateV1ActionPlans()
}
return
}
diff --git a/migrator/action_trigger.go b/migrator/action_trigger.go
index 67fafc074..7e64486f7 100644
--- a/migrator/action_trigger.go
+++ b/migrator/action_trigger.go
@@ -64,12 +64,11 @@ func (m *Migrator) migrateCurrentActionTrigger() (err error) {
if err != nil {
return err
}
- if acts != nil {
- if m.dryRun != true {
- if err := m.dmOut.DataManager().SetActionTriggers(idg, acts, utils.NonTransactional); err != nil {
- return err
- }
- }
+ if acts == nil || m.dryRun {
+ continue
+ }
+ if err := m.dmOut.DataManager().SetActionTriggers(idg, acts, utils.NonTransactional); err != nil {
+ return err
}
}
return
@@ -86,29 +85,29 @@ func (m *Migrator) migrateV1ActionTrigger() (err error) {
if err == utils.ErrNoMoreData {
break
}
- if *v1ACTs != nil {
- for _, v1ac := range *v1ACTs {
- act := v1ac.AsActionTrigger()
- acts = append(acts, act)
+ if *v1ACTs == nil || m.dryRun {
+ continue
+ }
+ for _, v1ac := range *v1ACTs {
+ act := v1ac.AsActionTrigger()
+ acts = append(acts, act)
- }
- if !m.dryRun {
- if err := m.dmOut.DataManager().SetActionTriggers(acts[0].ID, acts, utils.NonTransactional); err != nil {
- return err
- }
- m.stats[utils.ActionTriggers] += 1
- }
}
+ if err := m.dmOut.DataManager().SetActionTriggers(acts[0].ID, acts, utils.NonTransactional); err != nil {
+ return err
+ }
+ m.stats[utils.ActionTriggers] += 1
}
- if !m.dryRun {
- // All done, update version wtih current one
- vrs := engine.Versions{utils.ActionTriggers: engine.CurrentDataDBVersions()[utils.ActionTriggers]}
- if err = m.dmOut.DataManager().DataDB().SetVersions(vrs, false); err != nil {
- return utils.NewCGRError(utils.Migrator,
- utils.ServerErrorCaps,
- err.Error(),
- fmt.Sprintf("error: <%s> when updating ActionTriggers version into DataDB", err.Error()))
- }
+ if m.dryRun {
+ return
+ }
+ // All done, update version wtih current one
+ vrs := engine.Versions{utils.ActionTriggers: engine.CurrentDataDBVersions()[utils.ActionTriggers]}
+ if err = m.dmOut.DataManager().DataDB().SetVersions(vrs, false); err != nil {
+ return utils.NewCGRError(utils.Migrator,
+ utils.ServerErrorCaps,
+ err.Error(),
+ fmt.Sprintf("error: <%s> when updating ActionTriggers version into DataDB", err.Error()))
}
return
}
@@ -133,15 +132,9 @@ func (m *Migrator) migrateActionTriggers() (err error) {
if m.sameDataDB {
return
}
- if err := m.migrateCurrentActionTrigger(); err != nil {
- return err
- }
- return
-
+ return m.migrateCurrentActionTrigger()
case 1:
- if err := m.migrateV1ActionTrigger(); err != nil {
- return err
- }
+ return m.migrateV1ActionTrigger()
}
return
}
diff --git a/migrator/alias.go b/migrator/alias.go
index e9d61b52d..b467e752b 100644
--- a/migrator/alias.go
+++ b/migrator/alias.go
@@ -182,83 +182,6 @@ func (m *Migrator) migrateAlias2Attributes() (err error) {
return
}
-// func (m *Migrator) migrateV1Alias() (err error) {
-// var ids []string
-// ids, err = m.dmIN.DataManager().DataDB().GetKeysForPrefix(ALIASES_PREFIX)
-// if err != nil {
-// return err
-// }
-// for _, id := range ids {
-// idg := strings.TrimPrefix(id, ALIASES_PREFIX)
-// usr, err := m.dmIN.DataManager().DataDB().GetAlias(idg, true, utils.NonTransactional)
-// if err != nil {
-// return err
-// }
-// if usr == nil || m.dryRun {
-// continue
-// }
-// if err := m.dmOut.DataManager().DataDB().SetAlias(usr, utils.NonTransactional); err != nil {
-// return err
-// }
-// m.stats[utils.Alias] += 1
-// }
-// return
-// }
-
func (m *Migrator) migrateAlias() (err error) {
return m.migrateAlias2Attributes()
- /*
- var vrs engine.Versions
- current := engine.CurrentDataDBVersions()
- vrs, err = m.dmIN.DataManager().DataDB().GetVersions("")
- if err != nil {
- return utils.NewCGRError(utils.Migrator,
- utils.ServerErrorCaps,
- err.Error(),
- fmt.Sprintf("error: <%s> when querying oldDataDB for versions", err.Error()))
- } else if len(vrs) == 0 {
- return utils.NewCGRError(utils.Migrator,
- utils.MandatoryIEMissingCaps,
- utils.UndefinedVersion,
- "version number is not defined for ActionTriggers model")
- }
- switch vrs[Alias] {
- case current[Alias]:
- if m.sameDataDB {
- return
- }
- return utils.ErrNotImplemented
- case 1:
- return m.migrateAlias2Attributes()
- }
- return
- */
-}
-
-func (m *Migrator) migrateReverseAlias() (err error) {
- // var vrs engine.Versions
- // current := engine.CurrentDataDBVersions()
- // vrs, err = m.dmOut.DataDB().GetVersions("")
- // if err != nil {
- // return utils.NewCGRError(utils.Migrator,
- // utils.ServerErrorCaps,
- // err.Error(),
- // fmt.Sprintf("error: <%s> when querying oldDataDB for versions", err.Error()))
- // } else if len(vrs) == 0 {
- // return utils.NewCGRError(utils.Migrator,
- // utils.MandatoryIEMissingCaps,
- // utils.UndefinedVersion,
- // "version number is not defined for ActionTriggers model")
- // }
- // switch vrs[utils.ReverseAlias] {
- // case current[utils.ReverseAlias]:
- // if m.sameDataDB {
- // return
- // }
- // if err := m.migrateCurrentReverseAlias(); err != nil {
- // return err
- // }
- // return
- // }
- return
}
diff --git a/migrator/alias_it_test.go b/migrator/alias_it_test.go
index 7b8d15a70..0d8549c09 100644
--- a/migrator/alias_it_test.go
+++ b/migrator/alias_it_test.go
@@ -36,7 +36,6 @@ var (
alsCfgIn *config.CGRConfig
alsCfgOut *config.CGRConfig
alsMigrator *Migrator
- alsAction string
)
var sTestsAlsIT = []func(t *testing.T){
@@ -47,41 +46,22 @@ var sTestsAlsIT = []func(t *testing.T){
func TestAliasMigrateITRedis(t *testing.T) {
inPath := path.Join(*dataDir, "conf", "samples", "tutmysql")
- testStart("TestAliasMigrateITRedis", inPath, inPath, utils.Migrate, t)
+ testStart("TestAliasMigrateITRedis", inPath, inPath, t)
}
func TestAliasMigrateITMongo(t *testing.T) {
inPath := path.Join(*dataDir, "conf", "samples", "tutmongo")
- testStart("TestAliasMigrateITMongo", inPath, inPath, utils.Migrate, t)
-}
-
-func TestAliasITMove(t *testing.T) {
- inPath := path.Join(*dataDir, "conf", "samples", "tutmongo")
- outPath := path.Join(*dataDir, "conf", "samples", "tutmysql")
- testStart("TestAliasITMove", inPath, outPath, utils.Move, t)
+ testStart("TestAliasMigrateITMongo", inPath, inPath, t)
}
func TestAliasITMigrateMongo2Redis(t *testing.T) {
inPath := path.Join(*dataDir, "conf", "samples", "tutmongo")
outPath := path.Join(*dataDir, "conf", "samples", "tutmysql")
- testStart("TestAliasITMigrateMongo2Redis", inPath, outPath, utils.Migrate, t)
+ testStart("TestAliasITMigrateMongo2Redis", inPath, outPath, t)
}
-func TestAliasITMoveEncoding(t *testing.T) {
- inPath := path.Join(*dataDir, "conf", "samples", "tutmongo")
- outPath := path.Join(*dataDir, "conf", "samples", "tutmongojson")
- testStart("TestAliasITMoveEncoding", inPath, outPath, utils.Move, t)
-}
-
-func TestAliasITMoveEncoding2(t *testing.T) {
- inPath := path.Join(*dataDir, "conf", "samples", "tutmysql")
- outPath := path.Join(*dataDir, "conf", "samples", "tutmysqljson")
- testStart("TestAliasITMoveEncoding2", inPath, outPath, utils.Move, t)
-}
-
-func testStart(testName, inPath, outPath, action string, t *testing.T) {
+func testStart(testName, inPath, outPath string, t *testing.T) {
var err error
- alsAction = action
if alsCfgIn, err = config.NewCGRConfigFromFolder(inPath); err != nil {
t.Fatal(err)
}
@@ -176,96 +156,65 @@ func testAlsITMigrateAndMove(t *testing.T) {
Weight: 20,
}
attrProf.Compile()
- switch alsAction {
- case utils.Migrate:
- err := alsMigrator.dmIN.setV1Alias(alias)
- if err != nil {
- t.Error("Error when setting v1 Alias ", err.Error())
- }
- currentVersion := engine.Versions{Alias: 1}
- err = alsMigrator.dmIN.DataManager().DataDB().SetVersions(currentVersion, false)
- if err != nil {
- t.Error("Error when setting version for Alias ", err.Error())
- }
- //check if version was set correctly
- if vrs, err := alsMigrator.dmIN.DataManager().DataDB().GetVersions(""); err != nil {
- t.Error(err)
- } else if vrs[Alias] != 1 {
- t.Errorf("Unexpected version returned: %d", vrs[Alias])
- }
- //migrate alias
- err, _ = alsMigrator.Migrate([]string{MetaAliases})
- if err != nil {
- t.Error("Error when migrating Alias ", err.Error())
- }
- //check if version was updated
- if vrs, err := alsMigrator.dmOut.DataManager().DataDB().GetVersions(""); err != nil {
- t.Error(err)
- } else if vrs[Alias] != 0 {
- t.Errorf("Unexpected version returned: %d", vrs[Alias])
- }
- //check if alias was migrate correctly
- result, err := alsMigrator.dmOut.DataManager().DataDB().GetAttributeProfileDrv("cgrates.org", alias.GetId())
- if err != nil {
- t.Fatalf("Error when getting Attributes %v", err.Error())
- }
- result.Compile()
- sort.Slice(result.Attributes, func(i, j int) bool {
- if result.Attributes[i].FieldName == result.Attributes[j].FieldName {
- return result.Attributes[i].FilterIDs[0] < result.Attributes[j].FilterIDs[0]
- }
- return result.Attributes[i].FieldName < result.Attributes[j].FieldName
- }) // only for test; map returns random keys
- if !reflect.DeepEqual(*attrProf, *result) {
- t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(attrProf), utils.ToJSON(result))
- }
- //check if old account was deleted
- if _, err = alsMigrator.dmIN.getV1Alias(); err != utils.ErrNoMoreData {
- t.Error("Error should be not found : ", err)
- }
- expAlsIdx := map[string]utils.StringMap{
- "*string:~Account:1001": utils.StringMap{
- "*out:*any:*any:1001:call_1001:*rated": true,
- },
- "*string:~Subject:call_1001": utils.StringMap{
- "*out:*any:*any:1001:call_1001:*rated": true,
- },
+ err := alsMigrator.dmIN.setV1Alias(alias)
+ if err != nil {
+ t.Error("Error when setting v1 Alias ", err.Error())
+ }
+ currentVersion := engine.Versions{Alias: 1}
+ err = alsMigrator.dmIN.DataManager().DataDB().SetVersions(currentVersion, false)
+ if err != nil {
+ t.Error("Error when setting version for Alias ", err.Error())
+ }
+ //check if version was set correctly
+ if vrs, err := alsMigrator.dmIN.DataManager().DataDB().GetVersions(""); err != nil {
+ t.Error(err)
+ } else if vrs[Alias] != 1 {
+ t.Errorf("Unexpected version returned: %d", vrs[Alias])
+ }
+ //migrate alias
+ err, _ = alsMigrator.Migrate([]string{MetaAliases})
+ if err != nil {
+ t.Error("Error when migrating Alias ", err.Error())
+ }
+ //check if version was updated
+ if vrs, err := alsMigrator.dmOut.DataManager().DataDB().GetVersions(""); err != nil {
+ t.Error(err)
+ } else if vrs[Alias] != 0 {
+ t.Errorf("Unexpected version returned: %d", vrs[Alias])
+ }
+ //check if alias was migrate correctly
+ result, err := alsMigrator.dmOut.DataManager().DataDB().GetAttributeProfileDrv("cgrates.org", alias.GetId())
+ if err != nil {
+ t.Fatalf("Error when getting Attributes %v", err.Error())
+ }
+ result.Compile()
+ sort.Slice(result.Attributes, func(i, j int) bool {
+ if result.Attributes[i].FieldName == result.Attributes[j].FieldName {
+ return result.Attributes[i].FilterIDs[0] < result.Attributes[j].FilterIDs[0]
}
- if alsidx, err := alsMigrator.dmOut.DataManager().GetFilterIndexes(utils.PrefixToIndexCache[utils.AttributeProfilePrefix],
- utils.ConcatenatedKey("cgrates.org", utils.META_ANY), utils.MetaString, nil); err != nil {
- t.Error(err)
- } else if !reflect.DeepEqual(expAlsIdx, alsidx) {
- t.Errorf("Expected %v, recived: %v", utils.ToJSON(expAlsIdx), utils.ToJSON(alsidx))
- }
- case utils.Move:
- /* // No Move tests
- if err := alsMigrator.dmIN.DataManager().DataDB().SetAlias(alias, utils.NonTransactional); err != nil {
- t.Error(err)
- }
- currentVersion := engine.CurrentDataDBVersions()
- err := alsMigrator.dmOut.DataManager().DataDB().SetVersions(currentVersion, false)
- if err != nil {
- t.Error("Error when setting version for Alias ", err.Error())
- }
- //migrate accounts
- err, _ = alsMigrator.Migrate([]string{MetaAliases})
- if err != nil {
- t.Error("Error when alsMigratorrating Alias ", err.Error())
- }
- //check if account was migrate correctly
- result, err := alsMigrator.dmOut.DataManager().DataDB().GetAlias(alias.GetId(), false)
- if err != nil {
- t.Error(err)
- }
- if !reflect.DeepEqual(alias, result) {
- t.Errorf("Expecting: %+v, received: %+v", alias, result)
- }
- //check if old account was deleted
- result, err = alsMigrator.dmIN.DataManager().DataDB().GetAlias(alias.GetId(), false)
- if err != utils.ErrNotFound {
- t.Error(err)
- }
- // */
+ return result.Attributes[i].FieldName < result.Attributes[j].FieldName
+ }) // only for test; map returns random keys
+ if !reflect.DeepEqual(*attrProf, *result) {
+ t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(attrProf), utils.ToJSON(result))
+ }
+ //check if old account was deleted
+ if _, err = alsMigrator.dmIN.getV1Alias(); err != utils.ErrNoMoreData {
+ t.Error("Error should be not found : ", err)
+ }
+
+ expAlsIdx := map[string]utils.StringMap{
+ "*string:~Account:1001": utils.StringMap{
+ "*out:*any:*any:1001:call_1001:*rated": true,
+ },
+ "*string:~Subject:call_1001": utils.StringMap{
+ "*out:*any:*any:1001:call_1001:*rated": true,
+ },
+ }
+ if alsidx, err := alsMigrator.dmOut.DataManager().GetFilterIndexes(utils.PrefixToIndexCache[utils.AttributeProfilePrefix],
+ utils.ConcatenatedKey("cgrates.org", utils.META_ANY), utils.MetaString, nil); err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(expAlsIdx, alsidx) {
+ t.Errorf("Expected %v, recived: %v", utils.ToJSON(expAlsIdx), utils.ToJSON(alsidx))
}
}
diff --git a/migrator/attributes.go b/migrator/attributes.go
index e129a7d7b..30bf6da4a 100644
--- a/migrator/attributes.go
+++ b/migrator/attributes.go
@@ -57,18 +57,17 @@ func (m *Migrator) migrateCurrentAttributeProfile() (err error) {
if err != nil {
return err
}
- if attrPrf != nil {
- if m.dryRun != true {
- if err := m.dmOut.DataManager().SetAttributeProfile(attrPrf, true); err != nil {
- return err
- }
- if err := m.dmIN.DataManager().RemoveAttributeProfile(tenant,
- idg, utils.NonTransactional, false); err != nil {
- return err
- }
- m.stats[utils.Attributes] += 1
- }
+ if attrPrf == nil || m.dryRun {
+ continue
}
+ if err := m.dmOut.DataManager().SetAttributeProfile(attrPrf, true); err != nil {
+ return err
+ }
+ if err := m.dmIN.DataManager().RemoveAttributeProfile(tenant,
+ idg, utils.NonTransactional, false); err != nil {
+ return err
+ }
+ m.stats[utils.Attributes] += 1
}
return
}
@@ -83,31 +82,34 @@ func (m *Migrator) migrateV1Attributes() (err error) {
if err == utils.ErrNoMoreData {
break
}
- if v1Attr != nil {
- attrPrf, err := v1Attr.AsAttributeProfile()
- if err != nil {
- return err
- }
- if m.dryRun != true {
- if err := m.dmOut.DataManager().DataDB().SetAttributeProfileDrv(attrPrf); err != nil {
- return err
- }
- if err := m.dmOut.DataManager().SetAttributeProfile(attrPrf, true); err != nil {
- return err
- }
- m.stats[utils.Attributes] += 1
- }
+ if v1Attr == nil {
+ continue
}
+ attrPrf, err := v1Attr.AsAttributeProfile()
+ if err != nil {
+ return err
+ }
+ if m.dryRun {
+ continue
+ }
+ if err := m.dmOut.DataManager().DataDB().SetAttributeProfileDrv(attrPrf); err != nil {
+ return err
+ }
+ if err := m.dmOut.DataManager().SetAttributeProfile(attrPrf, true); err != nil {
+ return err
+ }
+ m.stats[utils.Attributes] += 1
}
- if m.dryRun != true {
- // All done, update version wtih current one
- vrs := engine.Versions{utils.Attributes: engine.CurrentDataDBVersions()[utils.Attributes]}
- if err = m.dmOut.DataManager().DataDB().SetVersions(vrs, false); err != nil {
- return utils.NewCGRError(utils.Migrator,
- utils.ServerErrorCaps,
- err.Error(),
- fmt.Sprintf("error: <%s> when updating Thresholds version into dataDB", err.Error()))
- }
+ if m.dryRun {
+ return
+ }
+ // All done, update version wtih current one
+ vrs := engine.Versions{utils.Attributes: engine.CurrentDataDBVersions()[utils.Attributes]}
+ if err = m.dmOut.DataManager().DataDB().SetVersions(vrs, false); err != nil {
+ return utils.NewCGRError(utils.Migrator,
+ utils.ServerErrorCaps,
+ err.Error(),
+ fmt.Sprintf("error: <%s> when updating Thresholds version into dataDB", err.Error()))
}
return
}
@@ -122,31 +124,34 @@ func (m *Migrator) migrateV2Attributes() (err error) {
if err == utils.ErrNoMoreData {
break
}
- if v2Attr != nil {
- attrPrf, err := v2Attr.AsAttributeProfile()
- if err != nil {
- return err
- }
- if m.dryRun != true {
- if err := m.dmOut.DataManager().SetAttributeProfile(attrPrf, true); err != nil {
- return err
- }
- if err := m.dmIN.remV2AttributeProfile(v2Attr.Tenant, v2Attr.ID); err != nil {
- return err
- }
- m.stats[utils.Attributes] += 1
- }
+ if v2Attr == nil {
+ continue
}
+ attrPrf, err := v2Attr.AsAttributeProfile()
+ if err != nil {
+ return err
+ }
+ if m.dryRun {
+ continue
+ }
+ if err := m.dmOut.DataManager().SetAttributeProfile(attrPrf, true); err != nil {
+ return err
+ }
+ if err := m.dmIN.remV2AttributeProfile(v2Attr.Tenant, v2Attr.ID); err != nil {
+ return err
+ }
+ m.stats[utils.Attributes] += 1
}
- if m.dryRun != true {
- // All done, update version wtih current one
- vrs := engine.Versions{utils.Attributes: engine.CurrentDataDBVersions()[utils.Attributes]}
- if err = m.dmOut.DataManager().DataDB().SetVersions(vrs, false); err != nil {
- return utils.NewCGRError(utils.Migrator,
- utils.ServerErrorCaps,
- err.Error(),
- fmt.Sprintf("error: <%s> when updating Thresholds version into dataDB", err.Error()))
- }
+ if m.dryRun {
+ return
+ }
+ // All done, update version wtih current one
+ vrs := engine.Versions{utils.Attributes: engine.CurrentDataDBVersions()[utils.Attributes]}
+ if err = m.dmOut.DataManager().DataDB().SetVersions(vrs, false); err != nil {
+ return utils.NewCGRError(utils.Migrator,
+ utils.ServerErrorCaps,
+ err.Error(),
+ fmt.Sprintf("error: <%s> when updating Thresholds version into dataDB", err.Error()))
}
return
}
@@ -171,18 +176,11 @@ func (m *Migrator) migrateAttributeProfile() (err error) {
if m.sameDataDB {
return
}
- if err := m.migrateCurrentAttributeProfile(); err != nil {
- return err
- }
- return
+ return m.migrateCurrentAttributeProfile()
case 1:
- if err := m.migrateV1Attributes(); err != nil {
- return err
- }
+ return m.migrateV1Attributes()
case 2:
- if err := m.migrateV2Attributes(); err != nil {
- return err
- }
+ return m.migrateV2Attributes()
}
return
}
diff --git a/migrator/cdrs.go b/migrator/cdrs.go
index 98ed6f871..4ca178c45 100755
--- a/migrator/cdrs.go
+++ b/migrator/cdrs.go
@@ -60,13 +60,9 @@ func (m *Migrator) migrateCDRs() (err error) {
}
switch vrs[utils.CDRs] {
case 1:
- if err := m.migrateV1CDRs(); err != nil {
- return err
- }
+ return m.migrateV1CDRs()
case current[utils.CDRs]:
- if err := m.migrateCurrentCDRs(); err != nil {
- return err
- }
+ return m.migrateCurrentCDRs()
}
return
}
@@ -81,25 +77,25 @@ func (m *Migrator) migrateV1CDRs() (err error) {
if err == utils.ErrNoMoreData {
break
}
- if v1CDR != nil {
- cdr := v1CDR.V1toV2Cdr()
- if m.dryRun != true {
- if err = m.storDBOut.StorDB().SetCDR(cdr, true); err != nil {
- return err
- }
- m.stats[utils.CDRs] += 1
- }
+ if v1CDR == nil || m.dryRun {
+ continue
}
+ cdr := v1CDR.V1toV2Cdr()
+ if err = m.storDBOut.StorDB().SetCDR(cdr, true); err != nil {
+ return err
+ }
+ m.stats[utils.CDRs] += 1
}
- if m.dryRun != true {
- // All done, update version wtih current one
- vrs := engine.Versions{utils.CDRs: engine.CurrentStorDBVersions()[utils.CDRs]}
- if err = m.storDBOut.StorDB().SetVersions(vrs, false); err != nil {
- return utils.NewCGRError(utils.Migrator,
- utils.ServerErrorCaps,
- err.Error(),
- fmt.Sprintf("error: <%s> when updating CDRs version into StorDB", err.Error()))
- }
+ if m.dryRun {
+ return
+ }
+ // All done, update version wtih current one
+ vrs := engine.Versions{utils.CDRs: engine.CurrentStorDBVersions()[utils.CDRs]}
+ if err = m.storDBOut.StorDB().SetVersions(vrs, false); err != nil {
+ return utils.NewCGRError(utils.Migrator,
+ utils.ServerErrorCaps,
+ err.Error(),
+ fmt.Sprintf("error: <%s> when updating CDRs version into StorDB", err.Error()))
}
return
}
diff --git a/migrator/chargers.go b/migrator/chargers.go
index dd6423e62..cebd6a551 100755
--- a/migrator/chargers.go
+++ b/migrator/chargers.go
@@ -40,14 +40,13 @@ func (m *Migrator) migrateCurrentCharger() (err error) {
if err != nil {
return err
}
- if cpp != nil {
- if m.dryRun != true {
- if err := m.dmOut.DataManager().SetChargerProfile(cpp, true); err != nil {
- return err
- }
- m.stats[utils.Chargers] += 1
- }
+ if cpp == nil || m.dryRun {
+ continue
}
+ if err := m.dmOut.DataManager().SetChargerProfile(cpp, true); err != nil {
+ return err
+ }
+ m.stats[utils.Chargers] += 1
}
return
}
@@ -72,10 +71,7 @@ func (m *Migrator) migrateChargers() (err error) {
if m.sameDataDB {
return
}
- if err := m.migrateCurrentCharger(); err != nil {
- return err
- }
- return
+ return m.migrateCurrentCharger()
}
return
}
diff --git a/migrator/costdetails.go b/migrator/costdetails.go
deleted file mode 100644
index c157f9e78..000000000
--- a/migrator/costdetails.go
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
-Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments
-Copyright (C) ITsysCOM GmbH
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see
-*/
-
-package migrator
-
-/*
-import (
- "database/sql"
- "encoding/json"
- "fmt"
- "log"
- "time"
-
- "github.com/cgrates/cgrates/engine"
- "github.com/cgrates/cgrates/utils"
-)
-
-func (m *Migrator) migrateCostDetails() (err error) {
- if m.storDBOut == nil {
- return utils.NewCGRError(utils.Migrator,
- utils.MandatoryIEMissingCaps,
- utils.NoStorDBConnection,
- "no connection to StorDB")
- }
- vrs, err := m.storDBOut.StorDB().GetVersions(utils.COST_DETAILS)
- if err != nil {
- return utils.NewCGRError(utils.Migrator,
- utils.ServerErrorCaps,
- err.Error(),
- fmt.Sprintf("error: <%s> when querying storDB for versions", err.Error()))
- } else if len(vrs) == 0 {
- return utils.NewCGRError(utils.Migrator,
- utils.MandatoryIEMissingCaps,
- utils.UndefinedVersion,
- "version number is not defined for CostDetails model")
- }
- if vrs[utils.COST_DETAILS] != 1 { // Right now we only support migrating from version 1
- log.Print("Wrong version")
- return
- }
- var storSQL *sql.DB
- switch m.storDBType {
- case utils.MYSQL:
- storSQL = m.storDBOut.(*engine.SQLStorage).Db
- case utils.POSTGRES:
- storSQL = m.storDBOut.(*engine.SQLStorage).Db
- default:
- return utils.NewCGRError(utils.Migrator,
- utils.MandatoryIEMissingCaps,
- utils.UnsupportedDB,
- fmt.Sprintf("unsupported database type: <%s>", m.storDBType))
- }
- rows, err := storSQL.Query("SELECT id, tor, direction, tenant, category, account, subject, destination, cost, cost_details FROM cdrs")
- if err != nil {
- return utils.NewCGRError(utils.Migrator,
- utils.ServerErrorCaps,
- err.Error(),
- fmt.Sprintf("error: <%s> when querying storDB for cdrs", err.Error()))
- }
-
- defer rows.Close()
-
- for cnt := 0; rows.Next(); cnt++ {
- var id int64
- var ccDirection, ccCategory, ccTenant, ccSubject, ccAccount, ccDestination, ccTor sql.NullString
- var ccCost sql.NullFloat64
- var tts []byte
-
- if err := rows.Scan(&id, &ccTor, &ccDirection, &ccTenant, &ccCategory, &ccAccount, &ccSubject, &ccDestination, &ccCost, &tts); err != nil {
- return utils.NewCGRError(utils.Migrator,
- utils.ServerErrorCaps,
- err.Error(),
- fmt.Sprintf("error: <%s> when scanning at count: <%d>", err.Error(), cnt))
- }
- var v1tmsps v1TimeSpans
- if err := json.Unmarshal(tts, &v1tmsps); err != nil {
- utils.Logger.Warning(
- fmt.Sprintf(" Unmarshalling timespans at CDR with id: <%d>, error: <%s>", id, err.Error()))
- continue
- }
- v1CC := &v1CallCost{Direction: ccDirection.String, Category: ccCategory.String, Tenant: ccTenant.String,
- Subject: ccSubject.String, Account: ccAccount.String, Destination: ccDestination.String, TOR: ccTor.String,
- Cost: ccCost.Float64, Timespans: v1tmsps}
-
- cc := v1CC.AsCallCost()
- if cc == nil {
- utils.Logger.Warning(
- fmt.Sprintf(" Error: <%s> when converting into CallCost CDR with id: <%d>", err.Error(), id))
- continue
- }
- if m.dryRun != true {
- if _, err := storSQL.Exec(fmt.Sprintf("UPDATE cdrs SET cost_details='%s' WHERE id=%d", cc.AsJSON(), id)); err != nil {
- utils.Logger.Warning(
- fmt.Sprintf(" Error: <%s> updating CDR with id <%d> into StorDB", err.Error(), id))
- continue
- }
-
- m.stats[utils.COST_DETAILS] += 1
- // All done, update version wtih current one
- vrs = engine.Versions{utils.COST_DETAILS: engine.CurrentStorDBVersions()[utils.COST_DETAILS]}
- if err := m.storDBOut.SetVersions(vrs, false); err != nil {
- return utils.NewCGRError(utils.Migrator,
- utils.ServerErrorCaps,
- err.Error(),
- fmt.Sprintf("error: <%s> when updating CostDetails version into StorDB", err.Error()))
- }
- }
- }
- return
-}
-
-type v1CallCost struct {
- Direction, Category, Tenant, Subject, Account, Destination, TOR string
- Cost float64
- Timespans v1TimeSpans
-}
-
-type v1TimeSpans []*v1TimeSpan
-
-type v1TimeSpan struct {
- TimeStart, TimeEnd time.Time
- Cost float64
- RateInterval *engine.RateInterval
- DurationIndex time.Duration
- Increments v1Increments
- MatchedSubject, MatchedPrefix, MatchedDestId, RatingPlanId string
-}
-
-type v1Increments []*v1Increment
-
-type v1Increment struct {
- Duration time.Duration
- Cost float64
- BalanceRateInterval *engine.RateInterval
- BalanceInfo *v1BalanceInfo
- UnitInfo *v1UnitInfo
- CompressFactor int
-}
-
-type v1BalanceInfo struct {
- UnitBalanceUuid string
- MoneyBalanceUuid string
- AccountId string // used when debited from shared balance
-}
-
-type v1UnitInfo struct {
- DestinationId string
- Quantity float64
- TOR string
-}
-
-func (v1cc *v1CallCost) AsCallCost() (cc *engine.CallCost) {
- cc = new(engine.CallCost)
- cc.Direction = v1cc.Direction
- cc.Category = v1cc.Category
- cc.Tenant = v1cc.Tenant
- cc.Account = v1cc.Account
- cc.Subject = v1cc.Subject
- cc.Destination = v1cc.Destination
- cc.TOR = v1cc.TOR
- cc.Cost = v1cc.Cost
- cc.Timespans = make(engine.TimeSpans, len(v1cc.Timespans))
- for i, v1ts := range v1cc.Timespans {
- cc.Timespans[i] = &engine.TimeSpan{TimeStart: v1ts.TimeStart,
- TimeEnd: v1ts.TimeEnd,
- Cost: v1ts.Cost,
- RateInterval: v1ts.RateInterval,
- DurationIndex: v1ts.DurationIndex,
- Increments: make(engine.Increments, len(v1ts.Increments)),
- MatchedSubject: v1ts.MatchedSubject,
- MatchedPrefix: v1ts.MatchedPrefix,
- MatchedDestId: v1ts.MatchedDestId,
- RatingPlanId: v1ts.RatingPlanId,
- }
- for j, v1Incrm := range v1ts.Increments {
- cc.Timespans[i].Increments[j] = &engine.Increment{
- Duration: v1Incrm.Duration,
- Cost: v1Incrm.Cost,
- CompressFactor: v1Incrm.CompressFactor,
- BalanceInfo: &engine.DebitInfo{
- AccountID: v1Incrm.BalanceInfo.AccountId,
- },
- }
- if v1Incrm.BalanceInfo.UnitBalanceUuid != "" {
- cc.Timespans[i].Increments[j].BalanceInfo.Unit = &engine.UnitInfo{
- UUID: v1Incrm.BalanceInfo.UnitBalanceUuid,
- Value: v1Incrm.UnitInfo.Quantity,
- DestinationID: v1Incrm.UnitInfo.DestinationId,
- TOR: v1Incrm.UnitInfo.TOR,
- }
- } else if v1Incrm.BalanceInfo.MoneyBalanceUuid != "" {
- cc.Timespans[i].Increments[j].BalanceInfo.Monetary = &engine.MonetaryInfo{
- UUID: v1Incrm.BalanceInfo.MoneyBalanceUuid,
- //Value: v1Incrm.UnitInfo.Quantity,
- }
- }
- }
- }
- return
-}
-*/
diff --git a/migrator/costdetails_test.go b/migrator/costdetails_test.go
deleted file mode 100644
index a2f05853a..000000000
--- a/migrator/costdetails_test.go
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments
-Copyright (C) ITsysCOM GmbH
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see
-*/
-package migrator
-
-/*
-import (
- "encoding/json"
- "testing"
-)
-
-var v1TmspsStr1 = `[{"TimeStart":"2016-07-28T02:18:49+02:00","TimeEnd":"2016-07-28T02:19:28+02:00","Cost":0.0117,"RateInterval":{"Timing":{"Years":[],"Months":[],"MonthDays":[],"WeekDays":[],"StartTime":"00:00:00","EndTime":""},"Rating":{"ConnectFee":0.0564,"RoundingMethod":"*middle","RoundingDecimals":4,"MaxCost":0,"MaxCostStrategy":"","Rates":[{"GroupIntervalStart":0,"Value":0.0198,"RateIncrement":1000000000,"RateUnit":60000000000}]},"Weight":10},"DurationIndex":39000000000,"Increments":[{"Duration":1000000000,"Cost":0.0003,"BalanceInfo":{"UnitBalanceUuid":"","MoneyBalanceUuid":"c50c201c405defc3807347444efc62da","AccountId":"cgrates.org:dan"},"BalanceRateInterval":null,"UnitInfo":null,"CompressFactor":39}],"MatchedSubject":"*out:cgrates.org:call:dan","MatchedPrefix":"+311","MatchedDestId":"CST_491_DE001","RatingPlanId":"V_RET_1490_01_V"}]`
-var v1TmspsStr2 = `[{"TimeStart":"2016-07-28T01:12:19+02:00","TimeEnd":"2016-07-28T01:12:27+02:00","Cost":0.00046875,"RateInterval":{"Timing":{"Years":[],"Months":[],"MonthDays":[],"WeekDays":[],"StartTime":"00:00:00","EndTime":""},"Rating":{"ConnectFee":0,"RoundingMethod":"*middle","RoundingDecimals":4,"MaxCost":0,"MaxCostStrategy":"","Rates":[{"GroupIntervalStart":0,"Value":0.06,"RateIncrement":1000000000,"RateUnit":1024000000000}]},"Weight":10},"DurationIndex":8000000000,"Increments":null,"MatchedSubject":"*out:cgrates.org:data:danb","MatchedPrefix":"+4900","MatchedDestId":"CST_data_DAT01","RatingPlanId":"M_RET_1409_01_D"}]`
-
-func TestV1CostDetailsAsCostDetails1(t *testing.T) {
- var v1tmsps v1TimeSpans
- if err := json.Unmarshal([]byte(v1TmspsStr1), &v1tmsps); err != nil {
- t.Error(err)
- }
- v1CC := &v1CallCost{Timespans: v1tmsps}
- _ = v1CC.AsCallCost()
- // ToDo: Test here the content
-
-}
-
-func TestV1CostDetailsAsCostDetails2(t *testing.T) {
- var v1tmsps v1TimeSpans
- if err := json.Unmarshal([]byte(v1TmspsStr2), &v1tmsps); err != nil {
- t.Error(err)
- }
- v1CC := &v1CallCost{Timespans: v1tmsps}
- _ = v1CC.AsCallCost()
-
-}
-*/
diff --git a/migrator/derived_chargers.go b/migrator/derived_chargers.go
index 89d99abd9..ce314876f 100644
--- a/migrator/derived_chargers.go
+++ b/migrator/derived_chargers.go
@@ -212,61 +212,6 @@ func (m *Migrator) migrateV1DerivedChargers() (err error) {
return
}
-/*
-func (m *Migrator) migrateCurrentDerivedChargers() (err error) {
- var ids []string
- ids, err = m.dmIN.DataManager().DataDB().GetKeysForPrefix(utils.DERIVEDCHARGERS_PREFIX)
- if err != nil {
- return err
- }
- for _, id := range ids {
- idg := strings.TrimPrefix(id, utils.DERIVEDCHARGERS_PREFIX)
- drc, err := m.dmIN.DataManager().GetDerivedChargers(idg, true, utils.NonTransactional)
- if err != nil {
- return err
- }
- if drc != nil {
- if m.dryRun != true {
- if err := m.dmOut.DataManager().DataDB().SetDerivedChargers(idg, drc, utils.NonTransactional); err != nil {
- return err
- }
- m.stats[utils.DerivedChargersV] += 1
- }
- }
- }
- return
-}
-*/
-
func (m *Migrator) migrateDerivedChargers() (err error) {
return m.migrateV1DerivedChargers()
- /*
- var vrs engine.Versions
- current := engine.CurrentDataDBVersions()
- vrs, err = m.dmIN.DataManager().DataDB().GetVersions("")
- if err != nil {
- return utils.NewCGRError(utils.Migrator,
- utils.ServerErrorCaps,
- err.Error(),
- fmt.Sprintf("error: <%s> when querying oldDataDB for versions", err.Error()))
- } else if len(vrs) == 0 {
- return utils.NewCGRError(utils.Migrator,
- utils.MandatoryIEMissingCaps,
- utils.UndefinedVersion,
- "version number is not defined for DerivedChargers model")
- }
-
- switch vrs[utils.DerivedChargersV] {
- case 1:
- case current[utils.DerivedChargersV]:
- if m.sameDataDB {
- return
- }
- if err := m.migrateCurrentDerivedChargers(); err != nil {
- return err
- }
- return
- }
- return
- */
}
diff --git a/migrator/derived_chargers_it_test.go b/migrator/derived_chargers_it_test.go
index 12073086a..29acf94d9 100644
--- a/migrator/derived_chargers_it_test.go
+++ b/migrator/derived_chargers_it_test.go
@@ -37,7 +37,6 @@ var (
dcCfgIn *config.CGRConfig
dcCfgOut *config.CGRConfig
dcMigrator *Migrator
- dcAction string
)
var sTestsDCIT = []func(t *testing.T){
@@ -48,41 +47,22 @@ var sTestsDCIT = []func(t *testing.T){
func TestDerivedChargersVMigrateITRedis(t *testing.T) {
inPath := path.Join(*dataDir, "conf", "samples", "tutmysql")
- testStartDC("TestDerivedChargersVMigrateITRedis", inPath, inPath, utils.Migrate, t)
+ testStartDC("TestDerivedChargersVMigrateITRedis", inPath, inPath, t)
}
func TestDerivedChargersVMigrateITMongo(t *testing.T) {
inPath := path.Join(*dataDir, "conf", "samples", "tutmongo")
- testStartDC("TestDerivedChargersVMigrateITMongo", inPath, inPath, utils.Migrate, t)
-}
-
-func TestDerivedChargersVITMove(t *testing.T) {
- inPath := path.Join(*dataDir, "conf", "samples", "tutmongo")
- outPath := path.Join(*dataDir, "conf", "samples", "tutmysql")
- testStartDC("TestDerivedChargersVITMove", inPath, outPath, utils.Move, t)
+ testStartDC("TestDerivedChargersVMigrateITMongo", inPath, inPath, t)
}
func TestDerivedChargersVITMigrateMongo2Redis(t *testing.T) {
inPath := path.Join(*dataDir, "conf", "samples", "tutmongo")
outPath := path.Join(*dataDir, "conf", "samples", "tutmysql")
- testStartDC("TestDerivedChargersVITMigrateMongo2Redis", inPath, outPath, utils.Migrate, t)
+ testStartDC("TestDerivedChargersVITMigrateMongo2Redis", inPath, outPath, t)
}
-func TestDerivedChargersVITMoveEncoding(t *testing.T) {
- inPath := path.Join(*dataDir, "conf", "samples", "tutmongo")
- outPath := path.Join(*dataDir, "conf", "samples", "tutmongojson")
- testStartDC("TestDerivedChargersVITMoveEncoding", inPath, outPath, utils.Move, t)
-}
-
-func TestDerivedChargersVITMoveEncoding2(t *testing.T) {
- inPath := path.Join(*dataDir, "conf", "samples", "tutmysql")
- outPath := path.Join(*dataDir, "conf", "samples", "tutmysqljson")
- testStartDC("TestDerivedChargersVITMoveEncoding2", inPath, outPath, utils.Move, t)
-}
-
-func testStartDC(testName, inPath, outPath, action string, t *testing.T) {
+func testStartDC(testName, inPath, outPath string, t *testing.T) {
var err error
- dcAction = action
if dcCfgIn, err = config.NewCGRConfigFromFolder(inPath); err != nil {
t.Fatal(err)
}
@@ -193,108 +173,77 @@ func testDCITMigrateAndMove(t *testing.T) {
AttributeIDs: []string{attrProf.ID},
Weight: 10,
}
- switch dcAction {
- case utils.Migrate:
- err := dcMigrator.dmIN.setV1DerivedChargers(derivch)
- if err != nil {
- t.Error("Error when setting v1 DerivedChargersV ", err.Error())
- }
- currentVersion := engine.Versions{utils.DerivedChargersV: 1}
- err = dcMigrator.dmIN.DataManager().DataDB().SetVersions(currentVersion, false)
- if err != nil {
- t.Error("Error when setting version for DerivedChargersV ", err.Error())
- }
- //check if version was set correctly
- if vrs, err := dcMigrator.dmIN.DataManager().DataDB().GetVersions(""); err != nil {
- t.Error(err)
- } else if vrs[utils.DerivedChargersV] != 1 {
- t.Errorf("Unexpected version returned: %d", vrs[utils.DerivedChargersV])
- }
- //migrate derivch
- err, _ = dcMigrator.Migrate([]string{utils.MetaDerivedChargersV})
- if err != nil {
- t.Error("Error when migrating DerivedChargersV ", err.Error())
- }
- //check if version was updated
- if vrs, err := dcMigrator.dmOut.DataManager().DataDB().GetVersions(""); err != nil {
- t.Error(err)
- } else if vrs[utils.DerivedChargersV] != 0 {
- t.Errorf("Unexpected version returned: %d", vrs[utils.DerivedChargersV])
- }
- //check if derivch was migrate correctly
- result, err := dcMigrator.dmOut.DataManager().DataDB().GetAttributeProfileDrv(defaultTenant, attrProf.ID)
- if err != nil {
- t.Fatalf("Error when getting Attributes %v", err.Error())
- }
- result.Compile()
- sort.Slice(result.Attributes, func(i, j int) bool {
- return result.Attributes[i].FieldName < result.Attributes[j].FieldName
- }) // only for test; map returns random keys
- if !reflect.DeepEqual(*attrProf, *result) {
- t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(attrProf), utils.ToJSON(result))
- }
- result2, err := dcMigrator.dmOut.DataManager().DataDB().GetChargerProfileDrv(defaultTenant, charger.ID)
- if err != nil {
- t.Fatalf("Error when getting Attributes %v", err.Error())
- }
- if !reflect.DeepEqual(*charger, *result2) {
- t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(charger), utils.ToJSON(result2))
- }
- //check if old account was deleted
- if _, err = dcMigrator.dmIN.getV1DerivedChargers(); err != utils.ErrNoMoreData {
- t.Error("Error should be not found : ", err)
- }
- expDcIdx := map[string]utils.StringMap{
- "*string:~Account:1003": utils.StringMap{
- "*out:cgrates.org:*any:1003:*any_0": true,
- },
- }
- if dcidx, err := dcMigrator.dmOut.DataManager().GetFilterIndexes(utils.PrefixToIndexCache[utils.AttributeProfilePrefix],
- utils.ConcatenatedKey("cgrates.org", utils.MetaChargers), utils.MetaString, nil); err != nil {
- t.Error(err)
- } else if !reflect.DeepEqual(expDcIdx, dcidx) {
- t.Errorf("Expected %v, recived: %v", utils.ToJSON(expDcIdx), utils.ToJSON(dcidx))
- }
- expDcIdx = map[string]utils.StringMap{
- "*string:~Account:1003": utils.StringMap{
- "*out:cgrates.org:*any:1003:*any_0": true,
- },
- }
- if dcidx, err := dcMigrator.dmOut.DataManager().GetFilterIndexes(utils.PrefixToIndexCache[utils.ChargerProfilePrefix],
- utils.ConcatenatedKey("cgrates.org", utils.MetaChargers),
- utils.MetaString, nil); err == nil || err.Error() != utils.ErrNotFound.Error() {
- t.Errorf("Expected error %v, recived: %v with reply: %v", utils.ErrNotFound, err, utils.ToJSON(dcidx))
- }
-
- case utils.Move:
- /* // No Move tests
- if err := dcMigrator.dmIN.DataManager().DataDB().SetDerivedChargersV(derivch, utils.NonTransactional); err != nil {
- t.Error(err)
- }
- currentVersion := engine.CurrentDataDBVersions()
- err := dcMigrator.dmOut.DataManager().DataDB().SetVersions(currentVersion, false)
- if err != nil {
- t.Error("Error when setting version for DerivedChargersV ", err.Error())
- }
- //migrate accounts
- err, _ = dcMigrator.Migrate([]string{utils.MetaDerivedChargersV})
- if err != nil {
- t.Error("Error when dcMigratorrating DerivedChargersV ", err.Error())
- }
- //check if account was migrate correctly
- result, err := dcMigrator.dmOut.DataManager().DataDB().GetDerivedChargersV(derivch.GetId(), false)
- if err != nil {
- t.Error(err)
- }
- if !reflect.DeepEqual(derivch, result) {
- t.Errorf("Expecting: %+v, received: %+v", derivch, result)
- }
- //check if old account was deleted
- result, err = dcMigrator.dmIN.DataManager().DataDB().GetDerivedChargersV(derivch.GetId(), false)
- if err != utils.ErrNotFound {
- t.Error(err)
- }
- // */
+ err := dcMigrator.dmIN.setV1DerivedChargers(derivch)
+ if err != nil {
+ t.Error("Error when setting v1 DerivedChargersV ", err.Error())
}
+ currentVersion := engine.Versions{utils.DerivedChargersV: 1}
+ err = dcMigrator.dmIN.DataManager().DataDB().SetVersions(currentVersion, false)
+ if err != nil {
+ t.Error("Error when setting version for DerivedChargersV ", err.Error())
+ }
+ //check if version was set correctly
+ if vrs, err := dcMigrator.dmIN.DataManager().DataDB().GetVersions(""); err != nil {
+ t.Error(err)
+ } else if vrs[utils.DerivedChargersV] != 1 {
+ t.Errorf("Unexpected version returned: %d", vrs[utils.DerivedChargersV])
+ }
+ //migrate derivch
+ err, _ = dcMigrator.Migrate([]string{utils.MetaDerivedChargersV})
+ if err != nil {
+ t.Error("Error when migrating DerivedChargersV ", err.Error())
+ }
+ //check if version was updated
+ if vrs, err := dcMigrator.dmOut.DataManager().DataDB().GetVersions(""); err != nil {
+ t.Error(err)
+ } else if vrs[utils.DerivedChargersV] != 0 {
+ t.Errorf("Unexpected version returned: %d", vrs[utils.DerivedChargersV])
+ }
+ //check if derivch was migrate correctly
+ result, err := dcMigrator.dmOut.DataManager().DataDB().GetAttributeProfileDrv(defaultTenant, attrProf.ID)
+ if err != nil {
+ t.Fatalf("Error when getting Attributes %v", err.Error())
+ }
+ result.Compile()
+ sort.Slice(result.Attributes, func(i, j int) bool {
+ return result.Attributes[i].FieldName < result.Attributes[j].FieldName
+ }) // only for test; map returns random keys
+ if !reflect.DeepEqual(*attrProf, *result) {
+ t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(attrProf), utils.ToJSON(result))
+ }
+ result2, err := dcMigrator.dmOut.DataManager().DataDB().GetChargerProfileDrv(defaultTenant, charger.ID)
+ if err != nil {
+ t.Fatalf("Error when getting Attributes %v", err.Error())
+ }
+ if !reflect.DeepEqual(*charger, *result2) {
+ t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(charger), utils.ToJSON(result2))
+ }
+
+ //check if old account was deleted
+ if _, err = dcMigrator.dmIN.getV1DerivedChargers(); err != utils.ErrNoMoreData {
+ t.Error("Error should be not found : ", err)
+ }
+ expDcIdx := map[string]utils.StringMap{
+ "*string:~Account:1003": utils.StringMap{
+ "*out:cgrates.org:*any:1003:*any_0": true,
+ },
+ }
+ if dcidx, err := dcMigrator.dmOut.DataManager().GetFilterIndexes(utils.PrefixToIndexCache[utils.AttributeProfilePrefix],
+ utils.ConcatenatedKey("cgrates.org", utils.META_ANY), utils.MetaString, nil); err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(expDcIdx, dcidx) {
+ t.Errorf("Expected %v, recived: %v", utils.ToJSON(expDcIdx), utils.ToJSON(dcidx))
+ }
+ expDcIdx = map[string]utils.StringMap{
+ "*string:~Account:1003": utils.StringMap{
+ "*out:cgrates.org:*any:1003:*any_0": true,
+ },
+ }
+ if dcidx, err := dcMigrator.dmOut.DataManager().GetFilterIndexes(utils.PrefixToIndexCache[utils.ChargerProfilePrefix],
+ utils.ConcatenatedKey("cgrates.org", utils.META_ANY),
+ utils.MetaString, nil); err == nil || err.Error() != utils.ErrNotFound.Error() {
+ t.Errorf("Expected error %v, recived: %v with reply: %v", utils.ErrNotFound, err, utils.ToJSON(dcidx))
+ }
+
}
diff --git a/migrator/destinations.go b/migrator/destinations.go
index fc31461aa..146d51650 100644
--- a/migrator/destinations.go
+++ b/migrator/destinations.go
@@ -38,14 +38,13 @@ func (m *Migrator) migrateCurrentDestinations() (err error) {
if err != nil {
return err
}
- if dst != nil {
- if m.dryRun != true {
- if err := m.dmOut.DataManager().DataDB().SetDestination(dst, utils.NonTransactional); err != nil {
- return err
- }
- m.stats[utils.Destinations] += 1
- }
+ if dst == nil || m.dryRun {
+ continue
}
+ if err := m.dmOut.DataManager().DataDB().SetDestination(dst, utils.NonTransactional); err != nil {
+ return err
+ }
+ m.stats[utils.Destinations] += 1
}
return
}
@@ -70,10 +69,7 @@ func (m *Migrator) migrateDestinations() (err error) {
if m.sameDataDB {
return
}
- if err := m.migrateCurrentDestinations(); err != nil {
- return err
- }
- return
+ return m.migrateCurrentDestinations()
}
return
}
@@ -90,24 +86,24 @@ func (m *Migrator) migrateCurrentReverseDestinations() (err error) {
if err != nil {
return err
}
- if rdst != nil {
- for _, rdid := range rdst {
- rdstn, err := m.dmIN.DataManager().DataDB().GetDestination(rdid, true, utils.NonTransactional)
- if err != nil {
- return err
- }
- if rdstn != nil {
- if m.dryRun != true {
- if err := m.dmOut.DataManager().DataDB().SetDestination(rdstn, utils.NonTransactional); err != nil {
- return err
- }
- if err := m.dmOut.DataManager().DataDB().SetReverseDestination(rdstn, utils.NonTransactional); err != nil {
- return err
- }
- m.stats[utils.ReverseDestinations] += 1
- }
- }
+ if rdst == nil {
+ continue
+ }
+ for _, rdid := range rdst {
+ rdstn, err := m.dmIN.DataManager().DataDB().GetDestination(rdid, true, utils.NonTransactional)
+ if err != nil {
+ return err
}
+ if rdstn == nil || m.dryRun {
+ continue
+ }
+ if err := m.dmOut.DataManager().DataDB().SetDestination(rdstn, utils.NonTransactional); err != nil {
+ return err
+ }
+ if err := m.dmOut.DataManager().DataDB().SetReverseDestination(rdstn, utils.NonTransactional); err != nil {
+ return err
+ }
+ m.stats[utils.ReverseDestinations] += 1
}
}
return
@@ -133,10 +129,7 @@ func (m *Migrator) migrateReverseDestinations() (err error) {
if m.sameDataDB {
return
}
- if err := m.migrateCurrentReverseDestinations(); err != nil {
- return err
- }
- return
+ return m.migrateCurrentReverseDestinations()
}
return
}
diff --git a/migrator/dispatchers.go b/migrator/dispatchers.go
index e0da36d74..a73e3dde6 100644
--- a/migrator/dispatchers.go
+++ b/migrator/dispatchers.go
@@ -40,18 +40,17 @@ func (m *Migrator) migrateCurrentDispatcher() (err error) {
if err != nil {
return err
}
- if dpp != nil {
- if m.dryRun != true {
- if err := m.dmOut.DataManager().SetDispatcherProfile(dpp, true); err != nil {
- return err
- }
- if err := m.dmIN.DataManager().RemoveDispatcherProfile(tenant,
- idg, utils.NonTransactional, false); err != nil {
- return err
- }
- m.stats[utils.Dispatchers] += 1
- }
+ if dpp == nil || m.dryRun {
+ continue
}
+ if err := m.dmOut.DataManager().SetDispatcherProfile(dpp, true); err != nil {
+ return err
+ }
+ if err := m.dmIN.DataManager().RemoveDispatcherProfile(tenant,
+ idg, utils.NonTransactional, false); err != nil {
+ return err
+ }
+ m.stats[utils.Dispatchers] += 1
}
return
}
@@ -76,10 +75,7 @@ func (m *Migrator) migrateDispatchers() (err error) {
if m.sameDataDB {
return
}
- if err := m.migrateCurrentDispatcher(); err != nil {
- return err
- }
- return
+ return m.migrateCurrentDispatcher()
}
return
}
diff --git a/migrator/dispatchers_it_test.go b/migrator/dispatchers_it_test.go
index fac7e94f1..5e17291d9 100644
--- a/migrator/dispatchers_it_test.go
+++ b/migrator/dispatchers_it_test.go
@@ -173,14 +173,13 @@ func testDspITMigrateAndMove(t *testing.T) {
dspPrf := &engine.DispatcherProfile{
Tenant: "cgrates.org",
ID: "Dsp1",
- FilterIDs: []string{"*string:Accont:1001"},
+ 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),
},
Strategy: utils.MetaRandom,
- // Hosts: []string{"localhost", "192.168.56.203"},
- Weight: 20,
+ Weight: 20,
}
if err := dspMigrator.dmIN.DataManager().SetDispatcherProfile(dspPrf, false); err != nil {
t.Error(err)
diff --git a/migrator/migrator.go b/migrator/migrator.go
index d9f3799e4..e3eeba90e 100755
--- a/migrator/migrator.go
+++ b/migrator/migrator.go
@@ -92,8 +92,6 @@ func (m *Migrator) Migrate(taskIDs []string) (err error, stats map[string]int) {
err = m.migrateCDRs()
case utils.MetaSessionsCosts:
err = m.migrateSessionSCosts()
- // case utils.MetaCostDetails:
- // err = m.migrateCostDetails()
case utils.MetaAccounts:
err = m.migrateAccounts()
case utils.MetaActionPlans:
diff --git a/migrator/migrator_it_test.go b/migrator/migrator_it_test.go
deleted file mode 100644
index 499be7d7d..000000000
--- a/migrator/migrator_it_test.go
+++ /dev/null
@@ -1,1761 +0,0 @@
-// +build integration
-
-/*
-Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments
-Copyright (C) ITsysCOM GmbH
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see
-*/
-package migrator
-
-/*
-import (
- "flag"
- "fmt"
- "log"
- "path"
- "reflect"
- "testing"
- "time"
-
- "github.com/cgrates/cgrates/config"
- "github.com/cgrates/cgrates/engine"
- "github.com/cgrates/cgrates/utils"
-)
-
-var (
- isPostgres bool
- path_in string
- path_out string
- cfg_in *config.CGRConfig
- cfg_out *config.CGRConfig
- Move = "move"
- action string
- mig *Migrator
-
-)
-
-// subtests to be executed for each migrator
-var sTestsITMigrator = []func(t *testing.T){
- testFlush,
- testMigratorAccounts, // Done
- testMigratorActionPlans,
- testMigratorActionTriggers,
- testMigratorActions,
- testMigratorSharedGroups,
- testMigratorStats,
- testMigratorSessionsCosts, // Done
- testFlush,
- testMigratorAlias,
- //FIXME testMigratorReverseAlias,
- testMigratorCdrStats,
- testMigratorDerivedChargers,
- testMigratorDestinations,
- testMigratorReverseDestinations,
- testMigratorLCR,
- testMigratorRatingPlan,
- testMigratorRatingProfile,
- testMigratorRQF,
- testMigratorResource,
- testMigratorSubscribers,
- testMigratorTimings,
- testMigratorThreshold,
- testMigratorAttributeProfile,
- testFlush,
-}
-
-func TestMigratorITPostgresConnect(t *testing.T) {
- path_in := path.Join(*dataDir, "conf", "samples", "tutpostgres")
- cfg_in, err := config.NewCGRConfigFromFolder(path_in)
- if err != nil {
- t.Fatal(err)
- }
- dataDB, err := engine.ConfigureDataStorage(cfg_in.DataDbType, cfg_in.DataDbHost, cfg_in.DataDbPort, cfg_in.DataDbName, cfg_in.DataDbUser,
- cfg_in.DataDbPass, cfg_in.DBDataEncoding, config.CgrConfig().CacheCfg(), *loadHistorySize)
- if err != nil {
- log.Fatal(err)
- }
- dataDB2, err := engine.ConfigureDataStorage(cfg_in.DataDbType, cfg_in.DataDbHost, cfg_in.DataDbPort, cfg_in.DataDbName, cfg_in.DataDbUser,
- cfg_in.DataDbPass, cfg_in.DBDataEncoding, config.CgrConfig().CacheCfg(), *loadHistorySize)
- if err != nil {
- log.Fatal(err)
- }
- oldDataDB, err := ConfigureV1DataStorage(cfg_in.DataDbType, cfg_in.DataDbHost, cfg_in.DataDbPort, cfg_in.DataDbName, cfg_in.DataDbUser,
- cfg_in.DataDbPass, cfg_in.DBDataEncoding)
- if err != nil {
- log.Fatal(err)
- }
- storDB, err := engine.ConfigureStorDB(cfg_in.StorDBType, cfg_in.StorDBHost, cfg_in.StorDBPort, cfg_in.StorDBName,
- cfg_in.StorDBUser, cfg_in.StorDBPass,
- config.CgrConfig().StorDBMaxOpenConns, config.CgrConfig().StorDBMaxIdleConns, config.CgrConfig().StorDBConnMaxLifetime, config.CgrConfig().StorDBCDRSIndexes)
- if err != nil {
- log.Fatal(err)
- }
- oldstorDB, err := engine.ConfigureStorDB(cfg_in.StorDBType, cfg_in.StorDBHost, cfg_in.StorDBPort, cfg_in.StorDBName,
- cfg_in.StorDBUser, cfg_in.StorDBPass,
- config.CgrConfig().StorDBMaxOpenConns, config.CgrConfig().StorDBMaxIdleConns, config.CgrConfig().StorDBConnMaxLifetime, config.CgrConfig().StorDBCDRSIndexes)
- if err != nil {
- log.Fatal(err)
- }
- mig, err = NewMigrator(dataDB, dataDB2, cfg_in.DataDbType, cfg_in.DBDataEncoding, storDB, cfg_in.StorDBType, oldDataDB,
- cfg_in.DataDbType, cfg_in.DBDataEncoding, oldstorDB, cfg_in.StorDBType, false, true, true, false, false)
- if err != nil {
- log.Fatal(err)
- }
-}
-
-func TestMigratorITPostgres(t *testing.T) {
- action = utils.REDIS
- isPostgres = true
- for _, stest := range sTestsITMigrator {
- t.Run("TestITMigratorOnPostgres", stest)
- }
-}
-
-func TestMigratorITRedisConnect(t *testing.T) {
- path_in := path.Join(*dataDir, "conf", "samples", "tutmysql")
- cfg_in, err := config.NewCGRConfigFromFolder(path_in)
- if err != nil {
- t.Fatal(err)
- }
- dataDB, err := engine.ConfigureDataStorage(cfg_in.DataDbType, cfg_in.DataDbHost, cfg_in.DataDbPort, cfg_in.DataDbName,
- cfg_in.DataDbUser, cfg_in.DataDbPass, cfg_in.DBDataEncoding, config.CgrConfig().CacheCfg(), *loadHistorySize)
- if err != nil {
- log.Fatal(err)
- }
- dataDB2, err := engine.ConfigureDataStorage(cfg_in.DataDbType, cfg_in.DataDbHost, cfg_in.DataDbPort, cfg_in.DataDbName,
- cfg_in.DataDbUser, cfg_in.DataDbPass, cfg_in.DBDataEncoding, config.CgrConfig().CacheCfg(), *loadHistorySize)
- if err != nil {
- log.Fatal(err)
- }
- oldDataDB, err := ConfigureV1DataStorage(cfg_in.DataDbType, cfg_in.DataDbHost, cfg_in.DataDbPort, cfg_in.DataDbName,
- cfg_in.DataDbUser, cfg_in.DataDbPass, cfg_in.DBDataEncoding)
- if err != nil {
- log.Fatal(err)
- }
- storDB, err := engine.ConfigureStorDB(cfg_in.StorDBType, cfg_in.StorDBHost, cfg_in.StorDBPort, cfg_in.StorDBName,
- cfg_in.StorDBUser, cfg_in.StorDBPass,
- config.CgrConfig().StorDBMaxOpenConns, config.CgrConfig().StorDBMaxIdleConns, config.CgrConfig().StorDBConnMaxLifetime, config.CgrConfig().StorDBCDRSIndexes)
- if err != nil {
- log.Fatal(err)
- }
- oldstorDB, err := engine.ConfigureStorDB(cfg_in.StorDBType, cfg_in.StorDBHost, cfg_in.StorDBPort, cfg_in.StorDBName,
- cfg_in.StorDBUser, cfg_in.StorDBPass,
- config.CgrConfig().StorDBMaxOpenConns, config.CgrConfig().StorDBMaxIdleConns, config.CgrConfig().StorDBConnMaxLifetime, config.CgrConfig().StorDBCDRSIndexes)
- if err != nil {
- log.Fatal(err)
- }
- mig, err = NewMigrator(dataDB, dataDB2, cfg_in.DataDbType, cfg_in.DBDataEncoding, storDB, cfg_in.StorDBType, oldDataDB,
- cfg_in.DataDbType, cfg_in.DBDataEncoding, oldstorDB, cfg_in.StorDBType, false, true, true, false, false)
- if err != nil {
- log.Fatal(err)
- }
-}
-
-func TestMigratorITRedis(t *testing.T) {
- action = utils.REDIS
- isPostgres = false
- for _, stest := range sTestsITMigrator {
- t.Run("TestITMigratorOnRedis", stest)
- }
-}
-
-func TestMigratorITMongoConnect(t *testing.T) {
- path_in := path.Join(*dataDir, "conf", "samples", "tutmongo")
- cfg_in, err := config.NewCGRConfigFromFolder(path_in)
- if err != nil {
- t.Fatal(err)
- }
- dataDB, err := engine.ConfigureDataStorage(cfg_in.DataDbType, cfg_in.DataDbHost, cfg_in.DataDbPort, cfg_in.DataDbName,
- cfg_in.DataDbUser, cfg_in.DataDbPass, cfg_in.DBDataEncoding, config.CgrConfig().CacheCfg(), *loadHistorySize)
- if err != nil {
- log.Fatal(err)
- }
- dataDB2, err := engine.ConfigureDataStorage(cfg_in.DataDbType, cfg_in.DataDbHost, cfg_in.DataDbPort, cfg_in.DataDbName,
- cfg_in.DataDbUser, cfg_in.DataDbPass, cfg_in.DBDataEncoding, config.CgrConfig().CacheCfg(), *loadHistorySize)
- if err != nil {
- log.Fatal(err)
- }
- oldDataDB, err := ConfigureV1DataStorage(cfg_in.DataDbType, cfg_in.DataDbHost, cfg_in.DataDbPort, cfg_in.DataDbName,
- cfg_in.DataDbUser, cfg_in.DataDbPass, cfg_in.DBDataEncoding)
- if err != nil {
- log.Fatal(err)
- }
- storDB, err := engine.ConfigureStorDB(cfg_in.StorDBType, cfg_in.StorDBHost, cfg_in.StorDBPort, cfg_in.StorDBName,
- cfg_in.StorDBUser, cfg_in.StorDBPass,
- config.CgrConfig().StorDBMaxOpenConns, config.CgrConfig().StorDBMaxIdleConns, config.CgrConfig().StorDBConnMaxLifetime, config.CgrConfig().StorDBCDRSIndexes)
- if err != nil {
- log.Fatal(err)
- }
- oldstorDB, err := engine.ConfigureStorDB(cfg_in.StorDBType, cfg_in.StorDBHost, cfg_in.StorDBPort, cfg_in.StorDBName,
- cfg_in.StorDBUser, cfg_in.StorDBPass,
- config.CgrConfig().StorDBMaxOpenConns, config.CgrConfig().StorDBMaxIdleConns, config.CgrConfig().StorDBConnMaxLifetime, config.CgrConfig().StorDBCDRSIndexes)
- if err != nil {
- log.Fatal(err)
- }
- mig, err = NewMigrator(dataDB, dataDB2, cfg_in.DataDbType, cfg_in.DBDataEncoding, storDB, cfg_in.StorDBType, oldDataDB,
- cfg_in.DataDbType, cfg_in.DBDataEncoding, oldstorDB, cfg_in.StorDBType, false, true, true, false, false)
- if err != nil {
- log.Fatal(err)
- }
-}
-
-func TestMigratorITMongo(t *testing.T) {
- action = utils.MONGO
- for _, stest := range sTestsITMigrator {
- t.Run("TestITMigratorOnMongo", stest)
- }
-}
-
-func TestMigratorITMoveConnect(t *testing.T) {
- path_in := path.Join(*dataDir, "conf", "samples", "tutmongo")
- cfg_in, err := config.NewCGRConfigFromFolder(path_in)
- if err != nil {
- t.Fatal(err)
- }
- path_out := path.Join(*dataDir, "conf", "samples", "tutmysql")
- cfg_out, err := config.NewCGRConfigFromFolder(path_out)
- if err != nil {
- t.Fatal(err)
- }
- dataDB, err := engine.ConfigureDataStorage(cfg_in.DataDbType, cfg_in.DataDbHost, cfg_in.DataDbPort, cfg_in.DataDbName,
- cfg_in.DataDbUser, cfg_in.DataDbPass, cfg_in.DBDataEncoding, config.CgrConfig().CacheCfg(), *loadHistorySize)
- if err != nil {
- log.Fatal(err)
- }
- dataDB2, err := engine.ConfigureDataStorage(cfg_out.DataDbType, cfg_out.DataDbHost, cfg_out.DataDbPort, cfg_out.DataDbName,
- cfg_out.DataDbUser, cfg_out.DataDbPass, cfg_out.DBDataEncoding, config.CgrConfig().CacheCfg(), *loadHistorySize)
- if err != nil {
- log.Fatal(err)
- }
- oldDataDB, err := ConfigureV1DataStorage(cfg_out.DataDbType, cfg_out.DataDbHost, cfg_out.DataDbPort, cfg_out.DataDbName,
- cfg_out.DataDbUser, cfg_out.DataDbPass, cfg_out.DBDataEncoding)
- if err != nil {
- log.Fatal(err)
- }
- storDBIn, err := engine.ConfigureStorDB(cfg_in.StorDBType, cfg_in.StorDBHost, cfg_in.StorDBPort, cfg_in.StorDBName,
- cfg_in.StorDBUser, cfg_in.StorDBPass,
- config.CgrConfig().StorDBMaxOpenConns, config.CgrConfig().StorDBMaxIdleConns, config.CgrConfig().StorDBConnMaxLifetime, config.CgrConfig().StorDBCDRSIndexes)
- if err != nil {
- log.Fatal(err)
- }
- storDBOut, err := engine.ConfigureStorDB(cfg_out.StorDBType, cfg_out.StorDBHost, cfg_out.StorDBPort, cfg_out.StorDBName,
- cfg_out.StorDBUser, cfg_out.StorDBPass,
- config.CgrConfig().StorDBMaxOpenConns, config.CgrConfig().StorDBMaxIdleConns, config.CgrConfig().StorDBConnMaxLifetime, config.CgrConfig().StorDBCDRSIndexes)
- if err != nil {
- log.Fatal(err)
- }
- oldstorDB, err := ConfigureV1StorDB(cfg_out.StorDBType, cfg_out.StorDBHost, cfg_out.StorDBPort, cfg_out.StorDBName,
- cfg_out.StorDBUser, cfg_out.StorDBPass)
- if err != nil {
- log.Fatal(err)
- }
- mig, err = NewMigrator(dataDB2, dataDB, cfg_in.DataDbType, cfg_in.DBDataEncoding, storDBOut, storDBIn, cfg_in.StorDBType, oldDataDB,
- cfg_in.DataDbType, cfg_in.DBDataEncoding, oldstorDB, cfg_in.StorDBType, false, false, false, false, false)
- if err != nil {
- log.Fatal(err)
- }
-}
-
-func TestMigratorITMove(t *testing.T) {
- action = Move
- for _, stest := range sTestsITMigrator {
- t.Run("TestITMigratorOnMongo", stest)
- }
-}
-
-func testFlush(t *testing.T) {
- mig.dmOut.DataDB().Flush("")
- if err := engine.SetDBVersions(mig.dmOut.DataDB()); err != nil {
- t.Error("Error ", err.Error())
- }
- if path_out != "" {
- if err := mig.storDBIn.Flush(path.Join(cfg_in.DataFolderPath, "storage", cfg_in.StorDBType)); err != nil {
- t.Error(err)
- }
- }
- if path_out != "" {
- if err := mig.storDBOut.Flush(path.Join(cfg_out.DataFolderPath, "storage", cfg_out.StorDBType)); err != nil {
- t.Error(err)
- }
- }
-}
-
-func testMigratorActionPlans(t *testing.T) {
- v1ap := &v1ActionPlans{&v1ActionPlan{Id: "test", AccountIds: []string{"one"}, Timing: &engine.RateInterval{Timing: &engine.RITiming{Years: utils.Years{}, Months: utils.Months{}, MonthDays: utils.MonthDays{}, WeekDays: utils.WeekDays{}}}}}
- ap := &engine.ActionPlan{Id: "test", AccountIDs: utils.StringMap{"one": true}, ActionTimings: []*engine.ActionTiming{&engine.ActionTiming{Timing: &engine.RateInterval{Timing: &engine.RITiming{Years: utils.Years{}, Months: utils.Months{}, MonthDays: utils.MonthDays{}, WeekDays: utils.WeekDays{}}}}}}
- switch action {
- case utils.REDIS, utils.Mongo:
- err := mig.oldDataDB.setV1ActionPlans(v1ap)
- if err != nil {
- t.Error("Error when setting v1 ActionPlan ", err.Error())
- }
- currentVersion := engine.Versions{utils.StatS: 2, utils.Thresholds: 2, utils.Accounts: 2, utils.Actions: 2, utils.ActionTriggers: 2, utils.ActionPlans: 1, utils.SharedGroups: 2}
- err = mig.dmOut.DataDB().SetVersions(currentVersion, false)
- if err != nil {
- t.Error("Error when setting version for ActionPlan ", err.Error())
- }
- err, _ = mig.Migrate([]string{utils.MetaActionPlans})
- if err != nil {
- t.Error("Error when migrating ActionPlans ", err.Error())
- }
- result, err := mig.dmOut.DataDB().GetActionPlan(ap.Id, true, utils.NonTransactional)
- if err != nil {
- t.Error("Error when getting ActionPlan ", err.Error())
- }
- if ap.Id != result.Id || !reflect.DeepEqual(ap.AccountIDs, result.AccountIDs) {
- t.Errorf("Expecting: %+v, received: %+v", *ap, result)
- } else if !reflect.DeepEqual(ap.ActionTimings[0].Timing, result.ActionTimings[0].Timing) {
- t.Errorf("Expecting: %+v, received: %+v", ap.ActionTimings[0].Timing, result.ActionTimings[0].Timing)
- } else if ap.ActionTimings[0].Weight != result.ActionTimings[0].Weight || ap.ActionTimings[0].ActionsID != result.ActionTimings[0].ActionsID {
- t.Errorf("Expecting: %+v, received: %+v", ap.ActionTimings[0].Weight, result.ActionTimings[0].Weight)
- }
- case Move:
- if err := mig.dmIN.DataDB().SetActionPlan(ap.Id, ap, true, utils.NonTransactional); err != nil {
- t.Error("Error when setting ActionPlan ", err.Error())
- }
- currentVersion := engine.CurrentDataDBVersions()
- err := mig.dmOut.DataDB().SetVersions(currentVersion, false)
- if err != nil {
- t.Error("Error when setting version for ActionPlan ", err.Error())
- }
- err, _ = mig.Migrate([]string{utils.MetaActionPlans})
- if err != nil {
- t.Error("Error when migrating ActionPlans ", err.Error())
- }
- result, err := mig.dmOut.DataDB().GetActionPlan(ap.Id, true, utils.NonTransactional)
- if err != nil {
- t.Error("Error when getting ActionPlan ", err.Error())
- }
- if ap.Id != result.Id || !reflect.DeepEqual(ap.AccountIDs, result.AccountIDs) {
- t.Errorf("Expecting: %+v, received: %+v", *ap, result)
- } else if !reflect.DeepEqual(ap.ActionTimings[0].Timing, result.ActionTimings[0].Timing) {
- t.Errorf("Expecting: %+v, received: %+v", ap.ActionTimings[0].Timing, result.ActionTimings[0].Timing)
- } else if ap.ActionTimings[0].Weight != result.ActionTimings[0].Weight || ap.ActionTimings[0].ActionsID != result.ActionTimings[0].ActionsID {
- t.Errorf("Expecting: %+v, received: %+v", ap.ActionTimings[0].Weight, result.ActionTimings[0].Weight)
- }
- }
-}
-
-func testMigratorActionTriggers(t *testing.T) {
- tim := time.Date(2012, time.February, 27, 23, 59, 59, 0, time.UTC)
- v1atrs := &v1ActionTriggers{
- &v1ActionTrigger{
- Id: "Test",
- BalanceType: "*monetary",
- BalanceDirection: "*out",
- ThresholdType: "*max_balance",
- ThresholdValue: 2,
- ActionsId: "TEST_ACTIONS",
- Executed: true,
- BalanceExpirationDate: tim,
- },
- }
- atrs := engine.ActionTriggers{
- &engine.ActionTrigger{
- ID: "Test",
- Balance: &engine.BalanceFilter{
- Timings: []*engine.RITiming{},
- ExpirationDate: utils.TimePointer(tim),
- Type: utils.StringPointer(utils.MONETARY),
- Directions: utils.StringMapPointer(utils.NewStringMap(utils.OUT)),
- },
- ExpirationDate: tim,
- LastExecutionTime: tim,
- ActivationDate: tim,
- ThresholdType: utils.TRIGGER_MAX_BALANCE,
- ThresholdValue: 2,
- ActionsID: "TEST_ACTIONS",
- Executed: true,
- },
- }
- switch action {
- case utils.REDIS, utils.MONGO:
- err := mig.oldDataDB.setV1ActionTriggers(v1atrs)
- if err != nil {
- t.Error("Error when setting v1 ActionTriggers ", err.Error())
- }
- currentVersion := engine.Versions{utils.StatS: 2, utils.Thresholds: 2, utils.Accounts: 2, utils.Actions: 2, utils.ActionTriggers: 1, utils.ActionPlans: 2, utils.SharedGroups: 2}
- err = mig.dmOut.DataDB().SetVersions(currentVersion, false)
- if err != nil {
- t.Error("Error when setting version for ActionTriggers ", err.Error())
- }
- err, _ = mig.Migrate([]string{utils.MetaActionTriggers})
- if err != nil {
- t.Error("Error when migrating ActionTriggers ", err.Error())
- }
- result, err := mig.dmOut.GetActionTriggers((*v1atrs)[0].Id, true, utils.NonTransactional)
- if err != nil {
- t.Error("Error when getting ActionTriggers ", err.Error())
- }
- if !reflect.DeepEqual(atrs[0].ID, result[0].ID) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].ID, result[0].ID)
- } else if !reflect.DeepEqual(atrs[0].UniqueID, result[0].UniqueID) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].UniqueID, result[0].UniqueID)
- } else if !reflect.DeepEqual(atrs[0].ThresholdType, result[0].ThresholdType) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].ThresholdType, result[0].ThresholdType)
- } else if !reflect.DeepEqual(atrs[0].ThresholdValue, result[0].ThresholdValue) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].ThresholdValue, result[0].ThresholdValue)
- } else if !reflect.DeepEqual(atrs[0].Recurrent, result[0].Recurrent) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Recurrent, result[0].Recurrent)
- } else if !reflect.DeepEqual(atrs[0].MinSleep, result[0].MinSleep) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].MinSleep, result[0].MinSleep)
- } else if !reflect.DeepEqual(atrs[0].ExpirationDate, result[0].ExpirationDate) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].ExpirationDate, result[0].ExpirationDate)
- } else if !reflect.DeepEqual(atrs[0].ActivationDate, result[0].ActivationDate) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].ActivationDate, result[0].ActivationDate)
- } else if !reflect.DeepEqual(atrs[0].Balance.Type, result[0].Balance.Type) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Type, result[0].Balance.Type)
- } else if !reflect.DeepEqual(atrs[0].Weight, result[0].Weight) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Weight, result[0].Weight)
- } else if !reflect.DeepEqual(atrs[0].ActionsID, result[0].ActionsID) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].ActionsID, result[0].ActionsID)
- } else if !reflect.DeepEqual(atrs[0].MinQueuedItems, result[0].MinQueuedItems) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].MinQueuedItems, result[0].MinQueuedItems)
- } else if !reflect.DeepEqual(atrs[0].Executed, result[0].Executed) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Executed, result[0].Executed)
- } else if !reflect.DeepEqual(atrs[0].LastExecutionTime, result[0].LastExecutionTime) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].LastExecutionTime, result[0].LastExecutionTime)
- }
- //Testing each field of balance
- if !reflect.DeepEqual(atrs[0].Balance.Uuid, result[0].Balance.Uuid) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Uuid, result[0].Balance.Uuid)
- } else if !reflect.DeepEqual(atrs[0].Balance.ID, result[0].Balance.ID) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.ID, result[0].Balance.ID)
- } else if !reflect.DeepEqual(atrs[0].Balance.Type, result[0].Balance.Type) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Type, result[0].Balance.Type)
- } else if !reflect.DeepEqual(atrs[0].Balance.Value, result[0].Balance.Value) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Value, result[0].Balance.Value)
- } else if !reflect.DeepEqual(atrs[0].Balance.Directions, result[0].Balance.Directions) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Directions, result[0].Balance.Directions)
- } else if !reflect.DeepEqual(atrs[0].Balance.ExpirationDate, result[0].Balance.ExpirationDate) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.ExpirationDate, result[0].Balance.ExpirationDate)
- } else if !reflect.DeepEqual(atrs[0].Balance.Weight, result[0].Balance.Weight) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Weight, result[0].Balance.Weight)
- } else if !reflect.DeepEqual(atrs[0].Balance.DestinationIDs, result[0].Balance.DestinationIDs) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.DestinationIDs, result[0].Balance.DestinationIDs)
- } else if !reflect.DeepEqual(atrs[0].Balance.RatingSubject, result[0].Balance.RatingSubject) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.RatingSubject, result[0].Balance.RatingSubject)
- } else if !reflect.DeepEqual(atrs[0].Balance.Categories, result[0].Balance.Categories) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Categories, result[0].Balance.Categories)
- } else if !reflect.DeepEqual(atrs[0].Balance.SharedGroups, result[0].Balance.SharedGroups) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.SharedGroups, result[0].Balance.SharedGroups)
- } else if !reflect.DeepEqual(atrs[0].Balance.TimingIDs, result[0].Balance.TimingIDs) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.TimingIDs, result[0].Balance.TimingIDs)
- } else if !reflect.DeepEqual(atrs[0].Balance.TimingIDs, result[0].Balance.TimingIDs) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Timings, result[0].Balance.Timings)
- } else if !reflect.DeepEqual(atrs[0].Balance.Disabled, result[0].Balance.Disabled) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Disabled, result[0].Balance.Disabled)
- } else if !reflect.DeepEqual(atrs[0].Balance.Factor, result[0].Balance.Factor) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Factor, result[0].Balance.Factor)
- } else if !reflect.DeepEqual(atrs[0].Balance.Blocker, result[0].Balance.Blocker) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Blocker, result[0].Balance.Blocker)
- }
- case Move:
- if err := mig.dmIN.SetActionTriggers(atrs[0].ID, atrs, utils.NonTransactional); err != nil {
- t.Error("Error when setting ActionPlan ", err.Error())
- }
- currentVersion := engine.CurrentDataDBVersions()
- err := mig.dmOut.DataDB().SetVersions(currentVersion, false)
- if err != nil {
- t.Error("Error when setting version for ActionTriggers ", err.Error())
- }
- err, _ = mig.Migrate([]string{utils.MetaActionTriggers})
- if err != nil {
- t.Error("Error when migrating ActionTriggers ", err.Error())
- }
- result, err := mig.dmOut.GetActionTriggers(atrs[0].ID, true, utils.NonTransactional)
- if err != nil {
- t.Error("Error when getting ActionTriggers ", err.Error())
- }
- if !reflect.DeepEqual(atrs[0].ID, result[0].ID) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].ID, result[0].ID)
- } else if !reflect.DeepEqual(atrs[0].UniqueID, result[0].UniqueID) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].UniqueID, result[0].UniqueID)
- } else if !reflect.DeepEqual(atrs[0].ThresholdType, result[0].ThresholdType) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].ThresholdType, result[0].ThresholdType)
- } else if !reflect.DeepEqual(atrs[0].ThresholdValue, result[0].ThresholdValue) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].ThresholdValue, result[0].ThresholdValue)
- } else if !reflect.DeepEqual(atrs[0].Recurrent, result[0].Recurrent) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Recurrent, result[0].Recurrent)
- } else if !reflect.DeepEqual(atrs[0].MinSleep, result[0].MinSleep) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].MinSleep, result[0].MinSleep)
- } else if !reflect.DeepEqual(atrs[0].ExpirationDate, result[0].ExpirationDate) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].ExpirationDate, result[0].ExpirationDate)
- } else if !reflect.DeepEqual(atrs[0].ActivationDate, result[0].ActivationDate) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].ActivationDate, result[0].ActivationDate)
- } else if !reflect.DeepEqual(atrs[0].Balance.Type, result[0].Balance.Type) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Type, result[0].Balance.Type)
- } else if !reflect.DeepEqual(atrs[0].Weight, result[0].Weight) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Weight, result[0].Weight)
- } else if !reflect.DeepEqual(atrs[0].ActionsID, result[0].ActionsID) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].ActionsID, result[0].ActionsID)
- } else if !reflect.DeepEqual(atrs[0].MinQueuedItems, result[0].MinQueuedItems) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].MinQueuedItems, result[0].MinQueuedItems)
- } else if !reflect.DeepEqual(atrs[0].Executed, result[0].Executed) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Executed, result[0].Executed)
- } else if !reflect.DeepEqual(atrs[0].LastExecutionTime, result[0].LastExecutionTime) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].LastExecutionTime, result[0].LastExecutionTime)
- }
- //Testing each field of balance
- if !reflect.DeepEqual(atrs[0].Balance.Uuid, result[0].Balance.Uuid) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Uuid, result[0].Balance.Uuid)
- } else if !reflect.DeepEqual(atrs[0].Balance.ID, result[0].Balance.ID) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.ID, result[0].Balance.ID)
- } else if !reflect.DeepEqual(atrs[0].Balance.Type, result[0].Balance.Type) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Type, result[0].Balance.Type)
- } else if !reflect.DeepEqual(atrs[0].Balance.Value, result[0].Balance.Value) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Value, result[0].Balance.Value)
- } else if !reflect.DeepEqual(atrs[0].Balance.Directions, result[0].Balance.Directions) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Directions, result[0].Balance.Directions)
- } else if !reflect.DeepEqual(atrs[0].Balance.ExpirationDate, result[0].Balance.ExpirationDate) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.ExpirationDate, result[0].Balance.ExpirationDate)
- } else if !reflect.DeepEqual(atrs[0].Balance.Weight, result[0].Balance.Weight) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Weight, result[0].Balance.Weight)
- } else if !reflect.DeepEqual(atrs[0].Balance.DestinationIDs, result[0].Balance.DestinationIDs) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.DestinationIDs, result[0].Balance.DestinationIDs)
- } else if !reflect.DeepEqual(atrs[0].Balance.RatingSubject, result[0].Balance.RatingSubject) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.RatingSubject, result[0].Balance.RatingSubject)
- } else if !reflect.DeepEqual(atrs[0].Balance.Categories, result[0].Balance.Categories) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Categories, result[0].Balance.Categories)
- } else if !reflect.DeepEqual(atrs[0].Balance.SharedGroups, result[0].Balance.SharedGroups) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.SharedGroups, result[0].Balance.SharedGroups)
- } else if !reflect.DeepEqual(atrs[0].Balance.TimingIDs, result[0].Balance.TimingIDs) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.TimingIDs, result[0].Balance.TimingIDs)
- } else if !reflect.DeepEqual(atrs[0].Balance.TimingIDs, result[0].Balance.TimingIDs) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Timings, result[0].Balance.Timings)
- } else if !reflect.DeepEqual(atrs[0].Balance.Disabled, result[0].Balance.Disabled) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Disabled, result[0].Balance.Disabled)
- } else if !reflect.DeepEqual(atrs[0].Balance.Factor, result[0].Balance.Factor) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Factor, result[0].Balance.Factor)
- } else if !reflect.DeepEqual(atrs[0].Balance.Blocker, result[0].Balance.Blocker) {
- t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Blocker, result[0].Balance.Blocker)
- }
- }
-}
-
-func testMigratorActions(t *testing.T) {
- v1act := &v1Actions{
- &v1Action{
- Id: "test",
- ActionType: "",
- BalanceType: "",
- Direction: "INBOUND",
- ExtraParameters: "",
- ExpirationString: "",
- Balance: &v1Balance{
- Timings: []*engine.RITiming{
- &engine.RITiming{
- Years: utils.Years{},
- Months: utils.Months{},
- MonthDays: utils.MonthDays{},
- WeekDays: utils.WeekDays{},
- },
- },
- },
- },
- }
- act := &engine.Actions{
- &engine.Action{
- Id: "test",
- ActionType: "",
- ExtraParameters: "",
- ExpirationString: "",
- Weight: 0.00,
- Balance: &engine.BalanceFilter{
- Timings: []*engine.RITiming{
- &engine.RITiming{
- Years: utils.Years{},
- Months: utils.Months{},
- MonthDays: utils.MonthDays{},
- WeekDays: utils.WeekDays{},
- },
- },
- },
- },
- }
- switch action {
- case utils.REDIS, utils.MONGO:
- err := mig.oldDataDB.setV1Actions(v1act)
- if err != nil {
- t.Error("Error when setting v1 Actions ", err.Error())
- }
- currentVersion := engine.Versions{utils.StatS: 2, utils.Thresholds: 2, utils.Accounts: 2, utils.Actions: 1, utils.ActionTriggers: 2, utils.ActionPlans: 2, utils.SharedGroups: 2}
- err = mig.dmOut.DataDB().SetVersions(currentVersion, false)
- if err != nil {
- t.Error("Error when setting version for Actions ", err.Error())
- }
- err, _ = mig.Migrate([]string{utils.MetaActions})
- if err != nil {
- t.Error("Error when migrating Actions ", err.Error())
- }
- result, err := mig.dmOut.GetActions((*v1act)[0].Id, true, utils.NonTransactional)
- if err != nil {
- t.Error("Error when getting Actions ", err.Error())
- }
- if !reflect.DeepEqual(*act, result) {
- t.Errorf("Expecting: %+v, received: %+v", *act, result)
- }
- case Move:
- if err := mig.dmIN.SetActions((*v1act)[0].Id, *act, utils.NonTransactional); err != nil {
- t.Error("Error when setting ActionPlan ", err.Error())
- }
- currentVersion := engine.CurrentDataDBVersions()
- err := mig.dmOut.DataDB().SetVersions(currentVersion, false)
- if err != nil {
- t.Error("Error when setting version for Actions ", err.Error())
- }
- err, _ = mig.Migrate([]string{utils.MetaActions})
- if err != nil {
- t.Error("Error when migrating Actions ", err.Error())
- }
- result, err := mig.dmOut.GetActions((*v1act)[0].Id, true, utils.NonTransactional)
- if err != nil {
- t.Error("Error when getting Actions ", err.Error())
- }
- if !reflect.DeepEqual(*act, result) {
- t.Errorf("Expecting: %+v, received: %+v", *act, result)
- }
- }
-}
-
-func testMigratorSharedGroups(t *testing.T) {
- v1sqp := &v1SharedGroup{
- Id: "Test",
- AccountParameters: map[string]*engine.SharingParameters{
- "test": &engine.SharingParameters{Strategy: "*highest"},
- },
- MemberIds: []string{"1", "2", "3"},
- }
- sqp := &engine.SharedGroup{
- Id: "Test",
- AccountParameters: map[string]*engine.SharingParameters{
- "test": &engine.SharingParameters{Strategy: "*highest"},
- },
- MemberIds: utils.NewStringMap("1", "2", "3"),
- }
- switch action {
- case utils.REDIS, utils.MONGO:
- err := mig.oldDataDB.setV1SharedGroup(v1sqp)
- if err != nil {
- t.Error("Error when setting v1 SharedGroup ", err.Error())
- }
- currentVersion := engine.Versions{utils.StatS: 2, utils.Thresholds: 2, utils.Accounts: 2, utils.Actions: 2, utils.ActionTriggers: 2, utils.ActionPlans: 2, utils.SharedGroups: 1}
- err = mig.dmOut.DataDB().SetVersions(currentVersion, false)
- if err != nil {
- t.Error("Error when setting version for SharedGroup ", err.Error())
- }
- err, _ = mig.Migrate([]string{utils.MetaSharedGroups})
- if err != nil {
- t.Error("Error when migrating SharedGroup ", err.Error())
- }
- result, err := mig.dmOut.GetSharedGroup(v1sqp.Id, true, utils.NonTransactional)
- if err != nil {
- t.Error("Error when getting SharedGroup ", err.Error())
- }
- if !reflect.DeepEqual(sqp, result) {
- t.Errorf("Expecting: %+v, received: %+v", sqp, result)
- }
- case Move:
- if err := mig.dmIN.SetSharedGroup(sqp, utils.NonTransactional); err != nil {
- t.Error("Error when setting SharedGroup ", err.Error())
- }
- currentVersion := engine.CurrentDataDBVersions()
- err := mig.dmOut.DataDB().SetVersions(currentVersion, false)
- if err != nil {
- t.Error("Error when setting version for SharedGroup ", err.Error())
- }
- err, _ = mig.Migrate([]string{utils.MetaSharedGroups})
- if err != nil {
- t.Error("Error when migrating SharedGroup ", err.Error())
- }
- result, err := mig.dmOut.GetSharedGroup(sqp.Id, true, utils.NonTransactional)
- if err != nil {
- t.Error("Error when getting SharedGroup ", err.Error())
- }
- if !reflect.DeepEqual(sqp, result) {
- t.Errorf("Expecting: %+v, received: %+v", sqp, result)
- }
- }
-}
-
-func testMigratorStats(t *testing.T) {
- tim := time.Date(2012, time.February, 27, 23, 59, 59, 0, time.UTC)
- var filters []*engine.FilterRule
- v1Sts := &v1Stat{
- Id: "test", // Config id, unique per config instance
- QueueLength: 10, // Number of items in the stats buffer
- TimeWindow: time.Duration(1) * time.Second, // Will only keep the CDRs who's call setup time is not older than time.Now()-TimeWindow
- SaveInterval: time.Duration(1) * time.Second,
- Metrics: []string{"ASR", "ACD", "ACC"},
- SetupInterval: []time.Time{time.Now()},
- TOR: []string{},
- CdrHost: []string{},
- CdrSource: []string{},
- ReqType: []string{},
- Direction: []string{},
- Tenant: []string{},
- Category: []string{},
- Account: []string{},
- Subject: []string{},
- DestinationIds: []string{},
- UsageInterval: []time.Duration{1 * time.Second},
- PddInterval: []time.Duration{1 * time.Second},
- Supplier: []string{},
- DisconnectCause: []string{},
- MediationRunIds: []string{},
- RatedAccount: []string{},
- RatedSubject: []string{},
- CostInterval: []float64{},
- Triggers: engine.ActionTriggers{
- &engine.ActionTrigger{
- ID: "Test",
- Balance: &engine.BalanceFilter{
- ID: utils.StringPointer("TESTB"),
- Timings: []*engine.RITiming{},
- ExpirationDate: utils.TimePointer(tim),
- Type: utils.StringPointer(utils.MONETARY),
- Directions: utils.StringMapPointer(utils.NewStringMap(utils.OUT)),
- },
- ExpirationDate: tim,
- LastExecutionTime: tim,
- ActivationDate: tim,
- ThresholdType: utils.TRIGGER_MAX_BALANCE,
- ThresholdValue: 2,
- ActionsID: "TEST_ACTIONS",
- Executed: true,
- },
- },
- }
-
- x, _ := engine.NewFilterRule(engine.MetaGreaterOrEqual, "SetupInterval", []string{v1Sts.SetupInterval[0].String()})
- filters = append(filters, x)
- x, _ = engine.NewFilterRule(engine.MetaGreaterOrEqual, "UsageInterval", []string{v1Sts.UsageInterval[0].String()})
- filters = append(filters, x)
- x, _ = engine.NewFilterRule(engine.MetaGreaterOrEqual, "PddInterval", []string{v1Sts.PddInterval[0].String()})
- filters = append(filters, x)
-
- filter := &engine.Filter{Tenant: config.CgrConfig().DefaultTenant, ID: v1Sts.Id, Rules: filters}
-
- sqp := &engine.StatQueueProfile{
- Tenant: "cgrates.org",
- ID: "test",
- FilterIDs: []string{v1Sts.Id},
- QueueLength: 10,
- TTL: time.Duration(0) * time.Second,
- Metrics: []*utils.MetricWithParams{
- &utils.MetricWithParams{MetricID: "*asr", Parameters: ""},
- &utils.MetricWithParams{MetricID: "*acd", Parameters: ""},
- &utils.MetricWithParams{MetricID: "*acc", Parameters: ""},
- },
- ThresholdIDs: []string{"Test"},
- Blocker: false,
- Stored: true,
- Weight: float64(0),
- MinItems: 0,
- }
- sq := &engine.StatQueue{Tenant: config.CgrConfig().DefaultTenant,
- ID: v1Sts.Id,
- SQMetrics: make(map[string]engine.StatMetric),
- }
- for _, metricwparam := range sqp.Metrics {
- if metric, err := engine.NewStatMetric(metricwparam.MetricID, 0, metricwparam.Parameters); err != nil {
- t.Error("Error when creating newstatMETRIc ", err.Error())
- } else {
- if _, has := sq.SQMetrics[metricwparam.MetricID]; !has {
- sq.SQMetrics[metricwparam.MetricID] = metric
- }
- }
- }
- switch action {
- case utils.REDIS, utils.MONGO:
- err := mig.oldDataDB.setV1Stats(v1Sts)
- if err != nil {
- t.Error("Error when setting v1Stat ", err.Error())
- }
- currentVersion := engine.Versions{utils.StatS: 1, utils.Thresholds: 2, utils.Accounts: 2, utils.Actions: 2, utils.ActionTriggers: 2, utils.ActionPlans: 2, utils.SharedGroups: 2}
- err = mig.dmOut.DataDB().SetVersions(currentVersion, false)
- if err != nil {
- t.Error("Error when setting version for stats ", err.Error())
- }
- err, _ = mig.Migrate([]string{utils.MetaStats})
- if err != nil {
- t.Error("Error when migrating Stats ", err.Error())
- }
- result, err := mig.dmOut.GetStatQueueProfile("cgrates.org", v1Sts.Id, true, utils.NonTransactional)
- if err != nil {
- t.Error("Error when getting Stats ", err.Error())
- }
- if !reflect.DeepEqual(sqp.Tenant, result.Tenant) {
- t.Errorf("Expecting: %+v, received: %+v", sqp.Tenant, result.Tenant)
- }
- if !reflect.DeepEqual(sqp.ID, result.ID) {
- t.Errorf("Expecting: %+v, received: %+v", sqp.ID, result.ID)
- }
- if !reflect.DeepEqual(sqp.FilterIDs, result.FilterIDs) {
- t.Errorf("Expecting: %+v, received: %+v", sqp.FilterIDs, result.FilterIDs)
- }
- if !reflect.DeepEqual(sqp.QueueLength, result.QueueLength) {
- t.Errorf("Expecting: %+v, received: %+v", sqp.QueueLength, result.QueueLength)
- }
- if !reflect.DeepEqual(sqp.TTL, result.TTL) {
- t.Errorf("Expecting: %+v, received: %+v", sqp.TTL, result.TTL)
- }
- if !reflect.DeepEqual(sqp.Metrics, result.Metrics) {
- t.Errorf("Expecting: %+v, received: %+v", sqp.Metrics, result.Metrics)
- }
- if !reflect.DeepEqual(sqp.ThresholdIDs, result.ThresholdIDs) {
- t.Errorf("Expecting: %+v, received: %+v", sqp.ThresholdIDs, result.ThresholdIDs)
- }
- if !reflect.DeepEqual(sqp.Blocker, result.Blocker) {
- t.Errorf("Expecting: %+v, received: %+v", sqp.Blocker, result.Blocker)
- }
- if !reflect.DeepEqual(sqp.Stored, result.Stored) {
- t.Errorf("Expecting: %+v, received: %+v", sqp.Stored, result.Stored)
- }
- if !reflect.DeepEqual(sqp.Weight, result.Weight) {
- t.Errorf("Expecting: %+v, received: %+v", sqp.Weight, result.Weight)
- }
- if !reflect.DeepEqual(sqp, result) {
- t.Errorf("Expecting: %+v, received: %+v", sqp, result)
- }
- result1, err := mig.dmOut.GetFilter("cgrates.org", v1Sts.Id, true, utils.NonTransactional)
- if err != nil {
- t.Error("Error when getting Stats ", err.Error())
- }
- if !reflect.DeepEqual(filter.ActivationInterval, result1.ActivationInterval) {
- t.Errorf("Expecting: %+v, received: %+v", filter.ActivationInterval, result1.ActivationInterval)
- }
- if !reflect.DeepEqual(filter.Tenant, result1.Tenant) {
- t.Errorf("Expecting: %+v, received: %+v", filter.Tenant, result1.Tenant)
- }
-
- result2, err := mig.dmOut.GetStatQueue("cgrates.org", sq.ID, true, utils.NonTransactional)
- if err != nil {
- t.Error("Error when getting Stats ", err.Error())
- }
- if !reflect.DeepEqual(sq.ID, result2.ID) {
- t.Errorf("Expecting: %+v, received: %+v", sq.ID, result2.ID)
- }
- case Move:
- if err := mig.dmIN.SetStatQueueProfile(sqp, true); err != nil {
- t.Error("Error when setting Stats ", err.Error())
- }
- if err := mig.dmIN.SetStatQueue(sq); err != nil {
- t.Error("Error when setting Stats ", err.Error())
- }
- currentVersion := engine.CurrentDataDBVersions()
- err := mig.dmOut.DataDB().SetVersions(currentVersion, false)
- if err != nil {
- t.Error("Error when setting version for stats ", err.Error())
- }
- err, _ = mig.Migrate([]string{utils.MetaStats})
- if err != nil {
- t.Error("Error when migrating Stats ", err.Error())
- }
- result, err := mig.dmOut.GetStatQueueProfile(sqp.Tenant, sqp.ID, true, utils.NonTransactional)
- if err != nil {
- t.Error("Error when getting Stats ", err.Error())
- }
- result1, err := mig.dmOut.GetStatQueue(sq.Tenant, sq.ID, true, utils.NonTransactional)
- if err != nil {
- t.Error("Error when getting Stats ", err.Error())
- }
- if !reflect.DeepEqual(sqp, result) {
- t.Errorf("Expecting: %+v, received: %+v", sqp, result)
- }
- if !reflect.DeepEqual(sq.ID, result1.ID) {
- t.Errorf("Expecting: %+v, received: %+v", sq.ID, result1.ID)
- }
- }
-}
-
-func testMigratorSessionsCosts(t *testing.T) {
- switch action {
- case utils.REDIS:
- currentVersion := engine.CurrentStorDBVersions()
- currentVersion[utils.SessionSCosts] = 1
- err := mig.OutStorDB().SetVersions(currentVersion, false)
- if err != nil {
- t.Error("Error when setting version for SessionsCosts ", err.Error())
- }
- if vrs, err := mig.OutStorDB().GetVersions(utils.SessionSCosts); err != nil {
- t.Error(err)
- } else if vrs[utils.SessionSCosts] != 1 {
- t.Errorf("Expecting: 1, received: %+v", vrs[utils.SessionSCosts])
- }
- var qry string
- if isPostgres {
- qry = `
- CREATE TABLE sm_costs (
- id SERIAL PRIMARY KEY,
- cgrid VARCHAR(40) NOT NULL,
- run_id VARCHAR(64) NOT NULL,
- origin_host VARCHAR(64) NOT NULL,
- origin_id VARCHAR(128) NOT NULL,
- cost_source VARCHAR(64) NOT NULL,
- usage BIGINT NOT NULL,
- cost_details jsonb,
- created_at TIMESTAMP WITH TIME ZONE,
- deleted_at TIMESTAMP WITH TIME ZONE NULL,
- UNIQUE (cgrid, run_id)
- );
- `
- } else {
- qry = fmt.Sprint("CREATE TABLE sm_costs ( id int(11) NOT NULL AUTO_INCREMENT, cgrid varchar(40) NOT NULL, run_id varchar(64) NOT NULL, origin_host varchar(64) NOT NULL, origin_id varchar(128) NOT NULL, cost_source varchar(64) NOT NULL, `usage` BIGINT NOT NULL, cost_details MEDIUMTEXT, created_at TIMESTAMP NULL,deleted_at TIMESTAMP NULL, PRIMARY KEY (`id`),UNIQUE KEY costid (cgrid, run_id),KEY origin_idx (origin_host, origin_id),KEY run_origin_idx (run_id, origin_id),KEY deleted_at_idx (deleted_at));")
- }
- if _, err := mig.OutStorDB().(*engine.SQLStorage).Db.Exec("DROP TABLE IF EXISTS sessions_costs;"); err != nil {
- t.Error(err)
- }
- if _, err := mig.OutStorDB().(*engine.SQLStorage).Db.Exec("DROP TABLE IF EXISTS sm_costs;"); err != nil {
- t.Error(err)
- }
- if _, err := mig.OutStorDB().(*engine.SQLStorage).Db.Exec(qry); err != nil {
- t.Error(err)
- }
- err, _ = mig.Migrate([]string{utils.MetaSessionsCosts})
- if vrs, err := mig.OutStorDB().GetVersions(utils.SessionSCosts); err != nil {
- t.Error(err)
- } else if vrs[utils.SessionSCosts] != 3 {
- t.Errorf("Expecting: 3, received: %+v", vrs[utils.SessionSCosts])
- }
- }
-}
-
-func testMigratorThreshold(t *testing.T) {
- tim := time.Date(2012, time.February, 27, 23, 59, 59, 0, time.UTC)
- tenant := config.CgrConfig().DefaultTenant
- var filters []*engine.FilterRule
- threshold := &v2ActionTrigger{
- ID: "test2", // original csv tag
- UniqueID: "testUUID", // individual id
- ThresholdType: "*min_event_counter", //*min_event_counter, *max_event_counter, *min_balance_counter, *max_balance_counter, *min_balance, *max_balance, *balance_expired
- ThresholdValue: 5.32,
- Recurrent: false, // reset excuted flag each run
- MinSleep: time.Duration(5) * time.Second, // Minimum duration between two executions in case of recurrent triggers
- ExpirationDate: time.Now(),
- ActivationDate: time.Now(),
- Balance: &engine.BalanceFilter{
- ID: utils.StringPointer("TESTZ"),
- Timings: []*engine.RITiming{},
- ExpirationDate: utils.TimePointer(tim),
- Type: utils.StringPointer(utils.MONETARY),
- Directions: utils.StringMapPointer(utils.NewStringMap(utils.OUT)),
- },
- Weight: 0,
- ActionsID: "Action1",
- MinQueuedItems: 10, // Trigger actions only if this number is hit (stats only)
- Executed: false,
- LastExecutionTime: time.Now(),
- }
- x, err := engine.NewFilterRule(engine.MetaRSR, "Directions", threshold.Balance.Directions.Slice())
- if err != nil {
- t.Error("Error when creating new NewFilterRule", err.Error())
- }
- filters = append(filters, x)
-
- filter := &engine.Filter{Tenant: config.CgrConfig().DefaultTenant, ID: *threshold.Balance.ID, Rules: filters}
-
- thp := &engine.ThresholdProfile{
- ID: threshold.ID,
- Tenant: config.CgrConfig().DefaultTenant,
- FilterIDs: []string{filter.ID},
- Blocker: false,
- Weight: threshold.Weight,
- ActivationInterval: &utils.ActivationInterval{threshold.ExpirationDate, threshold.ActivationDate},
- MinSleep: threshold.MinSleep,
- }
- th := &engine.Threshold{
- Tenant: config.CgrConfig().DefaultTenant,
- ID: threshold.ID,
- }
-
- switch {
- case action == utils.REDIS:
- if err := mig.dmIN.SetFilter(filter); err != nil {
- t.Error("Error when setting Filter ", err.Error())
- }
- if err := mig.dmIN.SetThresholdProfile(thp, true); err != nil {
- t.Error("Error when setting threshold ", err.Error())
- }
- if err := mig.dmIN.SetThreshold(th); err != nil {
- t.Error("Error when setting threshold ", err.Error())
- }
- err := mig.oldDataDB.setV2ActionTrigger(threshold)
- if err != nil {
- t.Error("Error when setting threshold ", err.Error())
- }
- currentVersion := engine.CurrentDataDBVersions()
- currentVersion[utils.Thresholds] = 1
- err = mig.dmOut.DataDB().SetVersions(currentVersion, false)
- if err != nil {
- t.Error("Error when setting version for threshold ", err.Error())
- }
- err, _ = mig.Migrate([]string{utils.MetaThresholds})
- if err != nil {
- t.Error("Error when migrating threshold ", err.Error())
- }
- result, err := mig.dmOut.GetThreshold("cgrates.org", threshold.ID, true, utils.NonTransactional)
- if err != nil {
- t.Error("Error when getting threshold ", err.Error())
- }
- if !reflect.DeepEqual(th, result) {
- t.Errorf("Expecting: %+v, received: %+v", th, result)
- }
- thpr, err := mig.dmOut.GetThresholdProfile(thp.Tenant, thp.ID, true, utils.NonTransactional)
- if err != nil {
- t.Error("Error when getting thresholdProfile ", err.Error())
- }
- if !reflect.DeepEqual(thp.ID, thpr.ID) {
- t.Errorf("Expecting: %+v, received: %+v", thp.ID, thpr.ID)
- }
- case action == utils.MONGO:
- if err := mig.dmIN.SetFilter(filter); err != nil {
- t.Error("Error when setting Filter ", err.Error())
- }
- if err := mig.dmIN.SetThresholdProfile(thp, true); err != nil {
- t.Error("Error when setting Threshold ", err.Error())
- }
- if err := mig.dmIN.SetThreshold(th); err != nil {
- t.Error("Error when setting Threshold ", err.Error())
- }
- err := mig.oldDataDB.setV2ActionTrigger(threshold)
- if err != nil {
- t.Error("Error when setting Threshold ", err.Error())
- }
- currentVersion := engine.CurrentDataDBVersions()
- currentVersion[utils.Thresholds] = 1
- err = mig.dmOut.DataDB().SetVersions(currentVersion, false)
- if err != nil {
- t.Error("Error when setting version for Threshold ", err.Error())
- }
- err, _ = mig.Migrate([]string{utils.MetaThresholds})
- if err != nil {
- t.Error("Error when migrating Threshold ", err.Error())
- }
- result, err := mig.dmOut.GetThreshold("cgrates.org", threshold.ID, true, utils.NonTransactional)
- if err != nil {
- t.Error("Error when getting Threshold ", err.Error())
- }
- if !reflect.DeepEqual(th, result) {
- t.Errorf("Expecting: %+v, received: %+v", th, result)
- }
- thpr, err := mig.dmOut.GetThresholdProfile(thp.Tenant, thp.ID, true, utils.NonTransactional)
- if err != nil {
- t.Error("Error when getting thresholdProfile ", err.Error())
- }
- if !reflect.DeepEqual(thp.ID, thpr.ID) {
- t.Errorf("Expecting: %+v, received: %+v", thp.ID, thpr.ID)
- }
- case action == Move:
- if err := mig.dmIN.SetFilter(filter); err != nil {
- t.Error("Error when setting Filter ", err.Error())
- }
- if err := mig.dmIN.SetThresholdProfile(thp, true); err != nil {
- t.Error("Error when setting Threshold ", err.Error())
- }
- if err := mig.dmIN.SetThreshold(th); err != nil {
- t.Error("Error when setting Threshold ", err.Error())
- }
- err := mig.oldDataDB.setV2ActionTrigger(threshold)
- if err != nil {
- t.Error("Error when setting Threshold ", err.Error())
- }
- currentVersion := engine.CurrentDataDBVersions()
- err = mig.dmOut.DataDB().SetVersions(currentVersion, false)
- if err != nil {
- t.Error("Error when setting version for Threshold ", err.Error())
- }
- err, _ = mig.Migrate([]string{utils.MetaThresholds})
- if err != nil {
- t.Error("Error when migrating Threshold ", err.Error())
- }
- result, err := mig.dmOut.GetThreshold(tenant, threshold.ID, true, utils.NonTransactional)
- if err != nil {
- t.Error("Error when getting Threshold ", err.Error())
- }
- if !reflect.DeepEqual(th, result) {
- t.Errorf("Expecting: %+v, received: %+v", th, result)
- }
- thpr, err := mig.dmOut.GetThresholdProfile(thp.Tenant, thp.ID, true, utils.NonTransactional)
- if err != nil {
- t.Error("Error when getting ThresholdProfile ", err.Error())
- }
- if !reflect.DeepEqual(thp.ID, thpr.ID) {
- t.Errorf("Expecting: %+v, received: %+v", thp.ID, thpr.ID)
- }
- }
-}
-
-func testMigratorAlias(t *testing.T) {
- alias := &engine.Alias{
- Direction: "*out",
- Tenant: "cgrates.org",
- Category: "call",
- Account: "dan",
- Subject: "dan",
- Context: "*rating",
- Values: engine.AliasValues{
- &engine.AliasValue{
- DestinationId: "EU_LANDLINE",
- Pairs: engine.AliasPairs{
- "Subject": map[string]string{
- "dan": "dan1",
- "rif": "rif1",
- },
- "Cli": map[string]string{
- "0723": "0724",
- },
- },
- Weight: 10,
- },
-
- &engine.AliasValue{
- DestinationId: "GLOBAL1",
- Pairs: engine.AliasPairs{"Subject": map[string]string{"dan": "dan2"}},
- Weight: 20,
- },
- },
- }
- switch action {
- case Move:
- if err := mig.dmIN.DataDB().SetAlias(alias, utils.NonTransactional); err != nil {
- t.Error("Error when setting Alias ", err.Error())
- }
- currentVersion := engine.CurrentDataDBVersions()
- err := mig.dmOut.DataDB().SetVersions(currentVersion, false)
- if err != nil {
- t.Error("Error when setting version for Alias ", err.Error())
- }
- err, _ = mig.Migrate([]string{utils.MetaAlias})
- if err != nil {
- t.Error("Error when migrating Alias ", err.Error())
- }
- result, err := mig.dmOut.DataDB().GetAlias(alias.GetId(), true, utils.NonTransactional)
- if err != nil {
- t.Error("Error when getting Alias ", err.Error())
- }
- if !reflect.DeepEqual(alias, result) {
- t.Errorf("Expecting: %+v, received: %+v", alias, result)
- }
- }
-}
-
-func testMigratorCdrStats(t *testing.T) {
- cdrs := &engine.CdrStats{
- Id: "",
- QueueLength: 10, // Number of items in the stats buffer
- TimeWindow: time.Duration(1) * time.Second, // Will only keep the CDRs who's call setup time is not older than time.Now()-TimeWindow
- SaveInterval: time.Duration(1) * time.Second,
- Metrics: []string{engine.ASR, engine.PDD, engine.ACD, engine.TCD, engine.ACC, engine.TCC, engine.DDC},
- SetupInterval: []time.Time{time.Date(2012, time.February, 27, 23, 59, 59, 0, time.UTC)}, // CDRFieldFilter on SetupInterval, 2 or less items (>= start interval,< stop_interval)
- TOR: []string{""}, // CDRFieldFilter on TORs
- CdrHost: []string{""}, // CDRFieldFilter on CdrHosts
- CdrSource: []string{""}, // CDRFieldFilter on CdrSources
- ReqType: []string{""}, // CDRFieldFilter on RequestTypes
- Direction: []string{""}, // CDRFieldFilter on Directions
- Tenant: []string{""}, // CDRFieldFilter on Tenants
- Category: []string{""}, // CDRFieldFilter on Categories
- Account: []string{""}, // CDRFieldFilter on Accounts
- Subject: []string{""}, // CDRFieldFilter on Subjects
- DestinationIds: []string{""}, // CDRFieldFilter on DestinationPrefixes
- UsageInterval: []time.Duration{time.Duration(1) * time.Second}, // CDRFieldFilter on UsageInterval, 2 or less items (>= Usage, = Pdd, =Cost, when updating SessionSCosts version into StorDB", err.Error()))
- }
+ if m.dryRun {
+ return
+ }
+ vrs := engine.Versions{utils.SessionSCosts: 2}
+ if err = m.storDBOut.StorDB().SetVersions(vrs, false); err != nil {
+ return utils.NewCGRError(utils.Migrator,
+ utils.ServerErrorCaps,
+ err.Error(),
+ fmt.Sprintf("error: <%s> when updating SessionSCosts version into StorDB", err.Error()))
}
return
}
@@ -104,29 +99,28 @@ func (m *Migrator) migrateV2SessionSCosts() (err error) {
if err == utils.ErrNoMoreData {
break
}
- if v2Cost == nil {
+ if v2Cost == nil || m.dryRun {
continue
}
smCost := v2Cost.V2toV3Cost()
- if m.dryRun != true {
- if err = m.storDBOut.StorDB().SetSMCost(smCost); err != nil {
- return err
- }
- if err = m.storDBIn.remV2SMCost(v2Cost); err != nil {
- return err
- }
- m.stats[utils.SessionSCosts] += 1
+ if err = m.storDBOut.StorDB().SetSMCost(smCost); err != nil {
+ return err
}
+ if err = m.storDBIn.remV2SMCost(v2Cost); err != nil {
+ return err
+ }
+ m.stats[utils.SessionSCosts] += 1
}
- if m.dryRun != true {
- // All done, update version wtih current one
- vrs := engine.Versions{utils.SessionSCosts: engine.CurrentStorDBVersions()[utils.SessionSCosts]}
- if err = m.storDBOut.StorDB().SetVersions(vrs, false); err != nil {
- return utils.NewCGRError(utils.Migrator,
- utils.ServerErrorCaps,
- err.Error(),
- fmt.Sprintf("error: <%s> when updating SessionSCosts version into StorDB", err.Error()))
- }
+ if m.dryRun {
+ return
+ }
+ // All done, update version wtih current one
+ vrs := engine.Versions{utils.SessionSCosts: engine.CurrentStorDBVersions()[utils.SessionSCosts]}
+ if err = m.storDBOut.StorDB().SetVersions(vrs, false); err != nil {
+ return utils.NewCGRError(utils.Migrator,
+ utils.ServerErrorCaps,
+ err.Error(),
+ fmt.Sprintf("error: <%s> when updating SessionSCosts version into StorDB", err.Error()))
}
return
}
diff --git a/migrator/sharedgroup.go b/migrator/sharedgroup.go
index 361c6a13c..36407adc9 100644
--- a/migrator/sharedgroup.go
+++ b/migrator/sharedgroup.go
@@ -44,12 +44,11 @@ func (m *Migrator) migrateCurrentSharedGroups() (err error) {
if err != nil {
return err
}
- if sgs != nil {
- if m.dryRun != true {
- if err := m.dmOut.DataManager().SetSharedGroup(sgs, utils.NonTransactional); err != nil {
- return err
- }
- }
+ if sgs == nil || m.dryRun {
+ continue
+ }
+ if err := m.dmOut.DataManager().SetSharedGroup(sgs, utils.NonTransactional); err != nil {
+ return err
}
}
return
@@ -65,15 +64,14 @@ func (m *Migrator) migrateV1SharedGroups() (err error) {
if err == utils.ErrNoMoreData {
break
}
- if v1SG != nil {
- acnt := v1SG.AsSharedGroup()
- if m.dryRun != true {
- if err = m.dmOut.DataManager().SetSharedGroup(acnt, utils.NonTransactional); err != nil {
- return err
- }
- m.stats[utils.SharedGroups] += 1
- }
+ if v1SG == nil || m.dryRun {
+ continue
}
+ acnt := v1SG.AsSharedGroup()
+ if err = m.dmOut.DataManager().SetSharedGroup(acnt, utils.NonTransactional); err != nil {
+ return err
+ }
+ m.stats[utils.SharedGroups] += 1
}
// All done, update version wtih current one
vrs := engine.Versions{utils.SharedGroups: engine.CurrentStorDBVersions()[utils.SharedGroups]}
@@ -106,15 +104,9 @@ func (m *Migrator) migrateSharedGroups() (err error) {
if m.sameDataDB {
return
}
- if err := m.migrateCurrentSharedGroups(); err != nil {
- return err
- }
- return
-
+ return m.migrateCurrentSharedGroups()
case 1:
- if err := m.migrateV1SharedGroups(); err != nil {
- return err
- }
+ return m.migrateV1SharedGroups()
}
return
}
diff --git a/migrator/suppliers.go b/migrator/suppliers.go
index 85b1523de..1e66b513c 100644
--- a/migrator/suppliers.go
+++ b/migrator/suppliers.go
@@ -40,14 +40,13 @@ func (m *Migrator) migrateCurrentSupplierProfile() (err error) {
if err != nil {
return err
}
- if splp != nil {
- if m.dryRun != true {
- if err := m.dmOut.DataManager().SetSupplierProfile(splp, true); err != nil {
- return err
- }
- m.stats[utils.Suppliers] += 1
- }
+ if splp == nil || m.dryRun {
+ continue
}
+ if err := m.dmOut.DataManager().SetSupplierProfile(splp, true); err != nil {
+ return err
+ }
+ m.stats[utils.Suppliers] += 1
}
return
}
@@ -72,10 +71,7 @@ func (m *Migrator) migrateSupplierProfiles() (err error) {
if m.sameDataDB {
return
}
- if err := m.migrateCurrentSupplierProfile(); err != nil {
- return err
- }
- return
+ return m.migrateCurrentSupplierProfile()
}
return
}
diff --git a/migrator/thresholds.go b/migrator/thresholds.go
index 3135b11a6..90d4121f7 100644
--- a/migrator/thresholds.go
+++ b/migrator/thresholds.go
@@ -61,14 +61,13 @@ func (m *Migrator) migrateCurrentThresholds() (err error) {
if err != nil {
return err
}
- if ths != nil {
- if m.dryRun != true {
- if err := m.dmOut.DataManager().SetThreshold(ths); err != nil {
- return err
- }
- m.stats[utils.Thresholds] += 1
- }
+ if ths == nil || m.dryRun {
+ continue
}
+ if err := m.dmOut.DataManager().SetThreshold(ths); err != nil {
+ return err
+ }
+ m.stats[utils.Thresholds] += 1
}
//ThresholdProfiles
ids, err = m.dmIN.DataManager().DataDB().GetKeysForPrefix(utils.ThresholdProfilePrefix)
@@ -81,12 +80,11 @@ func (m *Migrator) migrateCurrentThresholds() (err error) {
if err != nil {
return err
}
- if ths != nil {
- if m.dryRun != true {
- if err := m.dmOut.DataManager().SetThresholdProfile(ths, true); err != nil {
- return err
- }
- }
+ if ths == nil || m.dryRun {
+ continue
+ }
+ if err := m.dmOut.DataManager().SetThresholdProfile(ths, true); err != nil {
+ return err
}
}
return
@@ -107,29 +105,31 @@ func (m *Migrator) migrateV2ActionTriggers() (err error) {
if err != nil {
return err
}
- if m.dryRun != true {
- if err := m.dmOut.DataManager().SetFilter(filter); err != nil {
- return err
- }
- if err := m.dmOut.DataManager().SetThreshold(th); err != nil {
- return err
- }
- if err := m.dmOut.DataManager().SetThresholdProfile(thp, true); err != nil {
- return err
- }
- m.stats[utils.Thresholds] += 1
+ if m.dryRun {
+ continue
}
+ if err := m.dmOut.DataManager().SetFilter(filter); err != nil {
+ return err
+ }
+ if err := m.dmOut.DataManager().SetThreshold(th); err != nil {
+ return err
+ }
+ if err := m.dmOut.DataManager().SetThresholdProfile(thp, true); err != nil {
+ return err
+ }
+ m.stats[utils.Thresholds] += 1
}
}
- if m.dryRun != true {
- // All done, update version wtih current one
- vrs := engine.Versions{utils.Thresholds: engine.CurrentStorDBVersions()[utils.Thresholds]}
- if err = m.dmOut.DataManager().DataDB().SetVersions(vrs, false); err != nil {
- return utils.NewCGRError(utils.Migrator,
- utils.ServerErrorCaps,
- err.Error(),
- fmt.Sprintf("error: <%s> when updating Thresholds version into dataDB", err.Error()))
- }
+ if m.dryRun {
+ return
+ }
+ // All done, update version wtih current one
+ vrs := engine.Versions{utils.Thresholds: engine.CurrentStorDBVersions()[utils.Thresholds]}
+ if err = m.dmOut.DataManager().DataDB().SetVersions(vrs, false); err != nil {
+ return utils.NewCGRError(utils.Migrator,
+ utils.ServerErrorCaps,
+ err.Error(),
+ fmt.Sprintf("error: <%s> when updating Thresholds version into dataDB", err.Error()))
}
return
}
@@ -144,28 +144,29 @@ func (m *Migrator) migrateV2Thresholds() (err error) {
if err == utils.ErrNoMoreData {
break
}
- if v2T != nil {
- th := v2T.V2toV3Threshold()
- if m.dryRun != true {
- if err = m.dmIN.remV2ThresholdProfile(v2T.Tenant, v2T.ID); err != nil {
- return err
- }
- if err = m.dmOut.DataManager().SetThresholdProfile(th, true); err != nil {
- return err
- }
- m.stats[utils.Thresholds] += 1
- }
+ if v2T == nil || m.dryRun {
+ continue
}
+ th := v2T.V2toV3Threshold()
+
+ if err = m.dmIN.remV2ThresholdProfile(v2T.Tenant, v2T.ID); err != nil {
+ return err
+ }
+ if err = m.dmOut.DataManager().SetThresholdProfile(th, true); err != nil {
+ return err
+ }
+ m.stats[utils.Thresholds] += 1
}
- if m.dryRun != true {
- // All done, update version wtih current one
- vrs := engine.Versions{utils.Thresholds: engine.CurrentDataDBVersions()[utils.Thresholds]}
- if err = m.dmOut.DataManager().DataDB().SetVersions(vrs, false); err != nil {
- return utils.NewCGRError(utils.Migrator,
- utils.ServerErrorCaps,
- err.Error(),
- fmt.Sprintf("error: <%s> when updating Thresholds version into dataDB", err.Error()))
- }
+ if m.dryRun {
+ return
+ }
+ // All done, update version wtih current one
+ vrs := engine.Versions{utils.Thresholds: engine.CurrentDataDBVersions()[utils.Thresholds]}
+ if err = m.dmOut.DataManager().DataDB().SetVersions(vrs, false); err != nil {
+ return utils.NewCGRError(utils.Migrator,
+ utils.ServerErrorCaps,
+ err.Error(),
+ fmt.Sprintf("error: <%s> when updating Thresholds version into dataDB", err.Error()))
}
return
}
@@ -404,10 +405,9 @@ func (v2T v2Threshold) V2toV3Threshold() (th *engine.ThresholdProfile) {
ActionIDs: v2T.ActionIDs,
Async: v2T.Async,
}
- if v2T.Recurrent == true {
+ th.MaxHits = 1
+ if v2T.Recurrent {
th.MaxHits = -1
- } else {
- th.MaxHits = 1
}
return
}
diff --git a/migrator/timings.go b/migrator/timings.go
index c9ba0377f..720fd8627 100644
--- a/migrator/timings.go
+++ b/migrator/timings.go
@@ -38,14 +38,13 @@ func (m *Migrator) migrateCurrentTiming() (err error) {
if err != nil {
return err
}
- if tm != nil {
- if m.dryRun != true {
- if err := m.dmOut.DataManager().SetTiming(tm); err != nil {
- return err
- }
- m.stats[utils.Timing] += 1
- }
+ if tm == nil || m.dryRun {
+ continue
}
+ if err := m.dmOut.DataManager().SetTiming(tm); err != nil {
+ return err
+ }
+ m.stats[utils.Timing] += 1
}
return
}
@@ -70,10 +69,7 @@ func (m *Migrator) migrateTimings() (err error) {
if m.sameDataDB {
return
}
- if err := m.migrateCurrentTiming(); err != nil {
- return err
- }
- return
+ return m.migrateCurrentTiming()
}
return
}
diff --git a/migrator/user.go b/migrator/user.go
index a73bc8044..81d2c9d19 100644
--- a/migrator/user.go
+++ b/migrator/user.go
@@ -121,52 +121,6 @@ func (m *Migrator) migrateV1User2AttributeProfile() (err error) {
return
}
-// func (m *Migrator) migrateCurrentUser() (err error) {
-// var ids []string
-// ids, err = m.dmIN.DataManager().DataDB().GetKeysForPrefix(utils.USERS_PREFIX)
-// if err != nil {
-// return err
-// }
-// for _, id := range ids {
-// idg := strings.TrimPrefix(id, utils.USERS_PREFIX)
-// usr, err := m.dmIN.DataManager().GetUser(idg)
-// if err != nil {
-// return err
-// }
-// if usr != nil {
-// if m.dryRun != true {
-// if err := m.dmOut.DataManager().SetUser(usr); err != nil {
-// return err
-// }
-// m.stats[utils.User] += 1
-// }
-// }
-// }
-// return
-// }
-
func (m *Migrator) migrateUser() (err error) {
return m.migrateV1User2AttributeProfile()
- /*
- var vrs engine.Versions
- current := engine.CurrentDataDBVersions()
- vrs, err = m.dmIN.DataManager().DataDB().GetVersions("")
- if err != nil {
- return utils.NewCGRError(utils.Migrator, utils.ServerErrorCaps,
- err.Error(), fmt.Sprintf("error: <%s> when querying oldDataDB for versions", err.Error()))
- } else if len(vrs) == 0 {
- return utils.NewCGRError(utils.Migrator, utils.MandatoryIEMissingCaps,
- utils.UndefinedVersion, "version number is not defined for Users model")
- }
- switch vrs[utils.User] {
- case 1:
- return m.migrateV1User2AttributeProfile()
- case current[utils.User]:
- if !m.sameStorDB {
- return utils.ErrNotImplemented
- // return m.migrateCurrentUser()
- }
- }
- return
- */
}
diff --git a/migrator/user_it_test.go b/migrator/user_it_test.go
index a83ce08df..1e18dc16e 100644
--- a/migrator/user_it_test.go
+++ b/migrator/user_it_test.go
@@ -36,7 +36,6 @@ var (
usrCfgIn *config.CGRConfig
usrCfgOut *config.CGRConfig
usrMigrator *Migrator
- usrAction string
)
var sTestsUsrIT = []func(t *testing.T){
@@ -47,41 +46,22 @@ var sTestsUsrIT = []func(t *testing.T){
func TestUserMigrateITRedis(t *testing.T) {
inPath := path.Join(*dataDir, "conf", "samples", "tutmysql")
- testUsrStart("TestUserMigrateITRedis", inPath, inPath, utils.Migrate, t)
+ testUsrStart("TestUserMigrateITRedis", inPath, inPath, t)
}
func TestUserMigrateITMongo(t *testing.T) {
inPath := path.Join(*dataDir, "conf", "samples", "tutmongo")
- testUsrStart("TestUserMigrateITMongo", inPath, inPath, utils.Migrate, t)
-}
-
-func TestUserITMove(t *testing.T) {
- inPath := path.Join(*dataDir, "conf", "samples", "tutmongo")
- outPath := path.Join(*dataDir, "conf", "samples", "tutmysql")
- testUsrStart("TestUserITMove", inPath, outPath, utils.Move, t)
+ testUsrStart("TestUserMigrateITMongo", inPath, inPath, t)
}
func TestUserITMigrateMongo2Redis(t *testing.T) {
inPath := path.Join(*dataDir, "conf", "samples", "tutmongo")
outPath := path.Join(*dataDir, "conf", "samples", "tutmysql")
- testUsrStart("TestUserITMigrateMongo2Redis", inPath, outPath, utils.Migrate, t)
+ testUsrStart("TestUserITMigrateMongo2Redis", inPath, outPath, t)
}
-func TestUserITMoveEncoding(t *testing.T) {
- inPath := path.Join(*dataDir, "conf", "samples", "tutmongo")
- outPath := path.Join(*dataDir, "conf", "samples", "tutmongojson")
- testUsrStart("TestUserITMoveEncoding", inPath, outPath, utils.Move, t)
-}
-
-func TestUserITMoveEncoding2(t *testing.T) {
- inPath := path.Join(*dataDir, "conf", "samples", "tutmysql")
- outPath := path.Join(*dataDir, "conf", "samples", "tutmysqljson")
- testUsrStart("TestUserITMoveEncoding2", inPath, outPath, utils.Move, t)
-}
-
-func testUsrStart(testName, inPath, outPath, action string, t *testing.T) {
+func testUsrStart(testName, inPath, outPath string, t *testing.T) {
var err error
- usrAction = action
if usrCfgIn, err = config.NewCGRConfigFromFolder(inPath); err != nil {
t.Fatal(err)
}
@@ -165,91 +145,59 @@ func testUsrITMigrateAndMove(t *testing.T) {
Weight: 10,
}
attrProf.Compile()
- switch usrAction {
- case utils.Migrate:
- err := usrMigrator.dmIN.setV1User(user)
- if err != nil {
- t.Error("Error when setting v1 User ", err.Error())
- }
- currentVersion := engine.Versions{utils.User: 1}
- err = usrMigrator.dmIN.DataManager().DataDB().SetVersions(currentVersion, false)
- if err != nil {
- t.Error("Error when setting version for User ", err.Error())
- }
- //check if version was set correctly
- if vrs, err := usrMigrator.dmIN.DataManager().DataDB().GetVersions(""); err != nil {
- t.Error(err)
- } else if vrs[utils.User] != 1 {
- t.Errorf("Unexpected version returned: %d", vrs[utils.User])
- }
- //migrate user
- err, _ = usrMigrator.Migrate([]string{utils.MetaUsers})
- if err != nil {
- t.Error("Error when migrating User ", err.Error())
- }
- //check if version was updated
- if vrs, err := usrMigrator.dmOut.DataManager().DataDB().GetVersions(""); err != nil {
- t.Error(err)
- } else if vrs[utils.User] != 0 {
- t.Errorf("Unexpected version returned: %d", vrs[utils.User])
- }
- //check if user was migrate correctly
- result, err := usrMigrator.dmOut.DataManager().DataDB().GetAttributeProfileDrv(defaultTenant, user.UserName)
- if err != nil {
- t.Fatalf("Error when getting Attributes %v", err.Error())
- }
- result.Compile()
- sort.Slice(result.Attributes, func(i, j int) bool {
- return result.Attributes[i].FieldName < result.Attributes[j].FieldName
- }) // only for test; map returns random keys
- if !reflect.DeepEqual(*attrProf, *result) {
- t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(attrProf), utils.ToJSON(result))
- }
- //check if old account was deleted
- if _, err = usrMigrator.dmIN.getV1Alias(); err != utils.ErrNoMoreData {
- t.Error("Error should be not found : ", err)
- }
- expUsrIdx := map[string]utils.StringMap{
- "*string:~Account:1002": utils.StringMap{
- "1001": true,
- },
- }
- if usridx, err := usrMigrator.dmOut.DataManager().GetFilterIndexes(utils.PrefixToIndexCache[utils.AttributeProfilePrefix],
- utils.ConcatenatedKey("cgrates.org", utils.META_ANY), utils.MetaString, nil); err != nil {
- t.Error(err)
- } else if !reflect.DeepEqual(expUsrIdx, usridx) {
- t.Errorf("Expected %v, recived: %v", utils.ToJSON(expUsrIdx), utils.ToJSON(usridx))
- }
+ err := usrMigrator.dmIN.setV1User(user)
+ if err != nil {
+ t.Error("Error when setting v1 User ", err.Error())
+ }
+ currentVersion := engine.Versions{utils.User: 1}
+ err = usrMigrator.dmIN.DataManager().DataDB().SetVersions(currentVersion, false)
+ if err != nil {
+ t.Error("Error when setting version for User ", err.Error())
+ }
+ //check if version was set correctly
+ if vrs, err := usrMigrator.dmIN.DataManager().DataDB().GetVersions(""); err != nil {
+ t.Error(err)
+ } else if vrs[utils.User] != 1 {
+ t.Errorf("Unexpected version returned: %d", vrs[utils.User])
+ }
+ //migrate user
+ err, _ = usrMigrator.Migrate([]string{utils.MetaUsers})
+ if err != nil {
+ t.Error("Error when migrating User ", err.Error())
+ }
+ //check if version was updated
+ if vrs, err := usrMigrator.dmOut.DataManager().DataDB().GetVersions(""); err != nil {
+ t.Error(err)
+ } else if vrs[utils.User] != 0 {
+ t.Errorf("Unexpected version returned: %d", vrs[utils.User])
+ }
+ //check if user was migrate correctly
+ result, err := usrMigrator.dmOut.DataManager().DataDB().GetAttributeProfileDrv(defaultTenant, user.UserName)
+ if err != nil {
+ t.Fatalf("Error when getting Attributes %v", err.Error())
+ }
+ result.Compile()
+ sort.Slice(result.Attributes, func(i, j int) bool {
+ return result.Attributes[i].FieldName < result.Attributes[j].FieldName
+ }) // only for test; map returns random keys
+ if !reflect.DeepEqual(*attrProf, *result) {
+ t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(attrProf), utils.ToJSON(result))
+ }
+ //check if old account was deleted
+ if _, err = usrMigrator.dmIN.getV1Alias(); err != utils.ErrNoMoreData {
+ t.Error("Error should be not found : ", err)
+ }
- case utils.Move:
- /* // No Move tests
- if err := usrMigrator.dmIN.DataManager().DataDB().SetUserDrv(user); err != nil {
- t.Error(err)
- }
- currentVersion := engine.CurrentDataDBVersions()
- err := usrMigrator.dmOut.DataManager().DataDB().SetVersions(currentVersion, false)
- if err != nil {
- t.Error("Error when setting version for User ", err.Error())
- }
- //migrate accounts
- err, _ = usrMigrator.Migrate([]string{utils.MetaUsers})
- if err != nil {
- t.Error("Error when usrMigratorrating User ", err.Error())
- }
- //check if account was migrate correctly
- result, err := usrMigrator.dmOut.DataManager().DataDB().GetUserDrv(user.GetId(), false)
- if err != nil {
- t.Error(err)
- }
- if !reflect.DeepEqual(user, result) {
- t.Errorf("Expecting: %+v, received: %+v", user, result)
- }
- //check if old account was deleted
- result, err = usrMigrator.dmIN.DataManager().DataDB().GetUserDrv(user.GetId(), false)
- if err != utils.ErrNotFound {
- t.Error(err)
- }
- // */
+ expUsrIdx := map[string]utils.StringMap{
+ "*string:~Account:1002": utils.StringMap{
+ "1001": true,
+ },
+ }
+ if usridx, err := usrMigrator.dmOut.DataManager().GetFilterIndexes(utils.PrefixToIndexCache[utils.AttributeProfilePrefix],
+ utils.ConcatenatedKey("cgrates.org", utils.META_ANY), utils.MetaString, nil); err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(expUsrIdx, usridx) {
+ t.Errorf("Expected %v, recived: %v", utils.ToJSON(expUsrIdx), utils.ToJSON(usridx))
}
}