From fe4506008f0f4dc1e377fe0f726ee6e61def13b4 Mon Sep 17 00:00:00 2001 From: DanB Date: Mon, 24 Feb 2014 12:41:24 +0100 Subject: [PATCH] Local test TutFsCsv from config file --- apier/apier_local_test.go | 3 ++- apier/tutfscsv_local_test.go | 21 +++++++++++++++------ config/config.go | 22 +++++++++++----------- 3 files changed, 28 insertions(+), 18 deletions(-) diff --git a/apier/apier_local_test.go b/apier/apier_local_test.go index 26c0f3600..0f249b0bc 100644 --- a/apier/apier_local_test.go +++ b/apier/apier_local_test.go @@ -79,7 +79,8 @@ func TestCreateTables(t *testing.T) { } else { mysql = d.(*engine.MySQLStorage) } - for _, scriptName := range []string{engine.CREATE_CDRS_TABLES_SQL, engine.CREATE_COSTDETAILS_TABLES_SQL, engine.CREATE_MEDIATOR_TABLES_SQL, engine.CREATE_TARIFFPLAN_TABLES_SQL} { + for _, scriptName := range []string{engine.CREATE_CDRS_TABLES_SQL, engine.CREATE_COSTDETAILS_TABLES_SQL, engine.CREATE_MEDIATOR_TABLES_SQL, + engine.CREATE_TARIFFPLAN_TABLES_SQL} { if err := mysql.CreateTablesFromScript(path.Join(*dataDir, "storage", *storDbType, scriptName)); err != nil { t.Fatal("Error on mysql creation: ", err.Error()) return // No point in going further diff --git a/apier/tutfscsv_local_test.go b/apier/tutfscsv_local_test.go index c4d146069..82770b3ee 100644 --- a/apier/tutfscsv_local_test.go +++ b/apier/tutfscsv_local_test.go @@ -20,6 +20,7 @@ package apier import ( "fmt" + "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/engine" "github.com/cgrates/cgrates/utils" "net/rpc/jsonrpc" @@ -30,6 +31,13 @@ import ( "time" ) +var fscsvCfg *config.CGRConfig + +func init() { + fscsvCfgPath := path.Join(*dataDir, "tutorials", "fs_csv", "cgrates", "etc", "cgrates", "cgrates.cfg") + fscsvCfg, _ = config.NewCGRConfig(&fscsvCfgPath) +} + // Empty tables before using them func TestFsCsvCreateTables(t *testing.T) { if !*testLocal { @@ -39,7 +47,7 @@ func TestFsCsvCreateTables(t *testing.T) { t.Fatal("Unsupported storDbType") } var mysql *engine.MySQLStorage - if d, err := engine.NewMySQLStorage(cfg.StorDBHost, cfg.StorDBPort, cfg.StorDBName, cfg.StorDBUser, cfg.StorDBPass); err != nil { + if d, err := engine.NewMySQLStorage(fscsvCfg.StorDBHost, fscsvCfg.StorDBPort, fscsvCfg.StorDBName, fscsvCfg.StorDBUser, fscsvCfg.StorDBPass); err != nil { t.Fatal("Error on opening database connection: ", err) } else { mysql = d.(*engine.MySQLStorage) @@ -61,12 +69,12 @@ func TestFsCsvInitDataDb(t *testing.T) { if !*testLocal { return } - ratingDb, err := engine.ConfigureRatingStorage(cfg.RatingDBType, cfg.RatingDBHost, cfg.RatingDBPort, cfg.RatingDBName, cfg.RatingDBUser, cfg.RatingDBPass, cfg.DBDataEncoding) + ratingDb, err := engine.ConfigureRatingStorage(fscsvCfg.RatingDBType, fscsvCfg.RatingDBHost, fscsvCfg.RatingDBPort, fscsvCfg.RatingDBName, fscsvCfg.RatingDBUser, fscsvCfg.RatingDBPass, fscsvCfg.DBDataEncoding) if err != nil { t.Fatal("Cannot connect to dataDb", err) } - accountDb, err := engine.ConfigureAccountingStorage(cfg.AccountDBType, cfg.AccountDBHost, cfg.AccountDBPort, cfg.AccountDBName, - cfg.AccountDBUser, cfg.AccountDBPass, cfg.DBDataEncoding) + accountDb, err := engine.ConfigureAccountingStorage(fscsvCfg.AccountDBType, fscsvCfg.AccountDBHost, fscsvCfg.AccountDBPort, fscsvCfg.AccountDBName, + fscsvCfg.AccountDBUser, fscsvCfg.AccountDBPass, fscsvCfg.DBDataEncoding) if err != nil { t.Fatal("Cannot connect to dataDb", err) } @@ -86,8 +94,9 @@ func TestFsCsvStartEngine(t *testing.T) { if err != nil { t.Fatal("Cannot find cgr-engine executable") } + fmt.Println(path.Join(*dataDir, "tutorials", "fs_csv", "cgrates", "etc", "cgrates", "cgrates.cfg")) exec.Command("pkill", "cgr-engine").Run() // Just to make sure another one is not running, bit brutal maybe we can fine tune it - engine := exec.Command(enginePath, "-rater", "-scheduler", "-cdrs", "-mediator", "-config", path.Join(*dataDir, "conf", "cgrates.cfg")) + engine := exec.Command(enginePath, "-config", path.Join(*dataDir, "tutorials", "fs_csv", "cgrates", "etc", "cgrates", "cgrates.cfg")) if err := engine.Start(); err != nil { t.Fatal("Cannot start cgr-engine: ", err.Error()) } @@ -100,7 +109,7 @@ func TestFsCsvRpcConn(t *testing.T) { return } var err error - rater, err = jsonrpc.Dial("tcp", "127.0.0.1:2012") // ToDo: Fix here with config loaded from file + rater, err = jsonrpc.Dial("tcp", fscsvCfg.RPCJSONListen) if err != nil { t.Fatal("Could not connect to rater: ", err.Error()) } diff --git a/config/config.go b/config/config.go index 8d0595307..ded033340 100644 --- a/config/config.go +++ b/config/config.go @@ -115,15 +115,15 @@ type CGRConfig struct { SMRaterReconnects int // Number of reconnect attempts to rater SMDebitInterval int // the period to be debited in advanced during a call (in seconds) SMMaxCallDuration time.Duration // The maximum duration of a call - SMReqTypeFields []string // Name of request type fields to be used during additional sessions control <""|*default|field_name>. - SMDirectionFields []string // Name of direction fields to be used during additional sessions control <""|*default|field_name>. - SMTenantFields []string // Name of tenant fields to be used during additional sessions control <""|*default|field_name>. - SMTORFields []string // Name of tor fields to be used during additional sessions control <""|*default|field_name>. - SMAccountFields []string // Name of account fields to be used during additional sessions control <""|*default|field_name>. - SMSubjectFields []string // Name of fields to be used during additional sessions control <""|*default|field_name>. - SMDestFields []string // Name of destination fields to be used during additional sessions control <""|*default|field_name>. - SMAnswerTimeFields []string // Name of time_answer fields to be used during additional sessions control <""|*default|field_name>. - SMDurationFields []string // Name of duration fields to be used during additional sessions control <""|*default|field_name>. + SMReqTypeFields []string // Name of request type fields to be used during additional sessions control <""|*default|field_name>. + SMDirectionFields []string // Name of direction fields to be used during additional sessions control <""|*default|field_name>. + SMTenantFields []string // Name of tenant fields to be used during additional sessions control <""|*default|field_name>. + SMTORFields []string // Name of tor fields to be used during additional sessions control <""|*default|field_name>. + SMAccountFields []string // Name of account fields to be used during additional sessions control <""|*default|field_name>. + SMSubjectFields []string // Name of fields to be used during additional sessions control <""|*default|field_name>. + SMDestFields []string // Name of destination fields to be used during additional sessions control <""|*default|field_name>. + SMAnswerTimeFields []string // Name of time_answer fields to be used during additional sessions control <""|*default|field_name>. + SMDurationFields []string // Name of duration fields to be used during additional sessions control <""|*default|field_name>. MediatorEnabled bool // Starts Mediator service: . MediatorRater string // Address where to reach the Rater: MediatorRaterReconnects int // Number of reconnects to rater before giving up. @@ -229,7 +229,7 @@ func (self *CGRConfig) setDefaults() error { self.SMDebitInterval = 10 self.SMMaxCallDuration = time.Duration(3) * time.Hour self.SMReqTypeFields = []string{} - self.SMDirectionFields = []string{} + self.SMDirectionFields = []string{} self.SMTenantFields = []string{} self.SMTORFields = []string{} self.SMAccountFields = []string{} @@ -540,7 +540,7 @@ func loadConfig(c *conf.ConfigFile) (*CGRConfig, error) { return nil, errParse } } - + if hasOpt = c.HasOption("session_manager", "reqtype_fields"); hasOpt { if cfg.SMReqTypeFields, errParse = ConfigSlice(c, "session_manager", "reqtype_fields"); errParse != nil { return nil, errParse