diff --git a/config/config.go b/config/config.go
index 87ab7440a..1e8596fb3 100755
--- a/config/config.go
+++ b/config/config.go
@@ -843,6 +843,9 @@ func (self *CGRConfig) loadFromJsonCfg(jsnCfg *CgrJsonCfg) (err error) {
if err != nil {
return err
}
+ if err := self.asteriskAgentCfg.loadFromJsonCfg(jsnSMAstCfg); err != nil {
+ return err
+ }
jsnDACfg, err := jsnCfg.DiameterAgentJsonCfg()
if err != nil {
@@ -1014,12 +1017,6 @@ func (self *CGRConfig) loadFromJsonCfg(jsnCfg *CgrJsonCfg) (err error) {
}
}
- if jsnSMAstCfg != nil {
- if err := self.asteriskAgentCfg.loadFromJsonCfg(jsnSMAstCfg); err != nil {
- return err
- }
- }
-
if jsnDACfg != nil {
if err := self.diameterAgentCfg.loadFromJsonCfg(jsnDACfg); err != nil {
return err
diff --git a/config/daconfig.go b/config/diametercfg.go
similarity index 100%
rename from config/daconfig.go
rename to config/diametercfg.go
diff --git a/config/diametercfg_test.go b/config/diametercfg_test.go
new file mode 100644
index 000000000..d358adb90
--- /dev/null
+++ b/config/diametercfg_test.go
@@ -0,0 +1,110 @@
+/*
+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"
+
+ "github.com/cgrates/cgrates/utils"
+)
+
+func TestDiameterAgentCfgloadFromJsonCfg(t *testing.T) {
+ var dacfg, expected DiameterAgentCfg
+ if err := dacfg.loadFromJsonCfg(nil); err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(dacfg, expected) {
+ t.Errorf("Expected: %+v ,recived: %+v", expected, dacfg)
+ }
+ if err := dacfg.loadFromJsonCfg(new(DiameterAgentJsonCfg)); err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(dacfg, expected) {
+ t.Errorf("Expected: %+v ,recived: %+v", expected, dacfg)
+ }
+ cfgJSONStr := `{
+"diameter_agent": {
+ "enabled": false, // enables the diameter agent:
+ "listen": "127.0.0.1:3868", // address where to listen for diameter requests
+ "dictionaries_path": "/usr/share/cgrates/diameter/dict/", // path towards directory holding additional dictionaries to load
+ "sessions_conns": [
+ {"address": "*internal"} // connection towards SessionService
+ ],
+ "origin_host": "CGR-DA", // diameter Origin-Host AVP used in replies
+ "origin_realm": "cgrates.org", // diameter Origin-Realm AVP used in replies
+ "vendor_id": 0, // diameter Vendor-Id AVP used in replies
+ "product_name": "CGRateS", // diameter Product-Name AVP used in replies
+ "templates":{},
+ "request_processors": [],
+},
+}`
+ expected = DiameterAgentCfg{
+ Listen: "127.0.0.1:3868",
+ DictionariesPath: "/usr/share/cgrates/diameter/dict/",
+ SessionSConns: []*HaPoolConfig{{Address: "*internal"}},
+ OriginHost: "CGR-DA",
+ OriginRealm: "cgrates.org",
+ VendorId: 0,
+ ProductName: "CGRateS",
+ Templates: make(map[string][]*FCTemplate),
+ }
+ if jsnCfg, err := NewCgrJsonCfgFromReader(strings.NewReader(cfgJSONStr)); err != nil {
+ t.Error(err)
+ } else if jsnDaCfg, err := jsnCfg.DiameterAgentJsonCfg(); err != nil {
+ t.Error(err)
+ } else if err = dacfg.loadFromJsonCfg(jsnDaCfg); err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(expected, dacfg) {
+ t.Errorf("Expected: %+v , recived: %+v", utils.ToJSON(expected), utils.ToJSON(dacfg))
+ }
+}
+
+func TestDARequestProcessorloadFromJsonCfg(t *testing.T) {
+ var dareq, expected DARequestProcessor
+ if err := dareq.loadFromJsonCfg(nil); err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(dareq, expected) {
+ t.Errorf("Expected: %+v ,recived: %+v", expected, dareq)
+ }
+ if err := dareq.loadFromJsonCfg(new(DARequestProcessorJsnCfg)); err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(dareq, expected) {
+ t.Errorf("Expected: %+v ,recived: %+v", expected, dareq)
+ }
+ json := &DARequestProcessorJsnCfg{
+ Id: utils.StringPointer("cgrates"),
+ Tenant: utils.StringPointer("tenant"),
+ Filters: &[]string{"filter1", "filter2"},
+ Flags: &[]string{"flag1", "flag2"},
+ Timezone: utils.StringPointer("Local"),
+ Continue_on_success: utils.BoolPointer(true),
+ }
+ expected = DARequestProcessor{
+ ID: "cgrates",
+ Tenant: NewRSRParsersMustCompile("tenant", true),
+ Filters: []string{"filter1", "filter2"},
+ Flags: utils.StringMap{"flag1": true, "flag2": true},
+ Timezone: "Local",
+ ContinueOnSuccess: true,
+ }
+ if err = dareq.loadFromJsonCfg(json); err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(expected, dareq) {
+ t.Errorf("Expected: %+v , recived: %+v", utils.ToJSON(expected), utils.ToJSON(dareq))
+ }
+}