github.com/bigzoro/my_simplechain@v0.0.0-20240315012955-8ad0a2a29bb9/cmd/dummytx/main.go (about)

     1  package main
     2  
     3  import (
     4  	"context"
     5  	"github.com/bigzoro/my_simplechain/cmd/dummytx/config"
     6  	"log"
     7  	"os"
     8  	"strconv"
     9  )
    10  
    11  func main() {
    12  	if len(os.Args) != 4 {
    13  		log.Printf("Usage: dummyTx config.json 500 1\n")
    14  		os.Exit(1)
    15  	}
    16  	txNums, err := strconv.ParseInt(os.Args[2], 10, 64)
    17  	if err != nil {
    18  		log.Printf("the second para is not number\n")
    19  		os.Exit(1)
    20  	}
    21  	num, err := strconv.ParseInt(os.Args[3], 10, 64)
    22  	if err != nil {
    23  		log.Printf("the third para is not number\n")
    24  		os.Exit(1)
    25  	}
    26  	if num < 0 {
    27  		log.Printf("the third para is less than 0\n")
    28  		os.Exit(1)
    29  	}
    30  	switch num {
    31  	case 0:
    32  		for {
    33  			ctx, cancel := context.WithCancel(context.Background())
    34  			conf := config.LoadConfig(os.Args[1])
    35  			s := newSender(ctx, conf, txNums)
    36  			s.connect() // 连接上某sipe节点
    37  			s.claimFunds()
    38  			if conf.Monitor {
    39  				log.Println("start monitor txs in blockChain")
    40  				go s.calcTotalCount(ctx)
    41  			}
    42  			go s.dummyTx()
    43  			for i := 0; i < 1; i++ {
    44  				<-s.signal
    45  			}
    46  			close(s.signal)
    47  			s.client.Close()
    48  			cancel()
    49  			log.Printf("txsCount=%v", s.txsCount)
    50  		}
    51  	default:
    52  		for j := 0; j < int(num); j++ {
    53  			ctx, cancel := context.WithCancel(context.Background())
    54  			conf := config.LoadConfig(os.Args[1])
    55  			s := newSender(ctx, conf, txNums)
    56  			s.connect() // 连接上某sipe节点
    57  			s.claimFunds()
    58  			if conf.Monitor {
    59  				log.Println("start monitor txs in blockChain")
    60  				go s.calcTotalCount(ctx)
    61  			}
    62  			go s.dummyTx()
    63  			for i := 0; i < 1; i++ {
    64  				<-s.signal
    65  			}
    66  			close(s.signal)
    67  			s.client.Close()
    68  			cancel()
    69  			log.Printf("txsCount=%v", s.txsCount)
    70  		}
    71  	}
    72  	log.Println("dummy transaction exit")
    73  }