Updated tests at load function for cdrscfg, chargerscfg, datadbcfg

This commit is contained in:
porosnicuadrian
2020-09-25 12:51:31 +03:00
committed by Dan Christian Bogos
parent dd42186b22
commit 06620a90c9
3 changed files with 118 additions and 97 deletions

View File

@@ -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: <true|false>
"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))
}
}

View File

@@ -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: <true|false>.
"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))
}
}

View File

@@ -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{})