diff --git a/config/config.go b/config/config.go index 7b938f1fb..00a1c20fc 100755 --- a/config/config.go +++ b/config/config.go @@ -153,6 +153,7 @@ func NewDefaultCGRConfig() (*CGRConfig, error) { cfg.attributeSCfg = new(AttributeSCfg) cfg.chargerSCfg = new(ChargerSCfg) cfg.resourceSCfg = new(ResourceSConfig) + cfg.statsCfg = new(StatSCfg) //Depricated cfg.cdrStatsCfg = new(CdrStatsCfg) @@ -267,7 +268,6 @@ type CGRConfig struct { httpAgentCfg []*HttpAgentCfg // HttpAgent configuration - statsCfg *StatSCfg // Configuration for StatS thresholdSCfg *ThresholdSCfg // configuration for ThresholdS supplierSCfg *SupplierSCfg // configuration for SupplierS dispatcherSCfg *DispatcherSCfg // configuration for Dispatcher @@ -305,6 +305,7 @@ type CGRConfig struct { attributeSCfg *AttributeSCfg // AttributeS config chargerSCfg *ChargerSCfg // ChargerS config resourceSCfg *ResourceSConfig // ResourceS config + statsCfg *StatSCfg // StatS config analyzerSCfg *AnalyzerSCfg // Deprecated @@ -896,6 +897,9 @@ func (self *CGRConfig) loadFromJsonCfg(jsnCfg *CgrJsonCfg) (err error) { if err != nil { return err } + if self.statsCfg.loadFromJsonCfg(jsnStatSCfg); err != nil { + return err + } jsnThresholdSCfg, err := jsnCfg.ThresholdSJsonCfg() if err != nil { @@ -1070,15 +1074,6 @@ func (self *CGRConfig) loadFromJsonCfg(jsnCfg *CgrJsonCfg) (err error) { } ///depricated^^^ - if jsnStatSCfg != nil { - if self.statsCfg == nil { - self.statsCfg = new(StatSCfg) - } - if self.statsCfg.loadFromJsonCfg(jsnStatSCfg); err != nil { - return err - } - } - if jsnThresholdSCfg != nil { if self.thresholdSCfg == nil { self.thresholdSCfg = new(ThresholdSCfg) diff --git a/config/statscfg_test.go b/config/statscfg_test.go new file mode 100644 index 000000000..7a20bd52f --- /dev/null +++ b/config/statscfg_test.go @@ -0,0 +1,62 @@ +/* +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" + "time" +) + +func TestStatSCfgloadFromJsonCfg(t *testing.T) { + var statscfg, expected StatSCfg + if err := statscfg.loadFromJsonCfg(nil); err != nil { + t.Error(err) + } else if !reflect.DeepEqual(statscfg, expected) { + t.Errorf("Expected: %+v ,recived: %+v", expected, statscfg) + } + if err := statscfg.loadFromJsonCfg(new(StatServJsonCfg)); err != nil { + t.Error(err) + } else if !reflect.DeepEqual(statscfg, expected) { + t.Errorf("Expected: %+v ,recived: %+v", expected, statscfg) + } + cfgJSONStr := `{ +"stats": { // Stat service (*new) + "enabled": false, // starts Stat service: . + "store_interval": "2s", // dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|$dur> + "thresholds_conns": [], // address where to reach the thresholds service, empty to disable thresholds functionality: <""|*internal|x.y.z.y:1234> + //"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 = StatSCfg{ + StoreInterval: time.Duration(time.Second * 2), + ThresholdSConns: []*HaPoolConfig{}, + PrefixIndexedFields: &[]string{"index1", "index2"}, + } + if jsnCfg, err := NewCgrJsonCfgFromReader(strings.NewReader(cfgJSONStr)); err != nil { + t.Error(err) + } else if jsnStatSCfg, err := jsnCfg.StatSJsonCfg(); err != nil { + t.Error(err) + } else if err = statscfg.loadFromJsonCfg(jsnStatSCfg); err != nil { + t.Error(err) + } else if !reflect.DeepEqual(expected, statscfg) { + t.Errorf("Expected: %+v , recived: %+v", expected, statscfg) + } +}