diff --git a/demo/12_function.yaml b/demo/12_function.yaml index baabc135fe98ada1d8c3df6311abf50d98854163..e1df2a6961075ea34a5df717933c04a5f5e85d8b 100644 --- a/demo/12_function.yaml +++ b/demo/12_function.yaml @@ -13,12 +13,12 @@ fields: range: 10-20 format: sha1 prefix: "sha1: " - postfix: " " + postfix: " " - field: field_3_base64 range: 10-20 format: base64 - prefix: "base64: " + prefix: "base64: " postfix: "\t" - field: field_4 @@ -30,3 +30,8 @@ fields: format: urlencode prefix: "urlencode: " postfix: "\t" + + - field: field_5_uuid + format: "uuid()" + prefix: "uuid: " + postfix: " " \ No newline at end of file diff --git a/demo/t.yaml b/demo/t.yaml index 3c6e21e0adb036042aef207aeab5a77221d23702..a46eefd75fefba83e5ec0938ac888dad6abe06f7 100644 --- a/demo/t.yaml +++ b/demo/t.yaml @@ -5,12 +5,7 @@ author: zentao version: 1.0 fields: - - field: length32_random_no_separator2 - use: length32_random_no_separator - from: uuid.v1.yaml - postfix: " " - - - field: length162 - use: length16 - from: uuid.v1.yaml + - field: f1 + range: 0-9 + loop: 2-4 postfix: " " diff --git a/go.mod b/go.mod index e839c8371d478e7f479207198105dd89e86dbd1c..199f92afc2984c6fccd5ba08fe4acf9aef5962dc 100644 --- a/go.mod +++ b/go.mod @@ -41,6 +41,7 @@ require ( github.com/pierrec/lz4/v4 v4.1.3 // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/robfig/cron/v3 v3.0.1 + github.com/satori/go.uuid v1.2.0 // indirect github.com/smartystreets/assertions v1.2.0 // indirect github.com/smartystreets/goconvey v1.6.4 // indirect github.com/stretchr/testify v1.7.0 // indirect diff --git a/go.sum b/go.sum index 0cb201c8bb8d0a9407b323bcbb0e243ec9682e12..485ba8b7f0cec02f0fc120227f24fe5d843db237 100644 --- a/go.sum +++ b/go.sum @@ -241,6 +241,7 @@ github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJ github.com/robfig/cron v1.2.0 h1:ZjScXvvxeQ63Dbyxy76Fj3AT3Ut0aKsyd2/tl3DTMuQ= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= +github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= diff --git a/src/gen/generator.go b/src/gen/generator.go index 32fb5b528d1a7f93e56fef85c1e912da8a023b1f..cd182f9383e6f9cf64bc5a9cd45d6a5d47d3c9af 100644 --- a/src/gen/generator.go +++ b/src/gen/generator.go @@ -242,7 +242,8 @@ func GenerateValuesForField(field *model.DefField) []string { for { // 2. random replacement isRandomAndLoopEnd := !vari.ResLoading && // ignore rand in resource - !(*field).ReferToAnotherYaml && (*field).IsRand && (*field).LoopIndex == (*field).LoopEnd + !(*field).ReferToAnotherYaml && + (*field).IsRand && (*field).LoopIndex > (*field).LoopEnd // isNotRandomAndValOver := !(*field).IsRand && indexOfRow >= len(fieldWithValues.Values) if count >= vari.Total || count >= len(fieldWithValues.Values) || isRandomAndLoopEnd { for _, v := range fieldWithValues.Values { diff --git a/src/gen/list.go b/src/gen/list.go index 327b200e113e346f486ee3f3d848ff0930fe9897..ac7d4731ed8d179d1c97d0f5dc64b1cdc3f3788a 100644 --- a/src/gen/list.go +++ b/src/gen/list.go @@ -36,7 +36,10 @@ func CreateListFieldValues(field *model.DefField, fieldValue *model.FieldWithVal func CreateFieldValuesFromList(field *model.DefField, fieldValue *model.FieldWithValues) { rang := field.Range if rang == "" { - fieldValue.Values = append(fieldValue.Values, "") + for i := 0; i < vari.Total; i++ { + fieldValue.Values = append(fieldValue.Values, "") + } + return } diff --git a/src/test/test.go b/src/test/test.go index a813eed5a9ab4d35b3596c33fa8c085a7bccc4ef..7137187024f476622cd0dc0fd1eaf5cf4c263220 100644 --- a/src/test/test.go +++ b/src/test/test.go @@ -1,13 +1,17 @@ package main import ( - "encoding/base64" - "log" - "net/url" + "fmt" + uuid "github.com/satori/go.uuid" ) func main() { - str := "http://baidu.com" - log.Println(base64.StdEncoding.EncodeToString([]byte(str))) - log.Println(url.QueryEscape(str)) + u1 := uuid.NewV4() + fmt.Printf("UUIDv4: %s\n", u1) + + u1 = uuid.NewV4() + fmt.Printf("UUIDv4: %s\n", u1) + + u1 = uuid.NewV4() + fmt.Printf("UUIDv4: %s\n", u1) } diff --git a/src/utils/string/string.go b/src/utils/string/string.go index 2ab8fa628564e2b233e322bd38e5e007a31419f6..2de4b5fb65b96f74c7f42b97580441346cb308da 100644 --- a/src/utils/string/string.go +++ b/src/utils/string/string.go @@ -12,6 +12,7 @@ import ( "github.com/easysoft/zendata/src/model" constant "github.com/easysoft/zendata/src/utils/const" "github.com/mattn/go-runewidth" + uuid "github.com/satori/go.uuid" "gopkg.in/yaml.v2" "net/url" "regexp" @@ -128,6 +129,10 @@ func FormatStr(format string, val interface{}, precision int) (ret string, pass ret = UrlEncode(str) pass = true return + } else if strings.Index(format, "uuid()") == 0 { + ret = uuid.NewV4().String() + pass = true + return } str := fmt.Sprintf(format, val) diff --git a/tmp/cache/.data.db b/tmp/cache/.data.db index 6d815095484a464c32b4a745f231a4d999ae6c27..d912c02df93a9b81b11f16f08fe012b7454f6d48 100644 Binary files a/tmp/cache/.data.db and b/tmp/cache/.data.db differ