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)
+ }
+}