2021-12-06 13:24:41 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"log"
|
|
|
|
"os"
|
|
|
|
"fmt"
|
|
|
|
"time"
|
|
|
|
"io"
|
|
|
|
"io/ioutil"
|
|
|
|
"strings"
|
|
|
|
"net/http"
|
|
|
|
"crypto/tls"
|
2021-12-07 17:26:16 +00:00
|
|
|
"strconv"
|
2021-12-06 13:24:41 +00:00
|
|
|
|
|
|
|
"github.com/minio/minio-go/v7"
|
|
|
|
"github.com/minio/minio-go/v7/pkg/credentials"
|
|
|
|
)
|
|
|
|
|
|
|
|
// alias grg='sudo python3 main.py run dc1:dc1s1 garage -c /tmp/../tmp/garage-testnet/dc1/dc1s1/garage.toml'
|
|
|
|
// grg key new --name bench
|
|
|
|
// for i in $(seq 1 10); do grg bucket create bench$i; grg bucket allow --read --write bench$i --key bench; done
|
|
|
|
|
|
|
|
|
|
|
|
func main() {
|
2021-12-09 17:04:45 +00:00
|
|
|
fmt.Printf("endpoint,nanoseconds\n")
|
2021-12-07 17:26:16 +00:00
|
|
|
_, isSSL := os.LookupEnv("SSL");
|
|
|
|
opts := minio.Options {
|
2021-12-06 13:24:41 +00:00
|
|
|
Creds: credentials.NewStaticV4(os.Getenv("AWS_ACCESS_KEY_ID"), os.Getenv("AWS_SECRET_ACCESS_KEY"), ""),
|
2021-12-07 17:26:16 +00:00
|
|
|
Secure: isSSL,
|
|
|
|
}
|
|
|
|
|
|
|
|
if region, ok := os.LookupEnv("REGION"); ok {
|
|
|
|
opts.Region = region
|
|
|
|
}
|
|
|
|
|
|
|
|
if _, ok := os.LookupEnv("SSL_INSECURE"); ok {
|
|
|
|
opts.Transport = &http.Transport{TLSClientConfig: &tls.Config{InsecureSkipVerify: true}}
|
|
|
|
}
|
|
|
|
|
|
|
|
mc, err := minio.New(os.Getenv("ENDPOINT"), &opts)
|
2021-12-06 13:24:41 +00:00
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal("failed connect", err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
for i := 0; i < 100; i++ {
|
|
|
|
start := time.Now()
|
|
|
|
_, err := mc.ListBuckets(context.Background())
|
|
|
|
elapsed := time.Since(start)
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal("failed listbucket: ", err)
|
|
|
|
return
|
|
|
|
}
|
2021-12-09 17:04:45 +00:00
|
|
|
fmt.Printf("listbuckets,%v\n", elapsed.Nanoseconds())
|
2021-12-06 13:24:41 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
for i := 0; i < 100; i++ {
|
2021-12-07 17:26:16 +00:00
|
|
|
istr := strconv.Itoa(i)
|
|
|
|
content := istr + " hello world " + istr
|
2021-12-06 13:24:41 +00:00
|
|
|
start := time.Now()
|
2021-12-07 17:26:16 +00:00
|
|
|
_, err := mc.PutObject(context.Background(), "bench1", "element"+istr, strings.NewReader(content), int64(len(content)), minio.PutObjectOptions{ContentType:"application/octet-stream"})
|
2021-12-06 13:24:41 +00:00
|
|
|
elapsed := time.Since(start)
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal("failed putObject: ",err)
|
|
|
|
return
|
|
|
|
}
|
2021-12-09 17:04:45 +00:00
|
|
|
fmt.Printf("putobject,%v\n", elapsed.Nanoseconds())
|
2021-12-06 13:24:41 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
for i := 0; i < 100; i++ {
|
|
|
|
ctx, cancel := context.WithCancel(context.Background())
|
|
|
|
defer cancel()
|
|
|
|
|
|
|
|
start := time.Now()
|
|
|
|
objectCh := mc.ListObjects(ctx, "bench1", minio.ListObjectsOptions{
|
|
|
|
Recursive: true,
|
|
|
|
})
|
|
|
|
for object := range objectCh {
|
|
|
|
if object.Err != nil {
|
|
|
|
log.Fatal(object.Err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
elapsed := time.Since(start)
|
2021-12-09 17:04:45 +00:00
|
|
|
fmt.Printf("listobjects,%v\n", elapsed.Nanoseconds())
|
2021-12-06 13:24:41 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
for i := 0; i < 100; i++ {
|
2021-12-07 17:26:16 +00:00
|
|
|
istr := strconv.Itoa(i)
|
2021-12-06 13:24:41 +00:00
|
|
|
start := time.Now()
|
2021-12-07 17:26:16 +00:00
|
|
|
object, err := mc.GetObject(context.Background(), "bench1", "element"+istr, minio.GetObjectOptions{})
|
2021-12-06 13:24:41 +00:00
|
|
|
if err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if _, err = io.Copy(ioutil.Discard, object) ; err != nil {
|
|
|
|
log.Fatal("failed getobject: ", err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
elapsed := time.Since(start)
|
2021-12-09 17:04:45 +00:00
|
|
|
fmt.Printf("getobject,%v\n", elapsed.Nanoseconds())
|
2021-12-06 13:24:41 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
for i := 0; i < 100; i++ {
|
2021-12-07 17:26:16 +00:00
|
|
|
istr := strconv.Itoa(i)
|
2021-12-06 13:24:41 +00:00
|
|
|
start := time.Now()
|
2021-12-07 17:26:16 +00:00
|
|
|
err = mc.RemoveObject(context.Background(), "bench1", "element"+istr, minio.RemoveObjectOptions{})
|
2021-12-06 13:24:41 +00:00
|
|
|
elapsed := time.Since(start)
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
return
|
|
|
|
}
|
2021-12-09 17:04:45 +00:00
|
|
|
fmt.Printf("removeobject,%v\n", elapsed.Nanoseconds())
|
2021-12-06 13:24:41 +00:00
|
|
|
}
|
|
|
|
}
|