s3-benchmark: Various fixes and cleanup
Signed-off-by: Mark Nelson <mnelson@redhat.com>master
parent
35b1231801
commit
84ace5c177
|
@ -40,18 +40,10 @@ var duration_secs, threads, loops int
|
||||||
var object_data []byte
|
var object_data []byte
|
||||||
var object_data_md5 string
|
var object_data_md5 string
|
||||||
var running_threads, bucket_count, object_count, object_size, op_counter int64
|
var running_threads, bucket_count, object_count, object_size, op_counter int64
|
||||||
|
var object_count_flag bool
|
||||||
var endtime time.Time
|
var endtime time.Time
|
||||||
var interval float64
|
var interval float64
|
||||||
|
|
||||||
func logit(msg string) {
|
|
||||||
fmt.Println(msg)
|
|
||||||
logfile, _ := os.OpenFile("benchmark.log", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666)
|
|
||||||
if logfile != nil {
|
|
||||||
logfile.WriteString(time.Now().Format(http.TimeFormat) + ": " + msg + "\n")
|
|
||||||
logfile.Close()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Our HTTP transport used for the roundtripper below
|
// Our HTTP transport used for the roundtripper below
|
||||||
var HTTPTransport http.RoundTripper = &http.Transport{
|
var HTTPTransport http.RoundTripper = &http.Transport{
|
||||||
Proxy: http.ProxyFromEnvironment,
|
Proxy: http.ProxyFromEnvironment,
|
||||||
|
@ -426,7 +418,7 @@ func runDownload(thread_num int, fendtime time.Time, stats *Stats) {
|
||||||
}
|
}
|
||||||
|
|
||||||
objnum := atomic.AddInt64(&op_counter, 1)
|
objnum := atomic.AddInt64(&op_counter, 1)
|
||||||
if objnum >= object_count {
|
if object_count > -1 && objnum >= object_count {
|
||||||
atomic.AddInt64(&op_counter, -1)
|
atomic.AddInt64(&op_counter, -1)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
@ -470,8 +462,12 @@ func runDelete(thread_num int, stats *Stats) {
|
||||||
svc := s3.New(session.New(), cfg)
|
svc := s3.New(session.New(), cfg)
|
||||||
|
|
||||||
for {
|
for {
|
||||||
|
if duration_secs > -1 && time.Now().After(endtime) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
objnum := atomic.AddInt64(&op_counter, 1)
|
objnum := atomic.AddInt64(&op_counter, 1)
|
||||||
if objnum >= object_count {
|
if object_count > -1 && objnum >= object_count {
|
||||||
atomic.AddInt64(&op_counter, -1)
|
atomic.AddInt64(&op_counter, -1)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
@ -607,6 +603,13 @@ func runWrapper(loop int, r rune) {
|
||||||
endtime = time.Now().Add(time.Second * time.Duration(duration_secs))
|
endtime = time.Now().Add(time.Second * time.Duration(duration_secs))
|
||||||
var stats Stats
|
var stats Stats
|
||||||
|
|
||||||
|
// If we perviously set the object count after running a put
|
||||||
|
// test, set the object count back to -1 for the new put test.
|
||||||
|
if r == 'p' && object_count_flag {
|
||||||
|
object_count = -1
|
||||||
|
object_count_flag = false
|
||||||
|
}
|
||||||
|
|
||||||
switch r {
|
switch r {
|
||||||
case 'c':
|
case 'c':
|
||||||
log.Printf("Running Loop %d BUCKET CLEAR TEST", loop)
|
log.Printf("Running Loop %d BUCKET CLEAR TEST", loop)
|
||||||
|
@ -650,6 +653,14 @@ func runWrapper(loop int, r rune) {
|
||||||
for atomic.LoadInt64(&running_threads) > 0 {
|
for atomic.LoadInt64(&running_threads) > 0 {
|
||||||
time.Sleep(time.Millisecond)
|
time.Sleep(time.Millisecond)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// If the user didn't set the object_count, we can set it here
|
||||||
|
// to limit subsequent get/del tests to valid objects only.
|
||||||
|
if r == 'p' && object_count < 0 {
|
||||||
|
object_count = op_counter + 1
|
||||||
|
object_count_flag = true
|
||||||
|
}
|
||||||
stats.log()
|
stats.log()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -747,9 +758,8 @@ func initData() {
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
// Hello
|
// Hello
|
||||||
fmt.Println("Wasabi benchmark program v2.0")
|
log.Printf("Hotsauce S3 Benchmark Version 0.1")
|
||||||
|
|
||||||
//fmt.Println("accesskey:", access_key, "secretkey:", secret_key)
|
|
||||||
cfg = &aws.Config{
|
cfg = &aws.Config{
|
||||||
Endpoint: aws.String(url_host),
|
Endpoint: aws.String(url_host),
|
||||||
Credentials: credentials.NewStaticCredentials(access_key, secret_key, ""),
|
Credentials: credentials.NewStaticCredentials(access_key, secret_key, ""),
|
||||||
|
@ -760,8 +770,19 @@ func main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Echo the parameters
|
// Echo the parameters
|
||||||
logit(fmt.Sprintf("Parameters: url=%s, bucket_prefix=%s, bucket_count=%d, region=%s, duration=%d, threads=%d, loops=%d, size=%s",
|
log.Printf("Parameters:")
|
||||||
url_host, bucket_prefix, bucket_count, region, duration_secs, threads, loops, sizeArg))
|
log.Printf("url=%s", url_host)
|
||||||
|
log.Printf("object_prefix=%s", object_prefix)
|
||||||
|
log.Printf("bucket_prefix=%s", bucket_prefix)
|
||||||
|
log.Printf("region=%s", region)
|
||||||
|
log.Printf("modes=%s", modes)
|
||||||
|
log.Printf("object_count=%d", object_count)
|
||||||
|
log.Printf("bucket_count=%d", bucket_count)
|
||||||
|
log.Printf("duration=%d", duration_secs)
|
||||||
|
log.Printf("threads=%d", threads)
|
||||||
|
log.Printf("loops=%d", loops)
|
||||||
|
log.Printf("size=%s", sizeArg)
|
||||||
|
log.Printf("interval=%f", interval)
|
||||||
|
|
||||||
// Init Data
|
// Init Data
|
||||||
initData()
|
initData()
|
||||||
|
|
Loading…
Reference in New Issue