From e342eea6fa1b2fc4da2acc90143eb0ee76b9c28b Mon Sep 17 00:00:00 2001 From: andronache98 Date: Mon, 7 Mar 2022 16:35:08 +0200 Subject: [PATCH] Removed storDB from Migrator --- cmd/cgr-loader/cgr-loader_it_test.go | 3 - cmd/cgr-loader/flags_test.go | 6 - cmd/cgr-migrator/cgr-migrator.go | 130 +----------------- cmd/cgr-migrator/cgr-migrator_test.go | 61 +-------- config/apis.go | 6 - migrator/attributes_it_test.go | 8 +- migrator/chargers_it_test.go | 8 +- migrator/dispatchers_it_test.go | 8 +- migrator/filters_it_test.go | 8 +- migrator/load_ids_it_test.go | 4 +- migrator/migrator.go | 81 +---------- migrator/migrator_utils.go | 18 +-- migrator/rateprofiles_it_test.go | 8 +- migrator/resource_it_test.go | 8 +- migrator/routes_it_test.go | 8 +- migrator/stats_it_test.go | 8 +- migrator/thresholds_it_test.go | 8 +- migrator/tp_action_profile.go | 79 ----------- migrator/tp_action_profile_it_test.go | 169 ----------------------- migrator/tp_chargers.go | 77 ----------- migrator/tp_dispatchers.go | 114 ---------------- migrator/tp_dispatchers_it_test.go | 154 --------------------- migrator/tp_filters.go | 76 ----------- migrator/tp_filters_it_test.go | 154 --------------------- migrator/tp_rate_profiles.go | 77 ----------- migrator/tp_rate_profiles_it_test.go | 186 -------------------------- migrator/tp_resources.go | 78 ----------- migrator/tp_resources_it_test.go | 160 ---------------------- migrator/tp_routes.go | 78 ----------- migrator/tp_routes_it_test.go | 168 ----------------------- migrator/tp_stats.go | 77 ----------- migrator/tp_stats_it_test.go | 164 ----------------------- migrator/tp_thresholds.go | 77 ----------- migrator/tp_thresholds_it_test.go | 158 ---------------------- migrator/versions_it_test.go | 36 +---- 35 files changed, 49 insertions(+), 2414 deletions(-) delete mode 100644 migrator/tp_action_profile.go delete mode 100644 migrator/tp_action_profile_it_test.go delete mode 100644 migrator/tp_chargers.go delete mode 100644 migrator/tp_dispatchers.go delete mode 100644 migrator/tp_dispatchers_it_test.go delete mode 100644 migrator/tp_filters.go delete mode 100644 migrator/tp_filters_it_test.go delete mode 100644 migrator/tp_rate_profiles.go delete mode 100644 migrator/tp_rate_profiles_it_test.go delete mode 100644 migrator/tp_resources.go delete mode 100644 migrator/tp_resources_it_test.go delete mode 100644 migrator/tp_routes.go delete mode 100644 migrator/tp_routes_it_test.go delete mode 100644 migrator/tp_stats.go delete mode 100644 migrator/tp_stats_it_test.go delete mode 100644 migrator/tp_thresholds.go delete mode 100644 migrator/tp_thresholds_it_test.go diff --git a/cmd/cgr-loader/cgr-loader_it_test.go b/cmd/cgr-loader/cgr-loader_it_test.go index 2aead24a0..78c4c697c 100644 --- a/cmd/cgr-loader/cgr-loader_it_test.go +++ b/cmd/cgr-loader/cgr-loader_it_test.go @@ -112,9 +112,6 @@ func TestLoadConfig(t *testing.T) { if ldrCfg.GeneralCfg().DefaultTimezone != utils.Local { t.Errorf("Expected %s received %s", utils.Local, ldrCfg.GeneralCfg().DefaultTimezone) } - if !reflect.DeepEqual(ldrCfg.StorDbCfg(), expStorDB) { - t.Errorf("Expected %s received %s", utils.ToJSON(expStorDB), utils.ToJSON(ldrCfg.StorDbCfg())) - } if !ldrCfg.LoaderCgrCfg().DisableReverse { t.Errorf("Expected %v received %v", true, ldrCfg.LoaderCgrCfg().DisableReverse) } diff --git a/cmd/cgr-loader/flags_test.go b/cmd/cgr-loader/flags_test.go index 154926b20..d7707fd61 100644 --- a/cmd/cgr-loader/flags_test.go +++ b/cmd/cgr-loader/flags_test.go @@ -126,12 +126,6 @@ func TestCGRLoaderFlags(t *testing.T) { t.Errorf("Expected /path/to/CACertificate, received %+v", *dbRedisCACertificate) } - if err := cgrLoaderFlags.Parse([]string{"-stordb_port", "6533"}); err != nil { - t.Error(err) - } else if *storDBPort != "6533" { - t.Errorf("Expected 6533, received %+v", *storDBPort) - } - if err := cgrLoaderFlags.Parse([]string{"-caching", "*none"}); err != nil { t.Error(err) } else if *cachingArg != "*none" { diff --git a/cmd/cgr-migrator/cgr-migrator.go b/cmd/cgr-migrator/cgr-migrator.go index 8deee4d0d..a3656ec96 100755 --- a/cmd/cgr-migrator/cgr-migrator.go +++ b/cmd/cgr-migrator/cgr-migrator.go @@ -36,19 +36,15 @@ var ( cgrMigratorFlags = flag.NewFlagSet(utils.CgrMigrator, flag.ContinueOnError) 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(utils.CfgPathCgr, utils.EmptyString, "Configuration directory path.") exec = cgrMigratorFlags.String(utils.ExecCgr, utils.EmptyString, "fire up automatic migration "+ - "<*set_versions|*cost_details|*accounts|*actions|*action_triggers|*action_plans|*shared_groups|*filters|*stordb|*datadb>") + "<*set_versions|*cost_details|*accounts|*actions|*action_triggers|*action_plans|*shared_groups|*filters|*datadb>") version = cgrMigratorFlags.Bool(utils.VersionCgr, false, "prints the application version") inDataDBType = cgrMigratorFlags.String(utils.DataDBTypeCgr, dfltCfg.DataDbCfg().Type, @@ -96,33 +92,6 @@ var ( "the encoding used to store object Data in strings in move mode") outDataDBRedisSentinel = cgrMigratorFlags.String(utils.OutDataDBRedisSentinel, utils.MetaDataDB, "the name of redis sentinel") - - inStorDBType = cgrMigratorFlags.String(utils.StorDBTypeCgr, dfltCfg.StorDbCfg().Type, - "the type of the StorDB Database <*mysql|*postgres|*mongo>") - inStorDBHost = cgrMigratorFlags.String(utils.StorDBHostCgr, dfltCfg.StorDbCfg().Host, - "the StorDB host") - inStorDBPort = cgrMigratorFlags.String(utils.StorDBPortCgr, dfltCfg.StorDbCfg().Port, - "the StorDB port") - inStorDBName = cgrMigratorFlags.String(utils.StorDBNameCgr, dfltCfg.StorDbCfg().Name, - "the name/number of the StorDB") - inStorDBUser = cgrMigratorFlags.String(utils.StorDBUserCgr, dfltCfg.StorDbCfg().User, - "the StorDB user") - inStorDBPass = cgrMigratorFlags.String(utils.StorDBPasswdCgr, dfltCfg.StorDbCfg().Password, - "the StorDB password") - - outStorDBType = cgrMigratorFlags.String(utils.OutStorDBTypeCfg, utils.MetaStorDB, - "output StorDB type for move mode <*mysql|*postgres|*mongo>") - outStorDBHost = cgrMigratorFlags.String(utils.OutStorDBHostCfg, utils.MetaStorDB, - "output StorDB host") - outStorDBPort = cgrMigratorFlags.String(utils.OutStorDBPortCfg, utils.MetaStorDB, - "output StorDB port") - outStorDBName = cgrMigratorFlags.String(utils.OutStorDBNameCfg, utils.MetaStorDB, - "output StorDB name/number") - outStorDBUser = cgrMigratorFlags.String(utils.OutStorDBUserCfg, utils.MetaStorDB, - "output StorDB user") - outStorDBPass = cgrMigratorFlags.String(utils.OutStorDBPasswordCfg, utils.MetaStorDB, - "output StorDB password") - dryRun = cgrMigratorFlags.Bool(utils.DryRunCfg, false, "parse loaded data for consistency and errors, without storing it") verbose = cgrMigratorFlags.Bool(utils.VerboseCgr, false, "enable detailed verbose logging output") @@ -298,103 +267,8 @@ func main() { log.Fatal(err) } - // inStorDB - if *inStorDBType != dfltCfg.StorDbCfg().Type { - mgrCfg.StorDbCfg().Type = strings.TrimPrefix(*inStorDBType, utils.MaskChar) - } - if *inStorDBHost != dfltCfg.StorDbCfg().Host { - mgrCfg.StorDbCfg().Host = *inStorDBHost - } - if *inStorDBPort != dfltCfg.StorDbCfg().Port { - mgrCfg.StorDbCfg().Port = *inStorDBPort - } - if *inStorDBName != dfltCfg.StorDbCfg().Name { - mgrCfg.StorDbCfg().Name = *inStorDBName - } - if *inStorDBUser != dfltCfg.StorDbCfg().User { - mgrCfg.StorDbCfg().User = *inStorDBUser - } - if *inStorDBPass != dfltCfg.StorDbCfg().Password { - mgrCfg.StorDbCfg().Password = *inStorDBPass - } - - // outStorDB - if *outStorDBType == utils.MetaStorDB { - if dfltCfg.MigratorCgrCfg().OutStorDBType == mgrCfg.MigratorCgrCfg().OutStorDBType { - mgrCfg.MigratorCgrCfg().OutStorDBType = mgrCfg.StorDbCfg().Type - } - } else { - mgrCfg.MigratorCgrCfg().OutStorDBType = strings.TrimPrefix(*outStorDBType, utils.MaskChar) - } - if *outStorDBHost == utils.MetaStorDB { - if dfltCfg.MigratorCgrCfg().OutStorDBHost == mgrCfg.MigratorCgrCfg().OutStorDBHost { - mgrCfg.MigratorCgrCfg().OutStorDBHost = mgrCfg.StorDbCfg().Host - } - } else { - mgrCfg.MigratorCgrCfg().OutStorDBHost = *outStorDBHost - } - if *outStorDBPort == utils.MetaStorDB { - if dfltCfg.MigratorCgrCfg().OutStorDBPort == mgrCfg.MigratorCgrCfg().OutStorDBPort { - mgrCfg.MigratorCgrCfg().OutStorDBPort = mgrCfg.StorDbCfg().Port - } - } else { - mgrCfg.MigratorCgrCfg().OutStorDBPort = *outStorDBPort - } - if *outStorDBName == utils.MetaStorDB { - if dfltCfg.MigratorCgrCfg().OutStorDBName == mgrCfg.MigratorCgrCfg().OutStorDBName { - mgrCfg.MigratorCgrCfg().OutStorDBName = mgrCfg.StorDbCfg().Name - } - } else { - mgrCfg.MigratorCgrCfg().OutStorDBName = *outStorDBName - } - if *outStorDBUser == utils.MetaStorDB { - if dfltCfg.MigratorCgrCfg().OutStorDBUser == mgrCfg.MigratorCgrCfg().OutStorDBUser { - mgrCfg.MigratorCgrCfg().OutStorDBUser = mgrCfg.StorDbCfg().User - } - } else { - mgrCfg.MigratorCgrCfg().OutStorDBUser = *outStorDBUser - } - if *outStorDBPass == utils.MetaStorDB { - if dfltCfg.MigratorCgrCfg().OutStorDBPassword == mgrCfg.MigratorCgrCfg().OutStorDBPassword { - mgrCfg.MigratorCgrCfg().OutStorDBPassword = mgrCfg.StorDbCfg().Password - } - } else { - mgrCfg.MigratorCgrCfg().OutStorDBPassword = *outStorDBPass - } - - sameStorDB = mgrCfg.MigratorCgrCfg().OutStorDBType == mgrCfg.StorDbCfg().Type && - mgrCfg.MigratorCgrCfg().OutStorDBHost == mgrCfg.StorDbCfg().Host && - mgrCfg.MigratorCgrCfg().OutStorDBPort == mgrCfg.StorDbCfg().Port && - mgrCfg.MigratorCgrCfg().OutStorDBName == mgrCfg.StorDbCfg().Name - - if storDBIn, err = migrator.NewMigratorStorDB(mgrCfg.StorDbCfg().Type, - mgrCfg.StorDbCfg().Host, mgrCfg.StorDbCfg().Port, - mgrCfg.StorDbCfg().Name, mgrCfg.StorDbCfg().User, - mgrCfg.StorDbCfg().Password, mgrCfg.GeneralCfg().DBDataEncoding, - mgrCfg.StorDbCfg().StringIndexedFields, mgrCfg.StorDbCfg().PrefixIndexedFields, - mgrCfg.StorDbCfg().Opts, mgrCfg.StorDbCfg().Items); err != nil { - log.Fatal(err) - } - - if sameStorDB { - storDBOut = storDBIn - } else if storDBOut, err = migrator.NewMigratorStorDB(mgrCfg.MigratorCgrCfg().OutStorDBType, - mgrCfg.MigratorCgrCfg().OutStorDBHost, mgrCfg.MigratorCgrCfg().OutStorDBPort, - mgrCfg.MigratorCgrCfg().OutStorDBName, mgrCfg.MigratorCgrCfg().OutStorDBUser, - mgrCfg.MigratorCgrCfg().OutStorDBPassword, mgrCfg.GeneralCfg().DBDataEncoding, - mgrCfg.StorDbCfg().StringIndexedFields, mgrCfg.StorDbCfg().PrefixIndexedFields, - mgrCfg.MigratorCgrCfg().OutStorDBOpts, mgrCfg.StorDbCfg().Items); err != nil { - 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, sameOutDB) + *dryRun, sameDataDB) if err != nil { log.Fatal(err) } diff --git a/cmd/cgr-migrator/cgr-migrator_test.go b/cmd/cgr-migrator/cgr-migrator_test.go index 9558eadbb..f6d0defb3 100644 --- a/cmd/cgr-migrator/cgr-migrator_test.go +++ b/cmd/cgr-migrator/cgr-migrator_test.go @@ -161,66 +161,7 @@ func TestFlags(t *testing.T) { } else if *outDataDBRedisSentinel != "true" { t.Errorf("Expected true received:%v ", *outDataDBRedisSentinel) } - if err := cgrMigratorFlags.Parse([]string{"-stordb_type", "true"}); err != nil { - t.Fatal(err) - } else if *inStorDBType != "true" { - t.Errorf("Expected true received:%v ", *inStorDBType) - } - if err := cgrMigratorFlags.Parse([]string{"-stordb_host", "true"}); err != nil { - t.Fatal(err) - } else if *inStorDBHost != "true" { - t.Errorf("Expected true received:%v ", *inStorDBHost) - } - if err := cgrMigratorFlags.Parse([]string{"-stordb_port", "true"}); err != nil { - t.Fatal(err) - } else if *inStorDBPort != "true" { - t.Errorf("Expected true received:%v ", *inStorDBPort) - } - if err := cgrMigratorFlags.Parse([]string{"-stordb_name", "true"}); err != nil { - t.Fatal(err) - } else if *inStorDBName != "true" { - t.Errorf("Expected true received:%v ", *inStorDBName) - } - if err := cgrMigratorFlags.Parse([]string{"-stordb_user", "true"}); err != nil { - t.Fatal(err) - } else if *inStorDBUser != "true" { - t.Errorf("Expected true received:%v ", *inStorDBUser) - } - if err := cgrMigratorFlags.Parse([]string{"-stordb_passwd", "true"}); err != nil { - t.Fatal(err) - } else if *inStorDBPass != "true" { - t.Errorf("Expected true received:%v ", *inStorDBPass) - } - if err := cgrMigratorFlags.Parse([]string{"-out_stordb_type", "true"}); err != nil { - t.Fatal(err) - } else if *outStorDBType != "true" { - t.Errorf("Expected true received:%v ", *outStorDBType) - } - if err := cgrMigratorFlags.Parse([]string{"-out_stordb_host", "true"}); err != nil { - t.Fatal(err) - } else if *outStorDBHost != "true" { - t.Errorf("Expected true received:%v ", *outStorDBHost) - } - if err := cgrMigratorFlags.Parse([]string{"-out_stordb_port", "true"}); err != nil { - t.Fatal(err) - } else if *outStorDBPort != "true" { - t.Errorf("Expected true received:%v ", *outStorDBPort) - } - if err := cgrMigratorFlags.Parse([]string{"-out_stordb_name", "true"}); err != nil { - t.Fatal(err) - } else if *outStorDBName != "true" { - t.Errorf("Expected true received:%v ", *outStorDBName) - } - if err := cgrMigratorFlags.Parse([]string{"-out_stordb_user", "true"}); err != nil { - t.Fatal(err) - } else if *outStorDBUser != "true" { - t.Errorf("Expected true received:%v ", *outStorDBUser) - } - if err := cgrMigratorFlags.Parse([]string{"-out_stordb_password", "true"}); err != nil { - t.Fatal(err) - } else if *outStorDBPass != "true" { - t.Errorf("Expected true received:%v ", *outStorDBPass) - } + if err := cgrMigratorFlags.Parse([]string{"-dry_run", "true"}); err != nil { t.Fatal(err) } else if !*dryRun { diff --git a/config/apis.go b/config/apis.go index 9f4bb8e6d..830afb93a 100644 --- a/config/apis.go +++ b/config/apis.go @@ -374,12 +374,6 @@ func storeDiffSection(ctx *context.Context, section string, db ConfigDB, v1, v2 return } return db.SetSection(ctx, section, diffHTTPJsonCfg(jsn, v1.HTTPCfg(), v2.HTTPCfg())) - case StorDBJSON: - jsn := new(DbJsonCfg) - if err = db.GetSection(ctx, section, jsn); err != nil { - return - } - return db.SetSection(ctx, section, diffStorDBDbJsonCfg(jsn, v1.StorDbCfg(), v2.StorDbCfg())) case DataDBJSON: jsn := new(DbJsonCfg) if err = db.GetSection(ctx, section, jsn); err != nil { diff --git a/migrator/attributes_it_test.go b/migrator/attributes_it_test.go index 26f932910..eb2946727 100644 --- a/migrator/attributes_it_test.go +++ b/migrator/attributes_it_test.go @@ -219,11 +219,11 @@ func testAttrITConnect(t *testing.T) { } if reflect.DeepEqual(attrPathIn, attrPathOut) { - attrMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, true, false, false) + attrMigrator, err = NewMigrator(dataDBIn, dataDBOut, + false, true) } else { - attrMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, false, false, false) + attrMigrator, err = NewMigrator(dataDBIn, dataDBOut, + false, false) } if err != nil { log.Fatal(err) diff --git a/migrator/chargers_it_test.go b/migrator/chargers_it_test.go index 8e86eed71..c99396462 100644 --- a/migrator/chargers_it_test.go +++ b/migrator/chargers_it_test.go @@ -143,11 +143,11 @@ func testChrgITConnect(t *testing.T) { log.Fatal(err) } if reflect.DeepEqual(chrgPathIn, chrgPathOut) { - chrgMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, true, false, false) + chrgMigrator, err = NewMigrator(dataDBIn, dataDBOut, + false, true) } else { - chrgMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, false, false, false) + chrgMigrator, err = NewMigrator(dataDBIn, dataDBOut, + false, false) } if err != nil { log.Fatal(err) diff --git a/migrator/dispatchers_it_test.go b/migrator/dispatchers_it_test.go index 952272ddd..8ee546672 100644 --- a/migrator/dispatchers_it_test.go +++ b/migrator/dispatchers_it_test.go @@ -139,11 +139,11 @@ func testDspITConnect(t *testing.T) { log.Fatal(err) } if reflect.DeepEqual(dspPathIn, dspPathOut) { - dspMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, true, false, false) + dspMigrator, err = NewMigrator(dataDBIn, dataDBOut, + false, true) } else { - dspMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, false, false, false) + dspMigrator, err = NewMigrator(dataDBIn, dataDBOut, + false, false) } if err != nil { log.Fatal(err) diff --git a/migrator/filters_it_test.go b/migrator/filters_it_test.go index 7a78a2540..03c85cba4 100644 --- a/migrator/filters_it_test.go +++ b/migrator/filters_it_test.go @@ -119,11 +119,11 @@ func testFltrITConnect(t *testing.T) { log.Fatal(err) } if reflect.DeepEqual(inPath, outPath) { - fltrMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, true, false, false) + fltrMigrator, err = NewMigrator(dataDBIn, dataDBOut, + false, true) } else { - fltrMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, false, false, false) + fltrMigrator, err = NewMigrator(dataDBIn, dataDBOut, + false, false) } if err != nil { log.Fatal(err) diff --git a/migrator/load_ids_it_test.go b/migrator/load_ids_it_test.go index 6811d0cb8..fd663c1ed 100644 --- a/migrator/load_ids_it_test.go +++ b/migrator/load_ids_it_test.go @@ -94,10 +94,10 @@ func testLoadIdsITConnect(t *testing.T) { } if inPath == outPath { loadMigrator, err = NewMigrator(dataDBIn, dataDBOut, - nil, nil, false, true, false, false) + false, true) } else { loadMigrator, err = NewMigrator(dataDBIn, dataDBOut, - nil, nil, false, false, false, false) + false, false) } if err != nil { log.Fatal(err) diff --git a/migrator/migrator.go b/migrator/migrator.go index 4a18bce2f..a2b486cb7 100644 --- a/migrator/migrator.go +++ b/migrator/migrator.go @@ -27,18 +27,13 @@ import ( ) func NewMigrator(dmIN, dmOut MigratorDataDB, - storDBIn, storDBOut MigratorStorDB, - dryRun, sameDataDB, sameStorDB, sameOutDB bool) (m *Migrator, err error) { + dryRun, sameDataDB bool) (m *Migrator, err error) { stats := make(map[string]int) m = &Migrator{ dmOut: dmOut, dmIN: dmIN, - storDBIn: storDBIn, - storDBOut: storDBOut, dryRun: dryRun, sameDataDB: sameDataDB, - sameStorDB: sameStorDB, - sameOutDB: sameOutDB, stats: stats, } return m, err @@ -47,12 +42,8 @@ func NewMigrator(dmIN, dmOut MigratorDataDB, type Migrator struct { dmIN MigratorDataDB dmOut MigratorDataDB - storDBIn MigratorStorDB - storDBOut MigratorStorDB dryRun bool sameDataDB bool - sameStorDB bool - sameOutDB bool // needed in case we set version and we use same DataDB as StorDB to store the versions without overwriting them stats map[string]int } @@ -76,24 +67,11 @@ func (m *Migrator) Migrate(taskIDs []string) (err error, stats map[string]int) { 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.MetaEnsureIndexes: - if m.storDBOut.StorDB().GetStorageType() == utils.Mongo { - mgo := m.storDBOut.StorDB().(*engine.MongoStorage) - if err = mgo.EnsureIndexes(); err != nil { - return - } - } else { - log.Printf("The StorDB type has to be %s .\n ", utils.Mongo) - } if m.dmOut.DataManager().DataDB().GetStorageType() == utils.Mongo { mgo := m.dmOut.DataManager().DataDB().(*engine.MongoStorage) @@ -130,24 +108,6 @@ func (m *Migrator) Migrate(taskIDs []string) (err error, stats map[string]int) { case utils.MetaDispatchers: err = m.migrateDispatchers() //TPs - case utils.MetaTpFilters: - err = m.migrateTPfilters() - case utils.MetaTpThresholds: - err = m.migrateTPthresholds() - case utils.MetaTpRoutes: - err = m.migrateTPRoutes() - case utils.MetaTpStats: - err = m.migrateTPstats() - case utils.MetaTpRateProfiles: - err = m.migrateTPRateProfiles() - case utils.MetaTpActionProfiles: - err = m.migrateTPActionProfiles() - case utils.MetaTpResources: - err = m.migrateTPresources() - case utils.MetaTpChargers: - err = m.migrateTPChargers() - case utils.MetaTpDispatchers: - err = m.migrateTPDispatchers() case utils.MetaLoadIDs: err = m.migrateLoadIDs() //DATADB ALL @@ -180,30 +140,7 @@ func (m *Migrator) Migrate(taskIDs []string) (err error, stats map[string]int) { log.Print("ERROR: ", utils.MetaLoadIDs, " ", err) } err = nil - //STORDB ALL - case utils.MetaStorDB: - if err := m.migrateTPfilters(); err != nil { - log.Print("ERROR: ", utils.MetaTpFilters, " ", err) - } - if err := m.migrateTPthresholds(); err != nil { - log.Print("ERROR: ", utils.MetaTpThresholds, " ", err) - } - if err := m.migrateTPRoutes(); err != nil { - log.Print("ERROR: ", utils.MetaTpRoutes, " ", err) - } - if err := m.migrateTPstats(); err != nil { - log.Print("ERROR: ", utils.MetaTpStats, " ", err) - } - if err := m.migrateTPresources(); err != nil { - log.Print("ERROR: ", utils.MetaTpResources, " ", err) - } - if err := m.migrateTPChargers(); err != nil { - log.Print("ERROR: ", utils.MetaTpChargers, " ", err) - } - if err := m.migrateTPDispatchers(); err != nil { - log.Print("ERROR: ", utils.MetaTpDispatchers, " ", err) - } - err = nil + } } for k, v := range m.stats { @@ -220,14 +157,6 @@ func (m *Migrator) ensureIndexesDataDB(cols ...string) error { return mgo.EnsureIndexes(cols...) } -func (m *Migrator) ensureIndexesStorDB(cols ...string) error { - if m.storDBOut.StorDB().GetStorageType() != utils.Mongo { - return nil - } - mgo := m.storDBOut.StorDB().(*engine.MongoStorage) - return mgo.EnsureIndexes(cols...) -} - // closes all opened DBs func (m *Migrator) Close() { if m.dmIN != nil { @@ -236,10 +165,4 @@ func (m *Migrator) Close() { if m.dmOut != nil { m.dmOut.close() } - if m.storDBIn != nil { - m.storDBIn.close() - } - if m.storDBOut != nil { - m.storDBOut.close() - } } diff --git a/migrator/migrator_utils.go b/migrator/migrator_utils.go index 3853ada17..ec105ef55 100644 --- a/migrator/migrator_utils.go +++ b/migrator/migrator_utils.go @@ -20,7 +20,6 @@ package migrator import ( "fmt" - "strings" "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/engine" @@ -81,11 +80,7 @@ func NewMigratorStorDB(db_type, host, port, name, user, pass, marshaler string, return } func (m *Migrator) getVersions(str string) (vrs engine.Versions, err error) { - if str == utils.CDRs || str == utils.SessionSCosts || strings.HasPrefix(str, "Tp") { - vrs, err = m.storDBIn.StorDB().GetVersions(utils.EmptyString) - } else { - vrs, err = m.dmIN.DataManager().DataDB().GetVersions(utils.EmptyString) - } + vrs, err = m.dmIN.DataManager().DataDB().GetVersions(utils.EmptyString) if err != nil { return nil, utils.NewCGRError(utils.Migrator, utils.ServerErrorCaps, @@ -101,18 +96,13 @@ func (m *Migrator) getVersions(str string) (vrs engine.Versions, err error) { } func (m *Migrator) setVersions(str string) (err error) { - if str == utils.CDRs || str == utils.SessionSCosts || strings.HasPrefix(str, "Tp") { - vrs := engine.Versions{str: engine.CurrentStorDBVersions()[str]} - err = m.storDBOut.StorDB().SetVersions(vrs, false) - } else { - vrs := engine.Versions{str: engine.CurrentDataDBVersions()[str]} - err = m.dmOut.DataManager().DataDB().SetVersions(vrs, false) - } + vrs := engine.Versions{str: engine.CurrentDataDBVersions()[str]} + err = m.dmOut.DataManager().DataDB().SetVersions(vrs, false) if err != nil { err = utils.NewCGRError(utils.Migrator, utils.ServerErrorCaps, err.Error(), - fmt.Sprintf("error: <%s> when updating %s version into StorDB", err.Error(), str)) + fmt.Sprintf("error: <%s> when updating %s version into DataDB", err.Error(), str)) } return } diff --git a/migrator/rateprofiles_it_test.go b/migrator/rateprofiles_it_test.go index 102def68f..8c83ec867 100644 --- a/migrator/rateprofiles_it_test.go +++ b/migrator/rateprofiles_it_test.go @@ -142,11 +142,11 @@ func testRatePrfITConnect(t *testing.T) { log.Fatal(err) } if reflect.DeepEqual(ratePrfPathIn, ratePrfPathOut) { - ratePrfMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, true, false, false) + ratePrfMigrator, err = NewMigrator(dataDBIn, dataDBOut, + false, true) } else { - ratePrfMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, false, false, false) + ratePrfMigrator, err = NewMigrator(dataDBIn, dataDBOut, + false, false) } if err != nil { log.Fatal(err) diff --git a/migrator/resource_it_test.go b/migrator/resource_it_test.go index ec97aa8a4..0f18ab1a0 100644 --- a/migrator/resource_it_test.go +++ b/migrator/resource_it_test.go @@ -143,11 +143,11 @@ func testResITConnect(t *testing.T) { log.Fatal(err) } if reflect.DeepEqual(resPathIn, resPathOut) { - resMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, true, false, false) + resMigrator, err = NewMigrator(dataDBIn, dataDBOut, + false, true) } else { - resMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, false, false, false) + resMigrator, err = NewMigrator(dataDBIn, dataDBOut, + false, false) } if err != nil { log.Fatal(err) diff --git a/migrator/routes_it_test.go b/migrator/routes_it_test.go index 7c87a09cf..f1a13a7fb 100644 --- a/migrator/routes_it_test.go +++ b/migrator/routes_it_test.go @@ -142,11 +142,11 @@ func testSupITConnect(t *testing.T) { log.Fatal(err) } if reflect.DeepEqual(supPathIn, supPathOut) { - supMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, true, false, false) + supMigrator, err = NewMigrator(dataDBIn, dataDBOut, + false, true) } else { - supMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, false, false, false) + supMigrator, err = NewMigrator(dataDBIn, dataDBOut, + false, false) } if err != nil { log.Fatal(err) diff --git a/migrator/stats_it_test.go b/migrator/stats_it_test.go index 0566c7816..b1abefa9e 100644 --- a/migrator/stats_it_test.go +++ b/migrator/stats_it_test.go @@ -125,11 +125,11 @@ func testStsITConnect(t *testing.T) { log.Fatal(err) } if stsPathIn == stsPathOut { - stsMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, true, false, false) + stsMigrator, err = NewMigrator(dataDBIn, dataDBOut, + false, true) } else { - stsMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, false, false, false) + stsMigrator, err = NewMigrator(dataDBIn, dataDBOut, + false, false) } if err != nil { log.Fatal(err) diff --git a/migrator/thresholds_it_test.go b/migrator/thresholds_it_test.go index 1f0645a63..8a8d51a24 100644 --- a/migrator/thresholds_it_test.go +++ b/migrator/thresholds_it_test.go @@ -161,11 +161,11 @@ func testTrsITConnect(t *testing.T) { log.Fatal(err) } if reflect.DeepEqual(trsPathIn, trsPathOut) { - trsMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, true, false, false) + trsMigrator, err = NewMigrator(dataDBIn, dataDBOut, + false, true) } else { - trsMigrator, err = NewMigrator(dataDBIn, dataDBOut, nil, nil, - false, false, false, false) + trsMigrator, err = NewMigrator(dataDBIn, dataDBOut, + false, false) } if err != nil { diff --git a/migrator/tp_action_profile.go b/migrator/tp_action_profile.go deleted file mode 100644 index 095efac2f..000000000 --- a/migrator/tp_action_profile.go +++ /dev/null @@ -1,79 +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 ( - "github.com/cgrates/cgrates/engine" - - "github.com/cgrates/cgrates/utils" -) - -func (m *Migrator) migrateCurrentTPActionProfiles() (err error) { - tpIds, err := m.storDBIn.StorDB().GetTpIds(utils.TBLTPActionProfiles) - if err != nil { - return err - } - - for _, tpid := range tpIds { - ids, err := m.storDBIn.StorDB().GetTpTableIds(tpid, utils.TBLTPActionProfiles, - []string{"id"}, map[string]string{}, nil) - if err != nil { - return err - } - - for _, id := range ids { - actionProfiles, err := m.storDBIn.StorDB().GetTPActionProfiles(tpid, utils.EmptyString, id) - if err != nil { - return err - } - if actionProfiles == nil || m.dryRun { - continue - } - if err := m.storDBOut.StorDB().SetTPActionProfiles(actionProfiles); err != nil { - return err - } - for _, actionProfile := range actionProfiles { - if err := m.storDBIn.StorDB().RemTpData(utils.TBLTPActionProfiles, actionProfile.TPid, - map[string]string{"id": actionProfile.ID}); err != nil { - return err - } - } - m.stats[utils.TpActionProfiles]++ - } - } - return -} - -func (m *Migrator) migrateTPActionProfiles() (err error) { - var vrs engine.Versions - current := engine.CurrentStorDBVersions() - if vrs, err = m.getVersions(utils.TpActionProfiles); err != nil { - return - } - switch vrs[utils.TpActionProfiles] { - case current[utils.TpActionProfiles]: - if m.sameStorDB { - break - } - if err := m.migrateCurrentTPActionProfiles(); err != nil { - return err - } - } - return m.ensureIndexesStorDB(utils.TBLTPActionProfiles) -} diff --git a/migrator/tp_action_profile_it_test.go b/migrator/tp_action_profile_it_test.go deleted file mode 100644 index c3486c2e6..000000000 --- a/migrator/tp_action_profile_it_test.go +++ /dev/null @@ -1,169 +0,0 @@ -//go:build integration -// +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/birpc/context" - "github.com/cgrates/cgrates/engine" - - "github.com/cgrates/cgrates/config" - "github.com/cgrates/cgrates/utils" -) - -var ( - tpActPrfPathIn string - tpActPrfPathOut string - tpActPrfCfgIn *config.CGRConfig - tpActPrfCfgOut *config.CGRConfig - tpActPrfMigrator *Migrator - actPrf []*utils.TPActionProfile -) - -var sTestTpActPrfIT = []func(t *testing.T){ - testTpActPrfConnect, - testTpActPrfFlush, - testTpACtPrfPopulate, - testTpACtPrfMove, - testTpACtPrfCheckData, -} - -func TestTpActPrfMove(t *testing.T) { - for _, tests := range sTestTpActPrfIT { - t.Run("TestTpActPrfMove", tests) - } - tpActPrfMigrator.Close() -} - -func testTpActPrfConnect(t *testing.T) { - var err error - tpActPrfPathIn = path.Join(*dataDir, "conf", "samples", "tutmongo") - tpActPrfCfgIn, err = config.NewCGRConfigFromPath(context.Background(), tpActPrfPathIn) - if err != nil { - t.Fatal(err) - } - tpActPrfPathOut = path.Join(*dataDir, "conf", "samples", "tutmysql") - tpActPrfCfgOut, err = config.NewCGRConfigFromPath(context.Background(), tpActPrfPathOut) - if err != nil { - t.Fatal(err) - } - storDBIn, err := NewMigratorStorDB(tpActPrfCfgIn.StorDbCfg().Type, - tpActPrfCfgIn.StorDbCfg().Host, tpActPrfCfgIn.StorDbCfg().Port, - tpActPrfCfgIn.StorDbCfg().Name, tpActPrfCfgIn.StorDbCfg().User, - tpActPrfCfgIn.StorDbCfg().Password, tpActPrfCfgIn.GeneralCfg().DBDataEncoding, - tpActPrfCfgIn.StorDbCfg().StringIndexedFields, tpActPrfCfgIn.StorDbCfg().PrefixIndexedFields, - tpActPrfCfgIn.StorDbCfg().Opts, tpActPrfCfgIn.StorDbCfg().Items) - if err != nil { - t.Error(err) - } - storDBOut, err := NewMigratorStorDB(tpActPrfCfgOut.StorDbCfg().Type, - tpActPrfCfgOut.StorDbCfg().Host, tpActPrfCfgOut.StorDbCfg().Port, - tpActPrfCfgOut.StorDbCfg().Name, tpActPrfCfgOut.StorDbCfg().User, - tpActPrfCfgOut.StorDbCfg().Password, tpActPrfCfgOut.GeneralCfg().DBDataEncoding, - tpActPrfCfgOut.StorDbCfg().StringIndexedFields, tpActPrfCfgOut.StorDbCfg().PrefixIndexedFields, - tpActPrfCfgOut.StorDbCfg().Opts, tpActPrfCfgOut.StorDbCfg().Items) - if err != nil { - t.Error(err) - } - - tpActPrfMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, - false, false, false, false) - if err != nil { - t.Fatal(err) - } -} - -func testTpActPrfFlush(t *testing.T) { - if err := tpActPrfMigrator.storDBIn.StorDB().Flush( - path.Join(tpActPrfCfgIn.DataFolderPath, "storage", tpActPrfCfgIn.StorDbCfg().Type)); err != nil { - t.Error(err) - } - if err := tpActPrfMigrator.storDBOut.StorDB().Flush( - path.Join(tpActPrfCfgOut.DataFolderPath, "storage", tpActPrfCfgOut.StorDbCfg().Type)); err != nil { - t.Error(err) - } -} - -func testTpACtPrfPopulate(t *testing.T) { - actPrf = []*utils.TPActionProfile{ - { - Tenant: "cgrates.org", - TPid: "TEST_ID1", - ID: "sub_id1", - FilterIDs: []string{"*string:~*req.Account:1001"}, - Weights: ";20", - Schedule: utils.MetaASAP, - Actions: []*utils.TPAPAction{ - { - ID: "TOPUP", - FilterIDs: []string{}, - Type: "*topup", - Diktats: []*utils.TPAPDiktat{{ - Path: "~*balance.TestBalance.Value", - }}, - }, - }, - }, - } - //empty in database - if _, err := tpActPrfMigrator.storDBIn.StorDB().GetTPActionProfiles(actPrf[0].TPid, - utils.EmptyString, actPrf[0].ID); err != utils.ErrNotFound { - t.Error(err) - } - - //set an TPActionProfile in database - if err := tpActPrfMigrator.storDBIn.StorDB().SetTPActionProfiles(actPrf); err != nil { - t.Error(err) - } - currVersion := engine.CurrentStorDBVersions() - err := tpActPrfMigrator.storDBIn.StorDB().SetVersions(currVersion, false) - if err != nil { - t.Error(err) - } -} - -func testTpACtPrfMove(t *testing.T) { - err, _ := tpActPrfMigrator.Migrate([]string{utils.MetaTpActionProfiles}) - if err != nil { - t.Error("Error when migrating TpActionProfile ", err.Error()) - } -} - -func testTpACtPrfCheckData(t *testing.T) { - rcv, err := tpActPrfMigrator.storDBOut.StorDB().GetTPActionProfiles(actPrf[0].TPid, - utils.EmptyString, actPrf[0].ID) - if err != nil { - t.Error("Error when getting TPActionProfile from database", err) - } - actPrf[0].Actions[0].FilterIDs = nil // because of converting and empty string into a slice - if !reflect.DeepEqual(rcv[0], actPrf[0]) { - t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(actPrf[0]), utils.ToJSON(rcv[0])) - } - - _, err = tpActPrfMigrator.storDBIn.StorDB().GetTPActionProfiles(actPrf[0].TPid, - utils.EmptyString, actPrf[0].ID) - if err != utils.ErrNotFound { - t.Error(err) - } -} diff --git a/migrator/tp_chargers.go b/migrator/tp_chargers.go deleted file mode 100644 index 52f079ab2..000000000 --- a/migrator/tp_chargers.go +++ /dev/null @@ -1,77 +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 ( - "github.com/cgrates/cgrates/engine" - "github.com/cgrates/cgrates/utils" -) - -func (m *Migrator) migrateCurrentTPChargers() (err error) { - tpids, err := m.storDBIn.StorDB().GetTpIds(utils.TBLTPChargers) - if err != nil { - return err - } - - for _, tpid := range tpids { - ids, err := m.storDBIn.StorDB().GetTpTableIds(tpid, utils.TBLTPChargers, - []string{"id"}, map[string]string{}, nil) - if err != nil { - return err - } - for _, id := range ids { - chargers, err := m.storDBIn.StorDB().GetTPChargers(tpid, "", id) - if err != nil { - return err - } - if chargers == nil || m.dryRun { - continue - } - if err := m.storDBOut.StorDB().SetTPChargers(chargers); err != nil { - return err - } - for _, charger := range chargers { - if err := m.storDBIn.StorDB().RemTpData(utils.TBLTPChargers, charger.TPid, - map[string]string{"id": charger.ID}); err != nil { - return err - } - } - m.stats[utils.TpChargers]++ - } - } - return -} - -func (m *Migrator) migrateTPChargers() (err error) { - var vrs engine.Versions - current := engine.CurrentStorDBVersions() - if vrs, err = m.getVersions(utils.TpChargers); err != nil { - return - } - switch vrs[utils.TpChargers] { - case current[utils.TpChargers]: - if m.sameStorDB { - break - } - if err := m.migrateCurrentTPChargers(); err != nil { - return err - } - } - return m.ensureIndexesStorDB(utils.TBLTPChargers) -} diff --git a/migrator/tp_dispatchers.go b/migrator/tp_dispatchers.go deleted file mode 100644 index 1e4bf2bb6..000000000 --- a/migrator/tp_dispatchers.go +++ /dev/null @@ -1,114 +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 ( - "github.com/cgrates/cgrates/engine" - "github.com/cgrates/cgrates/utils" -) - -func (m *Migrator) migrateCurrentTPDispatchers() (err error) { - tpids, err := m.storDBIn.StorDB().GetTpIds(utils.TBLTPDispatchers) - if err != nil { - return err - } - - for _, tpid := range tpids { - ids, err := m.storDBIn.StorDB().GetTpTableIds(tpid, utils.TBLTPDispatchers, - []string{"id"}, map[string]string{}, nil) - if err != nil { - return err - } - for _, id := range ids { - dispatchers, err := m.storDBIn.StorDB().GetTPDispatcherProfiles(tpid, "", id) - if err != nil { - return err - } - if dispatchers == nil || m.dryRun { - continue - } - if err := m.storDBOut.StorDB().SetTPDispatcherProfiles(dispatchers); err != nil { - return err - } - for _, dispatcher := range dispatchers { - if err := m.storDBIn.StorDB().RemTpData(utils.TBLTPDispatchers, dispatcher.TPid, - map[string]string{"id": dispatcher.ID}); err != nil { - return err - } - } - m.stats[utils.TpDispatchers]++ - } - } - return -} - -func (m *Migrator) migrateCurrentTPDispatcherHosts() (err error) { - tpids, err := m.storDBIn.StorDB().GetTpIds(utils.TBLTPDispatcherHosts) - if err != nil { - return err - } - - for _, tpid := range tpids { - ids, err := m.storDBIn.StorDB().GetTpTableIds(tpid, utils.TBLTPDispatcherHosts, - []string{"id"}, map[string]string{}, nil) - if err != nil { - return err - } - for _, id := range ids { - dispatchers, err := m.storDBIn.StorDB().GetTPDispatcherHosts(tpid, "", id) - if err != nil { - return err - } - if dispatchers == nil || m.dryRun { - continue - } - if err := m.storDBOut.StorDB().SetTPDispatcherHosts(dispatchers); err != nil { - return err - } - for _, dispatcher := range dispatchers { - if err := m.storDBIn.StorDB().RemTpData(utils.TBLTPDispatcherHosts, dispatcher.TPid, - map[string]string{"id": dispatcher.ID}); err != nil { - return err - } - } - } - } - return -} - -func (m *Migrator) migrateTPDispatchers() (err error) { - var vrs engine.Versions - current := engine.CurrentStorDBVersions() - if vrs, err = m.getVersions(utils.TpDispatchers); err != nil { - return - } - switch vrs[utils.TpDispatchers] { - case current[utils.TpDispatchers]: - if m.sameStorDB { - break - } - if err := m.migrateCurrentTPDispatchers(); err != nil { - return err - } - if err := m.migrateCurrentTPDispatcherHosts(); err != nil { - return err - } - } - return m.ensureIndexesStorDB(utils.TBLTPDispatchers, utils.TBLTPDispatcherHosts) -} diff --git a/migrator/tp_dispatchers_it_test.go b/migrator/tp_dispatchers_it_test.go deleted file mode 100644 index e4e2e5cfd..000000000 --- a/migrator/tp_dispatchers_it_test.go +++ /dev/null @@ -1,154 +0,0 @@ -//go:build integration -// +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 ( - "log" - "path" - "reflect" - "sort" - "testing" - - "github.com/cgrates/birpc/context" - "github.com/cgrates/cgrates/config" - "github.com/cgrates/cgrates/engine" - "github.com/cgrates/cgrates/utils" -) - -var ( - tpDispPathIn string - tpDispPathOut string - tpDispCfgIn *config.CGRConfig - tpDispCfgOut *config.CGRConfig - tpDispMigrator *Migrator - tpDisps []*utils.TPDispatcherProfile -) - -var sTestsTpDispIT = []func(t *testing.T){ - testTpDispITConnect, - testTpDispITFlush, - testTpDispITPopulate, - testTpDispITMove, - testTpDispITCheckData, -} - -func TestTpDispMove(t *testing.T) { - for _, stest := range sTestsTpDispIT { - t.Run("TestTpDispMove", stest) - } - tpDispMigrator.Close() -} - -func testTpDispITConnect(t *testing.T) { - var err error - tpDispPathIn = path.Join(*dataDir, "conf", "samples", "tutmongo") - tpDispCfgIn, err = config.NewCGRConfigFromPath(context.Background(), tpDispPathIn) - if err != nil { - t.Fatal(err) - } - tpDispPathOut = path.Join(*dataDir, "conf", "samples", "tutmysql") - tpDispCfgOut, err = config.NewCGRConfigFromPath(context.Background(), tpDispPathOut) - if err != nil { - t.Fatal(err) - } - storDBIn, err := NewMigratorStorDB(tpDispCfgIn.StorDbCfg().Type, - tpDispCfgIn.StorDbCfg().Host, tpDispCfgIn.StorDbCfg().Port, - tpDispCfgIn.StorDbCfg().Name, tpDispCfgIn.StorDbCfg().User, - tpDispCfgIn.StorDbCfg().Password, tpDispCfgIn.GeneralCfg().DBDataEncoding, - tpDispCfgIn.StorDbCfg().StringIndexedFields, tpDispCfgIn.StorDbCfg().PrefixIndexedFields, - tpDispCfgIn.StorDbCfg().Opts, tpDispCfgIn.StorDbCfg().Items) - if err != nil { - log.Fatal(err) - } - storDBOut, err := NewMigratorStorDB(tpDispCfgOut.StorDbCfg().Type, - tpDispCfgOut.StorDbCfg().Host, tpDispCfgOut.StorDbCfg().Port, - tpDispCfgOut.StorDbCfg().Name, tpDispCfgOut.StorDbCfg().User, - tpDispCfgOut.StorDbCfg().Password, tpDispCfgOut.GeneralCfg().DBDataEncoding, - tpDispCfgIn.StorDbCfg().StringIndexedFields, tpDispCfgIn.StorDbCfg().PrefixIndexedFields, - tpDispCfgOut.StorDbCfg().Opts, tpDispCfgOut.StorDbCfg().Items) - if err != nil { - log.Fatal(err) - } - tpDispMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false, false) - if err != nil { - log.Fatal(err) - } -} - -func testTpDispITFlush(t *testing.T) { - if err := tpDispMigrator.storDBIn.StorDB().Flush( - path.Join(tpDispCfgIn.DataFolderPath, "storage", - tpDispCfgIn.StorDbCfg().Type)); err != nil { - t.Error(err) - } - - if err := tpDispMigrator.storDBOut.StorDB().Flush( - path.Join(tpDispCfgOut.DataFolderPath, "storage", - tpDispCfgOut.StorDbCfg().Type)); err != nil { - t.Error(err) - } -} - -func testTpDispITPopulate(t *testing.T) { - tpDisps = []*utils.TPDispatcherProfile{ - { - TPid: "TP1", - Tenant: "cgrates.org", - ID: "Dsp1", - FilterIDs: []string{"*string:Account:1002", "*ai:~*req.AnswerTime:2014-07-29T15:00:00Z"}, - Strategy: utils.MetaFirst, - Weight: 10, - }, - } - if err := tpDispMigrator.storDBIn.StorDB().SetTPDispatcherProfiles(tpDisps); err != nil { - t.Error("Error when setting TpDispatchers ", err.Error()) - } - currentVersion := engine.CurrentStorDBVersions() - err := tpDispMigrator.storDBIn.StorDB().SetVersions(currentVersion, false) - if err != nil { - t.Error("Error when setting version for TpDispatchers ", err.Error()) - } -} - -func testTpDispITMove(t *testing.T) { - err, _ := tpDispMigrator.Migrate([]string{utils.MetaTpDispatchers}) - if err != nil { - t.Error("Error when migrating TpDispatchers ", err.Error()) - } -} - -func testTpDispITCheckData(t *testing.T) { - result, err := tpDispMigrator.storDBOut.StorDB().GetTPDispatcherProfiles("TP1", "cgrates.org", "Dsp1") - if err != nil { - t.Fatal("Error when getting TpDispatchers ", err.Error()) - } - sort.Strings(tpDisps[0].FilterIDs) - sort.Strings(result[0].FilterIDs) - if !reflect.DeepEqual(tpDisps[0], result[0]) { - t.Errorf("Expecting: %+v, received: %+v", - utils.ToJSON(tpDisps[0]), utils.ToJSON(result[0])) - } - result, err = tpDispMigrator.storDBIn.StorDB().GetTPDispatcherProfiles("TP1", "cgrates.org", "Dsp1") - if err != utils.ErrNotFound { - t.Error(err) - } -} diff --git a/migrator/tp_filters.go b/migrator/tp_filters.go deleted file mode 100644 index f8f0f4d3d..000000000 --- a/migrator/tp_filters.go +++ /dev/null @@ -1,76 +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 ( - "github.com/cgrates/cgrates/engine" - "github.com/cgrates/cgrates/utils" -) - -func (m *Migrator) migrateCurrentTPfilters() (err error) { - tpids, err := m.storDBIn.StorDB().GetTpIds(utils.TBLTPFilters) - if err != nil { - return err - } - for _, tpid := range tpids { - ids, err := m.storDBIn.StorDB().GetTpTableIds(tpid, utils.TBLTPFilters, - []string{"id"}, map[string]string{}, nil) - if err != nil { - return err - } - for _, id := range ids { - fltrs, err := m.storDBIn.StorDB().GetTPFilters(tpid, "", id) - if err != nil { - return err - } - if fltrs == nil || m.dryRun { - continue - } - if err := m.storDBOut.StorDB().SetTPFilters(fltrs); err != nil { - return err - } - for _, fltr := range fltrs { - if err := m.storDBIn.StorDB().RemTpData(utils.TBLTPFilters, - fltr.TPid, map[string]string{"tenant": fltr.Tenant, "id": fltr.ID}); err != nil { - return err - } - } - m.stats[utils.TpFilters]++ - } - } - return -} - -func (m *Migrator) migrateTPfilters() (err error) { - var vrs engine.Versions - current := engine.CurrentStorDBVersions() - if vrs, err = m.getVersions(utils.TpFilters); err != nil { - return - } - switch vrs[utils.TpFilters] { - case current[utils.TpFilters]: - if m.sameStorDB { - break - } - if err := m.migrateCurrentTPfilters(); err != nil { - return err - } - } - return m.ensureIndexesStorDB(utils.TBLTPFilters) -} diff --git a/migrator/tp_filters_it_test.go b/migrator/tp_filters_it_test.go deleted file mode 100644 index e177f1a29..000000000 --- a/migrator/tp_filters_it_test.go +++ /dev/null @@ -1,154 +0,0 @@ -//go:build integration -// +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 ( - "log" - "path" - "reflect" - "testing" - - "github.com/cgrates/birpc/context" - "github.com/cgrates/cgrates/config" - "github.com/cgrates/cgrates/engine" - "github.com/cgrates/cgrates/utils" -) - -var ( - tpFltrPathIn string - tpFltrPathOut string - tpFltrCfgIn *config.CGRConfig - tpFltrCfgOut *config.CGRConfig - tpFltrMigrator *Migrator - tpFilters []*utils.TPFilterProfile -) - -var sTestsTpFltrIT = []func(t *testing.T){ - testTpFltrITConnect, - testTpFltrITFlush, - testTpFltrITPopulate, - testTpFltrITMove, - testTpFltrITCheckData, -} - -func TestTpFltrMove(t *testing.T) { - for _, stest := range sTestsTpFltrIT { - t.Run("TestTpFltrMove", stest) - } - tpFltrMigrator.Close() -} - -func testTpFltrITConnect(t *testing.T) { - var err error - tpFltrPathIn = path.Join(*dataDir, "conf", "samples", "tutmongo") - tpFltrCfgIn, err = config.NewCGRConfigFromPath(context.Background(), tpFltrPathIn) - if err != nil { - t.Fatal(err) - } - tpFltrPathOut = path.Join(*dataDir, "conf", "samples", "tutmysql") - tpFltrCfgOut, err = config.NewCGRConfigFromPath(context.Background(), tpFltrPathOut) - if err != nil { - t.Fatal(err) - } - storDBIn, err := NewMigratorStorDB(tpFltrCfgIn.StorDbCfg().Type, - tpFltrCfgIn.StorDbCfg().Host, tpFltrCfgIn.StorDbCfg().Port, - tpFltrCfgIn.StorDbCfg().Name, tpFltrCfgIn.StorDbCfg().User, - tpFltrCfgIn.StorDbCfg().Password, tpFltrCfgIn.GeneralCfg().DBDataEncoding, - tpFltrCfgOut.StorDbCfg().StringIndexedFields, tpFltrCfgOut.StorDbCfg().PrefixIndexedFields, - tpFltrCfgIn.StorDbCfg().Opts, tpFltrCfgIn.StorDbCfg().Items) - if err != nil { - log.Fatal(err) - } - storDBOut, err := NewMigratorStorDB(tpFltrCfgOut.StorDbCfg().Type, - tpFltrCfgOut.StorDbCfg().Host, tpFltrCfgOut.StorDbCfg().Port, - tpFltrCfgOut.StorDbCfg().Name, tpFltrCfgOut.StorDbCfg().User, - tpFltrCfgOut.StorDbCfg().Password, tpFltrCfgOut.GeneralCfg().DBDataEncoding, - tpFltrCfgOut.StorDbCfg().StringIndexedFields, tpFltrCfgOut.StorDbCfg().PrefixIndexedFields, - tpFltrCfgOut.StorDbCfg().Opts, tpFltrCfgOut.StorDbCfg().Items) - if err != nil { - log.Fatal(err) - } - tpFltrMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false, false) - if err != nil { - log.Fatal(err) - } -} - -func testTpFltrITFlush(t *testing.T) { - if err := tpFltrMigrator.storDBIn.StorDB().Flush( - path.Join(tpFltrCfgIn.DataFolderPath, "storage", tpFltrCfgIn.StorDbCfg().Type)); err != nil { - t.Error(err) - } - - if err := tpFltrMigrator.storDBOut.StorDB().Flush( - path.Join(tpFltrCfgOut.DataFolderPath, "storage", tpFltrCfgOut.StorDbCfg().Type)); err != nil { - t.Error(err) - } -} - -func testTpFltrITPopulate(t *testing.T) { - tpFilters = []*utils.TPFilterProfile{ - { - TPid: "TP1", - Tenant: "cgrates.org", - ID: "Filter", - Filters: []*utils.TPFilter{ - { - Type: utils.MetaString, - Element: "Account", - Values: []string{"1001", "1002"}, - }, - }, - }, - } - if err := tpFltrMigrator.storDBIn.StorDB().SetTPFilters(tpFilters); err != nil { - t.Error("Error when setting TpFilter ", err.Error()) - } - currentVersion := engine.CurrentStorDBVersions() - err := tpFltrMigrator.storDBIn.StorDB().SetVersions(currentVersion, false) - if err != nil { - t.Error("Error when setting version for TpFilter ", err.Error()) - } -} - -func testTpFltrITMove(t *testing.T) { - err, _ := tpFltrMigrator.Migrate([]string{utils.MetaTpFilters}) - if err != nil { - t.Error("Error when migrating TpFilter ", err.Error()) - } -} - -func testTpFltrITCheckData(t *testing.T) { - result, err := tpFltrMigrator.storDBOut.StorDB().GetTPFilters( - tpFilters[0].TPid, "", tpFilters[0].ID) - if err != nil { - t.Error("Error when getting TpFilter ", err.Error()) - } - if !reflect.DeepEqual(tpFilters[0], result[0]) { - t.Errorf("Expecting: %+v, received: %+v", tpFilters[0], result[0]) - } - result, err = tpFltrMigrator.storDBIn.StorDB().GetTPFilters( - tpFilters[0].TPid, "", tpFilters[0].ID) - if err != utils.ErrNotFound { - t.Error(err) - } -} diff --git a/migrator/tp_rate_profiles.go b/migrator/tp_rate_profiles.go deleted file mode 100644 index 026121713..000000000 --- a/migrator/tp_rate_profiles.go +++ /dev/null @@ -1,77 +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 ( - "github.com/cgrates/cgrates/engine" - "github.com/cgrates/cgrates/utils" -) - -func (m *Migrator) migrateCurrentTPRateProfiles() (err error) { - tpids, err := m.storDBIn.StorDB().GetTpIds(utils.TBLTPRateProfiles) - if err != nil { - return err - } - - for _, tpid := range tpids { - ids, err := m.storDBIn.StorDB().GetTpTableIds(tpid, utils.TBLTPRateProfiles, - []string{"id"}, map[string]string{}, nil) - if err != nil { - return err - } - for _, id := range ids { - rateProfiles, err := m.storDBIn.StorDB().GetTPRateProfiles(tpid, utils.EmptyString, id) - if err != nil { - return err - } - if rateProfiles == nil || m.dryRun { - continue - } - if err := m.storDBOut.StorDB().SetTPRateProfiles(rateProfiles); err != nil { - return err - } - for _, rateProfile := range rateProfiles { - if err := m.storDBIn.StorDB().RemTpData(utils.TBLTPRateProfiles, rateProfile.TPid, - map[string]string{"tenant": rateProfile.Tenant, "id": rateProfile.ID}); err != nil { - return err - } - } - m.stats[utils.TpRateProfiles]++ - } - } - return -} - -func (m *Migrator) migrateTPRateProfiles() (err error) { - var vrs engine.Versions - current := engine.CurrentStorDBVersions() - if vrs, err = m.getVersions(utils.TpRateProfiles); err != nil { - return err - } - switch vrs[utils.TpRateProfiles] { - case current[utils.TpRateProfiles]: - if m.sameStorDB { - break - } - if err := m.migrateCurrentTPRateProfiles(); err != nil { - return err - } - } - return m.ensureIndexesStorDB(utils.TpRateProfiles) -} diff --git a/migrator/tp_rate_profiles_it_test.go b/migrator/tp_rate_profiles_it_test.go deleted file mode 100644 index f6a50dab5..000000000 --- a/migrator/tp_rate_profiles_it_test.go +++ /dev/null @@ -1,186 +0,0 @@ -//go:build integration -// +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/birpc/context" - "github.com/cgrates/cgrates/engine" - - "github.com/cgrates/cgrates/config" - "github.com/cgrates/cgrates/utils" -) - -var ( - tpRatePrfPathIn string - tpRatePrfPathOut string - tpRatePrfCfgIn *config.CGRConfig - tpRatePrfCfgOut *config.CGRConfig - tpRatePrfMigrator *Migrator - tpRateProfiles []*utils.TPRateProfile -) - -var sTestsTPRatePrfIT = []func(t *testing.T){ - testTPRateProfileConnect, - testTPRateProfileFlush, - testTPRateProfilePopulate, - testTpRateProfileMove, - testTpRateProfileCheckData, -} - -func TestTPRateProfileIT(t *testing.T) { - for _, tests := range sTestsTPRatePrfIT { - t.Run("TestTPRatePrfIT", tests) - } - tpRatePrfMigrator.Close() -} - -func testTPRateProfileConnect(t *testing.T) { - var err error - tpRatePrfPathIn := path.Join(*dataDir, "conf", "samples", "tutmongo") - if tpRatePrfCfgIn, err = config.NewCGRConfigFromPath(context.Background(), tpRatePrfPathIn); err != nil { - t.Error(err) - } - tpRatePrfPathOut := path.Join(*dataDir, "conf", "samples", "tutmysql") - if tpRatePrfCfgOut, err = config.NewCGRConfigFromPath(context.Background(), tpRatePrfPathOut); err != nil { - t.Error(err) - } - storDBIn, err := NewMigratorStorDB(tpRatePrfCfgIn.StorDbCfg().Type, - tpRatePrfCfgIn.StorDbCfg().Host, tpRatePrfCfgIn.StorDbCfg().Port, - tpRatePrfCfgIn.StorDbCfg().Name, tpRatePrfCfgIn.StorDbCfg().User, - tpRatePrfCfgIn.StorDbCfg().Password, tpRatePrfCfgIn.GeneralCfg().DBDataEncoding, - tpRatePrfCfgIn.StorDbCfg().StringIndexedFields, tpRatePrfCfgIn.StorDbCfg().PrefixIndexedFields, - tpRatePrfCfgIn.StorDbCfg().Opts, tpRatePrfCfgIn.StorDbCfg().Items) - if err != nil { - t.Error(err) - } - storDBOut, err := NewMigratorStorDB(tpRatePrfCfgOut.StorDbCfg().Type, - tpRatePrfCfgOut.StorDbCfg().Host, tpRatePrfCfgOut.StorDbCfg().Port, - tpRatePrfCfgOut.StorDbCfg().Name, tpRatePrfCfgOut.StorDbCfg().User, - tpRatePrfCfgOut.StorDbCfg().Password, tpRatePrfCfgOut.GeneralCfg().DBDataEncoding, - tpRatePrfCfgOut.StorDbCfg().StringIndexedFields, tpRatePrfCfgOut.StorDbCfg().PrefixIndexedFields, - tpRatePrfCfgOut.StorDbCfg().Opts, tpRatePrfCfgOut.StorDbCfg().Items) - if err != nil { - t.Error(err) - } - tpRatePrfMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, - false, false, false, false) - if err != nil { - t.Error(err) - } -} - -func testTPRateProfileFlush(t *testing.T) { - if err := tpRatePrfMigrator.storDBIn.StorDB().Flush( - path.Join(tpRatePrfCfgIn.DataFolderPath, "storage", tpRatePrfCfgIn.StorDbCfg().Type)); err != nil { - t.Error(err) - } - if err := tpRatePrfMigrator.storDBOut.StorDB().Flush( - path.Join(tpRatePrfCfgOut.DataFolderPath, "storage", tpRatePrfCfgOut.StorDbCfg().Type)); err != nil { - t.Error(err) - } -} - -func testTPRateProfilePopulate(t *testing.T) { - tpRateProfiles = []*utils.TPRateProfile{ - { - TPid: "id_RP1", - Tenant: "cgrates.org", - ID: "RP1", - FilterIDs: []string{"*string:~*req.Subject:1001"}, - Weights: ";0", - MinCost: 0.1, - MaxCost: 0.6, - MaxCostStrategy: "*free", - Rates: map[string]*utils.TPRate{ - "FIRST_GI": { - ID: "FIRST_GI", - FilterIDs: []string{"*gi:~*req.Usage:0"}, - Weights: ";0", - IntervalRates: []*utils.TPIntervalRate{ - { - RecurrentFee: 0.12, - Unit: "1m", - Increment: "1m", - }, - }, - Blocker: false, - }, - "SECOND_GI": { - ID: "SECOND_GI", - FilterIDs: []string{"*gi:~*req.Usage:1m"}, - Weights: ";10", - IntervalRates: []*utils.TPIntervalRate{ - { - RecurrentFee: 0.06, - Unit: "1m", - Increment: "1s", - }, - }, - Blocker: false, - }, - }, - }, - } - //empty in database - if _, err := tpRatePrfMigrator.storDBIn.StorDB().GetTPRateProfiles(tpRateProfiles[0].TPid, - utils.EmptyString, tpRateProfiles[0].ID); err != utils.ErrNotFound { - t.Error(err) - } - - if err := tpRatePrfMigrator.storDBIn.StorDB().SetTPRateProfiles(tpRateProfiles); err != nil { - t.Error("Error when setting TpRateProfile ", err.Error()) - } - currentVersion := engine.CurrentStorDBVersions() - err := tpRatePrfMigrator.storDBIn.StorDB().SetVersions(currentVersion, false) - if err != nil { - t.Error("Error when setting version for TpRateProfile ", err.Error()) - } -} - -func testTpRateProfileMove(t *testing.T) { - err, _ := tpRatePrfMigrator.Migrate([]string{utils.MetaTpRateProfiles}) - if err != nil { - t.Error("Error when migrating TpRateProfiles", err.Error()) - } -} - -func testTpRateProfileCheckData(t *testing.T) { - rcv, err := tpRatePrfMigrator.storDBOut.StorDB().GetTPRateProfiles(tpRateProfiles[0].TPid, - utils.EmptyString, tpRateProfiles[0].ID) - if err != nil { - t.Error(err) - } - if !reflect.DeepEqual(rcv[0], tpRateProfiles[0]) { - t.Errorf("Expected %+v, received %+v", tpRateProfiles[0], rcv[0]) - } - - _, err = tpRatePrfMigrator.storDBIn.StorDB().GetTPRateProfiles(tpRateProfiles[0].TPid, - utils.EmptyString, tpRateProfiles[0].ID) - if err != utils.ErrNotFound { - t.Error(err) - } - -} diff --git a/migrator/tp_resources.go b/migrator/tp_resources.go deleted file mode 100644 index f6da206e5..000000000 --- a/migrator/tp_resources.go +++ /dev/null @@ -1,78 +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 ( - "github.com/cgrates/cgrates/engine" - "github.com/cgrates/cgrates/utils" -) - -func (m *Migrator) migrateCurrentTPresources() (err error) { - tpids, err := m.storDBIn.StorDB().GetTpIds(utils.TBLTPResources) - if err != nil { - return err - } - - for _, tpid := range tpids { - ids, err := m.storDBIn.StorDB().GetTpTableIds(tpid, utils.TBLTPResources, - []string{"id"}, map[string]string{}, nil) - if err != nil { - return err - } - for _, id := range ids { - - resources, err := m.storDBIn.StorDB().GetTPResources(tpid, "", id) - if err != nil { - return err - } - if resources == nil || m.dryRun { - continue - } - if err := m.storDBOut.StorDB().SetTPResources(resources); err != nil { - return err - } - for _, resource := range resources { - if err := m.storDBIn.StorDB().RemTpData(utils.TBLTPResources, resource.TPid, - map[string]string{"id": resource.ID}); err != nil { - return err - } - } - m.stats[utils.TpResources]++ - } - } - return -} - -func (m *Migrator) migrateTPresources() (err error) { - var vrs engine.Versions - current := engine.CurrentStorDBVersions() - if vrs, err = m.getVersions(utils.TpResources); err != nil { - return - } - switch vrs[utils.TpResources] { - case current[utils.TpResources]: - if m.sameStorDB { - break - } - if err := m.migrateCurrentTPresources(); err != nil { - return err - } - } - return m.ensureIndexesStorDB(utils.TBLTPResources) -} diff --git a/migrator/tp_resources_it_test.go b/migrator/tp_resources_it_test.go deleted file mode 100644 index c47945982..000000000 --- a/migrator/tp_resources_it_test.go +++ /dev/null @@ -1,160 +0,0 @@ -//go:build integration -// +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 ( - "log" - "path" - "reflect" - "sort" - "testing" - - "github.com/cgrates/birpc/context" - "github.com/cgrates/cgrates/config" - "github.com/cgrates/cgrates/engine" - "github.com/cgrates/cgrates/utils" -) - -var ( - tpResPathIn string - tpResPathOut string - tpResCfgIn *config.CGRConfig - tpResCfgOut *config.CGRConfig - tpResMigrator *Migrator - tpResources []*utils.TPResourceProfile -) - -var sTestsTpResIT = []func(t *testing.T){ - testTpResITConnect, - testTpResITFlush, - testTpResITPopulate, - testTpResITMove, - testTpResITCheckData, -} - -func TestTpResMove(t *testing.T) { - for _, stest := range sTestsTpResIT { - t.Run("TestTpResMove", stest) - } - tpResMigrator.Close() -} - -func testTpResITConnect(t *testing.T) { - var err error - tpResPathIn = path.Join(*dataDir, "conf", "samples", "tutmongo") - tpResCfgIn, err = config.NewCGRConfigFromPath(context.Background(), tpResPathIn) - if err != nil { - t.Fatal(err) - } - tpResPathOut = path.Join(*dataDir, "conf", "samples", "tutmysql") - tpResCfgOut, err = config.NewCGRConfigFromPath(context.Background(), tpResPathOut) - if err != nil { - t.Fatal(err) - } - storDBIn, err := NewMigratorStorDB(tpResCfgIn.StorDbCfg().Type, - tpResCfgIn.StorDbCfg().Host, tpResCfgIn.StorDbCfg().Port, - tpResCfgIn.StorDbCfg().Name, tpResCfgIn.StorDbCfg().User, - tpResCfgIn.StorDbCfg().Password, tpResCfgIn.GeneralCfg().DBDataEncoding, - tpResCfgIn.StorDbCfg().StringIndexedFields, tpResCfgIn.StorDbCfg().PrefixIndexedFields, - tpResCfgIn.StorDbCfg().Opts, tpResCfgIn.StorDbCfg().Items) - if err != nil { - log.Fatal(err) - } - storDBOut, err := NewMigratorStorDB(tpResCfgOut.StorDbCfg().Type, - tpResCfgOut.StorDbCfg().Host, tpResCfgOut.StorDbCfg().Port, - tpResCfgOut.StorDbCfg().Name, tpResCfgOut.StorDbCfg().User, - tpResCfgOut.StorDbCfg().Password, tpResCfgOut.GeneralCfg().DBDataEncoding, - tpResCfgIn.StorDbCfg().StringIndexedFields, tpResCfgIn.StorDbCfg().PrefixIndexedFields, - tpResCfgOut.StorDbCfg().Opts, tpResCfgOut.StorDbCfg().Items) - if err != nil { - log.Fatal(err) - } - tpResMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, - false, false, false, false) - if err != nil { - log.Fatal(err) - } -} - -func testTpResITFlush(t *testing.T) { - if err := tpResMigrator.storDBIn.StorDB().Flush( - path.Join(tpResCfgIn.DataFolderPath, "storage", tpResCfgIn.StorDbCfg().Type)); err != nil { - t.Error(err) - } - - if err := tpResMigrator.storDBOut.StorDB().Flush( - path.Join(tpResCfgOut.DataFolderPath, "storage", tpResCfgOut.StorDbCfg().Type)); err != nil { - t.Error(err) - } -} - -func testTpResITPopulate(t *testing.T) { - tpResources = []*utils.TPResourceProfile{ - { - Tenant: "cgrates.org", - TPid: "TPR1", - ID: "ResGroup1", - FilterIDs: []string{"FLTR_1", "*ai:~*req.AnswerTime:2014-07-29T15:00:00Z"}, - UsageTTL: "1s", - Limit: "7", - AllocationMessage: "", - Blocker: true, - Stored: true, - Weights: ";20", - ThresholdIDs: []string{"ValOne", "ValTwo"}, - }, - } - if err := tpResMigrator.storDBIn.StorDB().SetTPResources(tpResources); err != nil { - t.Error("Error when setting TpResources ", err.Error()) - } - currentVersion := engine.CurrentStorDBVersions() - err := tpResMigrator.storDBIn.StorDB().SetVersions(currentVersion, false) - if err != nil { - t.Error("Error when setting version for TpResources ", err.Error()) - } -} - -func testTpResITMove(t *testing.T) { - err, _ := tpResMigrator.Migrate([]string{utils.MetaTpResources}) - if err != nil { - t.Error("Error when migrating TpResources ", err.Error()) - } -} - -func testTpResITCheckData(t *testing.T) { - result, err := tpResMigrator.storDBOut.StorDB().GetTPResources( - tpResources[0].TPid, "", tpResources[0].ID) - if err != nil { - t.Error("Error when getting TpResources ", err.Error()) - } - sort.Strings(result[0].ThresholdIDs) - sort.Strings(result[0].FilterIDs) - sort.Strings(tpResources[0].FilterIDs) - if !reflect.DeepEqual(tpResources[0], result[0]) { - t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(tpResources[0]), utils.ToJSON(result[0])) - } - result, err = tpResMigrator.storDBIn.StorDB().GetTPResources( - tpResources[0].TPid, "", tpResources[0].ID) - if err != utils.ErrNotFound { - t.Error(err) - } -} diff --git a/migrator/tp_routes.go b/migrator/tp_routes.go deleted file mode 100644 index f766acd86..000000000 --- a/migrator/tp_routes.go +++ /dev/null @@ -1,78 +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 ( - "github.com/cgrates/cgrates/engine" - "github.com/cgrates/cgrates/utils" -) - -func (m *Migrator) migrateCurrentTPRoutes() (err error) { - tpids, err := m.storDBIn.StorDB().GetTpIds(utils.TBLTPRoutes) - if err != nil { - return err - } - - for _, tpid := range tpids { - ids, err := m.storDBIn.StorDB().GetTpTableIds(tpid, utils.TBLTPRoutes, - []string{"id"}, map[string]string{}, nil) - if err != nil { - return err - } - for _, id := range ids { - routes, err := m.storDBIn.StorDB().GetTPRoutes(tpid, "", id) - if err != nil { - return err - } - if routes == nil || m.dryRun { - continue - } - if err := m.storDBOut.StorDB().SetTPRoutes(routes); err != nil { - return err - } - for _, route := range routes { - if err := m.storDBIn.StorDB().RemTpData(utils.TBLTPRoutes, route.TPid, - map[string]string{"tenant": route.Tenant, "id": route.ID}); err != nil { - return err - } - } - - m.stats[utils.TpRoutes]++ - } - } - return -} - -func (m *Migrator) migrateTPRoutes() (err error) { - var vrs engine.Versions - current := engine.CurrentStorDBVersions() - if vrs, err = m.getVersions(utils.TpRoutes); err != nil { - return - } - switch vrs[utils.TpRoutes] { - case current[utils.TpRoutes]: - if m.sameStorDB { - break - } - if err := m.migrateCurrentTPRoutes(); err != nil { - return err - } - } - return m.ensureIndexesStorDB(utils.TBLTPRoutes) -} diff --git a/migrator/tp_routes_it_test.go b/migrator/tp_routes_it_test.go deleted file mode 100644 index a98fd7a38..000000000 --- a/migrator/tp_routes_it_test.go +++ /dev/null @@ -1,168 +0,0 @@ -//go:build integration -// +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 ( - "log" - "path" - "reflect" - "sort" - "testing" - - "github.com/cgrates/birpc/context" - "github.com/cgrates/cgrates/config" - "github.com/cgrates/cgrates/engine" - "github.com/cgrates/cgrates/utils" -) - -var ( - tpSplPathIn string - tpSplPathOut string - tpSplCfgIn *config.CGRConfig - tpSplCfgOut *config.CGRConfig - tpSplMigrator *Migrator - tpSuppliers []*utils.TPRouteProfile -) - -var sTestsTpSplIT = []func(t *testing.T){ - testTpSplITConnect, - testTpSplITFlush, - testTpSplITPopulate, - testTpSplITMove, - testTpSplITCheckData, -} - -func TestTpSplMove(t *testing.T) { - for _, stest := range sTestsTpSplIT { - t.Run("TestTpSplMove", stest) - } - tpSplMigrator.Close() -} - -func testTpSplITConnect(t *testing.T) { - var err error - tpSplPathIn = path.Join(*dataDir, "conf", "samples", "tutmongo") - tpSplCfgIn, err = config.NewCGRConfigFromPath(context.Background(), tpSplPathIn) - if err != nil { - t.Fatal(err) - } - tpSplPathOut = path.Join(*dataDir, "conf", "samples", "tutmysql") - tpSplCfgOut, err = config.NewCGRConfigFromPath(context.Background(), tpSplPathOut) - if err != nil { - t.Fatal(err) - } - storDBIn, err := NewMigratorStorDB(tpSplCfgIn.StorDbCfg().Type, - tpSplCfgIn.StorDbCfg().Host, tpSplCfgIn.StorDbCfg().Port, - tpSplCfgIn.StorDbCfg().Name, tpSplCfgIn.StorDbCfg().User, - tpSplCfgIn.StorDbCfg().Password, tpSplCfgIn.GeneralCfg().DBDataEncoding, - tpSplCfgIn.StorDbCfg().StringIndexedFields, tpSplCfgIn.StorDbCfg().PrefixIndexedFields, - tpSplCfgIn.StorDbCfg().Opts, tpSplCfgIn.StorDbCfg().Items) - if err != nil { - log.Fatal(err) - } - storDBOut, err := NewMigratorStorDB(tpSplCfgOut.StorDbCfg().Type, - tpSplCfgOut.StorDbCfg().Host, tpSplCfgOut.StorDbCfg().Port, - tpSplCfgOut.StorDbCfg().Name, tpSplCfgOut.StorDbCfg().User, - tpSplCfgOut.StorDbCfg().Password, tpSplCfgOut.GeneralCfg().DBDataEncoding, - tpSplCfgIn.StorDbCfg().StringIndexedFields, tpSplCfgIn.StorDbCfg().PrefixIndexedFields, - tpSplCfgOut.StorDbCfg().Opts, tpSplCfgOut.StorDbCfg().Items) - if err != nil { - log.Fatal(err) - } - tpSplMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false, false) - if err != nil { - log.Fatal(err) - } -} - -func testTpSplITFlush(t *testing.T) { - if err := tpSplMigrator.storDBIn.StorDB().Flush( - path.Join(tpSplCfgIn.DataFolderPath, "storage", tpSplCfgIn.StorDbCfg().Type)); err != nil { - t.Error(err) - } - - if err := tpSplMigrator.storDBOut.StorDB().Flush( - path.Join(tpSplCfgOut.DataFolderPath, "storage", tpSplCfgOut.StorDbCfg().Type)); err != nil { - t.Error(err) - } -} - -func testTpSplITPopulate(t *testing.T) { - tpSuppliers = []*utils.TPRouteProfile{ - { - TPid: "TP1", - Tenant: "cgrates.org", - ID: "SUPL_1", - FilterIDs: []string{"FLTR_ACNT_dan", "FLTR_DST_DE"}, - Sorting: "*lowest_cost", - SortingParameters: []string{}, - Routes: []*utils.TPRoute{ - { - ID: "supplier1", - FilterIDs: []string{"FLTR_1"}, - AccountIDs: []string{"Acc1", "Acc2"}, - RateProfileIDs: []string{"RPL_1"}, - ResourceIDs: []string{"ResGroup1"}, - StatIDs: []string{"Stat1"}, - // Weights: 10, - Blocker: false, - RouteParameters: "SortingParam1", - }, - }, - // Weights: 20, - }, - } - if err := tpSplMigrator.storDBIn.StorDB().SetTPRoutes(tpSuppliers); err != nil { - t.Error("Error when setting TpSuppliers ", err.Error()) - } - currentVersion := engine.CurrentStorDBVersions() - err := tpSplMigrator.storDBIn.StorDB().SetVersions(currentVersion, false) - if err != nil { - t.Error("Error when setting version for TpSuppliers ", err.Error()) - } -} - -func testTpSplITMove(t *testing.T) { - err, _ := tpSplMigrator.Migrate([]string{utils.MetaTpRoutes}) - if err != nil { - t.Error("Error when migrating TpSuppliers ", err.Error()) - } -} - -func testTpSplITCheckData(t *testing.T) { - result, err := tpSplMigrator.storDBOut.StorDB().GetTPRoutes( - tpSuppliers[0].TPid, "", tpSuppliers[0].ID) - if err != nil { - t.Error("Error when getting TpSuppliers ", err.Error()) - } - tpSuppliers[0].SortingParameters = nil // because of converting and empty string into a slice - sort.Strings(result[0].FilterIDs) - sort.Strings(tpSuppliers[0].FilterIDs) - if !reflect.DeepEqual(tpSuppliers[0], result[0]) { - t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(tpSuppliers[0]), utils.ToJSON(result[0])) - } - result, err = tpSplMigrator.storDBIn.StorDB().GetTPRoutes( - tpSuppliers[0].TPid, "", tpSuppliers[0].ID) - if err != utils.ErrNotFound { - t.Error(err) - } -} diff --git a/migrator/tp_stats.go b/migrator/tp_stats.go deleted file mode 100644 index 01400e01d..000000000 --- a/migrator/tp_stats.go +++ /dev/null @@ -1,77 +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 ( - "github.com/cgrates/cgrates/engine" - "github.com/cgrates/cgrates/utils" -) - -func (m *Migrator) migrateCurrentTPstats() (err error) { - tpids, err := m.storDBIn.StorDB().GetTpIds(utils.TBLTPStats) - if err != nil { - return err - } - - for _, tpid := range tpids { - ids, err := m.storDBIn.StorDB().GetTpTableIds(tpid, utils.TBLTPStats, - []string{"id"}, map[string]string{}, nil) - if err != nil { - return err - } - for _, id := range ids { - stats, err := m.storDBIn.StorDB().GetTPStats(tpid, "", id) - if err != nil { - return err - } - if stats == nil || m.dryRun { - continue - } - if err := m.storDBOut.StorDB().SetTPStats(stats); err != nil { - return err - } - for _, stat := range stats { - if err := m.storDBIn.StorDB().RemTpData(utils.TBLTPStats, stat.TPid, - map[string]string{"id": stat.ID}); err != nil { - return err - } - } - m.stats[utils.TpStats]++ - } - } - return -} - -func (m *Migrator) migrateTPstats() (err error) { - var vrs engine.Versions - current := engine.CurrentStorDBVersions() - if vrs, err = m.getVersions(utils.TpStats); err != nil { - return - } - switch vrs[utils.TpStats] { - case current[utils.TpStats]: - if m.sameStorDB { - break - } - if err := m.migrateCurrentTPstats(); err != nil { - return err - } - } - return m.ensureIndexesStorDB(utils.TBLTPStats) -} diff --git a/migrator/tp_stats_it_test.go b/migrator/tp_stats_it_test.go deleted file mode 100644 index f31649b92..000000000 --- a/migrator/tp_stats_it_test.go +++ /dev/null @@ -1,164 +0,0 @@ -//go:build integration -// +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 ( - "log" - "path" - "reflect" - "sort" - "testing" - - "github.com/cgrates/birpc/context" - "github.com/cgrates/cgrates/config" - "github.com/cgrates/cgrates/engine" - "github.com/cgrates/cgrates/utils" -) - -var ( - tpStatsPathIn string - tpStatsPathOut string - tpStatsCfgIn *config.CGRConfig - tpStatsCfgOut *config.CGRConfig - tpStatsMigrator *Migrator - tpStats []*utils.TPStatProfile -) - -var sTestsTpStatsIT = []func(t *testing.T){ - testTpStatsITConnect, - testTpStatsITFlush, - testTpStatsITPopulate, - testTpStatsITMove, - testTpStatsITCheckData, -} - -func TestTpStatsMove(t *testing.T) { - for _, stest := range sTestsTpStatsIT { - t.Run("TestTpStatsMove", stest) - } - tpStatsMigrator.Close() -} - -func testTpStatsITConnect(t *testing.T) { - var err error - tpStatsPathIn = path.Join(*dataDir, "conf", "samples", "tutmongo") - tpStatsCfgIn, err = config.NewCGRConfigFromPath(context.Background(), tpStatsPathIn) - if err != nil { - t.Fatal(err) - } - tpStatsPathOut = path.Join(*dataDir, "conf", "samples", "tutmysql") - tpStatsCfgOut, err = config.NewCGRConfigFromPath(context.Background(), tpStatsPathOut) - if err != nil { - t.Fatal(err) - } - storDBIn, err := NewMigratorStorDB(tpStatsCfgIn.StorDbCfg().Type, - tpStatsCfgIn.StorDbCfg().Host, tpStatsCfgIn.StorDbCfg().Port, - tpStatsCfgIn.StorDbCfg().Name, tpStatsCfgIn.StorDbCfg().User, - tpStatsCfgIn.StorDbCfg().Password, tpStatsCfgIn.GeneralCfg().DBDataEncoding, - tpStatsCfgIn.StorDbCfg().StringIndexedFields, tpStatsCfgIn.StorDbCfg().PrefixIndexedFields, - tpStatsCfgIn.StorDbCfg().Opts, tpStatsCfgIn.StorDbCfg().Items) - if err != nil { - log.Fatal(err) - } - storDBOut, err := NewMigratorStorDB(tpStatsCfgOut.StorDbCfg().Type, - tpStatsCfgOut.StorDbCfg().Host, tpStatsCfgOut.StorDbCfg().Port, - tpStatsCfgOut.StorDbCfg().Name, tpStatsCfgOut.StorDbCfg().User, - tpStatsCfgOut.StorDbCfg().Password, tpStatsCfgOut.GeneralCfg().DBDataEncoding, - tpStatsCfgIn.StorDbCfg().StringIndexedFields, tpStatsCfgIn.StorDbCfg().PrefixIndexedFields, - tpStatsCfgOut.StorDbCfg().Opts, tpStatsCfgOut.StorDbCfg().Items) - if err != nil { - log.Fatal(err) - } - tpStatsMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false, false) - if err != nil { - log.Fatal(err) - } -} - -func testTpStatsITFlush(t *testing.T) { - if err := tpStatsMigrator.storDBIn.StorDB().Flush( - path.Join(tpStatsCfgIn.DataFolderPath, "storage", tpStatsCfgIn.StorDbCfg().Type)); err != nil { - t.Error(err) - } - - if err := tpStatsMigrator.storDBOut.StorDB().Flush( - path.Join(tpStatsCfgOut.DataFolderPath, "storage", tpStatsCfgOut.StorDbCfg().Type)); err != nil { - t.Error(err) - } -} - -func testTpStatsITPopulate(t *testing.T) { - tpStats = []*utils.TPStatProfile{ - { - Tenant: "cgrates.org", - TPid: "TPS1", - ID: "Stat1", - FilterIDs: []string{"FLTR_1", "*ai:~*req.AnswerTime:2014-07-29T15:00:00Z"}, - TTL: "1", - Metrics: []*utils.MetricWithFilters{ - &utils.MetricWithFilters{ - MetricID: "*sum#Param1", - }, - }, - Blocker: false, - Stored: false, - Weights: ";20", - MinItems: 1, - ThresholdIDs: []string{"ThreshValueTwo"}, - }, - } - if err := tpStatsMigrator.storDBIn.StorDB().SetTPStats(tpStats); err != nil { - t.Error("Error when setting TpStat ", err.Error()) - } - currentVersion := engine.CurrentStorDBVersions() - err := tpStatsMigrator.storDBIn.StorDB().SetVersions(currentVersion, false) - if err != nil { - t.Error("Error when setting version for TpStat ", err.Error()) - } -} - -func testTpStatsITMove(t *testing.T) { - err, _ := tpStatsMigrator.Migrate([]string{utils.MetaTpStats}) - if err != nil { - t.Error("Error when migrating TpStat ", err.Error()) - } -} - -func testTpStatsITCheckData(t *testing.T) { - result, err := tpStatsMigrator.storDBOut.StorDB().GetTPStats( - tpStats[0].TPid, "", tpStats[0].ID) - if err != nil { - t.Error("Error when getting TpStat ", err.Error()) - } - tpStats[0].Metrics[0].MetricID = "*sum#Param1" //add parametrics to metricID to use multiple parameters for same metric - sort.Strings(tpStats[0].FilterIDs) - sort.Strings(result[0].FilterIDs) - if !reflect.DeepEqual(tpStats[0], result[0]) { - t.Errorf("Expecting: %+v, received: %+v", - utils.ToJSON(tpStats[0]), utils.ToJSON(result[0])) - } - result, err = tpStatsMigrator.storDBIn.StorDB().GetTPStats( - tpStats[0].TPid, "", tpStats[0].ID) - if err != utils.ErrNotFound { - t.Error(err) - } -} diff --git a/migrator/tp_thresholds.go b/migrator/tp_thresholds.go deleted file mode 100644 index afc5196fd..000000000 --- a/migrator/tp_thresholds.go +++ /dev/null @@ -1,77 +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 ( - "github.com/cgrates/cgrates/engine" - "github.com/cgrates/cgrates/utils" -) - -func (m *Migrator) migrateCurrentTPthresholds() (err error) { - tpids, err := m.storDBIn.StorDB().GetTpIds(utils.TBLTPThresholds) - if err != nil { - return err - } - - for _, tpid := range tpids { - ids, err := m.storDBIn.StorDB().GetTpTableIds(tpid, utils.TBLTPThresholds, - []string{"id"}, map[string]string{}, nil) - if err != nil { - return err - } - for _, id := range ids { - thresholds, err := m.storDBIn.StorDB().GetTPThresholds(tpid, "", id) - if err != nil { - return err - } - if thresholds == nil || m.dryRun { - continue - } - if err := m.storDBOut.StorDB().SetTPThresholds(thresholds); err != nil { - return err - } - for _, threshold := range thresholds { - if err := m.storDBIn.StorDB().RemTpData(utils.TBLTPThresholds, threshold.TPid, - map[string]string{"tenant": threshold.Tenant, "id": threshold.ID}); err != nil { - return err - } - } - m.stats[utils.TpThresholds]++ - } - } - return -} - -func (m *Migrator) migrateTPthresholds() (err error) { - var vrs engine.Versions - current := engine.CurrentStorDBVersions() - if vrs, err = m.getVersions(utils.TpThresholds); err != nil { - return - } - switch vrs[utils.TpThresholds] { - case current[utils.TpThresholds]: - if m.sameStorDB { - break - } - if err := m.migrateCurrentTPthresholds(); err != nil { - return err - } - } - return m.ensureIndexesStorDB(utils.TBLTPThresholds) -} diff --git a/migrator/tp_thresholds_it_test.go b/migrator/tp_thresholds_it_test.go deleted file mode 100644 index 1b77358da..000000000 --- a/migrator/tp_thresholds_it_test.go +++ /dev/null @@ -1,158 +0,0 @@ -//go:build integration -// +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 ( - "log" - "path" - "reflect" - "sort" - "testing" - - "github.com/cgrates/birpc/context" - "github.com/cgrates/cgrates/config" - "github.com/cgrates/cgrates/engine" - "github.com/cgrates/cgrates/utils" -) - -var ( - tpTresPathIn string - tpTresPathOut string - tpTresCfgIn *config.CGRConfig - tpTresCfgOut *config.CGRConfig - tpTresMigrator *Migrator - tpThresholds []*utils.TPThresholdProfile -) - -var sTestsTpTresIT = []func(t *testing.T){ - testTpTresITConnect, - testTpTresITFlush, - testTpTresITPopulate, - testTpTresITMove, - testTpTresITCheckData, -} - -func TestTpTresMove(t *testing.T) { - for _, stest := range sTestsTpTresIT { - t.Run("TestTpTresMove", stest) - } - tpTresMigrator.Close() -} - -func testTpTresITConnect(t *testing.T) { - var err error - tpTresPathIn = path.Join(*dataDir, "conf", "samples", "tutmongo") - tpTresCfgIn, err = config.NewCGRConfigFromPath(context.Background(), tpTresPathIn) - if err != nil { - t.Fatal(err) - } - tpTresPathOut = path.Join(*dataDir, "conf", "samples", "tutmysql") - tpTresCfgOut, err = config.NewCGRConfigFromPath(context.Background(), tpTresPathOut) - if err != nil { - t.Fatal(err) - } - storDBIn, err := NewMigratorStorDB(tpTresCfgIn.StorDbCfg().Type, - tpTresCfgIn.StorDbCfg().Host, tpTresCfgIn.StorDbCfg().Port, - tpTresCfgIn.StorDbCfg().Name, tpTresCfgIn.StorDbCfg().User, - tpTresCfgIn.StorDbCfg().Password, tpTresCfgIn.GeneralCfg().DBDataEncoding, - tpTresCfgIn.StorDbCfg().StringIndexedFields, tpTresCfgIn.StorDbCfg().PrefixIndexedFields, - tpTresCfgIn.StorDbCfg().Opts, tpTresCfgIn.StorDbCfg().Items) - if err != nil { - log.Fatal(err) - } - storDBOut, err := NewMigratorStorDB(tpTresCfgOut.StorDbCfg().Type, - tpTresCfgOut.StorDbCfg().Host, tpTresCfgOut.StorDbCfg().Port, - tpTresCfgOut.StorDbCfg().Name, tpTresCfgOut.StorDbCfg().User, - tpTresCfgOut.StorDbCfg().Password, tpTresCfgOut.GeneralCfg().DBDataEncoding, - tpTresCfgIn.StorDbCfg().StringIndexedFields, tpTresCfgIn.StorDbCfg().PrefixIndexedFields, - tpTresCfgOut.StorDbCfg().Opts, tpTresCfgOut.StorDbCfg().Items) - if err != nil { - log.Fatal(err) - } - tpTresMigrator, err = NewMigrator(nil, nil, storDBIn, storDBOut, false, false, false, false) - if err != nil { - log.Fatal(err) - } -} - -func testTpTresITFlush(t *testing.T) { - if err := tpTresMigrator.storDBIn.StorDB().Flush( - path.Join(tpTresCfgIn.DataFolderPath, "storage", tpTresCfgIn.StorDbCfg().Type)); err != nil { - t.Error(err) - } - - if err := tpTresMigrator.storDBOut.StorDB().Flush( - path.Join(tpTresCfgOut.DataFolderPath, "storage", tpTresCfgOut.StorDbCfg().Type)); err != nil { - t.Error(err) - } -} - -func testTpTresITPopulate(t *testing.T) { - tpThresholds = []*utils.TPThresholdProfile{ - { - TPid: "TH1", - Tenant: "cgrates.org", - ID: "Threhold", - FilterIDs: []string{"FLTR_1", "FLTR_2", "*ai:~*req.AnswerTime:2014-07-29T15:00:00Z"}, - MaxHits: -1, - MinSleep: "1s", - Blocker: true, - Weights: ";10", - ActionProfileIDs: []string{"Thresh1", "Thresh2"}, - Async: true, - }, - } - if err := tpTresMigrator.storDBIn.StorDB().SetTPThresholds(tpThresholds); err != nil { - t.Error("Error when setting TpThresholds ", err.Error()) - } - currentVersion := engine.CurrentStorDBVersions() - err := tpTresMigrator.storDBIn.StorDB().SetVersions(currentVersion, false) - if err != nil { - t.Error("Error when setting version for TpThresholds ", err.Error()) - } -} - -func testTpTresITMove(t *testing.T) { - err, _ := tpTresMigrator.Migrate([]string{utils.MetaTpThresholds}) - if err != nil { - t.Error("Error when migrating TpThresholds ", err.Error()) - } -} - -func testTpTresITCheckData(t *testing.T) { - result, err := tpTresMigrator.storDBOut.StorDB().GetTPThresholds( - tpThresholds[0].TPid, "", tpThresholds[0].ID) - if err != nil { - t.Error("Error when getting TpThresholds ", err.Error()) - } - sort.Strings(result[0].FilterIDs) - sort.Strings(tpThresholds[0].FilterIDs) - sort.Strings(result[0].ActionProfileIDs) - if !reflect.DeepEqual(tpThresholds[0], result[0]) { - t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(tpThresholds[0]), utils.ToJSON(result[0])) - } - result, err = tpTresMigrator.storDBIn.StorDB().GetTPThresholds( - tpThresholds[0].TPid, "", tpThresholds[0].ID) - if err != utils.ErrNotFound { - t.Error(err) - } -} diff --git a/migrator/versions_it_test.go b/migrator/versions_it_test.go index bc7b62572..cfca08cda 100644 --- a/migrator/versions_it_test.go +++ b/migrator/versions_it_test.go @@ -83,18 +83,8 @@ func testVrsITConnect(t *testing.T) { if err != nil { t.Fatal(err) } - - storDBOut, err := NewMigratorStorDB(vrsCfg.StorDbCfg().Type, - vrsCfg.StorDbCfg().Host, vrsCfg.StorDbCfg().Port, - vrsCfg.StorDbCfg().Name, vrsCfg.StorDbCfg().User, - vrsCfg.StorDbCfg().Password, vrsCfg.GeneralCfg().DBDataEncoding, - vrsCfg.StorDbCfg().StringIndexedFields, vrsCfg.StorDbCfg().PrefixIndexedFields, - vrsCfg.StorDbCfg().Opts, vrsCfg.StorDbCfg().Items) - if err != nil { - t.Error(err) - } - vrsMigrator, err = NewMigrator(nil, dataDBOut, nil, storDBOut, - false, false, false, vrsSameOutDB) + vrsMigrator, err = NewMigrator(nil, dataDBOut, + false, false) if err != nil { t.Fatal(err) } @@ -102,14 +92,9 @@ func testVrsITConnect(t *testing.T) { func testVrsITFlush(t *testing.T) { vrsMigrator.dmOut.DataManager().DataDB().Flush("") - vrsMigrator.storDBOut.StorDB().Flush((path.Join(vrsCfg.DataFolderPath, "storage", - vrsCfg.StorDbCfg().Type))) if vrs, err := vrsMigrator.dmOut.DataManager().DataDB().GetVersions(""); err == nil || err.Error() != utils.ErrNotFound.Error() { t.Errorf("Expected err=%s received 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 received err=%v and rply=%s", utils.ErrNotFound.Error(), err, utils.ToJSON(vrs)) - } } func testVrsITMigrate(t *testing.T) { @@ -131,13 +116,6 @@ func testVrsITMigrate(t *testing.T) { } else if !reflect.DeepEqual(expVrs, vrs) { t.Errorf("Expected %s received %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 received %s", utils.ToJSON(expVrs), utils.ToJSON(vrs)) - } } currentVersion := engine.Versions{utils.Attributes: 0} @@ -145,10 +123,6 @@ func testVrsITMigrate(t *testing.T) { 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 { @@ -166,11 +140,5 @@ func testVrsITMigrate(t *testing.T) { t.Errorf("Expected %s received %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 received %s", utils.ToJSON(expVrs), utils.ToJSON(vrs)) - } } }