X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/139200027a3192260b5ea7c2d0c93a8eb5f8eb7e..16fe80b0e93ed8c8416b2dcbc0e2ad49bc850738:/services/keep-balance/balance_run_test.go diff --git a/services/keep-balance/balance_run_test.go b/services/keep-balance/balance_run_test.go index a138d911a3..02080329ec 100644 --- a/services/keep-balance/balance_run_test.go +++ b/services/keep-balance/balance_run_test.go @@ -138,7 +138,9 @@ func (s *stubServer) serveCollectionsButSkipOne() *reqTracker { rt.Add(r) if strings.Contains(r.Form.Get("filters"), `"modified_at","\u003c="`) { io.WriteString(w, `{"items_available":3,"items":[]}`) - } else if strings.Contains(r.Form.Get("filters"), `"modified_at","\u003e="`) { + } else if strings.Contains(r.Form.Get("filters"), `"modified_at","\u003e`) { + io.WriteString(w, `{"items_available":0,"items":[]}`) + } else if strings.Contains(r.Form.Get("filters"), `"modified_at","="`) && strings.Contains(r.Form.Get("filters"), `"uuid","\u003e"`) { io.WriteString(w, `{"items_available":0,"items":[]}`) } else { io.WriteString(w, `{"items_available":2,"items":[ @@ -236,7 +238,7 @@ func (s *runSuite) TestRefuseZeroCollections(c *check.C) { s.stub.serveKeepstoreIndexFoo4Bar1() trashReqs := s.stub.serveKeepstoreTrash() pullReqs := s.stub.serveKeepstorePull() - err := (&Balancer{}).Run(s.config, opts) + _, err := (&Balancer{}).Run(s.config, opts) c.Check(err, check.ErrorMatches, "received zero collections") c.Check(trashReqs.Count(), check.Equals, 4) c.Check(pullReqs.Count(), check.Equals, 0) @@ -254,7 +256,7 @@ func (s *runSuite) TestServiceTypes(c *check.C) { s.stub.serveFourDiskKeepServices() indexReqs := s.stub.serveKeepstoreIndexFoo4Bar1() trashReqs := s.stub.serveKeepstoreTrash() - err := (&Balancer{}).Run(s.config, opts) + _, err := (&Balancer{}).Run(s.config, opts) c.Check(err, check.IsNil) c.Check(indexReqs.Count(), check.Equals, 0) c.Check(trashReqs.Count(), check.Equals, 0) @@ -271,7 +273,7 @@ func (s *runSuite) TestRefuseNonAdmin(c *check.C) { s.stub.serveFourDiskKeepServices() trashReqs := s.stub.serveKeepstoreTrash() pullReqs := s.stub.serveKeepstorePull() - err := (&Balancer{}).Run(s.config, opts) + _, err := (&Balancer{}).Run(s.config, opts) c.Check(err, check.ErrorMatches, "current user .* is not .* admin user") c.Check(trashReqs.Count(), check.Equals, 0) c.Check(pullReqs.Count(), check.Equals, 0) @@ -289,7 +291,7 @@ func (s *runSuite) TestDetectSkippedCollections(c *check.C) { s.stub.serveKeepstoreIndexFoo4Bar1() trashReqs := s.stub.serveKeepstoreTrash() pullReqs := s.stub.serveKeepstorePull() - err := (&Balancer{}).Run(s.config, opts) + _, err := (&Balancer{}).Run(s.config, opts) c.Check(err, check.ErrorMatches, `Retrieved 2 collections with modtime <= .* but server now reports there are 3 collections.*`) c.Check(trashReqs.Count(), check.Equals, 4) c.Check(pullReqs.Count(), check.Equals, 0) @@ -302,14 +304,17 @@ func (s *runSuite) TestDryRun(c *check.C) { Logger: s.logger(c), } s.stub.serveCurrentUserAdmin() - s.stub.serveFooBarFileCollections() + collReqs := s.stub.serveFooBarFileCollections() s.stub.serveFourDiskKeepServices() s.stub.serveKeepstoreIndexFoo4Bar1() trashReqs := s.stub.serveKeepstoreTrash() pullReqs := s.stub.serveKeepstorePull() var bal Balancer - err := bal.Run(s.config, opts) + _, err := bal.Run(s.config, opts) c.Check(err, check.IsNil) + for _, req := range collReqs.reqs { + c.Check(req.Form.Get("include_trash"), check.Equals, "true") + } c.Check(trashReqs.Count(), check.Equals, 0) c.Check(pullReqs.Count(), check.Equals, 0) stats := bal.getStatistics() @@ -332,7 +337,7 @@ func (s *runSuite) TestCommit(c *check.C) { trashReqs := s.stub.serveKeepstoreTrash() pullReqs := s.stub.serveKeepstorePull() var bal Balancer - err := bal.Run(s.config, opts) + _, err := bal.Run(s.config, opts) c.Check(err, check.IsNil) c.Check(trashReqs.Count(), check.Equals, 8) c.Check(pullReqs.Count(), check.Equals, 4) @@ -362,13 +367,14 @@ func (s *runSuite) TestRunForever(c *check.C) { s.config.RunPeriod = arvados.Duration(time.Millisecond) go RunForever(s.config, opts, stop) - // Each run should send 4 clear trash lists + 4 pull lists + 4 - // trash lists. We should complete four runs in much less than + // Each run should send 4 pull lists + 4 trash lists. The + // first run should also send 4 empty trash lists at + // startup. We should complete all four runs in much less than // a second. for t0 := time.Now(); pullReqs.Count() < 16 && time.Since(t0) < 10*time.Second; { time.Sleep(time.Millisecond) } stop <- true c.Check(pullReqs.Count() >= 16, check.Equals, true) - c.Check(trashReqs.Count(), check.Equals, 2*pullReqs.Count()) + c.Check(trashReqs.Count(), check.Equals, pullReqs.Count()+4) }