diff --git a/apis/config_test.go b/apis/config_test.go
index 31a769ef9..7f4d24dfd 100644
--- a/apis/config_test.go
+++ b/apis/config_test.go
@@ -19,7 +19,6 @@ along with this program. If not, see
package apis
import (
- "path"
"reflect"
"testing"
@@ -41,9 +40,23 @@ func TestConfigNewConfigSv1(t *testing.T) {
}
func TestConfigSetGetConfig(t *testing.T) {
- //for coverage purposes only
- cfgTestPath := path.Join(*dataDir, "conf", "samples", "tutinternal")
- cfg, err := config.NewCGRConfigFromPath(context.Background(), cfgTestPath)
+ cfgJSONStr := `{
+"attributes": {
+ "enabled": true,
+ "stats_conns": ["*internal"],
+ "resources_conns": ["*internal"],
+ "accounts_conns": ["*internal"],
+ "prefix_indexed_fields": ["index1","index2"],
+ "opts": {
+ "*processRuns": [
+ {
+ "Value": 3,
+ },
+ ],
+ },
+ },
+}`
+ cfg, err := config.NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr)
if err != nil {
t.Error(err)
}
@@ -65,19 +78,23 @@ func TestConfigSetGetConfig(t *testing.T) {
err = rlcCfg.GetConfig(context.Background(), argsGet, &replyGet)
expectedGet := map[string]interface{}{
"attributes": map[string]interface{}{
- "accounts_conns": []string{"*localhost"},
+ "accounts_conns": []string{"*internal"},
"enabled": true,
"indexed_selects": true,
"nested_fields": false,
- "prefix_indexed_fields": []string{},
- "resources_conns": []string{"*localhost"},
- "stats_conns": []string{"*localhost"},
+ "prefix_indexed_fields": []string{"index1", "index2"},
+ "resources_conns": []string{"*internal"},
+ "stats_conns": []string{"*internal"},
"suffix_indexed_fields": []string{},
"exists_indexed_fields": []string{},
"notexists_indexed_fields": []string{},
utils.OptsCfg: map[string]interface{}{
- utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{},
- utils.MetaProcessRunsCfg: []*utils.DynamicIntOpt{},
+ utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{},
+ utils.MetaProcessRunsCfg: []*utils.DynamicIntOpt{
+ {
+ Value: 3,
+ },
+ },
utils.MetaProfileRunsCfg: []*utils.DynamicIntOpt{},
utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{},
},
@@ -92,13 +109,7 @@ func TestConfigSetGetConfig(t *testing.T) {
}
func TestConfigSetGetReloadConfig(t *testing.T) {
- //for coverage purposes only
- var err error
- cfgTestPath := path.Join(*dataDir, "conf", "samples", "tutinternal")
- cfg, err := config.NewCGRConfigFromPath(context.Background(), cfgTestPath)
- if err != nil {
- t.Error(err)
- }
+ cfg := config.NewDefaultCGRConfig()
rlcCfg := NewConfigSv1(cfg)
args := &config.SetConfigArgs{
Tenant: utils.CGRateSorg,
@@ -126,28 +137,23 @@ func TestConfigSetGetReloadConfig(t *testing.T) {
DryRun: true,
}
var reply string
- err = rlcCfg.SetConfig(context.Background(), args, &reply)
- expected := `OK`
- if err != nil {
- t.Errorf("Expected <%+v>, \nReceived <%+v>", nil, err)
- }
- if expected != reply {
- t.Errorf("Expected <%+v>, \nReceived <%+v>", expected, reply)
+ if err := rlcCfg.SetConfig(context.Background(), args, &reply); err != nil {
+ t.Error(err)
+ } else if reply != "OK" {
+ t.Errorf("Unexpected reply: <%s>", reply)
}
argsGet := &config.SectionWithAPIOpts{
Sections: []string{"attributes"},
}
- var replyGet map[string]interface{}
- errGet := rlcCfg.GetConfig(context.Background(), argsGet, &replyGet)
expectedGet := map[string]interface{}{
"attributes": map[string]interface{}{
- "accounts_conns": []string{"*localhost"},
- "enabled": true,
+ "accounts_conns": []string{},
+ "enabled": false,
"indexed_selects": true,
"nested_fields": false,
"prefix_indexed_fields": []string{},
- "resources_conns": []string{"*localhost"},
- "stats_conns": []string{"*localhost"},
+ "resources_conns": []string{},
+ "stats_conns": []string{},
"suffix_indexed_fields": []string{},
"exists_indexed_fields": []string{},
"notexists_indexed_fields": []string{},
@@ -159,10 +165,10 @@ func TestConfigSetGetReloadConfig(t *testing.T) {
},
},
}
- if errGet != nil {
- t.Errorf("Expected <%+v>, \nReceived <%+v>", nil, errGet)
- }
- if !reflect.DeepEqual(expectedGet, replyGet) {
+ var replyGet map[string]interface{}
+ if err := rlcCfg.GetConfig(context.Background(), argsGet, &replyGet); err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(expectedGet, replyGet) {
t.Errorf("Expected <%+v>, \nReceived <%+v>",
utils.ToJSON(expectedGet), utils.ToJSON(replyGet))
}
@@ -170,30 +176,24 @@ func TestConfigSetGetReloadConfig(t *testing.T) {
DryRun: true,
Section: "attributes",
}
-
+ experr := `path:"" is not reachable`
var replyRld string
- errRld := rlcCfg.ReloadConfig(context.Background(), argsRld, &replyRld)
- expectedRld := `OK`
- if err != nil {
- t.Errorf("Expected <%+v>, \nReceived <%+v>", nil, errRld)
- }
- if !reflect.DeepEqual(expectedRld, replyRld) {
- t.Errorf("Expected <%+v>, \nReceived <%+v>", expectedRld, replyRld)
+ if err := rlcCfg.ReloadConfig(context.Background(), argsRld, &replyRld); err == nil ||
+ err.Error() != experr { // path is required for ReloadConfig api, but it is not provided in this unit test
+ t.Errorf("expected: <%s>, \nreceived: <%s>", experr, err.Error())
}
argsGetRld := &config.SectionWithAPIOpts{
Sections: []string{"attributes"},
}
- var replyGetRld map[string]interface{}
- errGetRld := rlcCfg.GetConfig(context.Background(), argsGetRld, &replyGetRld)
expectedGetRld := map[string]interface{}{
"attributes": map[string]interface{}{
- "accounts_conns": []string{"*localhost"},
- "enabled": true,
+ "accounts_conns": []string{},
+ "enabled": false,
"indexed_selects": true,
"nested_fields": false,
"prefix_indexed_fields": []string{},
- "resources_conns": []string{"*localhost"},
- "stats_conns": []string{"*localhost"},
+ "resources_conns": []string{},
+ "stats_conns": []string{},
"suffix_indexed_fields": []string{},
"exists_indexed_fields": []string{},
"notexists_indexed_fields": []string{},
@@ -205,22 +205,16 @@ func TestConfigSetGetReloadConfig(t *testing.T) {
},
},
}
- if errGetRld != nil {
- t.Errorf("Expected <%+v>, \nReceived <%+v>", nil, errGetRld)
- }
- if !reflect.DeepEqual(expectedGetRld, replyGetRld) {
+ var replyGetRld map[string]interface{}
+ if err := rlcCfg.GetConfig(context.Background(), argsGetRld, &replyGetRld); err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(expectedGetRld, replyGetRld) {
t.Errorf("Expected <%+v>, \nReceived <%+v>", utils.ToJSON(expectedGetRld), utils.ToJSON(replyGetRld))
}
}
func TestConfigGetSetConfigFromJSONErr(t *testing.T) {
- //for coverage purposes only
- var err error
- cfgTestPath := path.Join(*dataDir, "conf", "samples", "tutinternal")
- cfg, err := config.NewCGRConfigFromPath(context.Background(), cfgTestPath)
- if err != nil {
- t.Error(err)
- }
+ cfg := config.NewDefaultCGRConfig()
rlcCfg := NewConfigSv1(cfg)
args := &config.SetConfigFromJSONArgs{
APIOpts: nil,
@@ -254,29 +248,24 @@ func TestConfigGetSetConfigFromJSONErr(t *testing.T) {
}`,
DryRun: true,
}
+
var reply string
- err = rlcCfg.SetConfigFromJSON(context.Background(), args, &reply)
- expected := "OK"
- if err != nil {
- t.Errorf("Expected <%+v>, \nReceived <%+v>", nil, err)
- }
- if !reflect.DeepEqual(expected, reply) {
- t.Errorf("Expected <%+v>, \nReceived <%+v>", expected, reply)
+ if err := rlcCfg.SetConfigFromJSON(context.Background(), args, &reply); err != nil {
+ t.Error(err)
+ } else if reply != "OK" {
+ t.Errorf("Unexpected reply <%s>", reply)
}
argsGet := &config.SectionWithAPIOpts{
- APIOpts: nil,
Tenant: utils.CGRateSorg,
Sections: []string{"attributes"},
}
+ expectedGet := `{"attributes":{"accounts_conns":[],"enabled":false,"exists_indexed_fields":[],"indexed_selects":true,"nested_fields":false,"notexists_indexed_fields":[],"opts":{"*processRuns":[],"*profileIDs":[],"*profileIgnoreFilters":[],"*profileRuns":[]},"prefix_indexed_fields":[],"resources_conns":[],"stats_conns":[],"suffix_indexed_fields":[]}}`
var replyGet string
- errGet := rlcCfg.GetConfigAsJSON(context.Background(), argsGet, &replyGet)
- expectedGet := `{"attributes":{"accounts_conns":["*localhost"],"enabled":true,"exists_indexed_fields":[],"indexed_selects":true,"nested_fields":false,"notexists_indexed_fields":[],"opts":{"*processRuns":[],"*profileIDs":[],"*profileIgnoreFilters":[],"*profileRuns":[]},"prefix_indexed_fields":[],"resources_conns":["*localhost"],"stats_conns":["*localhost"],"suffix_indexed_fields":[]}}`
- if err != nil {
- t.Errorf("Expected <%+v>, \nReceived <%+v>", nil, errGet)
- }
- if !reflect.DeepEqual(expectedGet, replyGet) {
- t.Errorf("Expected <%+v>, \nReceived <%+v>", expectedGet, replyGet)
+ if err := rlcCfg.GetConfigAsJSON(context.Background(), argsGet, &replyGet); err != nil {
+ t.Error(err)
+ } else if replyGet != expectedGet {
+ t.Errorf("Expected <%s>, \nReceived <%s>", expectedGet, replyGet)
}
}
diff --git a/apis/cores_test.go b/apis/cores_test.go
index 816f0d11b..90a99f28f 100644
--- a/apis/cores_test.go
+++ b/apis/cores_test.go
@@ -141,7 +141,7 @@ func TestStopMemoryProfiling(t *testing.T) {
APIOpts: map[string]interface{}{},
}
var reply string
- errExp := " Memory Profiling is not started"
+ errExp := "Memory Profiling is not started"
if err := cS.StopMemoryProfiling(context.Background(), args, &reply); err.Error() != errExp {
t.Errorf("Expected %v\n but received %v", errExp, err)
}
diff --git a/config/apis_it_test.go b/config/apis_it_test.go
new file mode 100644
index 000000000..0505aa6c2
--- /dev/null
+++ b/config/apis_it_test.go
@@ -0,0 +1,57 @@
+//go:build integration
+// +build integration
+
+/*
+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 (
+ "path"
+ "testing"
+
+ "github.com/cgrates/birpc/context"
+ "github.com/cgrates/cgrates/utils"
+)
+
+func TestV1ReloadConfig(t *testing.T) {
+ cfg := NewDefaultCGRConfig()
+ cfg.db = &CgrJsonCfg{}
+ cfg.ConfigPath = path.Join("/usr", "share", "cgrates", "conf", "samples", "tutmongo2")
+ args := &ReloadArgs{
+ Section: utils.MetaAll,
+ }
+
+ cfg.rldCh = make(chan string, 100)
+
+ var reply string
+ if err := cfg.V1ReloadConfig(context.Background(), args, &reply); err != nil {
+ t.Error(err)
+ } else if reply != "OK" {
+ t.Errorf("Expected %v \n but received \n %v", "OK", reply)
+ }
+
+ args = &ReloadArgs{
+ Section: ConfigDBJSON,
+ }
+
+ expected := "Invalid section: "
+ if err := cfg.V1ReloadConfig(context.Background(), args, &reply); err == nil || err.Error() != expected {
+ t.Errorf("%T and %T", expected, err.Error())
+ t.Errorf("Expected %q \n but received \n %q", expected, err)
+ }
+}
diff --git a/config/apis_test.go b/config/apis_test.go
index d0cdda593..5b9da128d 100644
--- a/config/apis_test.go
+++ b/config/apis_test.go
@@ -18,7 +18,6 @@ along with this program. If not, see
package config
import (
- "path"
"reflect"
"testing"
"time"
@@ -895,34 +894,6 @@ func TestStoreDiffSectionAccountS(t *testing.T) {
}
}
-func TestV1ReloadConfig(t *testing.T) {
- cfg := NewDefaultCGRConfig()
- cfg.db = &CgrJsonCfg{}
- cfg.ConfigPath = path.Join("/usr", "share", "cgrates", "conf", "samples", "tutmongo2")
- args := &ReloadArgs{
- Section: utils.MetaAll,
- }
-
- cfg.rldCh = make(chan string, 100)
-
- var reply string
- if err := cfg.V1ReloadConfig(context.Background(), args, &reply); err != nil {
- t.Error(err)
- } else if reply != "OK" {
- t.Errorf("Expected %v \n but received \n %v", "OK", reply)
- }
-
- args = &ReloadArgs{
- Section: ConfigDBJSON,
- }
-
- expected := "Invalid section: "
- if err := cfg.V1ReloadConfig(context.Background(), args, &reply); err == nil || err.Error() != expected {
- t.Errorf("%T and %T", expected, err.Error())
- t.Errorf("Expected %q \n but received \n %q", expected, err)
- }
-}
-
func TestV1SetConfigErr1(t *testing.T) {
cfg := NewDefaultCGRConfig()
args := &SetConfigArgs{
diff --git a/config/config_it_test.go b/config/config_it_test.go
index 03356036f..00e30d3e7 100644
--- a/config/config_it_test.go
+++ b/config/config_it_test.go
@@ -1484,3 +1484,90 @@ func TestGetLockFilePath(t *testing.T) {
t.Error(err)
}
}
+
+func TestReloadCfgInDb(t *testing.T) {
+ cfg := NewDefaultCGRConfig()
+ db := &CgrJsonCfg{}
+ cfg.db = db
+ cfg.attributeSCfg = &AttributeSCfg{
+ Enabled: true,
+ ResourceSConns: []string{"*internal"},
+ StatSConns: []string{"*internal"},
+ AccountSConns: []string{"*internal"},
+ IndexedSelects: false,
+ StringIndexedFields: &[]string{"field1"},
+ SuffixIndexedFields: &[]string{"field1"},
+ PrefixIndexedFields: &[]string{"field1"},
+ ExistsIndexedFields: &[]string{"field1"},
+ NotExistsIndexedFields: &[]string{"field1"},
+ Opts: &AttributesOpts{
+ ProcessRuns: []*utils.DynamicIntOpt{
+ {
+ FilterIDs: []string{},
+ Value: 2,
+ },
+ },
+ },
+ NestedFields: true,
+ }
+ var reply string
+ cfg.sections = newSections(cfg)
+ cfg.rldCh = make(chan string, 100)
+ cfg.ConfigPath = path.Join("/usr", "share", "cgrates", "conf", "samples", "attributes_internal")
+ jsn := &AttributeSJsonCfg{
+ Enabled: utils.BoolPointer(false),
+ Resources_conns: &[]string{"*localhost"},
+ Stats_conns: &[]string{"*localhost"},
+ Accounts_conns: &[]string{"*localhost"},
+ Indexed_selects: utils.BoolPointer(true),
+ String_indexed_fields: &[]string{"field2"},
+ Suffix_indexed_fields: &[]string{"field2"},
+ Prefix_indexed_fields: &[]string{"field2"},
+ Exists_indexed_fields: &[]string{"field2"},
+ Notexists_indexed_fields: &[]string{"field2"},
+ Opts: &AttributesOptsJson{
+ ProcessRuns: []*utils.DynamicIntOpt{
+ {
+ Value: 3,
+ },
+ },
+ },
+ Nested_fields: utils.BoolPointer(false),
+ }
+ db.SetSection(context.Background(), AttributeSJSON, jsn)
+ expected := &AttributeSCfg{
+ Enabled: false,
+ ResourceSConns: []string{"*localhost"},
+ StatSConns: []string{"*localhost"},
+ AccountSConns: []string{"*localhost"},
+ IndexedSelects: true,
+ StringIndexedFields: &[]string{"field2"},
+ SuffixIndexedFields: &[]string{"field2"},
+ PrefixIndexedFields: &[]string{"field2"},
+ ExistsIndexedFields: &[]string{"field2"},
+ NotExistsIndexedFields: &[]string{"field2"},
+ Opts: &AttributesOpts{
+ ProcessRuns: []*utils.DynamicIntOpt{
+ {
+ FilterIDs: []string{},
+ Value: 2,
+ },
+ {
+ Value: 3,
+ },
+ },
+ },
+ NestedFields: false,
+ }
+ args2 := &ReloadArgs{
+ Section: AttributeSJSON,
+ }
+ if err := cfg.V1ReloadConfig(context.Background(), args2, &reply); err != nil {
+ t.Error(err)
+ }
+
+ rcv := cfg.AttributeSCfg()
+ if !reflect.DeepEqual(expected, rcv) {
+ t.Errorf("Expected %v \n but received \n %v", utils.ToJSON(expected), utils.ToJSON(rcv))
+ }
+}
diff --git a/config/config_test.go b/config/config_test.go
index d6230a7fb..9ae13ef1a 100644
--- a/config/config_test.go
+++ b/config/config_test.go
@@ -6111,93 +6111,6 @@ func TestSetNilCfgInDb(t *testing.T) {
}
}
-func TestReloadCfgInDb(t *testing.T) {
- cfg := NewDefaultCGRConfig()
- db := &CgrJsonCfg{}
- cfg.db = db
- cfg.attributeSCfg = &AttributeSCfg{
- Enabled: true,
- ResourceSConns: []string{"*internal"},
- StatSConns: []string{"*internal"},
- AccountSConns: []string{"*internal"},
- IndexedSelects: false,
- StringIndexedFields: &[]string{"field1"},
- SuffixIndexedFields: &[]string{"field1"},
- PrefixIndexedFields: &[]string{"field1"},
- ExistsIndexedFields: &[]string{"field1"},
- NotExistsIndexedFields: &[]string{"field1"},
- Opts: &AttributesOpts{
- ProcessRuns: []*utils.DynamicIntOpt{
- {
- FilterIDs: []string{},
- Value: 2,
- },
- },
- },
- NestedFields: true,
- }
- var reply string
- cfg.sections = newSections(cfg)
- cfg.rldCh = make(chan string, 100)
- cfg.ConfigPath = path.Join("/usr", "share", "cgrates", "conf", "samples", "attributes_internal")
- jsn := &AttributeSJsonCfg{
- Enabled: utils.BoolPointer(false),
- Resources_conns: &[]string{"*localhost"},
- Stats_conns: &[]string{"*localhost"},
- Accounts_conns: &[]string{"*localhost"},
- Indexed_selects: utils.BoolPointer(true),
- String_indexed_fields: &[]string{"field2"},
- Suffix_indexed_fields: &[]string{"field2"},
- Prefix_indexed_fields: &[]string{"field2"},
- Exists_indexed_fields: &[]string{"field2"},
- Notexists_indexed_fields: &[]string{"field2"},
- Opts: &AttributesOptsJson{
- ProcessRuns: []*utils.DynamicIntOpt{
- {
- Value: 3,
- },
- },
- },
- Nested_fields: utils.BoolPointer(false),
- }
- db.SetSection(context.Background(), AttributeSJSON, jsn)
- expected := &AttributeSCfg{
- Enabled: false,
- ResourceSConns: []string{"*localhost"},
- StatSConns: []string{"*localhost"},
- AccountSConns: []string{"*localhost"},
- IndexedSelects: true,
- StringIndexedFields: &[]string{"field2"},
- SuffixIndexedFields: &[]string{"field2"},
- PrefixIndexedFields: &[]string{"field2"},
- ExistsIndexedFields: &[]string{"field2"},
- NotExistsIndexedFields: &[]string{"field2"},
- Opts: &AttributesOpts{
- ProcessRuns: []*utils.DynamicIntOpt{
- {
- FilterIDs: []string{},
- Value: 2,
- },
- {
- Value: 3,
- },
- },
- },
- NestedFields: false,
- }
- args2 := &ReloadArgs{
- Section: AttributeSJSON,
- }
- if err := cfg.V1ReloadConfig(context.Background(), args2, &reply); err != nil {
- t.Error(err)
- }
-
- rcv := cfg.AttributeSCfg()
- if !reflect.DeepEqual(expected, rcv) {
- t.Errorf("Expected %v \n but received \n %v", utils.ToJSON(expected), utils.ToJSON(rcv))
- }
-}
-
func TestAsteriskAgentLoadFromJSONCfgNil(t *testing.T) {
acCfg := &AsteriskAgentCfg{}
if err := acCfg.loadFromJSONCfg(nil); err != nil {