From c7004550bd4920bedab9d6e1a7934a507fe9e6e6 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 26 Oct 2018 15:15:44 +0300 Subject: [PATCH] Added tests for AttributeSCfg --- config/attributescfg_test.go | 60 +++++++++++++++++ config/config.go | 121 +++++++++++++++++------------------ 2 files changed, 120 insertions(+), 61 deletions(-) create mode 100644 config/attributescfg_test.go diff --git a/config/attributescfg_test.go b/config/attributescfg_test.go new file mode 100644 index 000000000..3207ddcfb --- /dev/null +++ b/config/attributescfg_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 TestAttributeSCfgloadFromJsonCfg(t *testing.T) { + var attscfg, expected AttributeSCfg + if err := attscfg.loadFromJsonCfg(nil); err != nil { + t.Error(err) + } else if !reflect.DeepEqual(attscfg, expected) { + t.Errorf("Expected: %+v ,recived: %+v", expected, attscfg) + } + if err := attscfg.loadFromJsonCfg(new(AttributeSJsonCfg)); err != nil { + t.Error(err) + } else if !reflect.DeepEqual(attscfg, expected) { + t.Errorf("Expected: %+v ,recived: %+v", expected, attscfg) + } + cfgJSONStr := `{ +"attributes": { // Attribute service + "enabled": true, // starts attribute service: . + //"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 + "process_runs": 1, // number of run loops when processing event + }, +}` + expected = AttributeSCfg{ + Enabled: true, + PrefixIndexedFields: &[]string{"index1", "index2"}, + ProcessRuns: 1, + } + if jsnCfg, err := NewCgrJsonCfgFromReader(strings.NewReader(cfgJSONStr)); err != nil { + t.Error(err) + } else if jsnCacheCfg, err := jsnCfg.AttributeServJsonCfg(); err != nil { + t.Error(err) + } else if err = attscfg.loadFromJsonCfg(jsnCacheCfg); err != nil { + t.Error(err) + } else if !reflect.DeepEqual(expected, attscfg) { + t.Errorf("Expected: %+v , recived: %+v", expected, attscfg) + } +} diff --git a/config/config.go b/config/config.go index 5eb5503c1..c7932853f 100755 --- a/config/config.go +++ b/config/config.go @@ -141,7 +141,6 @@ func NewDefaultCGRConfig() (*CGRConfig, error) { cfg.ralsCfg.RALsMaxComputedUsage = make(map[string]time.Duration) cfg.schedulerCfg = new(SchedulerCfg) cfg.cdrsCfg = new(CdrsCfg) - cfg.cdrStatsCfg = new(CdrStatsCfg) cfg.CdreProfiles = make(map[string]*CdreCfg) cfg.CdrcProfiles = make(map[string][]*CdrcCfg) cfg.analyzerSCfg = new(AnalyzerSCfg) @@ -151,8 +150,12 @@ func NewDefaultCGRConfig() (*CGRConfig, error) { cfg.asteriskAgentCfg = new(AsteriskAgentCfg) cfg.diameterAgentCfg = new(DiameterAgentCfg) cfg.radiusAgentCfg = new(RadiusAgentCfg) + cfg.attributeSCfg = new(AttributeSCfg) + //Depricated + cfg.cdrStatsCfg = new(CdrStatsCfg) cfg.SmOsipsConfig = new(SmOsipsConfig) + cfg.dispatcherSCfg = new(DispatcherSCfg) cfg.ConfigReloads = make(map[string]chan struct{}) cfg.ConfigReloads[utils.CDRC] = make(chan struct{}, 1) @@ -260,28 +263,23 @@ type CGRConfig struct { CdrcProfiles map[string][]*CdrcCfg // Number of CDRC instances running imports, format map[dirPath][]{Configs} loaderCfg []*LoaderSCfg // LoaderS configurations - SmOsipsConfig *SmOsipsConfig // SMOpenSIPS Configuration - httpAgentCfg []*HttpAgentCfg // HttpAgent configuration - PubSubServerEnabled bool // Starts PubSub as server: . - AliasesServerEnabled bool // Starts PubSub as server: . - UserServerEnabled bool // Starts User as server: - UserServerIndexes []string // List of user profile field indexes - attributeSCfg *AttributeSCfg // Attribute service configuration - chargerSCfg *ChargerSCfg - resourceSCfg *ResourceSConfig // Configuration for resource limiter - statsCfg *StatSCfg // Configuration for StatS - thresholdSCfg *ThresholdSCfg // configuration for ThresholdS - supplierSCfg *SupplierSCfg // configuration for SupplierS - dispatcherSCfg *DispatcherSCfg // configuration for Dispatcher - MailerServer string // The server to use when sending emails out - MailerAuthUser string // Authenticate to email server using this user - MailerAuthPass string // Authenticate to email server with this password - MailerFromAddr string // From address used when sending emails out - DataFolderPath string // Path towards data folder, for tests internal usage, not loading out of .json options - sureTaxCfg *SureTaxCfg // Load here SureTax configuration, as pointer so we can have runtime reloads in the future - ConfigReloads map[string]chan struct{} // Signals to specific entities that a config reload should occur - LoaderCgrConfig *LoaderCgrCfg - MigratorCgrConfig *MigratorCgrCfg + httpAgentCfg []*HttpAgentCfg // HttpAgent configuration + + chargerSCfg *ChargerSCfg + resourceSCfg *ResourceSConfig // Configuration for resource limiter + statsCfg *StatSCfg // Configuration for StatS + thresholdSCfg *ThresholdSCfg // configuration for ThresholdS + supplierSCfg *SupplierSCfg // configuration for SupplierS + dispatcherSCfg *DispatcherSCfg // configuration for Dispatcher + MailerServer string // The server to use when sending emails out + MailerAuthUser string // Authenticate to email server using this user + MailerAuthPass string // Authenticate to email server with this password + MailerFromAddr string // From address used when sending emails out + DataFolderPath string // Path towards data folder, for tests internal usage, not loading out of .json options + sureTaxCfg *SureTaxCfg // Load here SureTax configuration, as pointer so we can have runtime reloads in the future + ConfigReloads map[string]chan struct{} // Signals to specific entities that a config reload should occur + LoaderCgrConfig *LoaderCgrCfg + MigratorCgrConfig *MigratorCgrCfg // Cache defaults loaded from json and needing clones dfltCdreProfile *CdreCfg // Default cdreConfig profile @@ -298,14 +296,22 @@ type CGRConfig struct { ralsCfg *RalsCfg // Rals config schedulerCfg *SchedulerCfg // Scheduler config cdrsCfg *CdrsCfg // Cdrs config - cdrStatsCfg *CdrStatsCfg // CdrStats config - deprecated sessionSCfg *SessionSCfg // SessionS config fsAgentCfg *FsAgentCfg // FreeSWITCHAgent config kamAgentCfg *KamAgentCfg // KamailioAgent config asteriskAgentCfg *AsteriskAgentCfg // AsteriskAgent config diameterAgentCfg *DiameterAgentCfg // DiameterAgent config radiusAgentCfg *RadiusAgentCfg // RadiusAgent config + attributeSCfg *AttributeSCfg // AttributeS config analyzerSCfg *AnalyzerSCfg + + // Deprecated + cdrStatsCfg *CdrStatsCfg // CdrStats config + SmOsipsConfig *SmOsipsConfig // SMOpenSIPS Configuration + PubSubServerEnabled bool // Starts PubSub as server: . + AliasesServerEnabled bool // Starts PubSub as server: . + UserServerEnabled bool // Starts User as server: + UserServerIndexes []string // List of user profile field indexes } func (self *CGRConfig) checkConfigSanity() error { @@ -797,14 +803,6 @@ func (self *CGRConfig) loadFromJsonCfg(jsnCfg *CgrJsonCfg) (err error) { return err } - jsnCdrstatsCfg, err := jsnCfg.CdrStatsJsonCfg() - if err != nil { - return err - } - if err := self.cdrStatsCfg.loadFromJsonCfg(jsnCdrstatsCfg); err != nil { - return err - } - jsnCdreCfg, err := jsnCfg.CdreJsonCfgs() if err != nil { return err @@ -868,25 +866,13 @@ func (self *CGRConfig) loadFromJsonCfg(jsnCfg *CgrJsonCfg) (err error) { return err } - jsnPubSubServCfg, err := jsnCfg.PubSubServJsonCfg() - if err != nil { - return err - } - - jsnAliasesServCfg, err := jsnCfg.AliasesServJsonCfg() - if err != nil { - return err - } - - jsnUserServCfg, err := jsnCfg.UserServJsonCfg() - if err != nil { - return err - } - jsnAttributeSCfg, err := jsnCfg.AttributeServJsonCfg() if err != nil { return err } + if self.attributeSCfg.loadFromJsonCfg(jsnAttributeSCfg); err != nil { + return err + } jsnChargerSCfg, err := jsnCfg.ChargerServJsonCfg() if err != nil { @@ -1033,26 +1019,48 @@ func (self *CGRConfig) loadFromJsonCfg(jsnCfg *CgrJsonCfg) (err error) { } } + //Depricated + jsnCdrstatsCfg, err := jsnCfg.CdrStatsJsonCfg() + if err != nil { + return err + } + if err := self.cdrStatsCfg.loadFromJsonCfg(jsnCdrstatsCfg); err != nil { + return err + } + + jsnPubSubServCfg, err := jsnCfg.PubSubServJsonCfg() + if err != nil { + return err + } if jsnPubSubServCfg != nil { if jsnPubSubServCfg.Enabled != nil { self.PubSubServerEnabled = *jsnPubSubServCfg.Enabled } } + jsnAliasesServCfg, err := jsnCfg.AliasesServJsonCfg() + if err != nil { + return err + } if jsnAliasesServCfg != nil { if jsnAliasesServCfg.Enabled != nil { self.AliasesServerEnabled = *jsnAliasesServCfg.Enabled } } - if jsnAttributeSCfg != nil { - if self.attributeSCfg == nil { - self.attributeSCfg = new(AttributeSCfg) + jsnUserServCfg, err := jsnCfg.UserServJsonCfg() + if err != nil { + return err + } + if jsnUserServCfg != nil { + if jsnUserServCfg.Enabled != nil { + self.UserServerEnabled = *jsnUserServCfg.Enabled } - if self.attributeSCfg.loadFromJsonCfg(jsnAttributeSCfg); err != nil { - return err + if jsnUserServCfg.Indexes != nil { + self.UserServerIndexes = *jsnUserServCfg.Indexes } } + ///depricated^^^ if jsnChargerSCfg != nil { if self.chargerSCfg == nil { @@ -1099,15 +1107,6 @@ func (self *CGRConfig) loadFromJsonCfg(jsnCfg *CgrJsonCfg) (err error) { } } - if jsnUserServCfg != nil { - if jsnUserServCfg.Enabled != nil { - self.UserServerEnabled = *jsnUserServCfg.Enabled - } - if jsnUserServCfg.Indexes != nil { - self.UserServerIndexes = *jsnUserServCfg.Indexes - } - } - if jsnMailerCfg != nil { if jsnMailerCfg.Server != nil { self.MailerServer = *jsnMailerCfg.Server