From c780baa47f6484c0e8bb7b9be853ad71d8868c35 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 8 Mar 2019 18:14:22 +0200 Subject: [PATCH] Updated migrator *set_version --- cmd/cgr-migrator/cgr-migrator.go | 23 ++- engine/storage_sql.go | 3 - engine/versions_it_test.go | 1 + migrator/accounts2_it_test.go | 2 +- migrator/accounts_it_test.go | 2 +- migrator/action_it_test.go | 2 +- migrator/action_plan_it_test.go | 2 +- migrator/alias_it_test.go | 2 +- migrator/attributes_it_test.go | 2 +- migrator/cdrs_it_test.go | 2 +- migrator/derived_chargers_it_test.go | 2 +- migrator/dispatchers_it_test.go | 2 +- migrator/filters_it_test.go | 2 +- migrator/migrator.go | 43 +++--- migrator/session_costs_it_test.go | 2 +- migrator/sharedgroup_it_test.go | 2 +- migrator/stats_it_test.go | 2 +- migrator/thresholds_it_test.go | 2 +- migrator/tp_account_actions_it_test.go | 2 +- migrator/tp_action_plans_it_test.go | 2 +- migrator/tp_action_triggers_it_test.go | 2 +- migrator/tp_actions_it_test.go | 2 +- migrator/tp_destination_rates_it_test.go | 2 +- migrator/tp_destinations_it_test.go | 2 +- migrator/tp_dispatchers_it_test.go | 2 +- migrator/tp_filters_it_test.go | 2 +- migrator/tp_rates_it_test.go | 2 +- migrator/tp_rating_plans_it_test.go | 2 +- migrator/tp_rating_profiles_it_test.go | 2 +- migrator/tp_resources_it_test.go | 2 +- migrator/tp_shared_groups_it_test.go | 2 +- migrator/tp_stats_it_test.go | 2 +- migrator/tp_suppliers_it_test.go | 2 +- migrator/tp_thresholds_it_test.go | 2 +- migrator/tp_timings_it_test.go | 2 +- migrator/user_it_test.go | 2 +- migrator/versions_it_test.go | 173 +++++++++++++++++++++++ 37 files changed, 243 insertions(+), 64 deletions(-) create mode 100644 migrator/versions_it_test.go diff --git a/cmd/cgr-migrator/cgr-migrator.go b/cmd/cgr-migrator/cgr-migrator.go index 54cb2cbde..b5adfdb00 100755 --- a/cmd/cgr-migrator/cgr-migrator.go +++ b/cmd/cgr-migrator/cgr-migrator.go @@ -33,12 +33,16 @@ import ( var ( cgrMigratorFlags = flag.NewFlagSet("cgr-migrator", flag.ContinueOnError) - sameDataDB, sameStorDB bool - dmIN, dmOUT migrator.MigratorDataDB - storDBIn, storDBOut migrator.MigratorStorDB - err error - dfltCfg, _ = config.NewDefaultCGRConfig() - cfgPath = cgrMigratorFlags.String("config_path", "", + sameDataDB bool + sameStorDB bool + sameOutDB bool + dmIN migrator.MigratorDataDB + dmOUT migrator.MigratorDataDB + storDBIn migrator.MigratorStorDB + storDBOut migrator.MigratorStorDB + err error + dfltCfg, _ = config.NewDefaultCGRConfig() + cfgPath = cgrMigratorFlags.String("config_path", "", "Configuration directory path.") migrate = cgrMigratorFlags.String("migrate", "", "fire up automatic migration "+ @@ -326,9 +330,14 @@ func main() { log.Fatal(err) } + sameOutDB = mgrCfg.MigratorCgrCfg().OutStorDBType == mgrCfg.MigratorCgrCfg().OutDataDBType && + mgrCfg.MigratorCgrCfg().OutStorDBHost == mgrCfg.MigratorCgrCfg().OutDataDBHost && + mgrCfg.MigratorCgrCfg().OutStorDBPort == mgrCfg.MigratorCgrCfg().OutDataDBPort && + mgrCfg.MigratorCgrCfg().OutStorDBName == mgrCfg.MigratorCgrCfg().OutDataDBName + m, err := migrator.NewMigrator(dmIN, dmOUT, storDBIn, storDBOut, - *dryRun, sameDataDB, sameStorDB) + *dryRun, sameDataDB, sameStorDB, sameOutDB) if err != nil { log.Fatal(err) } diff --git a/engine/storage_sql.go b/engine/storage_sql.go index d4f43df73..da199902f 100644 --- a/engine/storage_sql.go +++ b/engine/storage_sql.go @@ -64,9 +64,6 @@ func (self *SQLStorage) Flush(scriptsPath string) (err error) { if _, err := self.Db.Query(fmt.Sprintf("SELECT 1 FROM %s", utils.CDRsTBL)); err != nil { return err } - if err := SetDBVersions(self); err != nil { - return err - } return nil } diff --git a/engine/versions_it_test.go b/engine/versions_it_test.go index bf2d810fc..7051c8de4 100644 --- a/engine/versions_it_test.go +++ b/engine/versions_it_test.go @@ -137,6 +137,7 @@ func testVersionsFlush(t *testing.T) { if err := storageDb.Flush(path.Join(cfg.DataFolderPath, "storage", cfg.StorDbCfg().StorDBType)); err != nil { t.Error(err) } + SetDBVersions(storageDb) } func testVersion(t *testing.T) { diff --git a/migrator/accounts2_it_test.go b/migrator/accounts2_it_test.go index 48b44e7c5..0d751d82c 100755 --- a/migrator/accounts2_it_test.go +++ b/migrator/accounts2_it_test.go @@ -103,7 +103,7 @@ func testAcc2ITConnect(t *testing.T) { } acc2Migrator, err = NewMigrator(dataDBIn, dataDBOut, storDBIn, storDBOut, - false, false, false) + false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/accounts_it_test.go b/migrator/accounts_it_test.go index f1eb95d28..cc8ea76da 100755 --- a/migrator/accounts_it_test.go +++ b/migrator/accounts_it_test.go @@ -174,7 +174,7 @@ func testAccITConnect(t *testing.T) { } accMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, false, false) + false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/action_it_test.go b/migrator/action_it_test.go index 6c2833ec5..24c298029 100644 --- a/migrator/action_it_test.go +++ b/migrator/action_it_test.go @@ -171,7 +171,7 @@ func testActITConnect(t *testing.T) { } actMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, false, false) + false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/action_plan_it_test.go b/migrator/action_plan_it_test.go index f6e07c8f2..d807255ac 100644 --- a/migrator/action_plan_it_test.go +++ b/migrator/action_plan_it_test.go @@ -171,7 +171,7 @@ func testActPlnITConnect(t *testing.T) { } actPlnMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, false, false) + false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/alias_it_test.go b/migrator/alias_it_test.go index 0d8549c09..ca4a84808 100644 --- a/migrator/alias_it_test.go +++ b/migrator/alias_it_test.go @@ -91,7 +91,7 @@ func testAlsITConnect(t *testing.T) { log.Fatal(err) } alsMigrator, err = NewMigrator(dataDBIn, dataDBOut, - nil, nil, false, false, false) + nil, nil, false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/attributes_it_test.go b/migrator/attributes_it_test.go index d1cc0a10a..7551d96ae 100755 --- a/migrator/attributes_it_test.go +++ b/migrator/attributes_it_test.go @@ -190,7 +190,7 @@ func testAttrITConnect(t *testing.T) { } attrMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, false, false) + false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/cdrs_it_test.go b/migrator/cdrs_it_test.go index 6bb5f5291..b5463da33 100755 --- a/migrator/cdrs_it_test.go +++ b/migrator/cdrs_it_test.go @@ -95,7 +95,7 @@ func testCdrITConnect(t *testing.T) { cdrMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, - false, false, false) + false, false, false, false) if err != nil { t.Error(err) } diff --git a/migrator/derived_chargers_it_test.go b/migrator/derived_chargers_it_test.go index e5d826c74..1933d4a20 100644 --- a/migrator/derived_chargers_it_test.go +++ b/migrator/derived_chargers_it_test.go @@ -92,7 +92,7 @@ func testDCITConnect(t *testing.T) { log.Fatal(err) } dcMigrator, err = NewMigrator(dataDBIn, dataDBOut, - nil, nil, false, false, false) + nil, nil, false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/dispatchers_it_test.go b/migrator/dispatchers_it_test.go index 5e17291d9..06de6dd61 100644 --- a/migrator/dispatchers_it_test.go +++ b/migrator/dispatchers_it_test.go @@ -138,7 +138,7 @@ func testDspITConnect(t *testing.T) { } dspMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, false, false) + false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/filters_it_test.go b/migrator/filters_it_test.go index 5cd601173..4c9ccf86e 100644 --- a/migrator/filters_it_test.go +++ b/migrator/filters_it_test.go @@ -110,7 +110,7 @@ func testFltrITConnect(t *testing.T) { log.Fatal(err) } fltrMigrator, err = NewMigrator(dataDBIn, dataDBOut, - nil, nil, false, false, false) + nil, nil, false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/migrator.go b/migrator/migrator.go index 21f21aa98..09ab8a14e 100755 --- a/migrator/migrator.go +++ b/migrator/migrator.go @@ -26,14 +26,9 @@ import ( "github.com/cgrates/cgrates/utils" ) -func NewMigrator( - dmIN MigratorDataDB, - dmOut MigratorDataDB, - storDBIn MigratorStorDB, - storDBOut MigratorStorDB, - dryRun bool, - sameDataDB bool, - sameStorDB bool) (m *Migrator, err error) { +func NewMigrator(dmIN, dmOut MigratorDataDB, + storDBIn, storDBOut MigratorStorDB, + dryRun, sameDataDB, sameStorDB, sameOutDB bool) (m *Migrator, err error) { stats := make(map[string]int) m = &Migrator{ dmOut: dmOut, @@ -43,6 +38,7 @@ func NewMigrator( dryRun: dryRun, sameDataDB: sameDataDB, sameStorDB: sameStorDB, + sameOutDB: sameOutDB, stats: stats, } return m, err @@ -58,6 +54,7 @@ type Migrator struct { dryRun bool sameDataDB bool sameStorDB bool + sameOutDB bool stats map[string]int } @@ -72,21 +69,23 @@ func (m *Migrator) Migrate(taskIDs []string) (err error, stats map[string]int) { utils.UnsupportedMigrationTask, fmt.Sprintf("task <%s> is not a supported migration task", taskID)) case utils.MetaSetVersions: - if m.dryRun != true { - if err := engine.OverwriteDBVersions(m.dmOut.DataManager().DataDB()); err != nil { - return utils.NewCGRError(utils.Migrator, - utils.ServerErrorCaps, - err.Error(), - fmt.Sprintf("error: <%s> when updating CostDetails version into StorDB", err.Error())), nil - } - if err := engine.OverwriteDBVersions(m.storDBOut.StorDB()); err != nil { - return utils.NewCGRError(utils.Migrator, - utils.ServerErrorCaps, - err.Error(), - fmt.Sprintf("error: <%s> when updating CostDetails version into StorDB", err.Error())), nil - } - } else { + if m.dryRun { log.Print("Cannot dryRun SetVersions!") + return + } + err = engine.OverwriteDBVersions(m.dmOut.DataManager().DataDB()) + if err != nil { + return utils.NewCGRError(utils.Migrator, utils.ServerErrorCaps, err.Error(), + fmt.Sprintf("error: <%s> when seting versions for DataDB", err.Error())), nil + } + if m.sameOutDB { + err = engine.SetDBVersions(m.storDBOut.StorDB()) + } else { + err = engine.OverwriteDBVersions(m.storDBOut.StorDB()) + } + if err != nil { + return utils.NewCGRError(utils.Migrator, utils.ServerErrorCaps, err.Error(), + fmt.Sprintf("error: <%s> when seting versions for StorDB", err.Error())), nil } case utils.MetaCDRs: err = m.migrateCDRs() diff --git a/migrator/session_costs_it_test.go b/migrator/session_costs_it_test.go index 3daf9a828..dbcbc1af7 100755 --- a/migrator/session_costs_it_test.go +++ b/migrator/session_costs_it_test.go @@ -104,7 +104,7 @@ func testSessionCostITConnect(t *testing.T) { } sCostMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, - false, false, false) + false, false, false, false) if err != nil { t.Error(err) } diff --git a/migrator/sharedgroup_it_test.go b/migrator/sharedgroup_it_test.go index 805553cb6..d860c01d1 100644 --- a/migrator/sharedgroup_it_test.go +++ b/migrator/sharedgroup_it_test.go @@ -153,7 +153,7 @@ func testShrGrpITConnect(t *testing.T) { } shrGrpMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, false, false) + false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/stats_it_test.go b/migrator/stats_it_test.go index 7001d8528..7fbafa8a3 100755 --- a/migrator/stats_it_test.go +++ b/migrator/stats_it_test.go @@ -118,7 +118,7 @@ func testStsITConnect(t *testing.T) { log.Fatal(err) } stsMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, false, false) + false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/thresholds_it_test.go b/migrator/thresholds_it_test.go index e94e6d64a..9a3751aec 100644 --- a/migrator/thresholds_it_test.go +++ b/migrator/thresholds_it_test.go @@ -154,7 +154,7 @@ func testTrsITConnect(t *testing.T) { } trsMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, false, false) + false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/tp_account_actions_it_test.go b/migrator/tp_account_actions_it_test.go index 72620b99c..da9668fa9 100644 --- a/migrator/tp_account_actions_it_test.go +++ b/migrator/tp_account_actions_it_test.go @@ -88,7 +88,7 @@ func testTpAccActITConnect(t *testing.T) { if err != nil { log.Fatal(err) } - tpAccActMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false) + tpAccActMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/tp_action_plans_it_test.go b/migrator/tp_action_plans_it_test.go index a9275f4d3..eeb2a55ae 100644 --- a/migrator/tp_action_plans_it_test.go +++ b/migrator/tp_action_plans_it_test.go @@ -88,7 +88,7 @@ func testTpActPlnITConnect(t *testing.T) { if err != nil { log.Fatal(err) } - tpActPlnMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false) + tpActPlnMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/tp_action_triggers_it_test.go b/migrator/tp_action_triggers_it_test.go index c21c38a3b..d58e73c81 100644 --- a/migrator/tp_action_triggers_it_test.go +++ b/migrator/tp_action_triggers_it_test.go @@ -88,7 +88,7 @@ func testTpActTrgITConnect(t *testing.T) { if err != nil { log.Fatal(err) } - tpActTrgMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false) + tpActTrgMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/tp_actions_it_test.go b/migrator/tp_actions_it_test.go index a1d5aadf8..81616e78f 100644 --- a/migrator/tp_actions_it_test.go +++ b/migrator/tp_actions_it_test.go @@ -88,7 +88,7 @@ func testTpActITConnect(t *testing.T) { if err != nil { log.Fatal(err) } - tpActMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false) + tpActMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/tp_destination_rates_it_test.go b/migrator/tp_destination_rates_it_test.go index 7a87fe548..35ce5cbf1 100644 --- a/migrator/tp_destination_rates_it_test.go +++ b/migrator/tp_destination_rates_it_test.go @@ -88,7 +88,7 @@ func testTpDstRtITConnect(t *testing.T) { if err != nil { log.Fatal(err) } - tpDstRtMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false) + tpDstRtMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/tp_destinations_it_test.go b/migrator/tp_destinations_it_test.go index 96d4f7b24..0be0d3afa 100644 --- a/migrator/tp_destinations_it_test.go +++ b/migrator/tp_destinations_it_test.go @@ -88,7 +88,7 @@ func testTpDstITConnect(t *testing.T) { if err != nil { log.Fatal(err) } - tpDstMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false) + tpDstMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/tp_dispatchers_it_test.go b/migrator/tp_dispatchers_it_test.go index 12ad1323d..42724aa77 100644 --- a/migrator/tp_dispatchers_it_test.go +++ b/migrator/tp_dispatchers_it_test.go @@ -88,7 +88,7 @@ func testTpDispITConnect(t *testing.T) { if err != nil { log.Fatal(err) } - tpDispMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false) + tpDispMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/tp_filters_it_test.go b/migrator/tp_filters_it_test.go index c112ebc70..069f2e03a 100755 --- a/migrator/tp_filters_it_test.go +++ b/migrator/tp_filters_it_test.go @@ -88,7 +88,7 @@ func testTpFltrITConnect(t *testing.T) { if err != nil { log.Fatal(err) } - tpFltrMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false) + tpFltrMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/tp_rates_it_test.go b/migrator/tp_rates_it_test.go index 1331a3cb8..6e9ab0caa 100644 --- a/migrator/tp_rates_it_test.go +++ b/migrator/tp_rates_it_test.go @@ -88,7 +88,7 @@ func testTpRatesITConnect(t *testing.T) { if err != nil { log.Fatal(err) } - tpRatesMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false) + tpRatesMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/tp_rating_plans_it_test.go b/migrator/tp_rating_plans_it_test.go index cd97aadf4..bc41dd68b 100644 --- a/migrator/tp_rating_plans_it_test.go +++ b/migrator/tp_rating_plans_it_test.go @@ -88,7 +88,7 @@ func testTpRatPlnITConnect(t *testing.T) { if err != nil { log.Fatal(err) } - tpRatPlnMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false) + tpRatPlnMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/tp_rating_profiles_it_test.go b/migrator/tp_rating_profiles_it_test.go index ae727b431..9eb2edc97 100644 --- a/migrator/tp_rating_profiles_it_test.go +++ b/migrator/tp_rating_profiles_it_test.go @@ -88,7 +88,7 @@ func testTpRatPrfITConnect(t *testing.T) { if err != nil { log.Fatal(err) } - tpRatPrfMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false) + tpRatPrfMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/tp_resources_it_test.go b/migrator/tp_resources_it_test.go index 081686d37..51532988a 100644 --- a/migrator/tp_resources_it_test.go +++ b/migrator/tp_resources_it_test.go @@ -90,7 +90,7 @@ func testTpResITConnect(t *testing.T) { log.Fatal(err) } tpResMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, - false, false, false) + false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/tp_shared_groups_it_test.go b/migrator/tp_shared_groups_it_test.go index f84c90240..061171ca9 100644 --- a/migrator/tp_shared_groups_it_test.go +++ b/migrator/tp_shared_groups_it_test.go @@ -88,7 +88,7 @@ func testTpShrGrITConnect(t *testing.T) { if err != nil { log.Fatal(err) } - tpShrGrMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false) + tpShrGrMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/tp_stats_it_test.go b/migrator/tp_stats_it_test.go index 05a6d5156..6140f160e 100644 --- a/migrator/tp_stats_it_test.go +++ b/migrator/tp_stats_it_test.go @@ -88,7 +88,7 @@ func testTpStatsITConnect(t *testing.T) { if err != nil { log.Fatal(err) } - tpStatsMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false) + tpStatsMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/tp_suppliers_it_test.go b/migrator/tp_suppliers_it_test.go index 348062024..6b9570c12 100644 --- a/migrator/tp_suppliers_it_test.go +++ b/migrator/tp_suppliers_it_test.go @@ -89,7 +89,7 @@ func testTpSplITConnect(t *testing.T) { if err != nil { log.Fatal(err) } - tpSplMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false) + tpSplMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/tp_thresholds_it_test.go b/migrator/tp_thresholds_it_test.go index ec9bc1296..cbfd645b7 100644 --- a/migrator/tp_thresholds_it_test.go +++ b/migrator/tp_thresholds_it_test.go @@ -89,7 +89,7 @@ func testTpTresITConnect(t *testing.T) { if err != nil { log.Fatal(err) } - tpTresMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false) + tpTresMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/tp_timings_it_test.go b/migrator/tp_timings_it_test.go index 7f768658b..4709cd037 100644 --- a/migrator/tp_timings_it_test.go +++ b/migrator/tp_timings_it_test.go @@ -88,7 +88,7 @@ func testTpTimITConnect(t *testing.T) { if err != nil { log.Fatal(err) } - tpTimMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false) + tpTimMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/user_it_test.go b/migrator/user_it_test.go index 1e18dc16e..990d5b702 100644 --- a/migrator/user_it_test.go +++ b/migrator/user_it_test.go @@ -92,7 +92,7 @@ func testUsrITConnect(t *testing.T) { log.Fatal(err) } usrMigrator, err = NewMigrator(dataDBIn, dataDBOut, - nil, nil, false, false, false) + nil, nil, false, false, false, false) if err != nil { log.Fatal(err) } diff --git a/migrator/versions_it_test.go b/migrator/versions_it_test.go new file mode 100644 index 000000000..e22460d27 --- /dev/null +++ b/migrator/versions_it_test.go @@ -0,0 +1,173 @@ +// +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 ( + "path" + "reflect" + "testing" + + "github.com/cgrates/cgrates/config" + "github.com/cgrates/cgrates/engine" + "github.com/cgrates/cgrates/utils" +) + +var ( + vrsPath string + vrsSameOutDB bool + vrsCfg *config.CGRConfig + vrsMigrator *Migrator +) + +var sTestsVrsIT = []func(t *testing.T){ + testVrsITConnect, + testVrsITFlush, + testVrsITMigrate, +} + +func TestVersionITRedis(t *testing.T) { + var err error + vrsPath = path.Join(*dataDir, "conf", "samples", "tutmysql") + vrsCfg, err = config.NewCGRConfigFromFolder(vrsPath) + if err != nil { + t.Fatal(err) + } + vrsSameOutDB = false + for _, stest := range sTestsVrsIT { + t.Run("TestVrsionITMigrateRedis", stest) + } +} + +func TestVersionITMongo(t *testing.T) { + var err error + vrsPath = path.Join(*dataDir, "conf", "samples", "tutmongo") + vrsCfg, err = config.NewCGRConfigFromFolder(vrsPath) + if err != nil { + t.Fatal(err) + } + vrsCfg.StorDbCfg().StorDBName = vrsCfg.DataDbCfg().DataDbName + vrsSameOutDB = true + for _, stest := range sTestsVrsIT { + t.Run("TestVrsionITMigrateMongo", stest) + } +} + +func testVrsITConnect(t *testing.T) { + dataDBOut, err := NewMigratorDataDB(vrsCfg.DataDbCfg().DataDbType, + vrsCfg.DataDbCfg().DataDbHost, vrsCfg.DataDbCfg().DataDbPort, + vrsCfg.DataDbCfg().DataDbName, vrsCfg.DataDbCfg().DataDbUser, + vrsCfg.DataDbCfg().DataDbPass, vrsCfg.GeneralCfg().DBDataEncoding, + config.CgrConfig().CacheCfg(), "") + if err != nil { + t.Fatal(err) + } + + storDBOut, err := NewMigratorStorDB(vrsCfg.StorDbCfg().StorDBType, + vrsCfg.StorDbCfg().StorDBHost, vrsCfg.StorDbCfg().StorDBPort, + vrsCfg.StorDbCfg().StorDBName, vrsCfg.StorDbCfg().StorDBUser, + vrsCfg.StorDbCfg().StorDBPass, vrsCfg.StorDbCfg().StorDBMaxOpenConns, + vrsCfg.StorDbCfg().StorDBMaxIdleConns, + vrsCfg.StorDbCfg().StorDBConnMaxLifetime, + vrsCfg.StorDbCfg().StorDBCDRSIndexes) + if err != nil { + t.Error(err) + } + vrsMigrator, err = NewMigrator(nil, dataDBOut, nil, storDBOut, + false, false, false, vrsSameOutDB) + if err != nil { + t.Fatal(err) + } +} + +func testVrsITFlush(t *testing.T) { + vrsMigrator.dmOut.DataManager().DataDB().Flush("") + vrsMigrator.storDBOut.StorDB().Flush((path.Join(vrsCfg.DataFolderPath, "storage", + vrsCfg.StorDbCfg().StorDBType))) + if vrs, err := vrsMigrator.dmOut.DataManager().DataDB().GetVersions(""); err == nil || err.Error() != utils.ErrNotFound.Error() { + t.Errorf("Expected err=%s recived err=%v and rply=%s", utils.ErrNotFound.Error(), err, utils.ToJSON(vrs)) + } + if vrs, err := vrsMigrator.storDBOut.StorDB().GetVersions(""); err == nil || err.Error() != utils.ErrNotFound.Error() { + t.Errorf("Expected err=%s recived err=%v and rply=%s", utils.ErrNotFound.Error(), err, utils.ToJSON(vrs)) + } +} + +func testVrsITMigrate(t *testing.T) { + //check if version was set correctly + // var emptyVers engine.Versions + + vrsMigrator.Migrate([]string{utils.MetaSetVersions}) + if vrsSameOutDB { + expVrs := engine.CurrentAllDBVersions() + if vrs, err := vrsMigrator.dmOut.DataManager().DataDB().GetVersions(""); err != nil { + t.Error(err) + } else if !reflect.DeepEqual(expVrs, vrs) { + t.Errorf("Expected %s recived %s", utils.ToJSON(expVrs), utils.ToJSON(vrs)) + } + } else { + expVrs := engine.CurrentDataDBVersions() + if vrs, err := vrsMigrator.dmOut.DataManager().DataDB().GetVersions(""); err != nil { + t.Error(err) + } else if !reflect.DeepEqual(expVrs, vrs) { + t.Errorf("Expected %s recived %s", utils.ToJSON(expVrs), utils.ToJSON(vrs)) + } + + expVrs = engine.CurrentStorDBVersions() + if vrs, err := vrsMigrator.storDBOut.StorDB().GetVersions(""); err != nil { + t.Error(err) + } else if !reflect.DeepEqual(expVrs, vrs) { + t.Errorf("Expected %s recived %s", utils.ToJSON(expVrs), utils.ToJSON(vrs)) + } + } + + currentVersion := engine.Versions{Alias: 0} + err := vrsMigrator.dmOut.DataManager().DataDB().SetVersions(currentVersion, false) + if err != nil { + t.Error("Error when setting version ", err.Error()) + } + err = vrsMigrator.storDBOut.StorDB().SetVersions(currentVersion, false) + if err != nil { + t.Error("Error when setting version ", err.Error()) + } + + vrsMigrator.Migrate([]string{utils.MetaSetVersions}) + if vrsSameOutDB { + expVrs := engine.CurrentAllDBVersions() + if vrs, err := vrsMigrator.dmOut.DataManager().DataDB().GetVersions(""); err != nil { + t.Error(err) + } else if !reflect.DeepEqual(expVrs, vrs) { + t.Errorf("Expected %s recived %s", utils.ToJSON(expVrs), utils.ToJSON(vrs)) + } + } else { + expVrs := engine.CurrentDataDBVersions() + if vrs, err := vrsMigrator.dmOut.DataManager().DataDB().GetVersions(""); err != nil { + t.Error(err) + } else if !reflect.DeepEqual(expVrs, vrs) { + t.Errorf("Expected %s recived %s", utils.ToJSON(expVrs), utils.ToJSON(vrs)) + } + + expVrs = engine.CurrentStorDBVersions() + if vrs, err := vrsMigrator.storDBOut.StorDB().GetVersions(""); err != nil { + t.Error(err) + } else if !reflect.DeepEqual(expVrs, vrs) { + t.Errorf("Expected %s recived %s", utils.ToJSON(expVrs), utils.ToJSON(vrs)) + } + } +}