in e2e-examples/gcs/main.go [249:311]
func makeJsonRequest(client *storage.Client) []int {
fmt.Println("========================== start http calls ===============================")
res := []int{}
switch *method {
case "media":
for i := 0; i < *numCalls; i++ {
start := time.Now()
obj := client.Bucket(*bucketName).Object(*objectName)
rc, err := obj.NewReader(context.Background())
if err != nil {
fmt.Println("Failed to create object reader: %v", err)
os.Exit(1)
}
defer rc.Close()
_, err = ioutil.ReadAll(rc)
if err != nil {
fmt.Println("Failed to read data from object: %v", err)
os.Exit(1)
}
total := time.Since(start).Milliseconds()
res = append(res, int(total))
//fmt.Printf("http object data: %s\n", data)
fmt.Println("total time in ms for read: ", total)
}
case "metadata":
for i := 0; i < *numCalls; i++ {
ctx := context.Background()
start := time.Now()
obj := client.Bucket(*bucketName).Object(*objectName)
_, err := obj.Attrs(ctx)
if err != nil {
fmt.Println("obj.Attrs() got error: ", err)
os.Exit(1)
}
//fmt.Printf("-----> obj.Attrs() result: %+v\n", attr)
total := time.Since(start).Milliseconds()
res = append(res, int(total))
fmt.Println("total time in ms for read attributes: ", total)
}
case "write":
for i := 0; i < *numCalls; i++ {
ctx := context.Background()
start := time.Now()
msg := strings.Repeat("x", *size*1024)
obj := client.Bucket(*bucketName).Object(*objectName)
w := obj.NewWriter(ctx)
if _, err := fmt.Fprint(w, msg); err != nil {
fmt.Println("Failed to write message to object: %v", err)
}
if err := w.Close(); err != nil {
fmt.Println("object writer failed closing: %v", err)
os.Exit(1)
}
total := time.Since(start).Milliseconds()
res = append(res, int(total))
fmt.Println("total time in ms for http write: ", total)
}
}
return res
}