From ea35982108568aa6ee96772a239924e60e117431 Mon Sep 17 00:00:00 2001 From: "jianchao.ma" Date: Tue, 12 Dec 2023 14:21:06 +0000 Subject: [PATCH] feat: add Iteration N times bench test --- internal/app/pimo/pimo_test.go | 55 +++++++++++++++++++++++++++++++++ pkg/findincsv/findincsv_test.go | 1 + 2 files changed, 56 insertions(+) diff --git a/internal/app/pimo/pimo_test.go b/internal/app/pimo/pimo_test.go index d7bba324..428f199d 100755 --- a/internal/app/pimo/pimo_test.go +++ b/internal/app/pimo/pimo_test.go @@ -384,3 +384,58 @@ func TestExecuteMapWithAttributes(t *testing.T) { assert.NotEqual(t, "John", newData["name"]) assert.NotEqual(t, "25", newData["name@age"]) } + +func BenchmarkFindInCSVIteration(b *testing.B) { + data := model.NewDictionary(). + With("type_1", "fire"). + With("name", "carmender"). + With("info", "") + + exactMatch := model.ExactMatchType{ + CSV: "{{(index . \"Type 1\") | lower }}", + Entry: "{{.type_1}}", + } + jaccardMatch := model.ExactMatchType{ + CSV: "{{.Name | lower }}", + Entry: "{{.name |lower}}", + } + + definition := model.Definition{ + Version: "1", + Seed: 2, + Functions: map[string]model.Function{}, + Masking: []model.Masking{ + { + Selector: model.SelectorType{Jsonpath: "info"}, + Mask: model.MaskType{FindInCSV: model.FindInCSVType{ + URI: "https://gist.githubusercontent.com/armgilles/194bcff35001e7eb53a2a8b441e8b2c6/raw/92200bc0a673d5ce2110aaad4544ed6c4010f687/pokemon.csv", + ExactMatch: exactMatch, + JaccardMatch: jaccardMatch, + Expected: "at-least-one", + Header: true, + Separator: "", + Comment: "", + FieldsPerRecord: -1, + TrimSpace: true, + }}, + }, + }, + } + + zerolog.SetGlobalLevel(zerolog.WarnLevel) + + ctx := pimo.NewContext(definition) + cfg := pimo.Config{ + Iteration: b.N, + SingleInput: &data, + } + + if err := ctx.Configure(cfg); err != nil { + b.FailNow() + } + + b.ResetTimer() + if _, err := ctx.Execute(io.Discard); err != nil { + b.FailNow() + } +} diff --git a/pkg/findincsv/findincsv_test.go b/pkg/findincsv/findincsv_test.go index ed537290..cb5b3a22 100644 --- a/pkg/findincsv/findincsv_test.go +++ b/pkg/findincsv/findincsv_test.go @@ -427,6 +427,7 @@ func BenchmarkFindInCSVLargeVolume(b *testing.B) { maskingConfig := model.Masking{Mask: model.MaskType{FindInCSV: config}} factoryConfig := model.MaskFactoryConfiguration{Masking: maskingConfig, Seed: 0} mask, present, err := Factory(factoryConfig) + assert.NoError(b, err) data := model.NewDictionary(). With("nom", "Vidal"). With("email", "luc.vidal@yopmail.fr").