improving tests at config folder

This commit is contained in:
gezimbll
2022-10-24 10:28:22 -04:00
committed by Dan Christian Bogos
parent 0d72169516
commit c2aed810e3
7 changed files with 318 additions and 40 deletions

View File

@@ -171,6 +171,7 @@ func TestEESClone(t *testing.T) {
},
},
Opts: &EventExporterOpts{
CSVFieldSeparator: utils.StringPointer(utils.InfieldSep),
MYSQLDSNParams: map[string]string{
"allowOldPasswords": "true",
@@ -251,6 +252,80 @@ func TestEventExporterloadFromJsonCfg(t *testing.T) {
}
}
func TestEventExporterOptsloadFromJsonCfg(t *testing.T) {
eventExporterOptsJSON := &EventExporterOptsJson{
ElsIndex: utils.StringPointer("test"),
ElsIfPrimaryTerm: utils.IntPointer(0),
ElsIfSeqNo: utils.IntPointer(0),
ElsOpType: utils.StringPointer("test2"),
ElsPipeline: utils.StringPointer("test3"),
ElsRouting: utils.StringPointer("test4"),
ElsTimeout: utils.StringPointer("1m"),
ElsVersion: utils.IntPointer(2),
ElsVersionType: utils.StringPointer("test5"),
ElsWaitForActiveShards: utils.StringPointer("test6"),
SQLMaxIdleConns: utils.IntPointer(4),
SQLMaxOpenConns: utils.IntPointer(6),
SQLConnMaxLifetime: utils.StringPointer("1m"),
SQLTableName: utils.StringPointer("table"),
SQLDBName: utils.StringPointer("db"),
PgSSLMode: utils.StringPointer("pg"),
AWSToken: utils.StringPointer("token"),
S3FolderPath: utils.StringPointer("s3"),
NATSJetStream: utils.BoolPointer(true),
NATSSubject: utils.StringPointer("nat"),
NATSJWTFile: utils.StringPointer("jwt"),
NATSSeedFile: utils.StringPointer("seed"),
NATSCertificateAuthority: utils.StringPointer("NATS"),
NATSClientCertificate: utils.StringPointer("NATSClient"),
NATSClientKey: utils.StringPointer("key"),
NATSJetStreamMaxWait: utils.StringPointer("1m"),
}
expected := &EventExporterOpts{
ElsIndex: utils.StringPointer("test2"),
ElsIfPrimaryTerm: utils.IntPointer(0),
ElsIfSeqNo: utils.IntPointer(0),
ElsOpType: utils.StringPointer("test2"),
ElsPipeline: utils.StringPointer("test3"),
ElsRouting: utils.StringPointer("test4"),
ElsTimeout: utils.DurationPointer(1 * time.Minute),
ElsVersion: utils.IntPointer(2),
ElsVersionType: utils.StringPointer("test5"),
ElsWaitForActiveShards: utils.StringPointer("test6"),
SQLMaxIdleConns: utils.IntPointer(4),
SQLMaxOpenConns: utils.IntPointer(6),
SQLConnMaxLifetime: utils.DurationPointer(1 * time.Minute),
SQLTableName: utils.StringPointer("table"),
SQLDBName: utils.StringPointer("db"),
PgSSLMode: utils.StringPointer("pg"),
AWSToken: utils.StringPointer("token"),
S3FolderPath: utils.StringPointer("s3"),
NATSJetStream: utils.BoolPointer(true),
NATSSubject: utils.StringPointer("nat"),
NATSJWTFile: utils.StringPointer("jwt"),
NATSSeedFile: utils.StringPointer("seed"),
NATSCertificateAuthority: utils.StringPointer("NATS"),
NATSClientCertificate: utils.StringPointer("NATSClient"),
NATSClientKey: utils.StringPointer("key"),
NATSJetStreamMaxWait: utils.DurationPointer(1 * time.Minute),
}
eventExporter := &EventExporterCfg{
Opts: &EventExporterOpts{},
}
if err := eventExporter.Opts.loadFromJSONCfg(eventExporterOptsJSON); err != nil {
t.Error(expected)
} else if reflect.DeepEqual(expected, eventExporter.Opts) {
t.Errorf("expected %v received %v", expected, eventExporter.Opts)
}
}
func TestEESCacheloadFromJsonCfg(t *testing.T) {
eesCfg := &EEsJsonCfg{
Cache: &map[string]*CacheParamJsonCfg{

View File

@@ -1183,3 +1183,145 @@ func TestGetDefaultExporter(t *testing.T) {
t.Fatalf("Unexpected default cfg returned: %s", utils.ToJSON(dft))
}
}
func TestEventReaderOptsCfg(t *testing.T) {
erCfg := new(EventReaderCfg)
if err := erCfg.Opts.loadFromJSONCfg(nil); err != nil {
t.Error(err)
}
eventReaderOptsJson := &EventReaderOptsJson{
PartialPath: utils.StringPointer("path"),
PartialCSVFieldSeparator: utils.StringPointer("/"),
CSVLazyQuotes: utils.BoolPointer(false),
AMQPQueueID: utils.StringPointer("id"),
AMQPQueueIDProcessed: utils.StringPointer("id"),
AMQPConsumerTag: utils.StringPointer("tag"),
AMQPExchange: utils.StringPointer("exchange"),
AMQPExchangeType: utils.StringPointer("type"),
AMQPRoutingKey: utils.StringPointer("key1"),
AMQPExchangeProcessed: utils.StringPointer("amq"),
AMQPExchangeTypeProcessed: utils.StringPointer("amqtype"),
AMQPRoutingKeyProcessed: utils.StringPointer("key"),
KafkaTopic: utils.StringPointer("kafka"),
KafkaMaxWait: utils.StringPointer("1m"),
KafkaTopicProcessed: utils.StringPointer("kafkaproc"),
SQLDBName: utils.StringPointer("dbname"),
SQLTableName: utils.StringPointer("tablename"),
PgSSLMode: utils.StringPointer("sslmode"),
SQLDBNameProcessed: utils.StringPointer("dbnameproc"),
SQLTableNameProcessed: utils.StringPointer("tablenameproc"),
PgSSLModeProcessed: utils.StringPointer("sslproc"),
AWSRegion: utils.StringPointer("eu"),
AWSKey: utils.StringPointer("key"),
AWSSecret: utils.StringPointer("secret"),
AWSToken: utils.StringPointer("token"),
AWSKeyProcessed: utils.StringPointer("secret"),
AWSSecretProcessed: utils.StringPointer("secret"),
AWSTokenProcessed: utils.StringPointer("token"),
SQSQueueID: utils.StringPointer("SQSQueue"),
SQSQueueIDProcessed: utils.StringPointer("SQSQueueId"),
S3BucketID: utils.StringPointer("S3BucketID"),
S3FolderPathProcessed: utils.StringPointer("S3Path"),
S3BucketIDProcessed: utils.StringPointer("S3BucketProc"),
NATSJetStream: utils.BoolPointer(false),
NATSConsumerName: utils.StringPointer("user"),
NATSQueueID: utils.StringPointer("id"),
NATSJWTFile: utils.StringPointer("jwt"),
NATSSeedFile: utils.StringPointer("seed"),
NATSCertificateAuthority: utils.StringPointer("authority"),
NATSClientCertificate: utils.StringPointer("certificate"),
NATSClientKey: utils.StringPointer("key5"),
NATSJetStreamMaxWait: utils.StringPointer("1m"),
NATSJetStreamProcessed: utils.BoolPointer(true),
NATSJWTFileProcessed: utils.StringPointer("file"),
NATSSeedFileProcessed: utils.StringPointer("natseed"),
NATSCertificateAuthorityProcessed: utils.StringPointer("natsauth"),
NATSClientCertificateProcessed: utils.StringPointer("natcertificate"),
NATSClientKeyProcessed: utils.StringPointer("natsprocess"),
NATSJetStreamMaxWaitProcessed: utils.StringPointer("1m"),
}
eventReader := &EventReaderCfg{
Opts: &EventReaderOpts{},
}
if err := eventReader.Opts.loadFromJSONCfg(eventReaderOptsJson); err != nil {
t.Error(err)
}
}
func TestEventReaderCfgClone(t *testing.T) {
ban := &EventReaderCfg{
ID: "2",
Type: "type",
RunDelay: 1 * time.Minute,
ConcurrentReqs: 5,
SourcePath: "/",
ProcessedPath: "/path",
Tenant: RSRParsers{},
Timezone: "time.Utc",
Flags: utils.FlagsWithParams{},
Opts: &EventReaderOpts{
PartialPath: utils.StringPointer("path"),
PartialCSVFieldSeparator: utils.StringPointer("/"),
CSVLazyQuotes: utils.BoolPointer(false),
AMQPQueueID: utils.StringPointer("id"),
AMQPQueueIDProcessed: utils.StringPointer("id"),
AMQPConsumerTag: utils.StringPointer("tag"),
AMQPExchange: utils.StringPointer("exchange"),
AMQPExchangeType: utils.StringPointer("type"),
AMQPRoutingKey: utils.StringPointer("key1"),
AMQPExchangeProcessed: utils.StringPointer("amq"),
AMQPExchangeTypeProcessed: utils.StringPointer("amqtype"),
AMQPRoutingKeyProcessed: utils.StringPointer("key"),
KafkaTopic: utils.StringPointer("kafka"),
KafkaMaxWait: utils.DurationPointer(1 * time.Minute),
KafkaTopicProcessed: utils.StringPointer("kafkaproc"),
SQLDBName: utils.StringPointer("dbname"),
SQLTableName: utils.StringPointer("tablename"),
PgSSLMode: utils.StringPointer("sslmode"),
SQLDBNameProcessed: utils.StringPointer("dbnameproc"),
SQLTableNameProcessed: utils.StringPointer("tablenameproc"),
PgSSLModeProcessed: utils.StringPointer("sslproc"),
AWSRegion: utils.StringPointer("eu"),
AWSKey: utils.StringPointer("key"),
AWSSecret: utils.StringPointer("secret"),
AWSToken: utils.StringPointer("token"),
AWSKeyProcessed: utils.StringPointer("secret"),
AWSSecretProcessed: utils.StringPointer("secret"),
AWSTokenProcessed: utils.StringPointer("token"),
SQSQueueID: utils.StringPointer("SQSQueue"),
SQSQueueIDProcessed: utils.StringPointer("SQSQueueId"),
S3BucketID: utils.StringPointer("S3BucketID"),
S3FolderPathProcessed: utils.StringPointer("S3Path"),
S3BucketIDProcessed: utils.StringPointer("S3BucketProc"),
NATSJetStream: utils.BoolPointer(false),
NATSConsumerName: utils.StringPointer("user"),
NATSQueueID: utils.StringPointer("id"),
NATSJWTFile: utils.StringPointer("jwt"),
NATSSeedFile: utils.StringPointer("seed"),
NATSCertificateAuthority: utils.StringPointer("authority"),
NATSClientCertificate: utils.StringPointer("certificate"),
NATSClientKey: utils.StringPointer("key5"),
NATSJetStreamMaxWait: utils.DurationPointer(1 * time.Minute),
NATSJetStreamProcessed: utils.BoolPointer(true),
NATSJWTFileProcessed: utils.StringPointer("file"),
NATSSeedFileProcessed: utils.StringPointer("natseed"),
NATSCertificateAuthorityProcessed: utils.StringPointer("natsauth"),
NATSClientCertificateProcessed: utils.StringPointer("natcertificate"),
NATSClientKeyProcessed: utils.StringPointer("natsprocess"),
NATSJetStreamMaxWaitProcessed: utils.DurationPointer(1 * time.Minute),
},
}
rcv := ban.Clone()
if !reflect.DeepEqual(rcv, ban) {
t.Errorf("expected %v received %v", utils.ToJSON(ban), utils.ToJSON(rcv))
}
}

View File

@@ -270,10 +270,21 @@ func TestHTTPLoadTransportFromJSONCfg(t *testing.T) {
}
func TestHTTPLoadFromJSONCfg(t *testing.T) {
var jsnHTTPCfg *HTTPJsonCfg
var jsonHTTPCfg *HTTPJsonCfg
httpcfg := &HTTPCfg{}
if err := httpcfg.loadFromJSONCfg(jsnHTTPCfg); err != nil {
if err := httpcfg.loadFromJSONCfg(jsonHTTPCfg); err != nil {
t.Error(err)
}
jsnHTTPCfg := &HTTPJsonCfg{
Client_opts: &HTTPClientOptsJson{
DialTimeout: utils.StringPointer("test")},
}
httpcg := &HTTPCfg{
dialer: &net.Dialer{},
ClientOpts: &http.Transport{},
}
if err := httpcg.loadFromJSONCfg(jsnHTTPCfg); err == nil {
t.Error(err)
}
}

View File

@@ -52,6 +52,19 @@ func TestKamAgentCfgloadFromJsonCfg(t *testing.T) {
} else if !reflect.DeepEqual(expected, jsnCfg.kamAgentCfg) {
t.Errorf("Expected %+v \n, received %+v", utils.ToJSON(expected), utils.ToJSON(jsnCfg.kamAgentCfg))
}
cfgJson := &KamAgentJsonCfg{
Evapi_conns: &[]*KamConnJsonCfg{
{
Max_reconnect_interval: utils.StringPointer("test"),
},
}}
if err := jsnCfg.kamAgentCfg.loadFromJSONCfg(cfgJson); err != nil {
t.Error(err)
}
}
func TestKamConnCfgloadFromJsonCfg(t *testing.T) {

View File

@@ -87,6 +87,11 @@ func TestRouteSCfgAsMapInterface(t *testing.T) {
},
},
}`
/* "*limit":3,
"*offset":3,
"*profileCount":3,*/
eMap := map[string]interface{}{
utils.EnabledCfg: false,
utils.IndexedSelectsCfg: true,
@@ -102,6 +107,9 @@ func TestRouteSCfgAsMapInterface(t *testing.T) {
utils.OptsContext: utils.MetaRoutes,
utils.MetaIgnoreErrorsCfg: false,
utils.MetaMaxCostCfg: utils.EmptyString,
/* utils.MetaLimitCfg: utils.IntPointer(3),
utils.MetaOffsetCfg: utils.IntPointer(3),
utils.MetaProfileCountCfg: utils.IntPointer(3),*/
},
}
if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil {

View File

@@ -33,16 +33,17 @@ func TestRPCConnsloadFromJsonCfgCase1(t *testing.T) {
PoolSize: utils.IntPointer(1),
Conns: &[]*RemoteHostJson{
{
Address: utils.StringPointer("127.0.0.1:2012"),
Transport: utils.StringPointer("*json"),
Tls: utils.BoolPointer(false),
Key_path: utils.StringPointer("key_path"),
Cert_path: utils.StringPointer("cert_path"),
Ca_path: utils.StringPointer("ca_path"),
Conn_attempts: utils.IntPointer(5),
Reconnects: utils.IntPointer(2),
Connect_timeout: utils.StringPointer("1m"),
Reply_timeout: utils.StringPointer("1m"),
Address: utils.StringPointer("127.0.0.1:2012"),
Transport: utils.StringPointer("*json"),
Tls: utils.BoolPointer(false),
Key_path: utils.StringPointer("key_path"),
Cert_path: utils.StringPointer("cert_path"),
Ca_path: utils.StringPointer("ca_path"),
Conn_attempts: utils.IntPointer(5),
Reconnects: utils.IntPointer(2),
Connect_timeout: utils.StringPointer("1m"),
Reply_timeout: utils.StringPointer("1m"),
Max_reconnect_interval: utils.StringPointer("1m"),
},
},
}
@@ -83,27 +84,44 @@ func TestRPCConnsloadFromJsonCfgCase1(t *testing.T) {
PoolSize: 1,
Conns: []*RemoteHost{
{
Address: "127.0.0.1:2012",
Transport: "*json",
ConnectAttempts: 5,
Reconnects: 2,
ConnectTimeout: 1 * time.Minute,
ReplyTimeout: 1 * time.Minute,
TLS: false,
ClientKey: "key_path",
ClientCertificate: "cert_path",
CaCertificate: "ca_path",
Address: "127.0.0.1:2012",
Transport: "*json",
ConnectAttempts: 5,
Reconnects: 2,
ConnectTimeout: 1 * time.Minute,
ReplyTimeout: 1 * time.Minute,
TLS: false,
ClientKey: "key_path",
ClientCertificate: "cert_path",
CaCertificate: "ca_path",
MaxReconnectInterval: 1 * time.Minute,
},
},
},
}
jsonCfg := NewDefaultCGRConfig()
jsonCfg.rpcConns[utils.MetaLocalHost].loadFromJSONCfg(cfgJSON)
if !reflect.DeepEqual(jsonCfg.rpcConns, expected) {
t.Errorf("Expected %+v \n, received %+v", utils.ToJSON(expected), utils.ToJSON(jsonCfg.rpcConns))
}
cfgJson := &RemoteHostJson{
Connect_timeout: utils.StringPointer("test"),
}
if err := jsonCfg.rpcConns[utils.MetaLocalHost].Conns[0].loadFromJSONCfg(cfgJson); err == nil {
t.Error(err)
}
cfgJson = &RemoteHostJson{
Max_reconnect_interval: utils.StringPointer("test"),
}
if err := jsonCfg.rpcConns[utils.MetaLocalHost].Conns[0].loadFromJSONCfg(cfgJson); err == nil {
t.Error(err)
}
cfgJson = &RemoteHostJson{
Reply_timeout: utils.StringPointer("test"),
}
if err := jsonCfg.rpcConns[utils.MetaLocalHost].Conns[0].loadFromJSONCfg(cfgJson); err == nil {
t.Error(err)
}
}
func TestRPCConnsloadFromJsonCfgCase2(t *testing.T) {
@@ -181,7 +199,10 @@ func TestRPCConnsAsMapInterface(t *testing.T) {
"connect_attempts": 5,
"reconnects": 3,
"connect_timeout": "1m",
"reply_timeout": "1m"
"reply_timeout": "1m",
"max_reconnect_interval":"1m",
}
],
},
@@ -203,16 +224,18 @@ func TestRPCConnsAsMapInterface(t *testing.T) {
utils.StrategyCfg: utils.MetaFirst,
utils.Conns: []map[string]interface{}{
{
utils.AddressCfg: "127.0.0.1:2012",
utils.TransportCfg: "*json",
utils.IDCfg: "id_example",
utils.TLSNoCaps: true,
utils.KeyPathCgr: "path_to_key",
utils.CertPathCgr: "path_to_cert",
utils.CAPathCgr: "path_to_ca",
utils.ReconnectsCfg: 3,
utils.ConnectTimeoutCfg: 1 * time.Minute,
utils.ReplyTimeoutCfg: 1 * time.Minute,
utils.AddressCfg: "127.0.0.1:2012",
utils.TransportCfg: "*json",
utils.IDCfg: "id_example",
utils.TLSNoCaps: true,
utils.KeyPathCgr: "path_to_key",
utils.CertPathCgr: "path_to_cert",
utils.CAPathCgr: "path_to_ca",
utils.ReconnectsCfg: 3,
utils.ConnectTimeoutCfg: 1 * time.Minute,
utils.ReplyTimeoutCfg: 1 * time.Minute,
utils.MaxReconnectIntervalCfg: 1 * time.Minute,
},
},
},
@@ -242,6 +265,7 @@ func TestRPCConnsAsMapInterface(t *testing.T) {
} else if rcv := cgrCfg.rpcConns.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) {
t.Errorf("Expected %+v \n, received %+v", utils.ToJSON(eMap), utils.ToJSON(rcv))
}
}
func TestRpcConnAsMapInterface1(t *testing.T) {

View File

@@ -98,11 +98,12 @@ func TestSchedulerCfgAsMapInterface1(t *testing.T) {
func TestSchedulerCfgClone(t *testing.T) {
ban := &SchedulerCfg{
Enabled: true,
CDRsConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCDRs), "*conn1"},
ThreshSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaThresholds), "*conn1"},
StatSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaStats), "*conn1"},
Filters: []string{"randomFilter"},
Enabled: true,
CDRsConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCDRs), "*conn1"},
ThreshSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaThresholds), "*conn1"},
StatSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaStats), "*conn1"},
Filters: []string{"randomFilter"},
DynaprepaidActionPlans: []string{"plan"},
}
rcv := ban.Clone()
if !reflect.DeepEqual(ban, rcv) {
@@ -120,4 +121,8 @@ func TestSchedulerCfgClone(t *testing.T) {
if rcv.Filters[0] = ""; ban.Filters[0] != "randomFilter" {
t.Errorf("Expected clone to not modify the cloned")
}
if rcv.DynaprepaidActionPlans[0] = ""; ban.DynaprepaidActionPlans[0] != "plan" {
t.Errorf("Expected clone to not modify the cloned")
}
}