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  }