in lib/load.go [33:70]
func PutData(allReq *uint32, successReq *uint32, errorReq *uint32, maxRequest int, dataSize int,
tableName string, awsRegion string, testData []item, threadStartIndex int, threadCount int) (putConsumedCapacity float64) {
fmt.Printf("PUT start child execute : time:%v,Counter:%v,MaxRequets:%v\n",
time.Now(), atomic.LoadUint32(allReq), maxRequest)
sess, err := session.NewSession(&aws.Config{Region: aws.String(awsRegion)})
if err != nil {
fmt.Println("PUT Got session error:", err.Error())
os.Exit(1)
}
svc := dynamodb.New(sess, aws.NewConfig().WithMaxRetries(0))
var grCount int
fmt.Println("PUT This goroutine threadStartIndex:", threadStartIndex, "threadCount:", threadCount)
for i := threadStartIndex; i < threadStartIndex+threadCount; i++ {
item := testData[i]
putData := makePutTestData(tableName, item.Pk, item.Sk, makeTestData(dataSize))
result, err := svc.PutItem(putData)
if result != nil {
putConsumedCapacity = putConsumedCapacity + *result.ConsumedCapacity.CapacityUnits
}
if err != nil {
fmt.Printf("putItem error: %v\n", err.Error())
atomic.AddUint32(errorReq, 1)
} else {
atomic.AddUint32(successReq, 1)
}
atomic.AddUint32(allReq, 1)
grCount = grCount + 1
}
fmt.Printf("PUT end child execute:time:%v,Counter:%v,consumed capacity:%v\n", time.Now(), grCount, putConsumedCapacity)
return putConsumedCapacity
}