diff --git a/config/chargerscfg_test.go b/config/chargerscfg_test.go new file mode 100644 index 000000000..42298e680 --- /dev/null +++ b/config/chargerscfg_test.go @@ -0,0 +1,60 @@ +/* +Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments +Copyright (C) ITsysCOM GmbH + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see +*/ +package config + +import ( + "reflect" + "strings" + "testing" +) + +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) + } + 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": ["index1", "index2"], // query indexes based on these fields for faster processing +}, +}` + expected = ChargerSCfg{ + Enabled: true, + AttributeSConns: []*HaPoolConfig{}, + PrefixIndexedFields: &[]string{"index1", "index2"}, + } + if jsnCfg, err := NewCgrJsonCfgFromReader(strings.NewReader(cfgJSONStr)); err != nil { + t.Error(err) + } else if jsnCacheCfg, err := jsnCfg.ChargerServJsonCfg(); err != nil { + t.Error(err) + } else if err = chgscfg.loadFromJsonCfg(jsnCacheCfg); err != nil { + t.Error(err) + } else if !reflect.DeepEqual(expected, chgscfg) { + t.Errorf("Expected: %+v , recived: %+v", expected, chgscfg) + } +} diff --git a/config/config.go b/config/config.go index c7932853f..e95c95f5f 100755 --- a/config/config.go +++ b/config/config.go @@ -151,6 +151,7 @@ func NewDefaultCGRConfig() (*CGRConfig, error) { cfg.diameterAgentCfg = new(DiameterAgentCfg) cfg.radiusAgentCfg = new(RadiusAgentCfg) cfg.attributeSCfg = new(AttributeSCfg) + cfg.chargerSCfg = new(ChargerSCfg) //Depricated cfg.cdrStatsCfg = new(CdrStatsCfg) @@ -265,7 +266,6 @@ type CGRConfig struct { httpAgentCfg []*HttpAgentCfg // HttpAgent configuration - chargerSCfg *ChargerSCfg resourceSCfg *ResourceSConfig // Configuration for resource limiter statsCfg *StatSCfg // Configuration for StatS thresholdSCfg *ThresholdSCfg // configuration for ThresholdS @@ -303,6 +303,7 @@ type CGRConfig struct { diameterAgentCfg *DiameterAgentCfg // DiameterAgent config radiusAgentCfg *RadiusAgentCfg // RadiusAgent config attributeSCfg *AttributeSCfg // AttributeS config + chargerSCfg *ChargerSCfg // ChargerS config analyzerSCfg *AnalyzerSCfg // Deprecated @@ -878,6 +879,9 @@ func (self *CGRConfig) loadFromJsonCfg(jsnCfg *CgrJsonCfg) (err error) { if err != nil { return err } + if self.chargerSCfg.loadFromJsonCfg(jsnChargerSCfg); err != nil { + return err + } jsnRLSCfg, err := jsnCfg.ResourceSJsonCfg() if err != nil { @@ -1062,15 +1066,6 @@ func (self *CGRConfig) loadFromJsonCfg(jsnCfg *CgrJsonCfg) (err error) { } ///depricated^^^ - if jsnChargerSCfg != nil { - if self.chargerSCfg == nil { - self.chargerSCfg = new(ChargerSCfg) - } - if self.chargerSCfg.loadFromJsonCfg(jsnChargerSCfg); err != nil { - return err - } - } - if jsnRLSCfg != nil { if self.resourceSCfg == nil { self.resourceSCfg = new(ResourceSConfig)