From aa06917c2f75b2eff164327a165628dd6952596e Mon Sep 17 00:00:00 2001 From: nickolasdaniel Date: Fri, 30 Jul 2021 16:14:26 +0300 Subject: [PATCH] Fixing test for FWV files --- ees/filecsv_test.go | 3 +- ees/filefwv_test.go | 116 ++++++++++++++++++++++++++++++++++++++ ees/httpjsonmap_test.go | 8 +-- ees/httppost_test.go | 8 +-- ees/posterjsonmap_test.go | 9 +-- 5 files changed, 123 insertions(+), 21 deletions(-) diff --git a/ees/filecsv_test.go b/ees/filecsv_test.go index d20f5ac10..b44c14d4b 100644 --- a/ees/filecsv_test.go +++ b/ees/filecsv_test.go @@ -360,7 +360,7 @@ func TestFileCSVSync(t *testing.T) { var cfgIdx int cfgIdx = 0 - cgrCfg.EEsCfg().Exporters[cfgIdx].Type = "*file_csv" + cgrCfg.EEsCfg().Exporters[cfgIdx].Type = utils.MetaFileCSV dc, err := newEEMetrics(utils.FirstNonEmpty( cgrCfg.EEsCfg().Exporters[cfgIdx].Timezone, cgrCfg.GeneralCfg().DefaultTimezone)) @@ -406,7 +406,6 @@ func TestFileCSVSync(t *testing.T) { exp.csvWriter.Flush() }() } - // exp.ExportEvent(cgrEvent) select { case <-test: diff --git a/ees/filefwv_test.go b/ees/filefwv_test.go index 321eb300d..74d2218a0 100644 --- a/ees/filefwv_test.go +++ b/ees/filefwv_test.go @@ -23,7 +23,9 @@ import ( "encoding/csv" "io" "reflect" + "sync" "testing" + "time" "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/engine" @@ -128,6 +130,64 @@ func TestFileFwvComposeHeader(t *testing.T) { } } +func TestFileFWVSyncLimit(t *testing.T) { + //Create new exporter + cgrCfg := config.NewDefaultCGRConfig() + var cfgIdx int + cfgIdx = 0 + + cgrCfg.EEsCfg().Exporters[cfgIdx].Type = utils.MetaFileFWV + cgrCfg.EEsCfg().Exporters[cfgIdx].ConcurrentRequests = 1 + dc, err := newEEMetrics(utils.FirstNonEmpty( + cgrCfg.EEsCfg().Exporters[cfgIdx].Timezone, + cgrCfg.GeneralCfg().DefaultTimezone)) + if err != nil { + t.Error(err) + } + + //Create an event + cgrEvent := &utils.CGREvent{ + Tenant: "cgrates.org", + Event: map[string]interface{}{ + "Account": "1001", + "Destination": "1002", + }, + } + + var wg1 = &sync.WaitGroup{} + + wg1.Add(3) + + test := make(chan struct{}) + go func() { + wg1.Wait() + close(test) + }() + mckCsv := &mockCsv{ + wg: wg1, + } + exp := &FileFWVee{ + id: cgrCfg.EEsCfg().Exporters[cfgIdx].ID, + cgrCfg: cgrCfg, + cfgIdx: cfgIdx, + filterS: new(engine.FilterS), + file: mckCsv, + dc: dc, + reqs: newConcReq(cgrCfg.EEsCfg().Exporters[cfgIdx].ConcurrentRequests), + } + + for i := 0; i < 3; i++ { + go exp.ExportEvent(cgrEvent) + } + + select { + case <-test: + t.Error("Should not have been possible to asynchronously export events") + case <-time.After(4 * time.Second): + return + } +} + func TestFileFwvComposeTrailer(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() newIDb := engine.NewInternalDB(nil, nil, true) @@ -455,3 +515,59 @@ func TestFileFwvOnEvictedClose(t *testing.T) { cgrCfg.EEsCfg().Exporters[fFwv.cfgIdx].ComputeFields() fFwv.OnEvicted("test", "test") } +func TestFileFWVSync(t *testing.T) { + //Create new exporter + cgrCfg := config.NewDefaultCGRConfig() + var cfgIdx int + cfgIdx = 0 + + cgrCfg.EEsCfg().Exporters[cfgIdx].Type = utils.MetaFileFWV + dc, err := newEEMetrics(utils.FirstNonEmpty( + cgrCfg.EEsCfg().Exporters[cfgIdx].Timezone, + cgrCfg.GeneralCfg().DefaultTimezone)) + if err != nil { + t.Error(err) + } + + //Create an event + cgrEvent := &utils.CGREvent{ + Tenant: "cgrates.org", + Event: map[string]interface{}{ + "Account": "1001", + "Destination": "1002", + }, + } + + var wg1 = &sync.WaitGroup{} + + wg1.Add(3) + + test := make(chan struct{}) + go func() { + wg1.Wait() + close(test) + }() + mckCsv := &mockCsv{ + wg: wg1, + } + exp := &FileFWVee{ + id: cgrCfg.EEsCfg().Exporters[cfgIdx].ID, + cgrCfg: cgrCfg, + cfgIdx: cfgIdx, + filterS: new(engine.FilterS), + file: mckCsv, + dc: dc, + reqs: newConcReq(cgrCfg.EEsCfg().Exporters[cfgIdx].ConcurrentRequests), + } + + for i := 0; i < 3; i++ { + go exp.ExportEvent(cgrEvent) + } + + select { + case <-test: + return + case <-time.After(4 * time.Second): + t.Error("Can't asynchronously export events") + } +} diff --git a/ees/httpjsonmap_test.go b/ees/httpjsonmap_test.go index 20a9ca345..b2c029765 100644 --- a/ees/httpjsonmap_test.go +++ b/ees/httpjsonmap_test.go @@ -356,7 +356,7 @@ func TestHttpJsonMapSync(t *testing.T) { var cfgIdx int cfgIdx = 0 - cgrCfg.EEsCfg().Exporters[cfgIdx].Type = "*http_json_map" + cgrCfg.EEsCfg().Exporters[cfgIdx].Type = utils.MetaHTTPjsonMap dc, err := newEEMetrics(utils.FirstNonEmpty( cgrCfg.EEsCfg().Exporters[cfgIdx].Timezone, cgrCfg.GeneralCfg().DefaultTimezone)) @@ -383,7 +383,6 @@ func TestHttpJsonMapSync(t *testing.T) { }() ts := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) { - // fmt.Println("2") time.Sleep(3 * time.Second) wg1.Done() })) @@ -400,7 +399,6 @@ func TestHttpJsonMapSync(t *testing.T) { for i := 0; i < 3; i++ { go exp.ExportEvent(cgrEvent) } - // exp.ExportEvent(cgrEvent) select { case <-test: @@ -416,7 +414,7 @@ func TestHttpJsonMapSyncLimit(t *testing.T) { var cfgIdx int cfgIdx = 0 - cgrCfg.EEsCfg().Exporters[cfgIdx].Type = "*http_json_map" + cgrCfg.EEsCfg().Exporters[cfgIdx].Type = utils.MetaHTTPjsonMap cgrCfg.EEsCfg().Exporters[cfgIdx].ConcurrentRequests = 1 dc, err := newEEMetrics(utils.FirstNonEmpty( cgrCfg.EEsCfg().Exporters[cfgIdx].Timezone, @@ -444,7 +442,6 @@ func TestHttpJsonMapSyncLimit(t *testing.T) { }() ts := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) { - // fmt.Println("2") time.Sleep(3 * time.Second) wg1.Done() })) @@ -461,7 +458,6 @@ func TestHttpJsonMapSyncLimit(t *testing.T) { for i := 0; i < 3; i++ { go exp.ExportEvent(cgrEvent) } - // exp.ExportEvent(cgrEvent) select { case <-test: diff --git a/ees/httppost_test.go b/ees/httppost_test.go index c284508b5..624a940b2 100644 --- a/ees/httppost_test.go +++ b/ees/httppost_test.go @@ -310,7 +310,7 @@ func TestHttpPostSync(t *testing.T) { var cfgIdx int cfgIdx = 0 - cgrCfg.EEsCfg().Exporters[cfgIdx].Type = "*http_post" + cgrCfg.EEsCfg().Exporters[cfgIdx].Type = utils.MetaHTTPPost dc, err := newEEMetrics(utils.FirstNonEmpty( cgrCfg.EEsCfg().Exporters[cfgIdx].Timezone, cgrCfg.GeneralCfg().DefaultTimezone)) @@ -337,7 +337,6 @@ func TestHttpPostSync(t *testing.T) { }() ts := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) { - // fmt.Println("2") time.Sleep(3 * time.Second) wg1.Done() })) @@ -354,7 +353,6 @@ func TestHttpPostSync(t *testing.T) { for i := 0; i < 3; i++ { go exp.ExportEvent(cgrEvent) } - // exp.ExportEvent(cgrEvent) select { case <-test: @@ -370,7 +368,7 @@ func TestHttpPostSyncLimit(t *testing.T) { var cfgIdx int cfgIdx = 0 - cgrCfg.EEsCfg().Exporters[cfgIdx].Type = "*http_post" + cgrCfg.EEsCfg().Exporters[cfgIdx].Type = utils.MetaHTTPPost // We set the limit of events to be exported lower than the amount of events we asynchronously want to export cgrCfg.EEsCfg().Exporters[cfgIdx].ConcurrentRequests = 1 @@ -400,7 +398,6 @@ func TestHttpPostSyncLimit(t *testing.T) { }() ts := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) { - // fmt.Println("2") time.Sleep(3 * time.Second) wg1.Done() })) @@ -417,7 +414,6 @@ func TestHttpPostSyncLimit(t *testing.T) { for i := 0; i < 3; i++ { go exp.ExportEvent(cgrEvent) } - // exp.ExportEvent(cgrEvent) select { case <-test: diff --git a/ees/posterjsonmap_test.go b/ees/posterjsonmap_test.go index 2f12df1ca..cd512f3d3 100644 --- a/ees/posterjsonmap_test.go +++ b/ees/posterjsonmap_test.go @@ -364,11 +364,6 @@ type mockPoster struct { } func (mp mockPoster) Post(body []byte, key string) error { - // resp, err := http.Get(mp.url) - // if err != nil { - // return err - // } - // defer resp.Body.Close() time.Sleep(3 * time.Second) mp.wg.Done() return nil @@ -383,7 +378,7 @@ func TestPosterJsonMapSync(t *testing.T) { var cfgIdx int cfgIdx = 0 - cgrCfg.EEsCfg().Exporters[cfgIdx].Type = "*http_json_map" + cgrCfg.EEsCfg().Exporters[cfgIdx].Type = utils.MetaHTTPjsonMap dc, err := newEEMetrics(utils.FirstNonEmpty( cgrCfg.EEsCfg().Exporters[cfgIdx].Timezone, cgrCfg.GeneralCfg().DefaultTimezone)) @@ -440,7 +435,7 @@ func TestPosterJsonMapSyncLimit(t *testing.T) { var cfgIdx int cfgIdx = 0 - cgrCfg.EEsCfg().Exporters[cfgIdx].Type = "*http_json_map" + cgrCfg.EEsCfg().Exporters[cfgIdx].Type = utils.MetaHTTPjsonMap cgrCfg.EEsCfg().Exporters[cfgIdx].ConcurrentRequests = 1 dc, err := newEEMetrics(utils.FirstNonEmpty( cgrCfg.EEsCfg().Exporters[cfgIdx].Timezone,