Coverage tests for config, agents, engine

This commit is contained in:
nickolasdaniel
2021-04-08 13:34:09 +03:00
committed by Dan Christian Bogos
parent eed5ba2cd5
commit fba94efc2b
3 changed files with 205 additions and 0 deletions

View File

@@ -2190,3 +2190,33 @@ func TestAgReqSetFieldsFromCfg(t *testing.T) {
}
}
func TestFieldAsInterface(t *testing.T) {
fldPath := []string{utils.MetaOpts, utils.AccountField}
ar := &AgentRequest{
Request: nil,
Vars: &utils.DataNode{},
CGRRequest: &utils.OrderedNavigableMap{},
diamreq: nil,
tmp: &utils.DataNode{},
Opts: utils.MapStorage{
utils.AccountField: "Field1",
},
}
rcv, err := ar.FieldAsInterface(fldPath)
rcvExpect := ar.Opts[utils.AccountField]
if err != nil {
t.Error(err)
} else if rcv != rcvExpect {
t.Errorf("Expected %v but received %v", rcvExpect, rcv)
}
//default case
fldPath = []string{utils.MetaNone}
_, err = ar.FieldAsInterface(fldPath)
errExpect := "unsupported field prefix: <*none>"
if err == nil || err.Error() != errExpect {
t.Errorf("Expected %v but received %v", errExpect, err)
}
}

View File

