mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Added some tests for AsMapInterface methods
This commit is contained in:
committed by
Dan Christian Bogos
parent
0b0c7f8b4d
commit
e39b452e67
@@ -18,7 +18,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
|
||||
package config
|
||||
|
||||
import "github.com/cgrates/cgrates/utils"
|
||||
import (
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
)
|
||||
|
||||
// One instance of CdrExporter
|
||||
type CdreCfg struct {
|
||||
@@ -107,7 +109,7 @@ func (cdre *CdreCfg) AsMapInterface() map[string]interface{} {
|
||||
utils.AttributeSContextCfg: cdre.AttributeSContext,
|
||||
utils.SynchronousCfg: cdre.Synchronous,
|
||||
utils.AttemptsCfg: cdre.Attempts,
|
||||
utils.FieldSeparatorCfg: cdre.FieldSeparator,
|
||||
utils.FieldSeparatorCfg: string(cdre.FieldSeparator),
|
||||
utils.FieldsCfg: fields,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,3 +137,69 @@ func TestCdreCfgloadFromJsonCfg(t *testing.T) {
|
||||
t.Errorf("Expected: %+v , recived: %+v", utils.ToJSON(expected), utils.ToJSON(lstcfg))
|
||||
}
|
||||
}
|
||||
|
||||
func testCdre(t *testing.T) {
|
||||
var cdre CdreCfg
|
||||
cfgJSONStr := `{
|
||||
"cdre": {
|
||||
"*default": {
|
||||
"export_format": "*file_csv",
|
||||
"export_path": "/var/spool/cgrates/cdre",
|
||||
"filters" :[],
|
||||
"tenant": "",
|
||||
"synchronous": false,
|
||||
"attempts": 1,
|
||||
"field_separator": ",",
|
||||
"attributes_context": "",
|
||||
"fields": [
|
||||
{"path": "*exp.CGRID", "type": "*variable", "value": "~*req.CGRID"},
|
||||
],
|
||||
},
|
||||
},
|
||||
}`
|
||||
|
||||
eMap := map[string]interface{}{
|
||||
"export_format": "*file_csv",
|
||||
"export_path": "/var/spool/cgrates/cdre",
|
||||
"filters": []string{},
|
||||
"tenant": "",
|
||||
"synchronous": false,
|
||||
"attempts": 1,
|
||||
"field_separator": ",",
|
||||
"attributes_context": "",
|
||||
"fields": []map[string]interface{}{
|
||||
{
|
||||
"attribute_id": "",
|
||||
"blocker": false,
|
||||
"break_on_success": false,
|
||||
"cost_shift_digits": 0,
|
||||
"filters": nil,
|
||||
"layout": "2006-01-02T15:04:05Z07:00",
|
||||
"mandatory": false,
|
||||
"mask_destinationd_id": "",
|
||||
"mask_length": 0,
|
||||
"new_branch": false,
|
||||
"padding": "",
|
||||
"path": "*exp.CGRID",
|
||||
"rounding_decimals": nil,
|
||||
"strip": "",
|
||||
"tag": "*exp.CGRID",
|
||||
"timezone": "",
|
||||
"type": "*variable",
|
||||
"value": "~*req.CGRID",
|
||||
"width": 0,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil {
|
||||
t.Error(err)
|
||||
} else if cdreCfg, err := jsnCfg.CdreJsonCfgs(); err != nil {
|
||||
t.Error(err)
|
||||
} else if err = cdre.loadFromJsonCfg(cdreCfg["*default"], utils.EmptyString); err != nil {
|
||||
t.Error(err)
|
||||
} else if rcv := cdre.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) {
|
||||
t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1990,3 +1990,70 @@ func TestCheckConfigSanity(t *testing.T) {
|
||||
t.Errorf("Expecting: %+q received: %+q", expected, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGeneralCfg(t *testing.T) {
|
||||
var gencfg GeneralCfg
|
||||
cfgJSONStr := `{
|
||||
"general": {
|
||||
"node_id": "",
|
||||
"logger":"*syslog",
|
||||
"log_level": 6,
|
||||
"http_skip_tls_verify": false,
|
||||
"rounding_decimals": 5,
|
||||
"dbdata_encoding": "*msgpack",
|
||||
"tpexport_dir": "/var/spool/cgrates/tpe",
|
||||
"poster_attempts": 3,
|
||||
"failed_posts_dir": "/var/spool/cgrates/failed_posts",
|
||||
"failed_posts_ttl": "5s",
|
||||
"default_request_type": "*rated",
|
||||
"default_category": "call",
|
||||
"default_tenant": "cgrates.org",
|
||||
"default_timezone": "Local",
|
||||
"default_caching":"*reload",
|
||||
"connect_attempts": 5,
|
||||
"reconnects": -1,
|
||||
"connect_timeout": "1s",
|
||||
"reply_timeout": "2s",
|
||||
"locking_timeout": "0",
|
||||
"digest_separator": ",",
|
||||
"digest_equal": ":",
|
||||
"rsr_separator": ";",
|
||||
"max_parralel_conns": 100,
|
||||
},
|
||||
}`
|
||||
eMap := map[string]interface{}{
|
||||
"node_id": "",
|
||||
"logger": "*syslog",
|
||||
"log_level": 6,
|
||||
"http_skip_tls_verify": false,
|
||||
"rounding_decimals": 5,
|
||||
"dbdata_encoding": "*msgpack",
|
||||
"tpexport_dir": "/var/spool/cgrates/tpe",
|
||||
"poster_attempts": 3,
|
||||
"failed_posts_dir": "/var/spool/cgrates/failed_posts",
|
||||
"failed_posts_ttl": "5s",
|
||||
"default_request_type": "*rated",
|
||||
"default_category": "call",
|
||||
"default_tenant": "cgrates.org",
|
||||
"default_timezone": "Local",
|
||||
"default_caching": "*reload",
|
||||
"connect_attempts": 5,
|
||||
"reconnects": -1,
|
||||
"connect_timeout": "1s",
|
||||
"reply_timeout": "2s",
|
||||
"locking_timeout": "0",
|
||||
"digest_separator": ",",
|
||||
"digest_equal": ":",
|
||||
"rsr_separator": ";",
|
||||
"max_parralel_conns": 100,
|
||||
}
|
||||
if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil {
|
||||
t.Error(err)
|
||||
} else if jsnGenCfg, err := jsnCfg.GeneralJsonCfg(); err != nil {
|
||||
t.Error(err)
|
||||
} else if err = gencfg.loadFromJsonCfg(jsnGenCfg); err != nil {
|
||||
t.Error(err)
|
||||
} else if rcv := gencfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) {
|
||||
t.Errorf("Expected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
@@ -199,13 +200,14 @@ func (fc *FCTemplate) AsMapInterface() map[string]interface{} {
|
||||
for i, item := range fc.Value {
|
||||
values[i] = item.Rules
|
||||
}
|
||||
asInitial := strings.Join(values, "")
|
||||
|
||||
return map[string]interface{}{
|
||||
utils.TagCfg: fc.Tag,
|
||||
utils.TypeCf: fc.Type,
|
||||
utils.PathCfg: fc.Path,
|
||||
utils.FiltersCfg: fc.Filters,
|
||||
utils.ValueCfg: values,
|
||||
utils.ValueCfg: asInitial,
|
||||
utils.WidthCfg: fc.Width,
|
||||
utils.StripCfg: fc.Strip,
|
||||
utils.PaddingCfg: fc.Padding,
|
||||
|
||||
@@ -144,17 +144,34 @@ func (gencfg *GeneralCfg) loadFromJsonCfg(jsnGeneralCfg *GeneralJsonCfg) (err er
|
||||
}
|
||||
|
||||
func (gencfg *GeneralCfg) AsMapInterface() map[string]interface{} {
|
||||
var lockingTimeout string = "0"
|
||||
var failedPostsTTL string = "0"
|
||||
var connectTimeout string = "0"
|
||||
var replyTimeout string = "0"
|
||||
if gencfg.LockingTimeout != 0 {
|
||||
lockingTimeout = gencfg.LockingTimeout.String()
|
||||
}
|
||||
if gencfg.FailedPostsTTL != 0 {
|
||||
failedPostsTTL = gencfg.FailedPostsTTL.String()
|
||||
}
|
||||
if gencfg.ConnectTimeout != 0 {
|
||||
connectTimeout = gencfg.ConnectTimeout.String()
|
||||
}
|
||||
if gencfg.ReplyTimeout != 0 {
|
||||
replyTimeout = gencfg.ReplyTimeout.String()
|
||||
}
|
||||
|
||||
return map[string]interface{}{
|
||||
utils.NodeIDCfg: gencfg.NodeID,
|
||||
utils.LoggerCfg: gencfg.Logger,
|
||||
utils.LogLevelCfg: gencfg.LogLevel,
|
||||
utils.HttpSkipTlsVerifyCfg: gencfg.HttpSkipTlsVerify,
|
||||
utils.RoundingDecimalsCfg: gencfg.RoundingDecimals,
|
||||
utils.DBDataEncodingCfg: gencfg.DBDataEncoding,
|
||||
utils.DBDataEncodingCfg: utils.Meta + gencfg.DBDataEncoding,
|
||||
utils.TpExportPathCfg: gencfg.TpExportPath,
|
||||
utils.PosterAttemptsCfg: gencfg.PosterAttempts,
|
||||
utils.FailedPostsDirCfg: gencfg.FailedPostsDir,
|
||||
utils.FailedPostsTTLCfg: gencfg.FailedPostsTTL,
|
||||
utils.FailedPostsTTLCfg: failedPostsTTL,
|
||||
utils.DefaultReqTypeCfg: gencfg.DefaultReqType,
|
||||
utils.DefaultCategoryCfg: gencfg.DefaultCategory,
|
||||
utils.DefaultTenantCfg: gencfg.DefaultTenant,
|
||||
@@ -162,9 +179,9 @@ func (gencfg *GeneralCfg) AsMapInterface() map[string]interface{} {
|
||||
utils.DefaultCachingCfg: gencfg.DefaultCaching,
|
||||
utils.ConnectAttemptsCfg: gencfg.ConnectAttempts,
|
||||
utils.ReconnectsCfg: gencfg.Reconnects,
|
||||
utils.ConnectTimeoutCfg: gencfg.ConnectTimeout,
|
||||
utils.ReplyTimeoutCfg: gencfg.ReplyTimeout,
|
||||
utils.LockingTimeoutCfg: gencfg.LockingTimeout,
|
||||
utils.ConnectTimeoutCfg: connectTimeout,
|
||||
utils.ReplyTimeoutCfg: replyTimeout,
|
||||
utils.LockingTimeoutCfg: lockingTimeout,
|
||||
utils.DigestSeparatorCfg: gencfg.DigestSeparator,
|
||||
utils.DigestEqualCfg: gencfg.DigestEqual,
|
||||
utils.RSRSepCfg: gencfg.RSRSep,
|
||||
|
||||
@@ -69,9 +69,9 @@ func (rC *RPCConn) AsMapInterface() map[string]interface{} {
|
||||
}
|
||||
|
||||
return map[string]interface{}{
|
||||
utils.Strategy: rC.Strategy,
|
||||
utils.PoolSize: rC.PoolSize,
|
||||
utils.Conns: conns,
|
||||
utils.StrategyCfg: rC.Strategy,
|
||||
utils.PoolSize: rC.PoolSize,
|
||||
utils.Conns: conns,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -104,9 +104,9 @@ func (self *RemoteHost) loadFromJsonCfg(jsnCfg *RemoteHostJson) error {
|
||||
|
||||
func (rh *RemoteHost) AsMapInterface() map[string]interface{} {
|
||||
return map[string]interface{}{
|
||||
utils.Address: rh.Address,
|
||||
utils.Transport: rh.Transport,
|
||||
utils.Synchronous: rh.Synchronous,
|
||||
utils.TLS: rh.TLS,
|
||||
utils.AddressCfg: rh.Address,
|
||||
utils.TransportCfg: rh.Transport,
|
||||
utils.SynchronousCfg: rh.Synchronous,
|
||||
utils.TLS: rh.TLS,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,3 +17,42 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
|
||||
package config
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
)
|
||||
|
||||
func TestRPCConns(t *testing.T) {
|
||||
var cfg RPCConn
|
||||
cfgJSONStr := `{
|
||||
"rpc_conns": {
|
||||
"*localhost": {
|
||||
"conns": [{"address": "127.0.0.1:2012", "transport":"*json"}],
|
||||
},
|
||||
},
|
||||
}`
|
||||
eMap := map[string]interface{}{
|
||||
"poolSize": 0,
|
||||
"strategy": "",
|
||||
"conns": []map[string]interface{}{
|
||||
{
|
||||
"address": "127.0.0.1:2012",
|
||||
"transport": "*json",
|
||||
"synchronous": false,
|
||||
"TLS": false,
|
||||
},
|
||||
},
|
||||
}
|
||||
if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil {
|
||||
t.Error(err)
|
||||
} else if jsnRPCCfg, err := jsnCfg.RPCConnJsonCfg(); err != nil {
|
||||
t.Error(err)
|
||||
} else if err = cfg.loadFromJsonCfg(jsnRPCCfg["*localhost"]); err != nil {
|
||||
t.Error(err)
|
||||
} else if rcv := cfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) {
|
||||
t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1880,11 +1880,13 @@ const (
|
||||
|
||||
DefaultRatioCfg = "default_ratio"
|
||||
ReadersCfg = "readers"
|
||||
PoolSize = "PoolSize"
|
||||
Conns = "Conns"
|
||||
PoolSize = "poolSize"
|
||||
Conns = "conns"
|
||||
FilenameCfg = "file_name"
|
||||
RequestPayloadCfg = "Request_payload"
|
||||
ReplyPayloadCfg = "Reply_payload"
|
||||
RequestPayloadCfg = "request_payload"
|
||||
ReplyPayloadCfg = "reply_payload"
|
||||
TransportCfg = "transport"
|
||||
StrategyCfg = "strategy"
|
||||
)
|
||||
|
||||
// FC Template
|
||||
|
||||
Reference in New Issue
Block a user