From cae578478dc1968fb179647e5a78e7cdf3afac15 Mon Sep 17 00:00:00 2001 From: adragusin Date: Wed, 27 Nov 2019 17:59:32 +0200 Subject: [PATCH] Added test for checkSanity --- config/config.go | 24 +++--- config/config_test.go | 167 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 179 insertions(+), 12 deletions(-) diff --git a/config/config.go b/config/config.go index af813b6ce..20842facf 100755 --- a/config/config.go +++ b/config/config.go @@ -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(" 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(" 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) } } } diff --git a/config/config_test.go b/config/config_test.go index 9c2036119..cc56c9ae7 100755 --- a/config/config_test.go +++ b/config/config_test.go @@ -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 := " not enabled but requested by 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 = " not enabled but requested by 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 = " not enabled but requested by 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 = " not enabled but requested by 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 = " not enabled but requested by 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 = " not enabled but requested by 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 = " Cannot find CDR export template with ID: " + 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 = " 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 = " not enabled but referenced from " + 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 = " 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 = " 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) + } +}