mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-21 07:08:45 +05:00
Finished unit testing in config
This commit is contained in:
committed by
Dan Christian Bogos
parent
b240d82eac
commit
323646602c
@@ -646,7 +646,8 @@ func (cfg *CGRConfig) checkConfigSanity() error {
|
||||
utils.IfaceAsString(fldSep) == utils.EmptyString {
|
||||
return fmt.Errorf("<%s> empty %s for reader with ID: %s", utils.ERs, utils.PartialOrderFieldOpt, rdr.ID)
|
||||
}
|
||||
} else if pAct == utils.MetaDumpToFile { // only if the action is *dump_to_file
|
||||
}
|
||||
if pAct == utils.MetaDumpToFile { // only if the action is *dump_to_file
|
||||
if path, has := rdr.Opts[utils.PartialPathOpt]; has { // the path from options needs to exists if overwriten by reader
|
||||
if _, err := os.Stat(utils.IfaceAsString(path)); err != nil && os.IsNotExist(err) {
|
||||
return fmt.Errorf("<%s> nonexistent partial folder: %s for reader with ID: %s", utils.ERs, path, rdr.ID)
|
||||
|
||||
@@ -1772,3 +1772,84 @@ func TestConfigSanityFilterS(t *testing.T) {
|
||||
t.Errorf("Expecting: %+q received: %+q", expected, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestConfigSanityErs(t *testing.T) {
|
||||
cfg = NewDefaultCGRConfig()
|
||||
cfg.ersCfg.Enabled = true
|
||||
|
||||
expected := "<ERs> wrong partial expiry action"
|
||||
cfg.ersCfg.PartialCacheAction = utils.MetaAny
|
||||
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
|
||||
t.Errorf("Expected %v \n but received \n %v", expected, err)
|
||||
}
|
||||
|
||||
cfg.ersCfg.PartialCacheAction = utils.MetaNone
|
||||
cfg.ersCfg.PartialPath = "test"
|
||||
expected = "<ERs> nonexistent partial folder: test"
|
||||
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
|
||||
t.Errorf("Expected %v \n but received \n %v", expected, err)
|
||||
}
|
||||
|
||||
cfg.ersCfg.PartialPath = utils.EmptyString
|
||||
cfg.ersCfg.SessionSConns = []string{}
|
||||
cfg.ersCfg.PartialCacheAction = utils.MetaPostCDR
|
||||
cfg.ersCfg.Readers = []*EventReaderCfg{
|
||||
{
|
||||
Type: utils.MetaNone,
|
||||
ID: "rdrID",
|
||||
Opts: map[string]interface{}{
|
||||
utils.PartialCacheActionOpt: utils.MetaAny,
|
||||
},
|
||||
},
|
||||
}
|
||||
expected = "<ERs> wrong partial expiry action for reader with ID: rdrID"
|
||||
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
|
||||
t.Errorf("Expected %v \n but received \n %v", expected, err)
|
||||
}
|
||||
|
||||
cfg.ersCfg.Readers[0].Opts = map[string]interface{}{
|
||||
utils.PartialOrderFieldOpt: utils.EmptyString,
|
||||
}
|
||||
cfg.ersCfg.PartialCacheAction = utils.MetaPostCDR
|
||||
expected = "<ERs> empty partialOrderField for reader with ID: rdrID"
|
||||
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
|
||||
t.Errorf("Expected %v \n but received \n %v", expected, err)
|
||||
}
|
||||
|
||||
cfg.ersCfg.PartialCacheAction = utils.MetaDumpToFile
|
||||
cfg.ersCfg.Readers[0].Opts = map[string]interface{}{
|
||||
utils.PartialOrderFieldOpt: "non_empty",
|
||||
utils.PartialPathOpt: "path",
|
||||
}
|
||||
expected = "<ERs> nonexistent partial folder: path for reader with ID: rdrID"
|
||||
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
|
||||
t.Errorf("Expected %v \n but received \n %v", expected, err)
|
||||
}
|
||||
|
||||
cfg.ersCfg.Readers[0].Opts = map[string]interface{}{
|
||||
utils.PartialCSVFieldSepartorOpt: utils.EmptyString,
|
||||
}
|
||||
expected = "<ERs> empty partialcsvFieldSeparator for reader with ID: rdrID"
|
||||
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
|
||||
t.Errorf("Expected %v \n but received \n %v", expected, err)
|
||||
}
|
||||
|
||||
cfg.ersCfg.Readers[0].Type = utils.MetaFileCSV
|
||||
cfg.ersCfg.Readers[0].ProcessedPath = utils.EmptyString
|
||||
cfg.ersCfg.Readers[0].SourcePath = "/tmp"
|
||||
cfg.ersCfg.Readers[0].ID = utils.MetaDefault
|
||||
cfg.ersCfg.Readers[0].Opts = map[string]interface{}{
|
||||
utils.CSVRowLengthOpt: "can't convert",
|
||||
utils.CSVLazyQuotes: "can't convert",
|
||||
}
|
||||
expected = `<ERs> error when converting csvRowLength: <strconv.ParseInt: parsing "can't convert": invalid syntax> for reader with ID: *default`
|
||||
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
|
||||
t.Errorf("Expected %v \n but received \n %v", expected, err)
|
||||
}
|
||||
|
||||
cfg.ersCfg.Readers[0].Opts[utils.CSVRowLengthOpt] = "2"
|
||||
expected = `<ERs> error when converting csvLazyQuotes: <strconv.ParseBool: parsing "can't convert": invalid syntax> for reader with ID: *default`
|
||||
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
|
||||
t.Errorf("Expected %v \n but received \n %v", expected, err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,6 +53,13 @@ func TestERSClone(t *testing.T) {
|
||||
"cache_dump_fields": [
|
||||
{"tag": "ToR", "path": "*cgreq.ToR", "type": "*variable", "value": "~*req.2", "mandatory": true},
|
||||
],
|
||||
"partial_commit_fields": [{
|
||||
"mandatory": true,
|
||||
"path": "*cgreq.ToR",
|
||||
"tag": "ToR",
|
||||
"type": "*variable",
|
||||
"value": "~*req.2"
|
||||
}],
|
||||
"failed_calls_prefix": "randomPrefix",
|
||||
"partial_record_cache": "1s",
|
||||
"partial_cache_expiry_action": "randomAction",
|
||||
@@ -130,7 +137,16 @@ func TestERSClone(t *testing.T) {
|
||||
{Tag: utils.ToR, Path: utils.MetaCgreq + utils.NestingSep + utils.ToR, Type: utils.MetaVariable,
|
||||
Value: NewRSRParsersMustCompile("~*req.2", utils.InfieldSep), Mandatory: true, Layout: time.RFC3339},
|
||||
},
|
||||
PartialCommitFields: make([]*FCTemplate, 0),
|
||||
PartialCommitFields: []*FCTemplate{
|
||||
{
|
||||
Type: utils.MetaVariable,
|
||||
Value: NewRSRParsersMustCompile("~*req.2", utils.InfieldSep),
|
||||
Tag: utils.ToR,
|
||||
Path: utils.MetaCgreq + utils.NestingSep + utils.ToR,
|
||||
Mandatory: true,
|
||||
Layout: time.RFC3339,
|
||||
},
|
||||
},
|
||||
Opts: map[string]interface{}{
|
||||
utils.MetaDefault: "randomVal",
|
||||
"csvFieldSeparator": ",",
|
||||
@@ -151,6 +167,9 @@ func TestERSClone(t *testing.T) {
|
||||
for _, v := range profile.CacheDumpFields {
|
||||
v.ComputePath()
|
||||
}
|
||||
for _, v := range profile.PartialCommitFields {
|
||||
v.ComputePath()
|
||||
}
|
||||
}
|
||||
if jsonCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil {
|
||||
t.Error(err)
|
||||
@@ -1015,8 +1034,15 @@ func TestERSCfgAsMapInterfaceCase2(t *testing.T) {
|
||||
"partial_record_cache": "1s",
|
||||
"processed_path": "/tmp/ers/out",
|
||||
"cache_dump_fields": [
|
||||
{"tag": "ToR", "path": "*cgreq.ToR", "type": "*variable", "value": "~*req.2", "mandatory": true}
|
||||
{"tag": "ToR", "path": "*cgreq.ToR", "type": "*variable", "value": "~*req.2", "mandatory": true}
|
||||
],
|
||||
"partial_commit_fields": [{
|
||||
"mandatory": true,
|
||||
"path": "*cgreq.ToR",
|
||||
"tag": "ToR",
|
||||
"type": "*variable",
|
||||
"value": "~*req.2"
|
||||
}],
|
||||
"opts":{
|
||||
"kafkaGroupID": "test",
|
||||
},
|
||||
@@ -1066,9 +1092,17 @@ func TestERSCfgAsMapInterfaceCase2(t *testing.T) {
|
||||
utils.CacheDumpFieldsCfg: []map[string]interface{}{
|
||||
{utils.MandatoryCfg: true, utils.PathCfg: "*cgreq.ToR", utils.TagCfg: "ToR", utils.TypeCfg: "*variable", utils.ValueCfg: "~*req.2"},
|
||||
},
|
||||
utils.PartialCommitFieldsCfg: []map[string]interface{}{},
|
||||
utils.ConcurrentRequestsCfg: 1024,
|
||||
utils.TypeCfg: "*file_csv",
|
||||
utils.PartialCommitFieldsCfg: []map[string]interface{}{
|
||||
{
|
||||
"mandatory": true,
|
||||
"path": "*cgreq.ToR",
|
||||
"tag": "ToR",
|
||||
"type": "*variable",
|
||||
"value": "~*req.2",
|
||||
},
|
||||
},
|
||||
utils.ConcurrentRequestsCfg: 1024,
|
||||
utils.TypeCfg: "*file_csv",
|
||||
utils.FieldsCfg: []map[string]interface{}{
|
||||
{utils.MandatoryCfg: true, utils.PathCfg: "*cgreq.ToR", utils.TagCfg: "ToR", utils.TypeCfg: "*variable", utils.ValueCfg: "~*req.2"},
|
||||
{utils.MandatoryCfg: true, utils.PathCfg: "*cgreq.OriginID", utils.TagCfg: "OriginID", utils.TypeCfg: "*variable", utils.ValueCfg: "~*req.3"},
|
||||
@@ -1371,6 +1405,14 @@ func TestDiffEventReaderJsonCfg(t *testing.T) {
|
||||
Value: utils.StringPointer("~*req.3"),
|
||||
},
|
||||
},
|
||||
Partial_commit_fields: &[]*FcTemplateJsonCfg{
|
||||
{
|
||||
Tag: utils.StringPointer("ToR3"),
|
||||
Path: utils.StringPointer("*cgreq.ToR3"),
|
||||
Type: utils.StringPointer(utils.MetaTemplate),
|
||||
Value: utils.StringPointer("~*req.4"),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
expected = &EventReaderJsonCfg{
|
||||
@@ -1391,6 +1433,14 @@ func TestDiffEventReaderJsonCfg(t *testing.T) {
|
||||
Value: utils.StringPointer("~*req.3"),
|
||||
},
|
||||
},
|
||||
Partial_commit_fields: &[]*FcTemplateJsonCfg{
|
||||
{
|
||||
Tag: utils.StringPointer("ToR3"),
|
||||
Path: utils.StringPointer("*cgreq.ToR3"),
|
||||
Type: utils.StringPointer(utils.MetaTemplate),
|
||||
Value: utils.StringPointer("~*req.4"),
|
||||
},
|
||||
},
|
||||
}
|
||||
rcv = diffEventReaderJsonCfg(d, v1, v2, ";")
|
||||
if !reflect.DeepEqual(rcv, expected) {
|
||||
|
||||
@@ -204,3 +204,32 @@ func TestFieldAsInterfaceObjDPMultiplePaths(t *testing.T) {
|
||||
t.Errorf("Expected %+v, received %+v", "1", rcv)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFieldAsInterface(t *testing.T) {
|
||||
type aNewStruct struct {
|
||||
Field1 int
|
||||
Field2 int
|
||||
}
|
||||
type pNewStruct struct {
|
||||
Field3 aNewStruct
|
||||
Field4 int
|
||||
Field5 []string
|
||||
}
|
||||
objDp := &ObjectDP{
|
||||
obj: pNewStruct{
|
||||
Field3: aNewStruct{
|
||||
Field1: 2,
|
||||
Field2: 4,
|
||||
},
|
||||
Field4: 2,
|
||||
Field5: []string{""},
|
||||
},
|
||||
cache: map[string]interface{}{
|
||||
"field1": nil,
|
||||
},
|
||||
}
|
||||
_, err := objDp.FieldAsInterface([]string{"field1"})
|
||||
if err == nil || err != utils.ErrNotFound {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user