From 1c94fca45ca0906bd5bfd5a4adad3c4a67fc7435 Mon Sep 17 00:00:00 2001 From: Radu Ioan Fericean Date: Thu, 3 Sep 2015 14:29:12 +0300 Subject: [PATCH] test for TP aliases and users --- .../mysql/create_tariffplan_tables.sql | 2 +- .../postgres/create_tariffplan_tables.sql | 2 +- data/tariffplans/prepaid1centpsec/Aliases.csv | 3 ++ data/tariffplans/prepaid1centpsec/Users.csv | 19 ++++++++++ engine/loader_local_test.go | 37 ++++++++++++++++++- engine/storage_sql.go | 14 +++---- engine/tpimporter_csv.go | 15 ++++++++ 7 files changed, 82 insertions(+), 10 deletions(-) create mode 100644 data/tariffplans/prepaid1centpsec/Aliases.csv create mode 100644 data/tariffplans/prepaid1centpsec/Users.csv diff --git a/data/storage/mysql/create_tariffplan_tables.sql b/data/storage/mysql/create_tariffplan_tables.sql index cc84861aa..578791646 100644 --- a/data/storage/mysql/create_tariffplan_tables.sql +++ b/data/storage/mysql/create_tariffplan_tables.sql @@ -367,7 +367,7 @@ CREATE TABLE tp_aliases ( `account` varchar(64) NOT NULL, `subject` varchar(64) NOT NULL, `group` varchar(64) NOT NULL, - `destionation_id` varchar(64) NOT NULL, + `destination_id` varchar(64) NOT NULL, `alias` varchar(64) NOT NULL, `weight` decimal(8,2) NOT NULL, `created_at` TIMESTAMP, diff --git a/data/storage/postgres/create_tariffplan_tables.sql b/data/storage/postgres/create_tariffplan_tables.sql index f3475060f..3ecae2b05 100644 --- a/data/storage/postgres/create_tariffplan_tables.sql +++ b/data/storage/postgres/create_tariffplan_tables.sql @@ -363,7 +363,7 @@ CREATE TABLE tp_aliases ( "account" VARCHAR(64) NOT NULL, "subject" VARCHAR(64) NOT NULL, "group" VARCHAR(64) NOT NULL, - "destionation_id" VARCHAR(64) NOT NULL, + "destination_id" VARCHAR(64) NOT NULL, "alias" VARCHAR(64) NOT NULL, "weight" NUMERIC(8,2) NOT NULL, "created_at" TIMESTAMP diff --git a/data/tariffplans/prepaid1centpsec/Aliases.csv b/data/tariffplans/prepaid1centpsec/Aliases.csv new file mode 100644 index 000000000..b67a15ddf --- /dev/null +++ b/data/tariffplans/prepaid1centpsec/Aliases.csv @@ -0,0 +1,3 @@ +#Direction,Tenant,Category,Account,Subject,DestinationId,Group,Alias,Weight +*out,cgrates.org,call,1006,1006,*any,*rating_profile,1001,10 +*out,cgrates.org,call,1006,1006,*any,*account,1002,10 diff --git a/data/tariffplans/prepaid1centpsec/Users.csv b/data/tariffplans/prepaid1centpsec/Users.csv new file mode 100644 index 000000000..357d629a4 --- /dev/null +++ b/data/tariffplans/prepaid1centpsec/Users.csv @@ -0,0 +1,19 @@ +#Tenant[0],UserName[1],AttributeName[2],AttributeValue[3] +cgrates.org,1001,SysUserName,danb +cgrates.org,1001,SysPassword,hisPass321 +cgrates.org,1001,Cli,+4986517174963 +cgrates.org,1001,Account,1001 +cgrates.org,1001,Subject,1001 +cgrates.org,1001,Uuid,388539dfd4f5cefee8f488b78c6c244b9e19138e +cgrates.org,1001,ReqType,*prepaid +cgrates.org,1002,SysUserName,rif +cgrates.org,1002,RifAttr,RifVal +cgrates.org,1002,Account,1002 +cgrates.org,1002,Subject,1002 +cgrates.org,1002,Uuid,27f37edec0670fa34cf79076b80ef5021e39c5b5 +cgrates.org,1004,SysUserName,danb4 +cgrates.org,1004,SysPassword,hisPass321 +cgrates.org,1004,Cli,+4986517174964 +cgrates.org,1004,Account,1004 +cgrates.org,1004,Subject,1004 +cgrates.org,1004,ReqType,*rated diff --git a/engine/loader_local_test.go b/engine/loader_local_test.go index 91a8052fd..3b896f234 100644 --- a/engine/loader_local_test.go +++ b/engine/loader_local_test.go @@ -131,7 +131,6 @@ func TestLoadFromCSV(t *testing.T) { path.Join(*dataDir, "tariffplans", *tpCsvScenario, utils.ACCOUNT_ACTIONS_CSV), path.Join(*dataDir, "tariffplans", *tpCsvScenario, utils.DERIVED_CHARGERS_CSV), path.Join(*dataDir, "tariffplans", *tpCsvScenario, utils.CDR_STATS_CSV), - path.Join(*dataDir, "tariffplans", *tpCsvScenario, utils.USERS_CSV), path.Join(*dataDir, "tariffplans", *tpCsvScenario, utils.ALIASES_CSV), ), "", "", lCfg.LoadHistorySize) @@ -169,6 +168,9 @@ func TestLoadFromCSV(t *testing.T) { if err = loader.LoadDerivedChargers(); err != nil { t.Error("Failed loading derived chargers: ", err.Error()) } + if err = loader.LoadLCRs(); err != nil { + t.Error("Failed loading lcr rules: ", err.Error()) + } if err = loader.LoadUsers(); err != nil { t.Error("Failed loading users: ", err.Error()) } @@ -241,6 +243,15 @@ func TestLoadFromStorDb(t *testing.T) { if err := loader.LoadDerivedChargers(); err != nil { t.Error("Failed loading derived chargers: ", err.Error()) } + if err := loader.LoadLCRs(); err != nil { + t.Error("Failed loading lcr rules: ", err.Error()) + } + if err := loader.LoadUsers(); err != nil { + t.Error("Failed loading users: ", err.Error()) + } + if err := loader.LoadAliases(); err != nil { + t.Error("Failed loading aliases: ", err.Error()) + } if err := loader.WriteToDatabase(true, false); err != nil { t.Error("Could not write data into ratingDb: ", err.Error()) } @@ -322,6 +333,30 @@ func TestLoadIndividualProfiles(t *testing.T) { } } } + // Load users + if users, err := storDb.GetTpUsers(&TpUser{Tpid: utils.TEST_SQL}); err != nil { + t.Fatal("Could not retrieve users, error: ", err.Error()) + } else if len(users) == 0 { + t.Fatal("Could not retrieve users") + } else { + for _, usr := range users { + if found, err := loader.LoadUsersFiltered(&usr); found && err != nil { + t.Fatalf("Could not user with id: %s, error: %s", usr.GetId(), err.Error()) + } + } + } + // Load aliases + if aliases, err := storDb.GetTpAliases(&TpAlias{Tpid: utils.TEST_SQL}); err != nil { + t.Fatal("Could not retrieve aliases, error: ", err.Error()) + } else if len(aliases) == 0 { + t.Fatal("Could not retrieve aliases") + } else { + for _, al := range aliases { + if found, err := loader.LoadAliasesFiltered(&al); found && err != nil { + t.Fatalf("Could not load aliase with id: %s, error: %s", al.GetId(), err.Error()) + } + } + } // Load account actions if accountActions, err := storDb.GetTpAccountActions(&TpAccountAction{Tpid: utils.TEST_SQL, Loadid: loadId}); err != nil { t.Fatal("Could not retrieve account action profiles, error: ", err.Error()) diff --git a/engine/storage_sql.go b/engine/storage_sql.go index 8c24cc692..38d416dae 100644 --- a/engine/storage_sql.go +++ b/engine/storage_sql.go @@ -1388,24 +1388,24 @@ func (self *SQLStorage) SetTpAliases(aliases []TpAlias) error { func (self *SQLStorage) GetTpAliases(filter *TpAlias) ([]TpAlias, error) { var tpAliases []TpAlias - q := self.db.Where("tpid = ?", filter.Tpid) + q := self.db.Where("`tpid` = ?", filter.Tpid) if len(filter.Direction) != 0 { - q = q.Where("direction = ?", filter.Direction) + q = q.Where("`direction` = ?", filter.Direction) } if len(filter.Tenant) != 0 { - q = q.Where("tenant = ?", filter.Tenant) + q = q.Where("`tenant` = ?", filter.Tenant) } if len(filter.Category) != 0 { - q = q.Where("category = ?", filter.Category) + q = q.Where("`category` = ?", filter.Category) } if len(filter.Account) != 0 { - q = q.Where("account = ?", filter.Account) + q = q.Where("`account` = ?", filter.Account) } if len(filter.Subject) != 0 { - q = q.Where("subject = ?", filter.Subject) + q = q.Where("`subject` = ?", filter.Subject) } if len(filter.Group) != 0 { - q = q.Where("group = ?", filter.Group) + q = q.Where("`group` = ?", filter.Group) } if err := q.Find(&tpAliases).Error; err != nil { diff --git a/engine/tpimporter_csv.go b/engine/tpimporter_csv.go index a9473cac4..395a6cdbf 100644 --- a/engine/tpimporter_csv.go +++ b/engine/tpimporter_csv.go @@ -55,6 +55,7 @@ var fileHandlers = map[string]func(*TPCSVImporter, string) error{ utils.DERIVED_CHARGERS_CSV: (*TPCSVImporter).importDerivedChargers, utils.CDR_STATS_CSV: (*TPCSVImporter).importCdrStats, utils.USERS_CSV: (*TPCSVImporter).importUsers, + utils.ALIASES_CSV: (*TPCSVImporter).importAliases, } func (self *TPCSVImporter) Run() error { @@ -314,3 +315,17 @@ func (self *TPCSVImporter) importUsers(fn string) error { return self.StorDb.SetTpUsers(tps) } + +func (self *TPCSVImporter) importAliases(fn string) error { + if self.Verbose { + log.Printf("Processing file: <%s> ", fn) + } + tps, err := self.csvr.GetTpAliases(nil) + if err != nil { + return err + } + for i := 0; i < len(tps); i++ { + tps[i].Tpid = self.TPid + } + return self.StorDb.SetTpAliases(tps) +}