From 7cb8b604fbbc445ba9134746bda281bc54252b89 Mon Sep 17 00:00:00 2001 From: Gabriel Pop Date: Sun, 5 May 2024 23:00:59 +0300 Subject: [PATCH 1/3] add long and double enum support --- pkg/genlib/generator_interface.go | 40 ++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/pkg/genlib/generator_interface.go b/pkg/genlib/generator_interface.go index 96b1029..5acd7db 100644 --- a/pkg/genlib/generator_interface.go +++ b/pkg/genlib/generator_interface.go @@ -9,9 +9,6 @@ import ( "encoding/json" "errors" "fmt" - "github.com/Pallinder/go-randomdata" - "github.com/elastic/elastic-integration-corpus-generator-tool/pkg/genlib/config" - "github.com/elastic/elastic-integration-corpus-generator-tool/pkg/genlib/fields" "math" "regexp" "strconv" @@ -19,6 +16,10 @@ import ( "sync" "testing" "time" + + "github.com/Pallinder/go-randomdata" + "github.com/elastic/elastic-integration-corpus-generator-tool/pkg/genlib/config" + "github.com/elastic/elastic-integration-corpus-generator-tool/pkg/genlib/fields" ) var timeNowToBind time.Time @@ -970,6 +971,22 @@ func bindLongWithReturn(fieldCfg ConfigField, field Field, fieldMap map[string]a return err } + if len(fieldCfg.Enum) > 0 { + var emitF emitF + emitF = func(state *genState) any { + idx := customRand.Intn(len(fieldCfg.Enum)) + f, err := strconv.ParseFloat(fieldCfg.Enum[idx], 64) + if err != nil { + return err + } + return int64(f) + } + + fieldMap[field.Name] = emitF + + return nil + } + if fieldCfg.Counter { var emitF emitF @@ -1072,6 +1089,23 @@ func bindDoubleWithReturn(fieldCfg ConfigField, field Field, fieldMap map[string return err } + if len(fieldCfg.Enum) > 0 { + var emitF emitF + emitF = func(state *genState) any { + idx := customRand.Intn(len(fieldCfg.Enum)) + f, err := strconv.ParseFloat(fieldCfg.Enum[idx], 64) + if err != nil { + return err + } + + return f + } + + fieldMap[field.Name] = emitF + + return nil + } + if fieldCfg.Counter { var emitF emitF From 3d3b931d81f55c12c3ac138c6c8207fa7415c4e1 Mon Sep 17 00:00:00 2001 From: Gabriel Pop Date: Wed, 29 May 2024 14:16:05 +0300 Subject: [PATCH 2/3] parse input outside emitF --- pkg/genlib/generator_interface.go | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/pkg/genlib/generator_interface.go b/pkg/genlib/generator_interface.go index 5acd7db..3d29b64 100644 --- a/pkg/genlib/generator_interface.go +++ b/pkg/genlib/generator_interface.go @@ -973,13 +973,14 @@ func bindLongWithReturn(fieldCfg ConfigField, field Field, fieldMap map[string]a if len(fieldCfg.Enum) > 0 { var emitF emitF + idx := customRand.Intn(len(fieldCfg.Enum)) + f, err := strconv.ParseInt(fieldCfg.Enum[idx], 10, 64) + if err != nil { + return fmt.Errorf("field %s enum value is not an integer: %w", fieldCfg.Name, err) + } + emitF = func(state *genState) any { - idx := customRand.Intn(len(fieldCfg.Enum)) - f, err := strconv.ParseFloat(fieldCfg.Enum[idx], 64) - if err != nil { - return err - } - return int64(f) + return f } fieldMap[field.Name] = emitF @@ -1091,13 +1092,13 @@ func bindDoubleWithReturn(fieldCfg ConfigField, field Field, fieldMap map[string if len(fieldCfg.Enum) > 0 { var emitF emitF - emitF = func(state *genState) any { - idx := customRand.Intn(len(fieldCfg.Enum)) - f, err := strconv.ParseFloat(fieldCfg.Enum[idx], 64) - if err != nil { - return err - } + idx := customRand.Intn(len(fieldCfg.Enum)) + f, err := strconv.ParseFloat(fieldCfg.Enum[idx], 64) + if err != nil { + return fmt.Errorf("field %s enum value is not a float: %w", fieldCfg.Name, err) + } + emitF = func(state *genState) any { return f } From 072b6a353bdbf0430a07c3190a4ea1495d25063c Mon Sep 17 00:00:00 2001 From: Gabriel Pop Date: Wed, 29 May 2024 14:21:34 +0300 Subject: [PATCH 3/3] fix field type names in errors --- pkg/genlib/generator_interface.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/genlib/generator_interface.go b/pkg/genlib/generator_interface.go index 3d29b64..5ac92f3 100644 --- a/pkg/genlib/generator_interface.go +++ b/pkg/genlib/generator_interface.go @@ -976,7 +976,7 @@ func bindLongWithReturn(fieldCfg ConfigField, field Field, fieldMap map[string]a idx := customRand.Intn(len(fieldCfg.Enum)) f, err := strconv.ParseInt(fieldCfg.Enum[idx], 10, 64) if err != nil { - return fmt.Errorf("field %s enum value is not an integer: %w", fieldCfg.Name, err) + return fmt.Errorf("field %s enum value is not a long: %w", fieldCfg.Name, err) } emitF = func(state *genState) any { @@ -1095,7 +1095,7 @@ func bindDoubleWithReturn(fieldCfg ConfigField, field Field, fieldMap map[string idx := customRand.Intn(len(fieldCfg.Enum)) f, err := strconv.ParseFloat(fieldCfg.Enum[idx], 64) if err != nil { - return fmt.Errorf("field %s enum value is not a float: %w", fieldCfg.Name, err) + return fmt.Errorf("field %s enum value is not a double: %w", fieldCfg.Name, err) } emitF = func(state *genState) any {