From 06620a90c904adcef9c63632edfab4688024fa04 Mon Sep 17 00:00:00 2001 From: porosnicuadrian Date: Fri, 25 Sep 2020 12:51:31 +0300 Subject: [PATCH] Updated tests at load function for cdrscfg, chargerscfg, datadbcfg --- config/cdrscfg_test.go | 68 ++++++++++-------------- config/chargerscfg_test.go | 44 ++++++---------- config/datadbcfg_test.go | 103 ++++++++++++++++++++++++++----------- 3 files changed, 118 insertions(+), 97 deletions(-) diff --git a/config/cdrscfg_test.go b/config/cdrscfg_test.go index 079d19d16..9576584ab 100644 --- a/config/cdrscfg_test.go +++ b/config/cdrscfg_test.go @@ -25,50 +25,38 @@ import ( ) func TestCdrsCfgloadFromJsonCfg(t *testing.T) { - var cdrscfg, expected CdrsCfg - if err := cdrscfg.loadFromJsonCfg(nil); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(cdrscfg, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, cdrscfg) + jsonCfg := &CdrsJsonCfg{ + Enabled: utils.BoolPointer(true), + Store_cdrs: utils.BoolPointer(true), + Session_cost_retries: utils.IntPointer(1), + Chargers_conns: &[]string{"*internal"}, + Rals_conns: &[]string{"*internal"}, + Attributes_conns: &[]string{"*internal"}, + Thresholds_conns: &[]string{"*internal"}, + Stats_conns: &[]string{"*conn1", "*conn2"}, + Online_cdr_exports: &[]string{"randomVal"}, + Scheduler_conns: &[]string{"*internal"}, + Ees_conns: &[]string{"*internal"}, } - if err := cdrscfg.loadFromJsonCfg(new(CdrsJsonCfg)); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(cdrscfg, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, cdrscfg) + expected := &CdrsCfg{ + Enabled: true, + StoreCdrs: true, + SMCostRetries: 1, + ChargerSConns: []string{"*internal:*chargers"}, + RaterConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResponder)}, + AttributeSConns: []string{"*internal:*attributes"}, + ThresholdSConns: []string{"*internal:*thresholds"}, + StatSConns: []string{"*conn1", "*conn2"}, + OnlineCDRExports: []string{"randomVal"}, + SchedulerConns: []string{"*internal:*scheduler"}, + EEsConns: []string{"*internal:*ees"}, } - cfgJSONStr := `{ -"cdrs": { - "enabled": false, // start the CDR Server service: - "extra_fields": [], // extra fields to store in CDRs for non-generic CDRs - "store_cdrs": true, // store cdrs in storDb - "session_cost_retries": 5, // number of queries to sessions_costs before recalculating CDR - "chargers_conns": [], // address where to reach the charger service, empty to disable charger functionality: <""|*internal|x.y.z.y:1234> - "rals_conns": ["*internal"], - "attributes_conns": [], // address where to reach the attribute service, empty to disable attributes functionality: <""|*internal|x.y.z.y:1234> - "thresholds_conns": [], // address where to reach the thresholds service, empty to disable thresholds functionality: <""|*internal|x.y.z.y:1234> - "stats_conns": [], // address where to reach the stat service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234> - "online_cdr_exports":[], // list of CDRE profiles to use for real-time CDR exports - "ees_conns": [], // connections to EventExporter - }, -}` - expected = CdrsCfg{ - StoreCdrs: true, - SMCostRetries: 5, - ChargerSConns: []string{}, - RaterConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResponder)}, - AttributeSConns: []string{}, - ThresholdSConns: []string{}, - StatSConns: []string{}, - EEsConns: []string{}, - } - if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil { + if jsnCfg, err := NewDefaultCGRConfig(); err != nil { t.Error(err) - } else if jsnCdrsCfg, err := jsnCfg.CdrsJsonCfg(); err != nil { + } else if err = jsnCfg.cdrsCfg.loadFromJsonCfg(jsonCfg); err != nil { t.Error(err) - } else if err = cdrscfg.loadFromJsonCfg(jsnCdrsCfg); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(expected, cdrscfg) { - t.Errorf("Expected: %+v , recived: %+v", utils.ToJSON(expected), utils.ToJSON(cdrscfg)) + } else if !reflect.DeepEqual(expected, jsnCfg.cdrsCfg) { + t.Errorf("Expected %+v \n, received %+v", utils.ToJSON(expected), utils.ToJSON(jsnCfg.cdrsCfg)) } } diff --git a/config/chargerscfg_test.go b/config/chargerscfg_test.go index 37874c711..3e4484d22 100644 --- a/config/chargerscfg_test.go +++ b/config/chargerscfg_test.go @@ -25,38 +25,28 @@ import ( ) func TestChargerSCfgloadFromJsonCfg(t *testing.T) { - var chgscfg, expected ChargerSCfg - if err := chgscfg.loadFromJsonCfg(nil); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(chgscfg, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, chgscfg) + jsonCfg := &ChargerSJsonCfg{ + Enabled: utils.BoolPointer(true), + Indexed_selects: utils.BoolPointer(true), + Attributes_conns: &[]string{"*internal"}, + Prefix_indexed_fields: &[]string{"*req.Field1", "*req.Field2"}, + Suffix_indexed_fields: &[]string{"*req.Field1", "*req.Field2"}, + Nested_fields: utils.BoolPointer(true), } - if err := chgscfg.loadFromJsonCfg(new(ChargerSJsonCfg)); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(chgscfg, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, chgscfg) - } - cfgJSONStr := `{ -"chargers": { // Charger service - "enabled": true, // starts charger service: . - "attributes_conns": [], // address where to reach the AttributeS <""|127.0.0.1:2013> - //"string_indexed_fields": [], // query indexes based on these fields for faster processing - "prefix_indexed_fields": ["*req.index1", "*req.index2"], // query indexes based on these fields for faster processing -}, -}` - expected = ChargerSCfg{ + expected := &ChargerSCfg{ Enabled: true, - AttributeSConns: []string{}, - PrefixIndexedFields: &[]string{"*req.index1", "*req.index2"}, + IndexedSelects: true, + AttributeSConns: []string{"*internal:*attributes"}, + PrefixIndexedFields: &[]string{"*req.Field1", "*req.Field2"}, + SuffixIndexedFields: &[]string{"*req.Field1", "*req.Field2"}, + NestedFields: true, } - if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil { + if jsncfg, err := NewDefaultCGRConfig(); err != nil { t.Error(err) - } else if jsnChgCfg, err := jsnCfg.ChargerServJsonCfg(); err != nil { + } else if err = jsncfg.chargerSCfg.loadFromJsonCfg(jsonCfg); err != nil { t.Error(err) - } else if err = chgscfg.loadFromJsonCfg(jsnChgCfg); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(expected, chgscfg) { - t.Errorf("Expected: %+v , recived: %+v", expected, chgscfg) + } else if !reflect.DeepEqual(expected, jsncfg.chargerSCfg) { + t.Errorf("Expected %+v \n, received %+v", utils.ToJSON(expected), utils.ToJSON(jsncfg.chargerSCfg)) } } diff --git a/config/datadbcfg_test.go b/config/datadbcfg_test.go index 7987de592..e475cc31d 100644 --- a/config/datadbcfg_test.go +++ b/config/datadbcfg_test.go @@ -25,51 +25,94 @@ import ( ) func TestDataDbCfgloadFromJsonCfg(t *testing.T) { - var dbcfg, expected DataDbCfg - if err := dbcfg.loadFromJsonCfg(nil); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(dbcfg, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, dbcfg) + jsonCfg := &DbJsonCfg{ + Db_type: utils.StringPointer("redis"), + Db_host: utils.StringPointer("127.0.0.1"), + Db_port: utils.IntPointer(6379), + Db_name: utils.StringPointer("10"), + Db_user: utils.StringPointer("cgrates"), + Db_password: utils.StringPointer("password"), + Remote_conns: &[]string{"*conn1"}, + Replication_conns: &[]string{"*conn1"}, + Items: &map[string]*ItemOptJson{ + utils.MetaAccounts: { + Replicate: utils.BoolPointer(true), + Remote: utils.BoolPointer(true), + }, + utils.MetaReverseDestinations: { + Replicate: utils.BoolPointer(true), + }, + utils.MetaDestinations: { + Replicate: utils.BoolPointer(false), + }, + }, + Opts: map[string]interface{}{ + utils.RedisSentinelNameCfg: "sentinel", + }, } - if err := dbcfg.loadFromJsonCfg(new(DbJsonCfg)); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(dbcfg, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, dbcfg) - } - cfgJSONStr := `{ -"data_db": { // database used to store runtime data (eg: accounts, cdr stats) - "db_type": "*redis", // data_db type: <*redis|*mongo|*internal> - "db_host": "127.0.0.1", // data_db host address - "db_port": -1, // data_db port to reach the database - "db_name": "10", // data_db database name to connect to - "db_user": "cgrates", // username to use when connecting to data_db - "db_password": "password", // password to use when connecting to data_db - "opts":{ - "redis_sentinel":"sentinel", // redis_sentinel is the name of sentinel - }} -}` - dbcfg.Opts = make(map[string]interface{}) - expected = DataDbCfg{ + expected := &DataDbCfg{ DataDbType: "redis", DataDbHost: "127.0.0.1", DataDbPort: "6379", DataDbName: "10", DataDbUser: "cgrates", DataDbPass: "password", + RmtConns: []string{"*conn1"}, + RplConns: []string{"*conn1"}, + Items: map[string]*ItemOpt{ + utils.MetaAccounts: { + Replicate: true, + Remote: true, + }, + utils.MetaReverseDestinations: { + Replicate: true, + }, + utils.MetaDestinations: { + Replicate: false, + }, + }, Opts: map[string]interface{}{ utils.RedisSentinelNameCfg: "sentinel", }, } - if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil { + if jsnCfg, err := NewDefaultCGRConfig(); err != nil { t.Error(err) - } else if jsnDataDbCfg, err := jsnCfg.DbJsonCfg(DATADB_JSN); err != nil { + } else if err = jsnCfg.dataDbCfg.loadFromJsonCfg(jsonCfg); err != nil { t.Error(err) - } else if err = dbcfg.loadFromJsonCfg(jsnDataDbCfg); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(expected, dbcfg) { - t.Errorf("Expected: %+v , recived: %+v", expected, dbcfg) + } else { + if !reflect.DeepEqual(expected.Items[utils.MetaAccounts], jsnCfg.dataDbCfg.Items[utils.MetaAccounts]) { + t.Errorf("Expected %+v \n, received %+v", utils.ToJSON(expected.Items[utils.MetaAccounts]), + utils.ToJSON(jsnCfg.dataDbCfg.Items[utils.MetaAccounts])) + } else if !reflect.DeepEqual(expected.Opts[utils.RedisSentinelNameCfg], jsnCfg.dataDbCfg.Opts[utils.RedisSentinelNameCfg]) { + t.Errorf("Expected %+v \n, received %+v", utils.ToJSON(expected.Opts[utils.RedisSentinelNameCfg]), + utils.ToJSON(jsnCfg.dataDbCfg.Opts[utils.RedisSentinelNameCfg])) + } else if !reflect.DeepEqual(expected.RplConns, jsnCfg.dataDbCfg.RplConns) { + t.Errorf("Expected %+v \n, received %+v", expected.RplConns, jsnCfg.dataDbCfg.RplConns) + } } } + +func TestItemCfgloadFromJson(t *testing.T) { + jsonCfg := &ItemOptJson{ + Remote: utils.BoolPointer(true), + Replicate: utils.BoolPointer(true), + Api_key: utils.StringPointer("randomVal"), + Route_id: utils.StringPointer("randomID"), + } + expected := &ItemOpt{ + Remote: true, + Replicate: true, + APIKey: "randomVal", + RouteID: "randomID", + } + rcv := new(ItemOpt) + if err := rcv.loadFromJsonCfg(jsonCfg); err != nil { + t.Error(err) + } else if !reflect.DeepEqual(rcv, expected) { + t.Errorf("Expected %+v \n, received %+v", utils.ToJSON(expected), utils.ToJSON(rcv)) + } +} + func TestDataDbCfgloadFromJsonCfgPort(t *testing.T) { var dbcfg DataDbCfg dbcfg.Opts = make(map[string]interface{})