diff --git a/config/configsanity.go b/config/configsanity.go
index 449ffc0fe..82974db14 100644
--- a/config/configsanity.go
+++ b/config/configsanity.go
@@ -19,7 +19,6 @@ along with this program. If not, see
package config
import (
- "errors"
"fmt"
"os"
@@ -189,7 +188,7 @@ func (cfg *CGRConfig) checkConfigSanity() error {
if !cfg.cdrsCfg.Enabled {
for _, smgCDRSConn := range cfg.sessionSCfg.CDRsConns {
if smgCDRSConn.Address == utils.MetaInternal {
- return fmt.Errorf("<%s> CDRS not enabled but referenced by SMGeneric component", utils.SessionS)
+ return fmt.Errorf("<%s> CDRS not enabled but referenced by SMGeneric component.", utils.SessionS)
}
}
}
@@ -208,7 +207,7 @@ func (cfg *CGRConfig) checkConfigSanity() error {
!cfg.sessionSCfg.Enabled {
for _, connCfg := range cfg.fsAgentCfg.SessionSConns {
if connCfg.Address == utils.MetaInternal {
- return fmt.Errorf("%s not enabled but referenced by %s",
+ return fmt.Errorf("<%s> not enabled but referenced by <%s>",
utils.SessionS, utils.FreeSWITCHAgent)
}
}
@@ -224,7 +223,7 @@ func (cfg *CGRConfig) checkConfigSanity() error {
!cfg.sessionSCfg.Enabled {
for _, connCfg := range cfg.kamAgentCfg.SessionSConns {
if connCfg.Address == utils.MetaInternal {
- return fmt.Errorf("%s not enabled but referenced by %s",
+ return fmt.Errorf("<%s> not enabled but referenced by <%s>",
utils.SessionS, utils.KamailioAgent)
}
}
@@ -240,7 +239,7 @@ func (cfg *CGRConfig) checkConfigSanity() error {
!cfg.sessionSCfg.Enabled {
for _, smAstSMGConn := range cfg.asteriskAgentCfg.SessionSConns {
if smAstSMGConn.Address == utils.MetaInternal {
- return fmt.Errorf("%s not enabled but referenced by %s",
+ return fmt.Errorf("<%s> not enabled but referenced by <%s>",
utils.SessionS, utils.AsteriskAgent)
}
}
@@ -256,12 +255,13 @@ func (cfg *CGRConfig) checkConfigSanity() error {
!cfg.sessionSCfg.Enabled {
for _, daSMGConn := range cfg.diameterAgentCfg.SessionSConns {
if daSMGConn.Address == utils.MetaInternal {
- return fmt.Errorf("%s not enabled but referenced by %s",
+ return fmt.Errorf("<%s> not enabled but referenced by <%s>",
utils.SessionS, utils.DiameterAgent)
}
}
}
}
+ //Radius Agent
if cfg.radiusAgentCfg.Enabled {
if len(cfg.radiusAgentCfg.SessionSConns) == 0 {
return fmt.Errorf("<%s> no %s connections defined",
@@ -271,12 +271,13 @@ func (cfg *CGRConfig) checkConfigSanity() error {
!cfg.sessionSCfg.Enabled {
for _, raSMGConn := range cfg.radiusAgentCfg.SessionSConns {
if raSMGConn.Address == utils.MetaInternal {
- return fmt.Errorf("%s not enabled but referenced by %s",
+ return fmt.Errorf("<%s> not enabled but referenced by <%s>",
utils.SessionS, utils.RadiusAgent)
}
}
}
}
+ //DNS Agent
if cfg.dnsAgentCfg.Enabled {
if len(cfg.dnsAgentCfg.SessionSConns) == 0 {
return fmt.Errorf("<%s> no %s connections defined",
@@ -286,7 +287,7 @@ func (cfg *CGRConfig) checkConfigSanity() error {
!cfg.sessionSCfg.Enabled {
for _, sSConn := range cfg.dnsAgentCfg.SessionSConns {
if sSConn.Address == utils.MetaInternal {
- return fmt.Errorf("%s not enabled but referenced by %s", utils.SessionS, utils.DNSAgent)
+ return fmt.Errorf("<%s> not enabled but referenced by <%s>", utils.SessionS, utils.DNSAgent)
}
}
}
@@ -298,17 +299,15 @@ func (cfg *CGRConfig) checkConfigSanity() error {
cfg.sessionSCfg.Enabled {
for _, sSConn := range httpAgentCfg.SessionSConns {
if sSConn.Address == utils.MetaInternal {
- return errors.New("SessionS not enabled but referenced by HttpAgent component")
+ return fmt.Errorf("<%s> not enabled but referenced by <%s> component", utils.SessionS, utils.HTTPAgent)
}
}
}
if !utils.SliceHasMember([]string{utils.MetaUrl, utils.MetaXml}, httpAgentCfg.RequestPayload) {
- return fmt.Errorf("<%s> unsupported request payload %s",
- utils.HTTPAgent, httpAgentCfg.RequestPayload)
+ return fmt.Errorf("<%s> unsupported request payload %s", utils.HTTPAgent, httpAgentCfg.RequestPayload)
}
if !utils.SliceHasMember([]string{utils.MetaTextPlain, utils.MetaXml}, httpAgentCfg.ReplyPayload) {
- return fmt.Errorf("<%s> unsupported reply payload %s",
- utils.HTTPAgent, httpAgentCfg.ReplyPayload)
+ return fmt.Errorf("<%s> unsupported reply payload %s", utils.HTTPAgent, httpAgentCfg.ReplyPayload)
}
}
if cfg.attributeSCfg.Enabled {
@@ -320,7 +319,7 @@ func (cfg *CGRConfig) checkConfigSanity() error {
(cfg.attributeSCfg == nil || !cfg.attributeSCfg.Enabled) {
for _, connCfg := range cfg.chargerSCfg.AttributeSConns {
if connCfg.Address == utils.MetaInternal {
- return errors.New("AttributeS not enabled but requested by ChargerS component.")
+ return fmt.Errorf("<%s> not enabled but requested by <%s> component.", utils.AttributeS, utils.ChargerS)
}
}
}
@@ -328,7 +327,7 @@ func (cfg *CGRConfig) checkConfigSanity() error {
if cfg.resourceSCfg.Enabled && !cfg.thresholdSCfg.Enabled && !cfg.dispatcherSCfg.Enabled {
for _, connCfg := range cfg.resourceSCfg.ThresholdSConns {
if connCfg.Address == utils.MetaInternal {
- return errors.New("ThresholdS not enabled but requested by ResourceS component.")
+ return fmt.Errorf("<%s> not enabled but requested by <%s> component.", utils.ThresholdS, utils.ResourceS)
}
}
}
@@ -336,7 +335,7 @@ func (cfg *CGRConfig) checkConfigSanity() error {
if cfg.statsCfg.Enabled && !cfg.thresholdSCfg.Enabled && !cfg.dispatcherSCfg.Enabled {
for _, connCfg := range cfg.statsCfg.ThresholdSConns {
if connCfg.Address == utils.MetaInternal {
- return errors.New("ThresholdS not enabled but requested by StatS component.")
+ return fmt.Errorf("<%s> not enabled but requested by <%s> component.", utils.ThresholdS, utils.StatService)
}
}
}
@@ -345,21 +344,21 @@ func (cfg *CGRConfig) checkConfigSanity() error {
if !cfg.resourceSCfg.Enabled {
for _, connCfg := range cfg.supplierSCfg.ResourceSConns {
if connCfg.Address == utils.MetaInternal {
- return errors.New("ResourceS not enabled but requested by SupplierS component.")
+ return fmt.Errorf("<%s> not enabled but requested by <%s> component.", utils.ResourceS, utils.SupplierS)
}
}
}
if !cfg.statsCfg.Enabled {
for _, connCfg := range cfg.supplierSCfg.StatSConns {
if connCfg.Address == utils.MetaInternal {
- return errors.New("StatS not enabled but requested by SupplierS component.")
+ return fmt.Errorf("<%s> not enabled but requested by <%s> component.", utils.StatService, utils.SupplierS)
}
}
}
if !cfg.attributeSCfg.Enabled {
for _, connCfg := range cfg.supplierSCfg.AttributeSConns {
if connCfg.Address == utils.MetaInternal {
- return errors.New("AttributeS not enabled but requested by SupplierS component.")
+ return fmt.Errorf("<%s> not enabled but requested by <%s> component.", utils.AttributeS, utils.SupplierS)
}
}
}
@@ -368,7 +367,7 @@ func (cfg *CGRConfig) checkConfigSanity() error {
if !cfg.cdrsCfg.Enabled && !cfg.dispatcherSCfg.Enabled {
for _, connCfg := range cfg.schedulerCfg.CDRsConns {
if connCfg.Address == utils.MetaInternal {
- return errors.New("CDR Server not enabled but requested by Scheduler")
+ return fmt.Errorf("%s Server not enabled but requested by %s", utils.CDR, utils.SchedulerS)
}
}
}
@@ -377,7 +376,7 @@ func (cfg *CGRConfig) checkConfigSanity() error {
if !cfg.sessionSCfg.Enabled {
for _, connCfg := range cfg.ersCfg.SessionSConns {
if connCfg.Address == utils.MetaInternal {
- return errors.New("SessionS not enabled but requested by EventReader component.")
+ return fmt.Errorf("<%s> not enabled but requested by EventReader component.", utils.SessionS)
}
}
}
diff --git a/config/configsanity_test.go b/config/configsanity_test.go
index e6f34c882..02c03990e 100644
--- a/config/configsanity_test.go
+++ b/config/configsanity_test.go
@@ -165,3 +165,526 @@ func TestConfigSanityCDRC(t *testing.T) {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
}
+
+func TestConfigSanityLoaders(t *testing.T) {
+ cfg, _ = NewDefaultCGRConfig()
+ cfg.loaderCfg = LoaderSCfgs{
+ &LoaderSCfg{
+ Enabled: true,
+ TpInDir: "/not/exist",
+ Data: []*LoaderDataType{
+ &LoaderDataType{
+ Type: "strsdfing",
+ },
+ },
+ },
+ }
+ expected := " Nonexistent folder: /not/exist"
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+
+ cfg.loaderCfg = LoaderSCfgs{
+ &LoaderSCfg{
+ Enabled: true,
+ TpInDir: "/usr/share/cgrates",
+ TpOutDir: "/usr/share/cgrates",
+ Data: []*LoaderDataType{
+ &LoaderDataType{
+ Type: "wrongtype",
+ },
+ },
+ },
+ }
+ expected = " unsupported data type wrongtype"
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+
+ cfg.loaderCfg = LoaderSCfgs{
+ &LoaderSCfg{
+ Enabled: true,
+ TpInDir: "/usr/share/cgrates",
+ TpOutDir: "/usr/share/cgrates",
+ Data: []*LoaderDataType{
+ &LoaderDataType{
+ Type: utils.MetaStats,
+ Fields: []*FCTemplate{
+ &FCTemplate{
+ Type: utils.MetaStats,
+ Tag: "test1",
+ },
+ },
+ },
+ },
+ },
+ }
+ expected = " invalid field type *stats for *stats at test1"
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+}
+
+func TestConfigSanitySessionS(t *testing.T) {
+ cfg, _ = NewDefaultCGRConfig()
+ cfg.sessionSCfg = &SessionSCfg{
+ Enabled: true,
+ TerminateAttempts: 0,
+ }
+ expected := " 'terminate_attempts' should be at least 1"
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+ cfg.sessionSCfg.TerminateAttempts = 1
+
+ cfg.sessionSCfg.ChargerSConns = []*RemoteHost{
+ &RemoteHost{
+ Address: utils.MetaInternal,
+ },
+ }
+ expected = " ChargerS not enabled"
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+ cfg.chargerSCfg.Enabled = true
+
+ cfg.sessionSCfg.RALsConns = []*RemoteHost{
+ &RemoteHost{
+ Address: utils.MetaInternal,
+ },
+ }
+ expected = " RALs not enabled but requested by SMGeneric component."
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+ cfg.ralsCfg.Enabled = true
+
+ cfg.sessionSCfg.ResSConns = []*RemoteHost{
+ &RemoteHost{
+ Address: utils.MetaInternal,
+ },
+ }
+ expected = " ResourceS not enabled but requested by SMGeneric component."
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+ cfg.resourceSCfg.Enabled = true
+
+ cfg.sessionSCfg.ThreshSConns = []*RemoteHost{
+ &RemoteHost{
+ Address: utils.MetaInternal,
+ },
+ }
+ expected = " ThresholdS not enabled but requested by SMGeneric component."
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+ cfg.thresholdSCfg.Enabled = true
+
+ cfg.sessionSCfg.StatSConns = []*RemoteHost{
+ &RemoteHost{
+ Address: utils.MetaInternal,
+ },
+ }
+ expected = " Stats not enabled but requested by SMGeneric component."
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+ cfg.statsCfg.Enabled = true
+
+ cfg.sessionSCfg.SupplSConns = []*RemoteHost{
+ &RemoteHost{
+ Address: utils.MetaInternal,
+ },
+ }
+ expected = " SupplierS not enabled but requested by SMGeneric component."
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+ cfg.supplierSCfg.Enabled = true
+
+ cfg.sessionSCfg.AttrSConns = []*RemoteHost{
+ &RemoteHost{
+ Address: utils.MetaInternal,
+ },
+ }
+ expected = " AttributeS not enabled but requested by SMGeneric component."
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+ cfg.attributeSCfg.Enabled = true
+
+ cfg.sessionSCfg.CDRsConns = []*RemoteHost{
+ &RemoteHost{
+ Address: utils.MetaInternal,
+ },
+ }
+ expected = " CDRS not enabled but referenced by SMGeneric component."
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+ cfg.cdrsCfg.Enabled = true
+
+ cfg.cacheCfg[utils.CacheClosedSessions].Limit = 0
+ expected = " *closed_sessions needs to be != 0, received: 0"
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+
+}
+
+func TestConfigSanityFreeSWITCHAgent(t *testing.T) {
+ cfg, _ = NewDefaultCGRConfig()
+ cfg.fsAgentCfg = &FsAgentCfg{
+ Enabled: true,
+ }
+
+ expected := " no SessionS connections defined"
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+
+ cfg.fsAgentCfg = &FsAgentCfg{
+ Enabled: true,
+ SessionSConns: []*RemoteHost{
+ &RemoteHost{
+ Address: utils.MetaInternal,
+ },
+ },
+ }
+ expected = " not enabled but referenced by "
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+}
+
+func TestConfigSanityKamailioAgent(t *testing.T) {
+ cfg, _ = NewDefaultCGRConfig()
+ cfg.kamAgentCfg = &KamAgentCfg{
+ Enabled: true,
+ }
+ expected := " no SessionS connections defined"
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+
+ cfg.kamAgentCfg.SessionSConns = []*RemoteHost{
+ &RemoteHost{
+ Address: utils.MetaInternal,
+ },
+ }
+ expected = " not enabled but referenced by "
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+}
+
+func TestConfigSanityAsteriskAgent(t *testing.T) {
+ cfg, _ = NewDefaultCGRConfig()
+ cfg.asteriskAgentCfg = &AsteriskAgentCfg{
+ Enabled: true,
+ }
+ expected := " no SessionS connections defined"
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+
+ cfg.asteriskAgentCfg.SessionSConns = []*RemoteHost{
+ &RemoteHost{
+ Address: utils.MetaInternal,
+ },
+ }
+ expected = " not enabled but referenced by "
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+}
+
+func TestConfigSanityDAgent(t *testing.T) {
+ cfg, _ = NewDefaultCGRConfig()
+ cfg.diameterAgentCfg = &DiameterAgentCfg{
+ Enabled: true,
+ }
+ expected := " no SessionS connections defined"
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+
+ cfg.diameterAgentCfg.SessionSConns = []*RemoteHost{
+ &RemoteHost{
+ Address: utils.MetaInternal,
+ },
+ }
+ expected = " not enabled but referenced by "
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+}
+
+func TestConfigSanityRadiusAgent(t *testing.T) {
+ cfg, _ = NewDefaultCGRConfig()
+ cfg.radiusAgentCfg = &RadiusAgentCfg{
+ Enabled: true,
+ }
+ expected := " no SessionS connections defined"
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+
+ cfg.radiusAgentCfg.SessionSConns = []*RemoteHost{
+ &RemoteHost{
+ Address: utils.MetaInternal,
+ },
+ }
+ expected = " not enabled but referenced by "
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+}
+
+func TestConfigSanityDNSAgent(t *testing.T) {
+ cfg, _ = NewDefaultCGRConfig()
+ cfg.dnsAgentCfg = &DNSAgentCfg{
+ Enabled: true,
+ }
+ expected := " no SessionS connections defined"
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+
+ cfg.dnsAgentCfg.SessionSConns = []*RemoteHost{
+ &RemoteHost{
+ Address: utils.MetaInternal,
+ },
+ }
+ expected = " not enabled but referenced by "
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+}
+
+func TestConfigSanityHTTPAgent(t *testing.T) {
+ cfg, _ = NewDefaultCGRConfig()
+ cfg.sessionSCfg.Enabled = true
+ cfg.httpAgentCfg = HttpAgentCfgs{
+ &HttpAgentCfg{
+ SessionSConns: []*RemoteHost{
+ &RemoteHost{
+ Address: utils.MetaInternal,
+ },
+ },
+ },
+ }
+ expected := " not enabled but referenced by component"
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+ cfg.sessionSCfg.Enabled = false
+
+ cfg.httpAgentCfg = HttpAgentCfgs{
+ &HttpAgentCfg{
+ RequestPayload: "test",
+ },
+ }
+ expected = " unsupported request payload test"
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+
+ cfg.httpAgentCfg = HttpAgentCfgs{
+ &HttpAgentCfg{
+ RequestPayload: utils.MetaUrl,
+ ReplyPayload: "test",
+ },
+ }
+ expected = " unsupported reply payload test"
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+ cfg.httpAgentCfg[0].ReplyPayload = utils.MetaTextPlain
+
+ cfg.attributeSCfg = &AttributeSCfg{
+ Enabled: true,
+ ProcessRuns: 0,
+ }
+ expected = " process_runs needs to be bigger than 0"
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+ cfg.attributeSCfg = &AttributeSCfg{
+ ProcessRuns: 1,
+ Enabled: false,
+ }
+
+ cfg.chargerSCfg.Enabled = true
+ cfg.chargerSCfg.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)
+ }
+}
+
+func TestConfigSanityResourceLimiter(t *testing.T) {
+ cfg, _ = NewDefaultCGRConfig()
+ cfg.resourceSCfg = &ResourceSConfig{
+ Enabled: true,
+ 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)
+ }
+}
+
+func TestConfigSanityStatS(t *testing.T) {
+ cfg, _ = NewDefaultCGRConfig()
+ cfg.statsCfg = &StatSCfg{
+ Enabled: true,
+ 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)
+ }
+}
+
+func TestConfigSanitySupplierS(t *testing.T) {
+ cfg, _ = NewDefaultCGRConfig()
+ cfg.supplierSCfg.Enabled = true
+
+ cfg.supplierSCfg.ResourceSConns = []*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.resourceSCfg.Enabled = true
+
+ cfg.supplierSCfg.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.supplierSCfg.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)
+ }
+}
+
+func TestConfigSanityScheduler(t *testing.T) {
+ cfg, _ = NewDefaultCGRConfig()
+ cfg.schedulerCfg = &SchedulerCfg{
+ Enabled: true,
+ CDRsConns: []*RemoteHost{
+ &RemoteHost{
+ Address: utils.MetaInternal,
+ },
+ },
+ }
+ expected := "CDR Server not enabled but requested by SchedulerS"
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+
+}
+
+func TestConfigSanityEventReader(t *testing.T) {
+ cfg, _ = NewDefaultCGRConfig()
+ cfg.ersCfg = &ERsCfg{
+ Enabled: true,
+ SessionSConns: []*RemoteHost{
+ &RemoteHost{
+ Address: utils.MetaInternal,
+ },
+ },
+ }
+ expected := " not enabled but requested by EventReader component."
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+ cfg.sessionSCfg.Enabled = true
+
+ cfg.ersCfg.Readers = []*EventReaderCfg{
+ &EventReaderCfg{
+ ID: "test",
+ Type: "wrongtype",
+ },
+ }
+ expected = " unsupported data type: wrongtype for reader with ID: test"
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+
+ cfg.ersCfg.Readers = []*EventReaderCfg{
+ &EventReaderCfg{
+ ID: "test2",
+ Type: utils.MetaFileCSV,
+ ProcessedPath: "not/a/path",
+ },
+ }
+ expected = " Nonexistent folder: not/a/path for reader with ID: test2"
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+
+ cfg.ersCfg.Readers = []*EventReaderCfg{
+ &EventReaderCfg{
+ ID: "test3",
+ Type: utils.MetaFileCSV,
+ ProcessedPath: "/usr/share/cgrates",
+ SourcePath: "/usr/share/cgrates",
+ FieldSep: "",
+ },
+ }
+ expected = " empty FieldSep for reader with ID: test3"
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+ cfg.ersCfg.Readers[0].FieldSep = utils.InInFieldSep
+
+ cfg.ersCfg.Readers[0].ID = "test4"
+ cfg.ersCfg.Readers[0].Type = utils.MetaKafkajsonMap
+ cfg.ersCfg.Readers[0].RunDelay = 1
+ expected = " RunDelay field can not be bigger than zero for reader with ID: test4"
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+}
+
+func TestConfigSanityStorDB(t *testing.T) {
+ cfg, _ = NewDefaultCGRConfig()
+ cfg.storDbCfg = &StorDbCfg{
+ Type: utils.POSTGRES,
+ SSLMode: "wrongSSLMode",
+ }
+ expected := " Unsuported sslmode for storDB"
+ if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
+ t.Errorf("Expecting: %+q received: %+q", expected, err)
+ }
+}