projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' into 13822-nm-delayed-daemon
[arvados.git]
/
sdk
/
go
/
keepclient
/
keepclient_test.go
diff --git
a/sdk/go/keepclient/keepclient_test.go
b/sdk/go/keepclient/keepclient_test.go
index 055141cbe88165cbe93a79d903d0b69a3731c672..dc80ad7e1d6378ad09da968db62cf038002d0b9c 100644
(file)
--- a/
sdk/go/keepclient/keepclient_test.go
+++ b/
sdk/go/keepclient/keepclient_test.go
@@
-88,20
+88,23
@@
func (s *ServerRequiredSuite) TestDefaultReplications(c *C) {
arv.DiscoveryDoc["defaultCollectionReplication"] = 1.0
kc, err = MakeKeepClient(arv)
arv.DiscoveryDoc["defaultCollectionReplication"] = 1.0
kc, err = MakeKeepClient(arv)
+ c.Check(err, IsNil)
c.Assert(kc.Want_replicas, Equals, 1)
}
type StubPutHandler struct {
c.Assert(kc.Want_replicas, Equals, 1)
}
type StubPutHandler struct {
- c *C
- expectPath string
- expectApiToken string
- expectBody string
- handled chan string
+ c *C
+ expectPath string
+ expectApiToken string
+ expectBody string
+ expectStorageClass string
+ handled chan string
}
func (sph StubPutHandler) ServeHTTP(resp http.ResponseWriter, req *http.Request) {
sph.c.Check(req.URL.Path, Equals, "/"+sph.expectPath)
sph.c.Check(req.Header.Get("Authorization"), Equals, fmt.Sprintf("OAuth2 %s", sph.expectApiToken))
}
func (sph StubPutHandler) ServeHTTP(resp http.ResponseWriter, req *http.Request) {
sph.c.Check(req.URL.Path, Equals, "/"+sph.expectPath)
sph.c.Check(req.Header.Get("Authorization"), Equals, fmt.Sprintf("OAuth2 %s", sph.expectApiToken))
+ sph.c.Check(req.Header.Get("X-Keep-Storage-Classes"), Equals, sph.expectStorageClass)
body, err := ioutil.ReadAll(req.Body)
sph.c.Check(err, Equals, nil)
sph.c.Check(body, DeepEquals, []byte(sph.expectBody))
body, err := ioutil.ReadAll(req.Body)
sph.c.Check(err, Equals, nil)
sph.c.Check(body, DeepEquals, []byte(sph.expectBody))
@@
-147,12
+150,13
@@
func (s *StandaloneSuite) TestUploadToStubKeepServer(c *C) {
"acbd18db4cc2f85cedef654fccc4a4d8",
"abc123",
"foo",
"acbd18db4cc2f85cedef654fccc4a4d8",
"abc123",
"foo",
+ "hot",
make(chan string)}
UploadToStubHelper(c, st,
func(kc *KeepClient, url string, reader io.ReadCloser, writer io.WriteCloser, upload_status chan uploadStatus) {
make(chan string)}
UploadToStubHelper(c, st,
func(kc *KeepClient, url string, reader io.ReadCloser, writer io.WriteCloser, upload_status chan uploadStatus) {
-
- go kc.uploadToKeepServer(url, st.expectPath, reader, upload_status, int64(len("foo")),
0
)
+ kc.StorageClasses = []string{"hot"}
+ go kc.uploadToKeepServer(url, st.expectPath, reader, upload_status, int64(len("foo")),
kc.getRequestID()
)
writer.Write([]byte("foo"))
writer.Close()
writer.Write([]byte("foo"))
writer.Close()
@@
-169,11
+173,12
@@
func (s *StandaloneSuite) TestUploadToStubKeepServerBufferReader(c *C) {
"acbd18db4cc2f85cedef654fccc4a4d8",
"abc123",
"foo",
"acbd18db4cc2f85cedef654fccc4a4d8",
"abc123",
"foo",
+ "",
make(chan string)}
UploadToStubHelper(c, st,
func(kc *KeepClient, url string, _ io.ReadCloser, _ io.WriteCloser, upload_status chan uploadStatus) {
make(chan string)}
UploadToStubHelper(c, st,
func(kc *KeepClient, url string, _ io.ReadCloser, _ io.WriteCloser, upload_status chan uploadStatus) {
- go kc.uploadToKeepServer(url, st.expectPath, bytes.NewBuffer([]byte("foo")), upload_status, 3,
0
)
+ go kc.uploadToKeepServer(url, st.expectPath, bytes.NewBuffer([]byte("foo")), upload_status, 3,
kc.getRequestID()
)
<-st.handled
<-st.handled
@@
-194,10
+199,12
@@
func (fh FailHandler) ServeHTTP(resp http.ResponseWriter, req *http.Request) {
type FailThenSucceedHandler struct {
handled chan string
count int
type FailThenSucceedHandler struct {
handled chan string
count int
- successhandler StubGetHandler
+ successhandler http.Handler
+ reqIDs []string
}
func (fh *FailThenSucceedHandler) ServeHTTP(resp http.ResponseWriter, req *http.Request) {
}
func (fh *FailThenSucceedHandler) ServeHTTP(resp http.ResponseWriter, req *http.Request) {
+ fh.reqIDs = append(fh.reqIDs, req.Header.Get("X-Request-Id"))
if fh.count == 0 {
resp.WriteHeader(500)
fh.count += 1
if fh.count == 0 {
resp.WriteHeader(500)
fh.count += 1
@@
-226,7
+233,7
@@
func (s *StandaloneSuite) TestFailedUploadToStubKeepServer(c *C) {
func(kc *KeepClient, url string, reader io.ReadCloser,
writer io.WriteCloser, upload_status chan uploadStatus) {
func(kc *KeepClient, url string, reader io.ReadCloser,
writer io.WriteCloser, upload_status chan uploadStatus) {
- go kc.uploadToKeepServer(url, hash, reader, upload_status, 3,
0
)
+ go kc.uploadToKeepServer(url, hash, reader, upload_status, 3,
kc.getRequestID()
)
writer.Write([]byte("foo"))
writer.Close()
writer.Write([]byte("foo"))
writer.Close()
@@
-262,6
+269,7
@@
func (s *StandaloneSuite) TestPutB(c *C) {
hash,
"abc123",
"foo",
hash,
"abc123",
"foo",
+ "",
make(chan string, 5)}
arv, _ := arvadosclient.MakeArvadosClient()
make(chan string, 5)}
arv, _ := arvadosclient.MakeArvadosClient()
@@
-303,6
+311,7
@@
func (s *StandaloneSuite) TestPutHR(c *C) {
hash,
"abc123",
"foo",
hash,
"abc123",
"foo",
+ "",
make(chan string, 5)}
arv, _ := arvadosclient.MakeArvadosClient()
make(chan string, 5)}
arv, _ := arvadosclient.MakeArvadosClient()
@@
-351,6
+360,7
@@
func (s *StandaloneSuite) TestPutWithFail(c *C) {
hash,
"abc123",
"foo",
hash,
"abc123",
"foo",
+ "",
make(chan string, 4)}
fh := FailHandler{
make(chan string, 4)}
fh := FailHandler{
@@
-409,6
+419,7
@@
func (s *StandaloneSuite) TestPutWithTooManyFail(c *C) {
hash,
"abc123",
"foo",
hash,
"abc123",
"foo",
+ "",
make(chan string, 1)}
fh := FailHandler{
make(chan string, 1)}
fh := FailHandler{
@@
-559,8
+570,9
@@
func (s *StandaloneSuite) TestGetFail(c *C) {
func (s *StandaloneSuite) TestGetFailRetry(c *C) {
hash := fmt.Sprintf("%x", md5.Sum([]byte("foo")))
func (s *StandaloneSuite) TestGetFailRetry(c *C) {
hash := fmt.Sprintf("%x", md5.Sum([]byte("foo")))
- st := &FailThenSucceedHandler{make(chan string, 1), 0,
- StubGetHandler{
+ st := &FailThenSucceedHandler{
+ handled: make(chan string, 1),
+ successhandler: StubGetHandler{
c,
hash,
"abc123",
c,
hash,
"abc123",
@@
-584,6
+596,13
@@
func (s *StandaloneSuite) TestGetFailRetry(c *C) {
content, err2 := ioutil.ReadAll(r)
c.Check(err2, Equals, nil)
c.Check(content, DeepEquals, []byte("foo"))
content, err2 := ioutil.ReadAll(r)
c.Check(err2, Equals, nil)
c.Check(content, DeepEquals, []byte("foo"))
+
+ c.Logf("%q", st.reqIDs)
+ c.Assert(len(st.reqIDs) > 1, Equals, true)
+ for _, reqid := range st.reqIDs {
+ c.Check(reqid, Not(Equals), "")
+ c.Check(reqid, Equals, st.reqIDs[0])
+ }
}
func (s *StandaloneSuite) TestGetNetError(c *C) {
}
func (s *StandaloneSuite) TestGetNetError(c *C) {
@@
-978,6
+997,7
@@
func (s *StandaloneSuite) TestPutBWant2ReplicasWithOnlyOneWritableLocalRoot(c *C
hash,
"abc123",
"foo",
hash,
"abc123",
"foo",
+ "",
make(chan string, 5)}
arv, _ := arvadosclient.MakeArvadosClient()
make(chan string, 5)}
arv, _ := arvadosclient.MakeArvadosClient()
@@
-1016,6
+1036,7
@@
func (s *StandaloneSuite) TestPutBWithNoWritableLocalRoots(c *C) {
hash,
"abc123",
"foo",
hash,
"abc123",
"foo",
+ "",
make(chan string, 5)}
arv, _ := arvadosclient.MakeArvadosClient()
make(chan string, 5)}
arv, _ := arvadosclient.MakeArvadosClient()
@@
-1179,29
+1200,15
@@
func (s *StandaloneSuite) TestGetIndexWithNoSuchPrefix(c *C) {
c.Check(content, DeepEquals, st.body[0:len(st.body)-1])
}
c.Check(content, DeepEquals, st.body[0:len(st.body)-1])
}
-type FailThenSucceedPutHandler struct {
- handled chan string
- count int
- successhandler StubPutHandler
-}
-
-func (h *FailThenSucceedPutHandler) ServeHTTP(resp http.ResponseWriter, req *http.Request) {
- if h.count == 0 {
- resp.WriteHeader(500)
- h.count += 1
- h.handled <- fmt.Sprintf("http://%s", req.Host)
- } else {
- h.successhandler.ServeHTTP(resp, req)
- }
-}
-
func (s *StandaloneSuite) TestPutBRetry(c *C) {
func (s *StandaloneSuite) TestPutBRetry(c *C) {
- st := &FailThenSucceedPutHandler{make(chan string, 1), 0,
- StubPutHandler{
+ st := &FailThenSucceedHandler{
+ handled: make(chan string, 1),
+ successhandler: StubPutHandler{
c,
Md5String("foo"),
"abc123",
"foo",
c,
Md5String("foo"),
"abc123",
"foo",
+ "",
make(chan string, 5)}}
arv, _ := arvadosclient.MakeArvadosClient()
make(chan string, 5)}}
arv, _ := arvadosclient.MakeArvadosClient()