func main()

in main.go [27:88]


func main() {
	var params = initParams()
	printParams(params)

	testDataGenerator := lib.Params(params)
	testData := testDataGenerator.MakeTestData()

	startTime := time.Now()
	fmt.Printf("Start concurrency execute %s\n", startTime)
	runtime.GOMAXPROCS(runtime.NumCPU())

	var allReq, successReq, errorReq uint32
	var putConsumedCapacity, getConsumedCapacity uint64
	ticker(&allReq, &successReq, &errorReq)
	threadCount := len(testData) / *params.ConcurrentNo

	fmt.Printf("All test request:%v,Concurrent:%v,1thread count:%v",
		len(testData), *params.ConcurrentNo, threadCount)

	wg := sync.WaitGroup{}
	for i := 0; i < *params.ConcurrentNo; i++ {
		threadStartIndex := 0
		wg.Add(1)
		go func(i int) {
			if i != 0 {
				threadStartIndex = threadCount * i
			}
			fmt.Printf("PUT benchmark test start\n")
			putResult := lib.PutData(&allReq, &successReq, &errorReq, *params.MaxRequest, *params.TestDataSize,
				*params.TableName, *params.AwsRegion, testData, threadStartIndex, threadCount)

			atomic.AddUint64(&putConsumedCapacity, uint64(putResult))

			fmt.Printf("GET benchmark test start\n")
			getResult := lib.GetData(&allReq, &successReq, &errorReq, *params.MaxRequest,
				*params.TableName, *params.AwsRegion, testData, threadStartIndex, threadCount)

			atomic.AddUint64(&getConsumedCapacity, uint64(getResult))

			wg.Done()
		}(i)
	}
	wg.Wait()
	endTime := time.Now()
	benchmarkTime := endTime.Sub(startTime)
	throughput := float64(allReq) / benchmarkTime.Seconds()

	fmt.Printf("End all execute.\nBenchmark start time:%s\nBenchmark end time:%s\n"+
		"All request count:%d,success:%d,error%d\n",
		startTime, endTime, allReq, successReq, errorReq)

	fmt.Printf("Benchmark total time:%vsec\nAvg throughput:%vreq/sec\n",
		benchmarkTime.Seconds(), throughput)

	fmt.Printf("Benchmark total consumend capacity\nPUT:%v\nGET:%v (RoundDown)\n",
		putConsumedCapacity, getConsumedCapacity)

	printParams(params)

	os.Exit(0)

}