From e75a5b5acfc7023877b0cbf2783a74948a198a93 Mon Sep 17 00:00:00 2001 From: nickolasdaniel Date: Tue, 26 Oct 2021 15:09:48 +0300 Subject: [PATCH] Done testing onEvicted cases --- ers/ers_it_test.go | 70 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/ers/ers_it_test.go b/ers/ers_it_test.go index 6e3baa757..3c319b4e8 100644 --- a/ers/ers_it_test.go +++ b/ers/ers_it_test.go @@ -1421,3 +1421,73 @@ func TestErsOnEvictedDumpToJSONInvalidPath(t *testing.T) { t.Error(err) } } + +func TestErsOnEvictedDumpToJSONEncodeErr(t *testing.T) { + utils.Logger.SetLogLevel(4) + utils.Logger.SetSyslog(nil) + + var buf bytes.Buffer + log.SetOutput(&buf) + defer func() { + log.SetOutput(os.Stderr) + }() + + dirPath := "/tmp/TestErsOnEvictedDumpToJSON" + err := os.MkdirAll(dirPath, 0755) + if err != nil { + t.Error(err) + } + value := &erEvents{ + events: []*utils.CGREvent{ + { + Tenant: "cgrates.org", + ID: "EventErsOnEvicted", + Event: map[string]interface{}{ + utils.AccountField: "1001", + utils.Usage: "10s", + utils.Category: "call", + utils.Destination: "1002", + utils.OriginHost: "local", + utils.OriginID: "123456", + utils.ToR: utils.MetaVoice, + utils.CGRID: "1133dc80896edf5049b46aa911cb9085eeb27f4c", + utils.Password: "secure_pass", + "Additional_Field": "Additional_Value", + "EncodeErr": func() { + + }, + }, + }, + }, + rdrCfg: &config.EventReaderCfg{ // CacheDumpFields will be empty + ID: "ER1", + Type: utils.MetaNone, + Opts: map[string]interface{}{ + utils.PartialCacheActionOpt: utils.MetaDumpToJSON, + utils.PartialPathOpt: dirPath, + utils.PartialOrderFieldOpt: 2, + }, + }, + } + + cfg := config.NewDefaultCGRConfig() + data := engine.NewInternalDB(nil, nil, true, cfg.DataDbCfg().Items) + dm := engine.NewDataManager(data, cfg.CacheCfg(), nil) + fltrS := engine.NewFilterS(cfg, nil, dm) + erS := &ERService{ + cfg: cfg, + rdrEvents: make(chan *erEvent, 1), + filterS: fltrS, + } + + expLog := "error: json: unsupported type: func()" + erS.onEvicted("ID_JSON", value) + rcvLog := buf.String()[20:] + if !strings.Contains(rcvLog, expLog) { + t.Errorf("expected <%+v> to be included in: <%+v>", expLog, rcvLog) + } + utils.Logger.SetLogLevel(0) + if err := os.RemoveAll(dirPath); err != nil { + t.Error(err) + } +}