From 5b586fefc905dbc610b98345ff6b61dc71d5afa1 Mon Sep 17 00:00:00 2001 From: Alan Bernstein Date: Wed, 11 Jan 2017 09:25:09 -0600 Subject: [PATCH] Implement S3 writer --- bench/store.go | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 bench/store.go diff --git a/bench/store.go b/bench/store.go new file mode 100644 index 000000000..36a64cded --- /dev/null +++ b/bench/store.go @@ -0,0 +1,45 @@ +package bench + +import ( + "fmt" + "strings" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/s3" +) + +type Uploader interface { + Write(p []byte) (n int, err error) +} + +func NewS3Uploader(key string) *S3Uploader { + region := "us-east-1" + return &S3Uploader{ + region, + "benchmarks-pilosa", + s3.New(session.New(&aws.Config{Region: aws.String(region)})), + key, + } +} + +type S3Uploader struct { + region string + bucket string + service *s3.S3 + key string +} + +// pilosa-sandbox is "us-east-1" +// benchmarks go to benchmarks-pilosa/run-uuid/??.txt +// first return value of PutObject contains an ETag (hash) of the uploaded object, returned here but not needed +func (u *S3Uploader) Write(data []byte) (int, error) { + fmt.Println(string(data)) + _, err := u.service.PutObject(&s3.PutObjectInput{ + Body: strings.NewReader(string(data)), + Bucket: &u.bucket, + Key: &u.key, + }) + + return 0, err +}