Added test for checkSanity

This commit is contained in:
adragusin
2019-11-27 17:59:32 +02:00
parent 5e8973358c
commit cae578478d
2 changed files with 179 additions and 12 deletions

View File

@@ -304,7 +304,7 @@ func (cfg *CGRConfig) checkConfigSanity() error {
if !cfg.statsCfg.Enabled {
for _, connCfg := range cfg.ralsCfg.StatSConns {
if connCfg.Address == utils.MetaInternal {
return fmt.Errorf("%s not enabled but requested by %s component.",
return fmt.Errorf("<%s> not enabled but requested by <%s> component.",
utils.StatS, utils.RALService)
}
}
@@ -312,7 +312,7 @@ func (cfg *CGRConfig) checkConfigSanity() error {
if !cfg.thresholdSCfg.Enabled {
for _, connCfg := range cfg.ralsCfg.ThresholdSConns {
if connCfg.Address == utils.MetaInternal {
return fmt.Errorf("%s not enabled but requested by %s component.",
return fmt.Errorf("<%s> not enabled but requested by <%s> component.",
utils.ThresholdS, utils.RALService)
}
}
@@ -323,40 +323,40 @@ func (cfg *CGRConfig) checkConfigSanity() error {
if !cfg.chargerSCfg.Enabled {
for _, conn := range cfg.cdrsCfg.ChargerSConns {
if conn.Address == utils.MetaInternal {
return errors.New("ChargerS not enabled but requested by CDRS component.")
return fmt.Errorf("<%s> not enabled but requested by <%s> component.", utils.Chargers, utils.CDRs)
}
}
}
if !cfg.ralsCfg.Enabled {
for _, cdrsRaterConn := range cfg.cdrsCfg.RaterConns {
if cdrsRaterConn.Address == utils.MetaInternal {
return errors.New("RALs not enabled but requested by CDRS component.")
return fmt.Errorf("<%s> not enabled but requested by <%s> component.", utils.RALService, utils.CDRs)
}
}
}
if !cfg.attributeSCfg.Enabled {
for _, connCfg := range cfg.cdrsCfg.AttributeSConns {
if connCfg.Address == utils.MetaInternal {
return errors.New("AttributeS not enabled but requested by CDRS component.")
return fmt.Errorf("<%s> not enabled but requested by <%s> component.", utils.AttributeS, utils.CDRs)
}
}
}
if !cfg.statsCfg.Enabled {
for _, connCfg := range cfg.cdrsCfg.StatSConns {
if connCfg.Address == utils.MetaInternal {
return errors.New("StatS not enabled but requested by CDRS component.")
return fmt.Errorf("<%s> not enabled but requested by <%s> component.", utils.StatService, utils.CDRs)
}
}
}
for _, cdrePrfl := range cfg.cdrsCfg.OnlineCDRExports {
if _, hasIt := cfg.CdreProfiles[cdrePrfl]; !hasIt {
return fmt.Errorf("<CDRS> Cannot find CDR export template with ID: <%s>", cdrePrfl)
return fmt.Errorf("<%s> Cannot find CDR export template with ID: <%s>", utils.CDRs, cdrePrfl)
}
}
if !cfg.thresholdSCfg.Enabled {
for _, connCfg := range cfg.cdrsCfg.ThresholdSConns {
if connCfg.Address == utils.MetaInternal {
return errors.New("ThresholdS not enabled but requested by CDRS component.")
return fmt.Errorf("%s not enabled but requested by %s component.", utils.ThresholdS, utils.CDRs)
}
}
}
@@ -368,24 +368,24 @@ func (cfg *CGRConfig) checkConfigSanity() error {
continue
}
if len(cdrcInst.CdrsConns) == 0 {
return fmt.Errorf("<CDRC> Instance: %s, CdrC enabled but no CDRS defined!", cdrcInst.ID)
return fmt.Errorf("<%s> Instance: %s, %s enabled but no %s defined!", utils.CDRC, cdrcInst.ID, utils.CDRC, utils.CDRs)
}
if !cfg.cdrsCfg.Enabled && !cfg.dispatcherSCfg.Enabled {
for _, conn := range cdrcInst.CdrsConns {
if conn.Address == utils.MetaInternal {
return errors.New("CDRS not enabled but referenced from CDRC")
return fmt.Errorf("<%s> not enabled but referenced from <%s>", utils.CDRs, utils.CDRC)
}
}
}
if len(cdrcInst.ContentFields) == 0 {
return errors.New("CdrC enabled but no fields to be processed defined!")
return fmt.Errorf("<%s> enabled but no fields to be processed defined!", utils.CDRC)
}
if cdrcInst.CdrFormat == utils.MetaFileCSV {
for _, cdrFld := range cdrcInst.ContentFields {
for _, rsrFld := range cdrFld.Value {
if rsrFld.attrName != "" {
if _, errConv := strconv.Atoi(rsrFld.attrName); errConv != nil {
return fmt.Errorf("CDR fields must be indices in case of .csv files, have instead: %s", rsrFld.attrName)
return fmt.Errorf("<%s> fields must be indices in case of .csv files, have instead: %s", utils.CDR, rsrFld.attrName)
}
}
}

View File

@@ -1910,3 +1910,170 @@ func TestCgrCfgEventReaderDefault(t *testing.T) {
}
}
func TestCheckConfigSanity(t *testing.T) {
// Rater checks
cfg, _ := NewDefaultCGRConfig()
cfg.ralsCfg = &RalsCfg{
Enabled: true,
StatSConns: []*RemoteHost{
&RemoteHost{
Address: utils.MetaInternal,
},
},
}
expected := "<Stats> not enabled but requested by <RALs> component."
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
cfg.statsCfg.Enabled = true
cfg.ralsCfg.ThresholdSConns = []*RemoteHost{
&RemoteHost{
Address: utils.MetaInternal,
},
}
expected = "<ThresholdS> not enabled but requested by <RALs> component."
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
cfg.ralsCfg = &RalsCfg{
Enabled: false,
StatSConns: []*RemoteHost{},
ThresholdSConns: []*RemoteHost{},
}
// CDRServer checks
cfg.thresholdSCfg.Enabled = true
cfg.cdrsCfg = &CdrsCfg{
Enabled: true,
ChargerSConns: []*RemoteHost{
&RemoteHost{
Address: utils.MetaInternal,
},
},
}
expected = "<Chargers> not enabled but requested by <CDRs> component."
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
cfg.chargerSCfg.Enabled = true
cfg.cdrsCfg.RaterConns = []*RemoteHost{
&RemoteHost{
Address: utils.MetaInternal,
},
}
expected = "<RALs> not enabled but requested by <CDRs> component."
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
cfg.ralsCfg.Enabled = true
cfg.cdrsCfg.AttributeSConns = []*RemoteHost{
&RemoteHost{
Address: utils.MetaInternal,
},
}
expected = "<AttributeS> not enabled but requested by <CDRs> component."
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
cfg.statsCfg.Enabled = false
cfg.attributeSCfg.Enabled = true
cfg.cdrsCfg.StatSConns = []*RemoteHost{
&RemoteHost{
Address: utils.MetaInternal,
},
}
expected = "<StatS> not enabled but requested by <CDRs> component."
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
cfg.statsCfg.Enabled = true
cfg.cdrsCfg.OnlineCDRExports = []string{"stringy"}
cfg.CdreProfiles = map[string]*CdreCfg{"stringx": &CdreCfg{}}
expected = "<CDRs> Cannot find CDR export template with ID: <stringy>"
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
cfg.thresholdSCfg.Enabled = false
cfg.cdrsCfg.OnlineCDRExports = []string{"stringx"}
cfg.cdrsCfg.ThresholdSConns = []*RemoteHost{
&RemoteHost{
Address: utils.MetaInternal,
},
}
expected = "ThresholdS not enabled but requested by CDRs component."
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
// CDRC sanity checks
cfg, _ = NewDefaultCGRConfig()
cfg.CdrcProfiles = map[string][]*CdrcCfg{
"test": []*CdrcCfg{
&CdrcCfg{
Enabled: true,
},
},
}
expected = "<cdrc> Instance: , cdrc enabled but no CDRs defined!"
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
cfg.dispatcherSCfg.Enabled = false
cfg.CdrcProfiles = map[string][]*CdrcCfg{
"test": []*CdrcCfg{
&CdrcCfg{
Enabled: true,
CdrsConns: []*RemoteHost{
&RemoteHost{Address: utils.MetaInternal},
},
},
},
}
expected = "<CDRs> not enabled but referenced from <cdrc>"
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
cfg.CdrcProfiles = map[string][]*CdrcCfg{
"test": []*CdrcCfg{
&CdrcCfg{
Enabled: true,
CdrsConns: []*RemoteHost{
&RemoteHost{Address: utils.MetaInternal},
},
ContentFields: []*FCTemplate{},
},
},
}
cfg.cdrsCfg = &CdrsCfg{
Enabled: true,
}
expected = "<cdrc> enabled but no fields to be processed defined!"
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
cfg.CdrcProfiles = map[string][]*CdrcCfg{
"test": []*CdrcCfg{
&CdrcCfg{
Enabled: true,
CdrsConns: []*RemoteHost{
&RemoteHost{Address: utils.MetaInternal},
},
CdrFormat: utils.MetaFileCSV,
ContentFields: []*FCTemplate{
&FCTemplate{
Value: RSRParsers{
&RSRParser{
attrName: "test1",
},
},
},
},
},
},
}
expected = "<CDR> fields must be indices in case of .csv files, have instead: test1"
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
}