Skip to content

Commit

Permalink
impl for Hyperledger-TWGC#173 supports for configurable signers in pa…
Browse files Browse the repository at this point in the history
…rallel (Hyperledger-TWGC#194)

Signed-off-by: Sam Yuan <yy19902439@126.com>
  • Loading branch information
SamYuan1990 committed Aug 24, 2021
1 parent 4af22a2 commit 1549067
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 11 deletions.
19 changes: 12 additions & 7 deletions cmd/tape/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,13 @@ const (
var (
app = kingpin.New("tape", "A performance test tool for Hyperledger Fabric")

run = app.Command("run", "Start the tape program").Default()
con = run.Flag("config", "Path to config file").Required().Short('c').String()
num = run.Flag("number", "Number of tx for shot").Required().Short('n').Int()
rate = run.Flag("rate", "[Optional] Creates tx rate, default 0 as unlimited").Default("0").Float64()
burst = run.Flag("burst", "[Optional] Burst size for Tape, should bigger than rate").Default("1000").Int()
version = app.Command("version", "Show version information")
run = app.Command("run", "Start the tape program").Default()
con = run.Flag("config", "Path to config file").Required().Short('c').String()
num = run.Flag("number", "Number of tx for shot").Required().Short('n').Int()
rate = run.Flag("rate", "[Optional] Creates tx rate, default 0 as unlimited").Default("0").Float64()
burst = run.Flag("burst", "[Optional] Burst size for Tape, should bigger than rate").Default("1000").Int()
signerNumber = run.Flag("signers", "[Optional] signer parallel Number for Tape, default as 5").Default("5").Int()
version = app.Command("version", "Show version information")
)

func main() {
Expand All @@ -43,7 +44,7 @@ func main() {
fmt.Printf(cmdImpl.GetVersionInfo())
case run.FullCommand():
checkArgs(rate, burst, logger)
err = cmdImpl.Process(*con, *num, *burst, *rate, logger)
err = cmdImpl.Process(*con, *num, *burst, *signerNumber, *rate, logger)
default:
err = errors.Errorf("invalid command: %s", fullCmd)
}
Expand All @@ -64,6 +65,10 @@ func checkArgs(rate *float64, burst *int, logger *log.Logger) {
os.Stderr.WriteString("tape: error: burst at least 1\n")
os.Exit(1)
}
if *signerNumber < 1 {
os.Stderr.WriteString("tape: error: signerNumber at least 1\n")
os.Exit(1)
}

if int64(*rate) > int64(*burst) {
fmt.Printf("As rate %d is bigger than burst %d, real rate is burst\n", int64(*rate), int64(*burst))
Expand Down
7 changes: 7 additions & 0 deletions e2e/bad_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,13 @@ var _ = Describe("Mock test for error input", func() {
Eventually(tapeSession.Out).Should(Say("As rate 10000 is bigger than burst 1000, real rate is burst\n"))
Eventually(tapeSession.Err).Should(Say("NoExitFile"))
})

It("should return error msg when less than 1 signerNumber", func() {
cmd := exec.Command(tapeBin, "-c", "config", "-n", "500", "--signers", "0")
tapeSession, err := gexec.Start(cmd, nil, nil)
Expect(err).NotTo(HaveOccurred())
Eventually(tapeSession.Err).Should(Say("tape: error: signerNumber at least 1\n"))
})
})

When("Config error", func() {
Expand Down
4 changes: 2 additions & 2 deletions pkg/infra/cmdImpl/process.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
log "github.com/sirupsen/logrus"
)

func Process(configPath string, num int, burst int, rate float64, logger *log.Logger) error {
func Process(configPath string, num int, burst, signerNumber int, rate float64, logger *log.Logger) error {
/*** variables ***/
config, err := basic.LoadConfig(configPath)
if err != nil {
Expand Down Expand Up @@ -42,7 +42,7 @@ func Process(configPath string, num int, burst int, rate float64, logger *log.Lo
if err != nil {
return err
}
generator_workers, err := trafficGenerator.CreateGeneratorWorkers(ctx, crypto, raw, signed, envs, processed, config, num, burst, rate, logger, errorCh)
generator_workers, err := trafficGenerator.CreateGeneratorWorkers(ctx, crypto, raw, signed, envs, processed, config, num, burst, signerNumber, rate, logger, errorCh)
if err != nil {
return err
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/infra/trafficGenerator/generatorFactory.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
log "github.com/sirupsen/logrus"
)

func CreateGeneratorWorkers(ctx context.Context, crypto infra.Crypto, raw chan *peer.Proposal, signed []chan *basic.Elements, envs chan *common.Envelope, processed chan *basic.Elements, config basic.Config, num int, burst int, rate float64, logger *log.Logger, errorCh chan error) ([]infra.Worker, error) {
func CreateGeneratorWorkers(ctx context.Context, crypto infra.Crypto, raw chan *peer.Proposal, signed []chan *basic.Elements, envs chan *common.Envelope, processed chan *basic.Elements, config basic.Config, num int, burst, signerNumber int, rate float64, logger *log.Logger, errorCh chan error) ([]infra.Worker, error) {
generator_workers := make([]infra.Worker, 0)
proposers, err := CreateProposers(ctx, signed, processed, config, logger)
if err != nil {
Expand All @@ -20,7 +20,7 @@ func CreateGeneratorWorkers(ctx context.Context, crypto infra.Crypto, raw chan *

assembler := &Assembler{Signer: crypto, Ctx: ctx, Raw: raw, Signed: signed, ErrorCh: errorCh}
Integrator := &Integrator{Signer: crypto, Ctx: ctx, Processed: processed, Envs: envs, ErrorCh: errorCh}
for i := 0; i < 5; i++ {
for i := 0; i < signerNumber; i++ {
generator_workers = append(generator_workers, assembler)
generator_workers = append(generator_workers, Integrator)
}
Expand Down

0 comments on commit 1549067

Please sign in to comment.