11 "git.curoverse.com/arvados.git/sdk/go/arvados"
12 "git.curoverse.com/arvados.git/sdk/go/arvadosclient"
13 "git.curoverse.com/arvados.git/sdk/go/arvadostest"
14 "git.curoverse.com/arvados.git/sdk/go/keepclient"
16 check "gopkg.in/check.v1"
19 var _ = check.Suite(&integrationSuite{})
21 type integrationSuite struct {
23 keepClient *keepclient.KeepClient
26 func (s *integrationSuite) SetUpSuite(c *check.C) {
30 arvadostest.ResetEnv()
31 arvadostest.StartAPI()
32 arvadostest.StartKeep(4, true)
34 arv, err := arvadosclient.MakeArvadosClient()
35 arv.ApiToken = arvadostest.DataManagerToken
36 c.Assert(err, check.IsNil)
38 s.keepClient, err = keepclient.MakeKeepClient(arv)
39 c.Assert(err, check.IsNil)
40 s.putReplicas(c, "foo", 4)
41 s.putReplicas(c, "bar", 1)
44 func (s *integrationSuite) putReplicas(c *check.C, data string, replicas int) {
45 s.keepClient.Want_replicas = replicas
46 _, _, err := s.keepClient.PutB([]byte(data))
47 c.Assert(err, check.IsNil)
50 func (s *integrationSuite) TearDownSuite(c *check.C) {
54 arvadostest.StopKeep(4)
58 func (s *integrationSuite) SetUpTest(c *check.C) {
60 Client: arvados.Client{
61 APIHost: os.Getenv("ARVADOS_API_HOST"),
62 AuthToken: arvadostest.DataManagerToken,
65 KeepServiceTypes: []string{"disk"},
69 func (s *integrationSuite) TestBalanceAPIFixtures(c *check.C) {
70 var logBuf *bytes.Buffer
71 for iter := 0; iter < 20; iter++ {
72 logBuf := &bytes.Buffer{}
76 Logger: log.New(logBuf, "", log.LstdFlags),
78 nextOpts, err := (&Balancer{}).Run(s.config, opts)
79 c.Check(err, check.IsNil)
80 c.Check(nextOpts.SafeRendezvousState, check.Not(check.Equals), "")
81 c.Check(nextOpts.CommitPulls, check.Equals, true)
83 c.Check(logBuf.String(), check.Matches, `(?ms).*ChangeSet{Pulls:1.*`)
84 c.Check(logBuf.String(), check.Not(check.Matches), `(?ms).*ChangeSet{.*Trashes:[^0]}*`)
85 } else if strings.Contains(logBuf.String(), "ChangeSet{Pulls:0") {
88 time.Sleep(200 * time.Millisecond)
90 c.Check(logBuf.String(), check.Not(check.Matches), `(?ms).*0 replicas (0 blocks, 0 bytes) underreplicated.*`)