mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-21 07:08:45 +05:00
Added tests for AttributeSCfg
This commit is contained in:
committed by
Dan Christian Bogos
parent
6462eafd92
commit
c7004550bd
60
config/attributescfg_test.go
Normal file
60
config/attributescfg_test.go
Normal 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)
|
||||
}
|
||||
}
|
||||
121
config/config.go
121
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: <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
|
||||
|
||||
Reference in New Issue
Block a user