@@ -1301,6 +1301,8 @@ func TestConfigSanityEventReader(t *testing.T) {
},
},
}
//CacheDumpFields
expected = "<ERs> MANDATORY_IE_MISSING: [Path] for at SessionId"
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
@@ -1310,6 +1312,79 @@ func TestConfigSanityEventReader(t *testing.T) {
if err := cfg.CheckConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
cfg.ersCfg.Readers[0].CacheDumpFields[0].Path = "~Field1..Field2[0]"
expected = "<ERs> Empty field path for ~Field1..Field2[0] at Path"
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
cfg.ersCfg.Readers[0].CacheDumpFields[0].Value = RSRParsers{
&RSRParser{
Rules: "~*req.Session-Id2",
path: "~Field1..Field2[0]",
},
}
cfg.ersCfg.Readers[0].CacheDumpFields[0].Path = "~Field1.Field3[0]"
cfg.ersCfg.Readers[0].CacheDumpFields[0].Type = utils.MetaUnixTimestamp
expected = "<ERs> Empty field path for ~Field1..Field2[0] at Values of cache_dump_fields"
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
cfg.ersCfg.Readers[0].CacheDumpFields[0].Type = utils.MetaNone
cfg.ersCfg.Readers[0].CacheDumpFields[0].Value = RSRParsers{
&RSRParser{
Rules: "~*req.Session-Id2",
path: "~Field1.Field2[0]",
},
}
cfg.ersCfg.Readers[0].CacheDumpFields[0].Filters = []string{"*empty:~Field1..Field2[0]:*Test3:*Test4"}
expected = "<ERs> Empty field path for <*empty:~Field1..Field2[0]:*Test3:*Test4> for [*empty:~Field1..Field2[0]:*Test3:*Test4] at cache_dump_fields"
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
cfg.ersCfg.Readers[0].CacheDumpFields[0].Filters = nil
//Fields
cfg.ersCfg.Readers[0].Fields[0].Path = "~Field1..Field2[0]"
expected = "<ERs> Empty field path for ~Field1..Field2[0] at Path"
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
cfg.ersCfg.Readers[0].Fields[0].Value = RSRParsers{
&RSRParser{
Rules: "~*req.Session-Id2",
path: "~Field1..Field2[0]",
},
}
cfg.ersCfg.Readers[0].Fields[0].Path = "~Field1.Field3[0]"
cfg.ersCfg.Readers[0].Fields[0].Type = utils.MetaUnixTimestamp
expected = "<ERs> Empty field path for ~Field1..Field2[0] at Values of fields"
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
cfg.ersCfg.Readers[0].Fields[0].Type = utils.MetaNone
cfg.ersCfg.Readers[0].Fields[0].Value = RSRParsers{
&RSRParser{
Rules: "~*req.Session-Id2",
path: "~Field1.Field2[0]",
},
}
cfg.ersCfg.Readers[0].Fields[0].Filters = []string{"*empty:~Field1..Field2[0]:*Test3:*Test4"}
expected = "<ERs> Empty field path for <*empty:~Field1..Field2[0]:*Test3:*Test4> for [*empty:~Field1..Field2[0]:*Test3:*Test4] at fields"
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
cfg.ersCfg.Readers[0].Fields[0].Filters = nil
cfg.ersCfg.Readers[0].Filters = []string{"*empty:~Field1..Field2[0]:*Test3:*Test4"}
expected = "<ERs> Empty field path for <*empty:~Field1..Field2[0]:*Test3:*Test4> for [*empty:~Field1..Field2[0]:*Test3:*Test4] at readers"
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
}
func TestConfigSanityEventExporter(t *testing.T) {
@@ -1373,6 +1448,46 @@ func TestConfigSanityEventExporter(t *testing.T) {
if err := cfg.CheckConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
cfg.eesCfg.Exporters[0].Type = utils.MetaHTTPPost
cfg.eesCfg.Exporters[0].Fields[0].Path = "~Field1..Field2[0]"
expected = "<EEs> Empty field path for ~Field1..Field2[0] at Path"
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
cfg.eesCfg.Exporters[0].Fields[0].Value = RSRParsers{
&RSRParser{
Rules: "~*req.Session-Id2",
path: "~Field1..Field2[0]",
},
}
cfg.eesCfg.Exporters[0].Fields[0].Path = "~Field1.Field3[0]"
cfg.eesCfg.Exporters[0].Fields[0].Type = utils.MetaUnixTimestamp
expected = "<EEs> Empty field path for ~Field1..Field2[0] at Values of fields"
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
cfg.eesCfg.Exporters[0].Fields[0].Type = utils.MetaNone
cfg.eesCfg.Exporters[0].Fields[0].Value = RSRParsers{
&RSRParser{
Rules: "~*req.Session-Id2",
path: "~Field1.Field2[0]",
},
}
cfg.eesCfg.Exporters[0].Fields[0].Filters = []string{"*empty:~Field1..Field2[0]:*Test3:*Test4"}
expected = "<EEs> Empty field path for <*empty:~Field1..Field2[0]:*Test3:*Test4> for [*empty:~Field1..Field2[0]:*Test3:*Test4] at fields"
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
cfg.eesCfg.Exporters[0].Fields[0].Filters = nil
cfg.eesCfg.Exporters[0].Filters = []string{"*empty:~Field1..Field2[0]:*Test3:*Test4"}
expected = "<EEs> Empty field path for <*empty:~Field1..Field2[0]:*Test3:*Test4> for [*empty:~Field1..Field2[0]:*Test3:*Test4] at exporters"
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
}
func TestConfigSanityCache(t *testing.T) {

View File

@@ -54,6 +54,66 @@ func TestNewCDRFromExternalCDR(t *testing.T) {
}
}
func TestNewCDRFromExternalCDRErrors(t *testing.T) {
extCdr := &ExternalCDR{
CGRID: utils.Sha1("dsafdsaf", time.Date(2013, 11, 7, 8, 42, 20, 0, time.UTC).String()),
OrderID: 123,
ToR: utils.MetaVoice,
OriginID: "dsafdsaf",
OriginHost: "192.168.1.1",
Source: utils.UnitTest,
RequestType: utils.MetaRated,
Tenant: "cgrates.org",
Category: "call",
Account: "1001",
Subject: "1001",
Destination: "1002",
SetupTime: "2013-11-07T08:42:20Z",
AnswerTime: "2013-11-07T08:42:26Z",
RunID: utils.MetaDefault,
Usage: "10",
Cost: 1.01,
PreRated: true,
ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"},
}
///
extCdr.SetupTime = "invalid"
errExpect := "Unsupported time format"
if _, err := NewCDRFromExternalCDR(extCdr, ""); err == nil || err.Error() != errExpect {
t.Errorf("Expected %v but received %v", errExpect, err)
}
extCdr.SetupTime = "2013-11-07T08:42:20Z"
///
extCdr.AnswerTime = "invalid"
if _, err := NewCDRFromExternalCDR(extCdr, ""); err == nil || err.Error() != errExpect {
t.Errorf("Expected %v but received %v", errExpect, err)
}
extCdr.AnswerTime = "2013-11-07T08:42:20Z"
///
extCdr.CGRID = ""
if _, err := NewCDRFromExternalCDR(extCdr, ""); err != nil {
t.Error(err)
}
extCdr.CGRID = utils.Sha1("dsafdsaf", time.Date(2013, 11, 7, 8, 42, 20, 0, time.UTC).String())
///
extCdr.Usage = "invalid"
errExpect = `time: invalid duration "invalid"`
if _, err := NewCDRFromExternalCDR(extCdr, ""); err != nil {
t.Error(err)
}
extCdr.Usage = "10"
///
extCdr.CostDetails = "CostDetail"
if _, err := NewCDRFromExternalCDR(extCdr, ""); err != nil {
t.Error(err)
}
}
func TestCDRClone(t *testing.T) {
storCdr := &CDR{CGRID: utils.Sha1("dsafdsaf", time.Date(2013, 11, 7, 8, 42, 20, 0, time.UTC).String()),
OrderID: 123, ToR: utils.MetaVoice, OriginID: "dsafdsaf", OriginHost: "192.168.1.1",