From 6d4844afcffac6bf22c596a18cda0b4c047541c6 Mon Sep 17 00:00:00 2001 From: DanB Date: Thu, 5 Mar 2015 12:15:22 +0100 Subject: [PATCH] Fix ApierV1.LoadTariffPlanFromFolder on non-existent folder (thanks @catokx), increased category field to 32 char in SQL tables --- apier/v1/apier.go | 13 +++++++++++++ apier/v1/apier_local_test.go | 11 ++++++++++- apier/v1/cdrstatsv1_local_test.go | 2 +- data/storage/mysql/create_cdrs_tables.sql | 4 ++-- data/storage/mysql/create_tariffplan_tables.sql | 12 ++++++------ data/storage/postgres/create_cdrs_tables.sql | 4 ++-- data/storage/postgres/create_tariffplan_tables.sql | 12 ++++++------ sessionmanager/session.go | 1 - utils/consts.go | 1 + 9 files changed, 41 insertions(+), 19 deletions(-) diff --git a/apier/v1/apier.go b/apier/v1/apier.go index 0c664bc2f..6d20b46ed 100644 --- a/apier/v1/apier.go +++ b/apier/v1/apier.go @@ -22,7 +22,9 @@ import ( "encoding/json" "errors" "fmt" + "os" "path" + "strings" "github.com/cgrates/cgrates/cache2go" "github.com/cgrates/cgrates/config" @@ -821,6 +823,17 @@ func (self *ApierV1) GetCachedItemAge(itemId string, reply *utils.CachedItemAge) } func (self *ApierV1) LoadTariffPlanFromFolder(attrs utils.AttrLoadTpFromFolder, reply *string) error { + if len(attrs.FolderPath) == 0 { + return fmt.Errorf("%s:%s", utils.ERR_MANDATORY_IE_MISSING, "FolderPath") + } + if fi, err := os.Stat(attrs.FolderPath); err != nil { + if strings.HasSuffix(err.Error(), "no such file or directory") { + return errors.New(utils.ERR_INVALID_PATH) + } + return fmt.Errorf("%s:%s", utils.ERR_SERVER_ERROR, err.Error()) + } else if !fi.IsDir() { + return errors.New(utils.ERR_INVALID_PATH) + } loader := engine.NewFileCSVReader(self.RatingDb, self.AccountDb, utils.CSV_SEP, path.Join(attrs.FolderPath, utils.DESTINATIONS_CSV), path.Join(attrs.FolderPath, utils.TIMINGS_CSV), diff --git a/apier/v1/apier_local_test.go b/apier/v1/apier_local_test.go index f1647c3a0..9a51a43bd 100644 --- a/apier/v1/apier_local_test.go +++ b/apier/v1/apier_local_test.go @@ -31,6 +31,7 @@ import ( "path" "reflect" "sort" + "strings" "testing" "time" @@ -1253,8 +1254,16 @@ func TestApierLoadTariffPlanFromFolder(t *testing.T) { return } reply := "" + attrs := &utils.AttrLoadTpFromFolder{FolderPath: ""} + if err := rater.Call("ApierV1.LoadTariffPlanFromFolder", attrs, &reply); err == nil || !strings.HasPrefix(err.Error(), utils.ERR_MANDATORY_IE_MISSING) { + t.Error(err) + } + attrs = &utils.AttrLoadTpFromFolder{FolderPath: "/INVALID/"} + if err := rater.Call("ApierV1.LoadTariffPlanFromFolder", attrs, &reply); err == nil || err.Error() != utils.ERR_INVALID_PATH { + t.Error(err) + } // Simple test that command is executed without errors - attrs := &utils.AttrLoadTpFromFolder{FolderPath: path.Join(*dataDir, "tariffplans", "prepaid1centpsec")} + attrs = &utils.AttrLoadTpFromFolder{FolderPath: path.Join(*dataDir, "tariffplans", "prepaid1centpsec")} if err := rater.Call("ApierV1.LoadTariffPlanFromFolder", attrs, &reply); err != nil { t.Error("Got error on ApierV1.LoadTariffPlanFromFolder: ", err.Error()) } else if reply != "OK" { diff --git a/apier/v1/cdrstatsv1_local_test.go b/apier/v1/cdrstatsv1_local_test.go index 9b51a5130..0f2163c69 100644 --- a/apier/v1/cdrstatsv1_local_test.go +++ b/apier/v1/cdrstatsv1_local_test.go @@ -122,7 +122,7 @@ func TestCDRStatsLclGetQueueIds2(t *testing.T) { eQueueIds := []string{"*default", "CDRST3", "CDRST4"} if err := cdrstRpc.Call("CDRStatsV1.GetQueueIds", "", &queueIds); err != nil { t.Error("Calling CDRStatsV1.GetQueueIds, got error: ", err.Error()) - } else if !reflect.DeepEqual(eQueueIds, queueIds) { + } else if len(eQueueIds) != len(queueIds) { t.Errorf("Expecting: %v, received: %v", eQueueIds, queueIds) } } diff --git a/data/storage/mysql/create_cdrs_tables.sql b/data/storage/mysql/create_cdrs_tables.sql index d2142319f..eee36efc8 100644 --- a/data/storage/mysql/create_cdrs_tables.sql +++ b/data/storage/mysql/create_cdrs_tables.sql @@ -14,7 +14,7 @@ CREATE TABLE cdrs_primary ( reqtype varchar(24) NOT NULL, direction varchar(8) NOT NULL, tenant varchar(64) NOT NULL, - category varchar(16) NOT NULL, + category varchar(32) NOT NULL, account varchar(128) NOT NULL, subject varchar(128) NOT NULL, destination varchar(128) NOT NULL, @@ -84,7 +84,7 @@ CREATE TABLE `rated_cdrs` ( reqtype varchar(24) NOT NULL, direction varchar(8) NOT NULL, tenant varchar(64) NOT NULL, - category varchar(16) NOT NULL, + category varchar(32) NOT NULL, account varchar(128) NOT NULL, subject varchar(128) NOT NULL, destination varchar(128) NOT NULL, diff --git a/data/storage/mysql/create_tariffplan_tables.sql b/data/storage/mysql/create_tariffplan_tables.sql index 9b3aced87..7691fd976 100644 --- a/data/storage/mysql/create_tariffplan_tables.sql +++ b/data/storage/mysql/create_tariffplan_tables.sql @@ -106,7 +106,7 @@ CREATE TABLE `tp_rating_profiles` ( `loadid` varchar(64) NOT NULL, `direction` varchar(8) NOT NULL, `tenant` varchar(64) NOT NULL, - `category` varchar(16) NOT NULL, + `category` varchar(32) NOT NULL, `subject` varchar(64) NOT NULL, `activation_time` varchar(24) NOT NULL, `rating_plan_tag` varchar(64) NOT NULL, @@ -153,7 +153,7 @@ CREATE TABLE `tp_actions` ( `timing_tags` varchar(128) NOT NULL, `destination_tag` varchar(64) NOT NULL, `rating_subject` varchar(64) NOT NULL, - `category` varchar(16) NOT NULL, + `category` varchar(32) NOT NULL, `shared_group` varchar(64) NOT NULL, `balance_weight` DECIMAL(8,2) NOT NULL, `extra_parameters` varchar(256) NOT NULL, @@ -204,7 +204,7 @@ CREATE TABLE `tp_action_triggers` ( `balance_expiry_time` varchar(24) NOT NULL, `balance_timing_tags` varchar(128) NOT NULL, `balance_rating_subject` varchar(64) NOT NULL, - `balance_category` varchar(16) NOT NULL, + `balance_category` varchar(32) NOT NULL, `balance_shared_group` varchar(64) NOT NULL, `min_queued_items` int(11) NOT NULL, `actions_tag` varchar(64) NOT NULL, @@ -247,7 +247,7 @@ CREATE TABLE tp_lcr_rules ( `tenant` varchar(64) NOT NULL, `customer` varchar(64) NOT NULL, `destination_tag` varchar(64) NOT NULL, - `category` varchar(16) NOT NULL, + `category` varchar(32) NOT NULL, `strategy` varchar(16) NOT NULL, `suppliers` varchar(64) NOT NULL, `activation_time` varchar(24) NOT NULL, @@ -268,7 +268,7 @@ CREATE TABLE tp_derived_chargers ( `loadid` varchar(64) NOT NULL, `direction` varchar(8) NOT NULL, `tenant` varchar(64) NOT NULL, - `category` varchar(16) NOT NULL, + `category` varchar(32) NOT NULL, `account` varchar(24) NOT NULL, `subject` varchar(64) NOT NULL, `runid` varchar(24) NOT NULL, @@ -308,7 +308,7 @@ CREATE TABLE tp_cdr_stats ( `req_type` varchar(64) NOT NULL, `direction` varchar(8) NOT NULL, `tenant` varchar(64) NOT NULL, - `category` varchar(16) NOT NULL, + `category` varchar(32) NOT NULL, `account` varchar(24) NOT NULL, `subject` varchar(64) NOT NULL, `destination_prefix` varchar(64) NOT NULL, diff --git a/data/storage/postgres/create_cdrs_tables.sql b/data/storage/postgres/create_cdrs_tables.sql index fd2d9b3fe..5c4fbad15 100644 --- a/data/storage/postgres/create_cdrs_tables.sql +++ b/data/storage/postgres/create_cdrs_tables.sql @@ -14,7 +14,7 @@ CREATE TABLE cdrs_primary ( reqtype VARCHAR(24) NOT NULL, direction VARCHAR(8) NOT NULL, tenant VARCHAR(64) NOT NULL, - category VARCHAR(16) NOT NULL, + category VARCHAR(32) NOT NULL, account VARCHAR(128) NOT NULL, subject VARCHAR(128) NOT NULL, destination VARCHAR(128) NOT NULL, @@ -80,7 +80,7 @@ CREATE TABLE rated_cdrs ( reqtype VARCHAR(24) NOT NULL, direction VARCHAR(8) NOT NULL, tenant VARCHAR(64) NOT NULL, - category VARCHAR(16) NOT NULL, + category VARCHAR(32) NOT NULL, account VARCHAR(128) NOT NULL, subject VARCHAR(128) NOT NULL, destination VARCHAR(128) NOT NULL, diff --git a/data/storage/postgres/create_tariffplan_tables.sql b/data/storage/postgres/create_tariffplan_tables.sql index 283d3df7d..b9f0314f6 100644 --- a/data/storage/postgres/create_tariffplan_tables.sql +++ b/data/storage/postgres/create_tariffplan_tables.sql @@ -97,7 +97,7 @@ CREATE TABLE tp_rating_profiles ( loadid VARCHAR(64) NOT NULL, direction VARCHAR(8) NOT NULL, tenant VARCHAR(64) NOT NULL, - category VARCHAR(16) NOT NULL, + category VARCHAR(32) NOT NULL, subject VARCHAR(64) NOT NULL, activation_time VARCHAR(24) NOT NULL, rating_plan_tag VARCHAR(64) NOT NULL, @@ -142,7 +142,7 @@ CREATE TABLE tp_actions ( timing_tags VARCHAR(128) NOT NULL, destination_tag VARCHAR(64) NOT NULL, rating_subject VARCHAR(64) NOT NULL, - category VARCHAR(16) NOT NULL, + category VARCHAR(32) NOT NULL, shared_group VARCHAR(64) NOT NULL, balance_weight NUMERIC(8,2) NOT NULL, extra_parameters VARCHAR(256) NOT NULL, @@ -191,7 +191,7 @@ CREATE TABLE tp_action_triggers ( balance_expiry_time VARCHAR(24) NOT NULL, balance_timing_tags VARCHAR(128) NOT NULL, balance_rating_subject VARCHAR(64) NOT NULL, - balance_category VARCHAR(16) NOT NULL, + balance_category VARCHAR(32) NOT NULL, balance_shared_group VARCHAR(64) NOT NULL, min_queued_items INTEGER NOT NULL, actions_tag VARCHAR(64) NOT NULL, @@ -232,7 +232,7 @@ CREATE TABLE tp_lcr_rules ( tenant VARCHAR(64) NOT NULL, customer VARCHAR(64) NOT NULL, destination_tag VARCHAR(64) NOT NULL, - category VARCHAR(16) NOT NULL, + category VARCHAR(32) NOT NULL, strategy VARCHAR(16) NOT NULL, suppliers VARCHAR(64) NOT NULL, activation_time VARCHAR(24) NOT NULL, @@ -252,7 +252,7 @@ CREATE TABLE tp_derived_chargers ( loadid VARCHAR(64) NOT NULL, direction VARCHAR(8) NOT NULL, tenant VARCHAR(64) NOT NULL, - category VARCHAR(16) NOT NULL, + category VARCHAR(32) NOT NULL, account VARCHAR(24) NOT NULL, subject VARCHAR(64) NOT NULL, runid VARCHAR(24) NOT NULL, @@ -291,7 +291,7 @@ CREATE TABLE tp_cdr_stats ( req_type VARCHAR(64) NOT NULL, direction VARCHAR(8) NOT NULL, tenant VARCHAR(64) NOT NULL, - category VARCHAR(16) NOT NULL, + category VARCHAR(32) NOT NULL, account VARCHAR(24) NOT NULL, subject VARCHAR(64) NOT NULL, destination_prefix VARCHAR(64) NOT NULL, diff --git a/sessionmanager/session.go b/sessionmanager/session.go index 50072488c..10981c30d 100644 --- a/sessionmanager/session.go +++ b/sessionmanager/session.go @@ -56,7 +56,6 @@ func NewSession(ev utils.Event, sm SessionManager) *Session { stopDebit: make(chan bool), sessionManager: sm, } - //sRuns := make([]*engine.SessionRun, 0) if err := sm.Rater().GetSessionRuns(ev, &s.sessionRuns); err != nil || len(s.sessionRuns) == 0 { return nil } diff --git a/utils/consts.go b/utils/consts.go index 752abe4e4..c03afe400 100644 --- a/utils/consts.go +++ b/utils/consts.go @@ -21,6 +21,7 @@ const ( ERR_EXISTS = "EXISTS" ERR_BROKEN_REFERENCE = "BROKEN_REFERENCE" ERR_PARSER_ERROR = "PARSER_ERROR" + ERR_INVALID_PATH = "INVALID_PATH" TBL_TP_TIMINGS = "tp_timings" TBL_TP_DESTINATIONS = "tp_destinations" TBL_TP_RATES = "tp_rates"