github.com/klaytn/klaytn@v1.12.1/cmd/homi/docker/service/txgen.go (about) 1 package service 2 3 import ( 4 "bytes" 5 "fmt" 6 "text/template" 7 ) 8 9 type TxGenService struct { 10 Name string 11 IP string 12 TargetUrl string 13 Rate int 14 ThreadSize int 15 ConnSize int 16 Duration string 17 } 18 19 func NewTxGenService(ip string, targetUrl string, opt TxGenOption) *TxGenService { 20 return &TxGenService{ 21 Name: "txgen", 22 IP: ip, 23 TargetUrl: targetUrl, 24 Rate: opt.TxGenRate, 25 ThreadSize: opt.TxGenThreadSize, 26 ConnSize: opt.TxGenConnSize, 27 Duration: opt.TxGenDuration, 28 } 29 } 30 31 func (s TxGenService) String() string { 32 tmpl, err := template.New("TxGen").Parse(dockerComposeTemplate) 33 if err != nil { 34 fmt.Printf("Failed to parse template, %v", err) 35 return "" 36 } 37 38 result := new(bytes.Buffer) 39 err = tmpl.Execute(result, s) 40 if err != nil { 41 fmt.Printf("Failed to render template, %v", err) 42 return "" 43 } 44 return result.String() 45 } 46 47 var dockerComposeTemplate = `{{ .Name }}: 48 hostname: {{ .Name }} 49 image: 428948643293.dkr.ecr.ap-northeast-2.amazonaws.com/groundx/txgen:latest 50 entrypoint: ["txgen", "-r", "{{ .Rate }}", "-t", "{{ .ThreadSize }}", "-c", "{{ .ConnSize }}", "-d", "{{ .Duration }}", "{{ .TargetUrl }}"] 51 networks: 52 app_net: 53 ipv4_address: {{ .IP }} 54 restart: "no" 55 ` 56 57 type TxGenOption struct { 58 TxGenThreadSize int 59 TxGenDuration string 60 TxGenConnSize int 61 TxGenRate int 62 }