Added some tests for AsMapInterface methods

This commit is contained in:
adragusin
2020-04-16 17:51:47 +03:00
committed by Dan Christian Bogos
parent 0b0c7f8b4d
commit e39b452e67
8 changed files with 214 additions and 19 deletions

View File

@@ -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,
}
}

View File

@@ -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))
}
}

View File

@@ -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))
}
}

View File

@@ -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,

View File

@@ -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,

View File

@@ -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,
}
}

View File

@@ -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))
}
}

View File

@@ -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