17394: Test BlockWrite storage classes precedence.
authorTom Clegg <tom@curii.com>
Thu, 15 Jul 2021 13:27:25 +0000 (09:27 -0400)
committerTom Clegg <tom@curii.com>
Thu, 15 Jul 2021 13:27:25 +0000 (09:27 -0400)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@curii.com>

sdk/go/keepclient/keepclient_test.go

index 724c66e1302e8c12a46b8aba448e4446e4bbc1b8..c52e07b8f6ea3b6ea417f9843049e3d99b986fa5 100644 (file)
@@ -6,6 +6,7 @@ package keepclient
 
 import (
        "bytes"
+       "context"
        "crypto/md5"
        "errors"
        "fmt"
@@ -20,6 +21,7 @@ import (
        "testing"
        "time"
 
+       "git.arvados.org/arvados.git/sdk/go/arvados"
        "git.arvados.org/arvados.git/sdk/go/arvadosclient"
        "git.arvados.org/arvados.git/sdk/go/arvadostest"
        . "gopkg.in/check.v1"
@@ -244,19 +246,25 @@ func (s *StandaloneSuite) TestUploadWithStorageClasses(c *C) {
 func (s *StandaloneSuite) TestPutWithStorageClasses(c *C) {
        nServers := 5
        for _, trial := range []struct {
-               replicas    int
-               classes     []string
-               minRequests int
-               maxRequests int
-               success     bool
+               replicas      int
+               clientClasses []string
+               putClasses    []string // putClasses takes precedence over clientClasses
+               minRequests   int
+               maxRequests   int
+               success       bool
        }{
-               {1, []string{"class1"}, 1, 1, true},
-               {2, []string{"class1"}, 1, 2, true},
-               {3, []string{"class1"}, 2, 3, true},
-               {1, []string{"class1", "class2"}, 1, 1, true},
-               {nServers*2 + 1, []string{"class1"}, nServers, nServers, false},
-               {1, []string{"class404"}, nServers, nServers, false},
-               {1, []string{"class1", "class404"}, nServers, nServers, false},
+               {1, []string{"class1"}, nil, 1, 1, true},
+               {2, []string{"class1"}, nil, 1, 2, true},
+               {3, []string{"class1"}, nil, 2, 3, true},
+               {1, []string{"class1", "class2"}, nil, 1, 1, true},
+               {3, nil, []string{"class1"}, 2, 3, true},
+               {1, nil, []string{"class1", "class2"}, 1, 1, true},
+               {1, []string{"class404"}, []string{"class1", "class2"}, 1, 1, true},
+               {1, []string{"class1"}, []string{"class404", "class2"}, nServers, nServers, false},
+               {nServers*2 + 1, []string{"class1"}, nil, nServers, nServers, false},
+               {1, []string{"class404"}, nil, nServers, nServers, false},
+               {1, []string{"class1", "class404"}, nil, nServers, nServers, false},
+               {1, nil, []string{"class1", "class404"}, nServers, nServers, false},
        } {
                c.Logf("%+v", trial)
                st := &StubPutHandler{
@@ -272,7 +280,7 @@ func (s *StandaloneSuite) TestPutWithStorageClasses(c *C) {
                arv, _ := arvadosclient.MakeArvadosClient()
                kc, _ := MakeKeepClient(arv)
                kc.Want_replicas = trial.replicas
-               kc.StorageClasses = trial.classes
+               kc.StorageClasses = trial.clientClasses
                arv.ApiToken = "abc123"
                localRoots := make(map[string]string)
                writableLocalRoots := make(map[string]string)
@@ -283,7 +291,10 @@ func (s *StandaloneSuite) TestPutWithStorageClasses(c *C) {
                }
                kc.SetServiceRoots(localRoots, writableLocalRoots, nil)
 
-               _, _, err := kc.PutB([]byte("foo"))
+               _, err := kc.BlockWrite(context.Background(), arvados.BlockWriteOptions{
+                       Data:           []byte("foo"),
+                       StorageClasses: trial.putClasses,
+               })
                if trial.success {
                        c.Check(err, check.IsNil)
                } else {