X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/49a0efed4d774c060db94b9702760d33a4134a17..8d7b5ef108e3b92c6908ced8420c4b6f74570d48:/tools/keep-exercise/keep-exercise.go diff --git a/tools/keep-exercise/keep-exercise.go b/tools/keep-exercise/keep-exercise.go index 4131d752b8..6c8a866291 100644 --- a/tools/keep-exercise/keep-exercise.go +++ b/tools/keep-exercise/keep-exercise.go @@ -1,3 +1,7 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + // Testing tool for Keep services. // // keepexercise helps measure throughput and test reliability under @@ -21,6 +25,7 @@ import ( "io" "io/ioutil" "log" + "net/http" "time" "git.curoverse.com/arvados.git/sdk/go/arvadosclient" @@ -52,15 +57,21 @@ func main() { log.Fatal(err) } kc.Want_replicas = *Replicas - kc.Client.Timeout = 10 * time.Minute + + transport := *(http.DefaultTransport.(*http.Transport)) + transport.TLSClientConfig = arvadosclient.MakeTLSConfig(arv.ApiInsecure) + kc.HTTPClient = &http.Client{ + Timeout: 10 * time.Minute, + Transport: &transport, + } overrideServices(kc) - nextBuf := make(chan []byte, *WriteThreads) nextLocator := make(chan string, *ReadThreads+*WriteThreads) go countBeans(nextLocator) for i := 0; i < *WriteThreads; i++ { + nextBuf := make(chan []byte, 1) go makeBufs(nextBuf, i) go doWrites(kc, nextBuf, nextLocator) } @@ -106,23 +117,28 @@ func countBeans(nextLocator chan string) { } } -func makeBufs(nextBuf chan []byte, threadID int) { +func makeBufs(nextBuf chan<- []byte, threadID int) { buf := make([]byte, *BlockSize) if *VaryThread { binary.PutVarint(buf, int64(threadID)) } + randSize := 524288 + if randSize > *BlockSize { + randSize = *BlockSize + } for { if *VaryRequest { - buf = make([]byte, *BlockSize) - if _, err := io.ReadFull(rand.Reader, buf); err != nil { + rnd := make([]byte, randSize) + if _, err := io.ReadFull(rand.Reader, rnd); err != nil { log.Fatal(err) } + buf = append(rnd, buf[randSize:]...) } nextBuf <- buf } } -func doWrites(kc *keepclient.KeepClient, nextBuf chan []byte, nextLocator chan string) { +func doWrites(kc *keepclient.KeepClient, nextBuf <-chan []byte, nextLocator chan<- string) { for buf := range nextBuf { locator, _, err := kc.PutB(buf) if err != nil { @@ -139,7 +155,7 @@ func doWrites(kc *keepclient.KeepClient, nextBuf chan []byte, nextLocator chan s } } -func doReads(kc *keepclient.KeepClient, nextLocator chan string) { +func doReads(kc *keepclient.KeepClient, nextLocator <-chan string) { for locator := range nextLocator { rdr, size, url, err := kc.Get(locator) if err != nil {