Added tests for AttributeSCfg

This commit is contained in:
Trial97
2018-10-26 15:15:44 +03:00
committed by Dan Christian Bogos
parent 6462eafd92
commit c7004550bd
2 changed files with 120 additions and 61 deletions

View File

@@ -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 <http://www.gnu.org/licenses/>
*/
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: <true|false>.
//"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)
}
}

View File

@@ -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: <true|false>.
AliasesServerEnabled bool // Starts PubSub as server: <true|false>.
UserServerEnabled bool // Starts User as server: <true|false>
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: <true|false>.
AliasesServerEnabled bool // Starts PubSub as server: <true|false>.
UserServerEnabled bool // Starts User as server: <true|false>
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