diff --git a/engine/statmetrics_test.go b/engine/statmetrics_test.go index 18cb29bb4..98a6eedd7 100644 --- a/engine/statmetrics_test.go +++ b/engine/statmetrics_test.go @@ -18,6 +18,7 @@ along with this program. If not, see package engine import ( + "net" "reflect" "sort" "testing" @@ -4004,3 +4005,162 @@ func TestStatMetricsStatTCCAddEventErr(t *testing.T) { t.Errorf("\nExpecting ,\n Recevied <%+v>", err) } } + +func TestStatMetricsStatPDDAddEventErr(t *testing.T) { + ev := &utils.CGREvent{ + Tenant: "cgrates.org", + ID: "EVENT_1", + Event: map[string]interface{}{ + "PDD": false, + }, + } + pdd := &StatPDD{ + FilterIDs: []string{"Test_Filter_ID"}, + Count: 2, + Events: map[string]*DurationWithCompress{ + "EVENT_1": {Duration: 2*time.Minute + 30*time.Second, CompressFactor: 2}, + "EVENT_3": {Duration: time.Minute, CompressFactor: 1}, + }, + MinItems: 2, + val: nil, + } + err := pdd.AddEvent("EVENT_1", utils.MapStorage{utils.MetaReq: ev.Event}) + if err == nil || err.Error() != "cannot convert field: false to time.Duration" { + t.Errorf("\nExpecting ,\n Recevied <%+v>", err) + } +} + +func TestStatMetricsStatPDDGetCompressFactor(t *testing.T) { + eventMap := map[string]int{ + "Event1": 1000000, + } + timeStruct := &DurationWithCompress{ + Duration: time.Second, + CompressFactor: 200000000, + } + pdd := &StatPDD{ + FilterIDs: []string{"Test_Filter_ID"}, + Events: map[string]*DurationWithCompress{ + "Event1": timeStruct, + }, + MinItems: 3, + Count: 3, + } + expected := map[string]int{ + "Event1": 200000000, + } + result := pdd.GetCompressFactor(eventMap) + if !reflect.DeepEqual(expected, result) { + t.Errorf("\nExpecting <%+v>,\n Recevied <%+v>", expected, result) + } +} + +func TestStatMetricsStatDDCGetCompressFactor(t *testing.T) { + eventMap := map[string]int{ + "Event1": 1000000, + } + ddc := &StatDDC{ + FilterIDs: []string{"Test_Filter_ID"}, + Events: map[string]map[string]int64{ + "Event1": { + "Event1": 200000000, + }, + }, + MinItems: 3, + Count: 3, + } + expected := map[string]int{ + "Event1": 200000000, + } + result := ddc.GetCompressFactor(eventMap) + if !reflect.DeepEqual(expected, result) { + t.Errorf("\nExpecting <%+v>,\n Recevied <%+v>", expected, result) + } +} + +func TestStatMetricsStatSumAddEventErr(t *testing.T) { + ev := &utils.CGREvent{ + Tenant: "cgrates.org", + ID: "EVENT_1", + Event: map[string]interface{}{ + "Cost": false, + }, + } + sum := &StatSum{ + FilterIDs: []string{"Test_Filter_ID"}, + Count: 2, + Events: map[string]*StatWithCompress{ + "Event1": { + Stat: 5, + CompressFactor: 6, + }, + }, + MinItems: 2, + val: nil, + } + err := sum.AddEvent("EVENT_1", utils.MapStorage{utils.MetaReq: ev.Event}) + if err == nil || err.Error() != "strconv.ParseFloat: parsing \"\": invalid syntax" { + t.Errorf("\nExpecting ,\n Recevied <%+v>", err) + } +} + +func TestStatMetricsStatAverageAddEventErr(t *testing.T) { + ev := &utils.CGREvent{ + Tenant: "cgrates.org", + ID: "EVENT_1", + Event: map[string]interface{}{ + "Cost": false, + }, + } + avg := &StatAverage{ + FilterIDs: []string{"Test_Filter_ID"}, + Count: 2, + Events: map[string]*StatWithCompress{ + "Event1": { + Stat: 5, + CompressFactor: 6, + }, + }, + MinItems: 2, + val: nil, + } + err := avg.AddEvent("EVENT_1", utils.MapStorage{utils.MetaReq: ev.Event}) + if err == nil || err.Error() != "strconv.ParseFloat: parsing \"\": invalid syntax" { + t.Errorf("\nExpecting ,\n Recevied <%+v>", err) + } +} + +type mockDP struct{} + +func (mockDP) String() string { + return "" +} + +func (mockDP) FieldAsInterface(fldPath []string) (interface{}, error) { + return nil, utils.ErrAccountNotFound +} + +func (mockDP) FieldAsString(fldPath []string) (string, error) { + return "", nil +} +func (mockDP) RemoteHost() net.Addr { + return nil +} + +func TestStatMetricsStatASRAddEventErr3(t *testing.T) { + asr := &StatASR{ + FilterIDs: []string{"Test_Filter_ID"}, + Answered: 1.0, + Count: 2, + Events: map[string]*StatWithCompress{ + "EVENT_1": {Stat: 1, CompressFactor: 1}, + "EVENT_2": {Stat: 0, CompressFactor: 1}, + }, + MinItems: 2, + val: nil, + } + err := asr.AddEvent("EVENT_1", new(mockDP)) + if err == nil || err.Error() != utils.ErrAccountNotFound.Error() { + t.Errorf("\nExpecting <%+v>,\n Recevied <%+v>", utils.ErrAccountNotFound, err) + } +}