X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/6eb3d1fb8fe71623fa63da46c250184cf2e4fbb8..f9e3d32c92920a806d50548dbb9b6c0aab7d8c54:/services/datamanager/summary/pull_list_test.go diff --git a/services/datamanager/summary/pull_list_test.go b/services/datamanager/summary/pull_list_test.go index dd73bf5349..60b495c41a 100644 --- a/services/datamanager/summary/pull_list_test.go +++ b/services/datamanager/summary/pull_list_test.go @@ -9,13 +9,13 @@ import ( ) // Gocheck boilerplate -func Test(t *testing.T) { +func TestPullLists(t *testing.T) { TestingT(t) } -type MySuite struct{} +type PullSuite struct{} -var _ = Suite(&MySuite{}) +var _ = Suite(&PullSuite{}) // Helper method to declare string sets more succinctly // Could be placed somewhere more general. @@ -27,24 +27,25 @@ func stringSet(slice ...string) (m map[string]struct{}) { return } -func (s *MySuite) TestPullListPrintsJSONCorrectly(c *C) { - pl := PullList{Entries: []PullListEntry{PullListEntry{ - Locator: Locator{Digest: blockdigest.MakeTestBlockDigest(0xBadBeef)}, +func (s *PullSuite) TestPullListPrintsJSONCorrectly(c *C) { + pl := PullList{PullRequest{ + Locator: Locator(blockdigest.MakeTestDigestSpecifySize(0xBadBeef, 56789)), Servers: []string{"keep0.qr1hi.arvadosapi.com:25107", - "keep1.qr1hi.arvadosapi.com:25108"}}}} + "keep1.qr1hi.arvadosapi.com:25108"}}} b, err := json.Marshal(pl) c.Assert(err, IsNil) - expectedOutput := `{"blocks":[{"locator":"0000000000000000000000000badbeef",` + + expectedOutput := `[{"locator":"0000000000000000000000000badbeef+56789",` + `"servers":["keep0.qr1hi.arvadosapi.com:25107",` + - `"keep1.qr1hi.arvadosapi.com:25108"]}]}` + `"keep1.qr1hi.arvadosapi.com:25108"]}]` c.Check(string(b), Equals, expectedOutput) } -func (s *MySuite) TestCreatePullServers(c *C) { +func (s *PullSuite) TestCreatePullServers(c *C) { var cs CanonicalString c.Check( CreatePullServers(cs, + stringSet(), stringSet(), []string{}, 5), @@ -53,7 +54,8 @@ func (s *MySuite) TestCreatePullServers(c *C) { c.Check( CreatePullServers(cs, - stringSet("keep0:25107", "keep1:25108"), + stringSet("https://keep0:25107", "https://keep1:25108"), + stringSet(), []string{}, 5), DeepEquals, @@ -61,38 +63,64 @@ func (s *MySuite) TestCreatePullServers(c *C) { c.Check( CreatePullServers(cs, - stringSet("keep0:25107", "keep1:25108"), - []string{"keep0:25107"}, + stringSet("https://keep0:25107", "https://keep1:25108"), + stringSet("https://keep0:25107"), + []string{"https://keep0:25107"}, 5), DeepEquals, - PullServers{To: []string{}, From: []string{"keep0:25107"}}) + PullServers{To: []string{}, From: []string{"https://keep0:25107"}}) c.Check( CreatePullServers(cs, - stringSet("keep0:25107", "keep1:25108"), - []string{"keep3:25110", "keep2:25109", "keep1:25108", "keep0:25107"}, + stringSet("https://keep0:25107", "https://keep1:25108"), + stringSet("https://keep3:25110", "https://keep2:25109", "https://keep1:25108", "https://keep0:25107"), + []string{"https://keep3:25110", "https://keep2:25109", "https://keep1:25108", "https://keep0:25107"}, 5), DeepEquals, - PullServers{To: []string{"keep3:25110", "keep2:25109"}, - From: []string{"keep1:25108", "keep0:25107"}}) + PullServers{To: []string{"https://keep3:25110", "https://keep2:25109"}, + From: []string{"https://keep1:25108", "https://keep0:25107"}}) c.Check( CreatePullServers(cs, - stringSet("keep0:25107", "keep1:25108"), - []string{"keep3:25110", "keep2:25109", "keep1:25108", "keep0:25107"}, + stringSet("https://keep0:25107", "https://keep1:25108"), + stringSet("https://keep3:25110", "https://keep1:25108", "https://keep0:25107"), + []string{"https://keep3:25110", "https://keep2:25109", "https://keep1:25108", "https://keep0:25107"}, + 5), + DeepEquals, + PullServers{To: []string{"https://keep3:25110"}, + From: []string{"https://keep1:25108", "https://keep0:25107"}}) + + c.Check( + CreatePullServers(cs, + stringSet("https://keep0:25107", "https://keep1:25108"), + stringSet("https://keep3:25110", "https://keep2:25109", "https://keep1:25108", "https://keep0:25107"), + []string{"https://keep3:25110", "https://keep2:25109", "https://keep1:25108", "https://keep0:25107"}, 1), DeepEquals, - PullServers{To: []string{"keep3:25110"}, - From: []string{"keep1:25108", "keep0:25107"}}) + PullServers{To: []string{"https://keep3:25110"}, + From: []string{"https://keep1:25108", "https://keep0:25107"}}) c.Check( CreatePullServers(cs, - stringSet("keep0:25107", "keep1:25108"), - []string{"keep3:25110", "keep2:25109", "keep1:25108", "keep0:25107"}, + stringSet("https://keep0:25107", "https://keep1:25108"), + stringSet("https://keep3:25110", "https://keep2:25109", + "https://keep1:25108", "https://keep0:25107"), + []string{"https://keep3:25110", "https://keep2:25109", + "https://keep1:25108", "https://keep0:25107"}, + 1), + DeepEquals, + PullServers{To: []string{"https://keep3:25110"}, + From: []string{"https://keep1:25108", "https://keep0:25107"}}) + + c.Check( + CreatePullServers(cs, + stringSet("https://keep0:25107", "https://keep1:25108"), + stringSet("https://keep3:25110", "https://keep2:25109", "https://keep1:25108", "https://keep0:25107"), + []string{"https://keep3:25110", "https://keep2:25109", "https://keep1:25108", "https://keep0:25107"}, 0), DeepEquals, PullServers{To: []string{}, - From: []string{"keep1:25108", "keep0:25107"}}) + From: []string{"https://keep1:25108", "https://keep0:25107"}}) } // Checks whether two pull list maps are equal. Since pull lists are @@ -113,20 +141,21 @@ func (c *pullListMapEqualsChecker) Check(params []interface{}, names []string) ( } for _, v := range obtained { - sort.Sort(EntriesByDigest(v.Entries)) + sort.Sort(PullListByLocator(v)) } for _, v := range expected { - sort.Sort(EntriesByDigest(v.Entries)) + sort.Sort(PullListByLocator(v)) } return DeepEquals.Check(params, names) } -var PullListMapEquals Checker = &pullListMapEqualsChecker{ - &CheckerInfo{Name: "PullListMapEquals", Params: []string{"obtained", "expected"}}, -} +var PullListMapEquals Checker = &pullListMapEqualsChecker{&CheckerInfo{ + Name: "PullListMapEquals", + Params: []string{"obtained", "expected"}, +}} -func (s *MySuite) TestBuildPullLists(c *C) { +func (s *PullSuite) TestBuildPullLists(c *C) { c.Check( BuildPullLists(map[Locator]PullServers{}), PullListMapEquals, @@ -135,133 +164,109 @@ func (s *MySuite) TestBuildPullLists(c *C) { locator1 := Locator{Digest: blockdigest.MakeTestBlockDigest(0xBadBeef)} c.Check( BuildPullLists(map[Locator]PullServers{ - locator1: PullServers{To: []string{}, From: []string{}}}), + locator1: {To: []string{}, From: []string{}}}), PullListMapEquals, map[string]PullList{}) c.Check( BuildPullLists(map[Locator]PullServers{ - locator1: PullServers{To: []string{}, From: []string{"f1", "f2"}}}), + locator1: {To: []string{}, From: []string{"f1", "f2"}}}), PullListMapEquals, map[string]PullList{}) c.Check( BuildPullLists(map[Locator]PullServers{ - locator1: PullServers{To: []string{"t1"}, From: []string{"f1", "f2"}}}), + locator1: {To: []string{"t1"}, From: []string{"f1", "f2"}}}), PullListMapEquals, - map[string]PullList{"t1": PullList{Entries: []PullListEntry{PullListEntry{ - Locator: locator1, - Servers: []string{"f1", "f2"}}}}}) + map[string]PullList{ + "t1": {PullRequest{locator1, []string{"f1", "f2"}}}}) c.Check( BuildPullLists(map[Locator]PullServers{ - locator1: PullServers{To: []string{"t1"}, From: []string{}}}), + locator1: {To: []string{"t1"}, From: []string{}}}), PullListMapEquals, - map[string]PullList{"t1": PullList{Entries: []PullListEntry{PullListEntry{ - Locator: locator1, - Servers: []string{}}}}}) + map[string]PullList{"t1": { + PullRequest{locator1, []string{}}}}) c.Check( BuildPullLists(map[Locator]PullServers{ - locator1: PullServers{To: []string{"t1", "t2"}, From: []string{"f1", "f2"}}}), + locator1: { + To: []string{"t1", "t2"}, + From: []string{"f1", "f2"}, + }}), PullListMapEquals, map[string]PullList{ - "t1": PullList{Entries: []PullListEntry{PullListEntry{ - Locator: locator1, - Servers: []string{"f1", "f2"}}}}, - "t2": PullList{Entries: []PullListEntry{PullListEntry{ - Locator: locator1, - Servers: []string{"f1", "f2"}}}}, + "t1": {PullRequest{locator1, []string{"f1", "f2"}}}, + "t2": {PullRequest{locator1, []string{"f1", "f2"}}}, }) locator2 := Locator{Digest: blockdigest.MakeTestBlockDigest(0xCabbed)} c.Check( BuildPullLists(map[Locator]PullServers{ - locator1: PullServers{To: []string{"t1"}, From: []string{"f1", "f2"}}, - locator2: PullServers{To: []string{"t2"}, From: []string{"f3", "f4"}}}), + locator1: {To: []string{"t1"}, From: []string{"f1", "f2"}}, + locator2: {To: []string{"t2"}, From: []string{"f3", "f4"}}}), PullListMapEquals, map[string]PullList{ - "t1": PullList{Entries: []PullListEntry{PullListEntry{ - Locator: locator1, - Servers: []string{"f1", "f2"}}}}, - "t2": PullList{Entries: []PullListEntry{PullListEntry{ - Locator: locator2, - Servers: []string{"f3", "f4"}}}}, + "t1": {PullRequest{locator1, []string{"f1", "f2"}}}, + "t2": {PullRequest{locator2, []string{"f3", "f4"}}}, }) c.Check( BuildPullLists(map[Locator]PullServers{ - locator1: PullServers{To: []string{"t1"}, From: []string{"f1", "f2"}}, - locator2: PullServers{To: []string{"t2", "t1"}, From: []string{"f3", "f4"}}}), + locator1: { + To: []string{"t1"}, + From: []string{"f1", "f2"}}, + locator2: { + To: []string{"t2", "t1"}, + From: []string{"f3", "f4"}}, + }), PullListMapEquals, map[string]PullList{ - "t1": PullList{Entries: []PullListEntry{ - PullListEntry{ - Locator: locator1, - Servers: []string{"f1", "f2"}}, - PullListEntry{ - Locator: locator2, - Servers: []string{"f3", "f4"}}}}, - "t2": PullList{Entries: []PullListEntry{PullListEntry{ - Locator: locator2, - Servers: []string{"f3", "f4"}}}}, + "t1": { + PullRequest{locator1, []string{"f1", "f2"}}, + PullRequest{locator2, []string{"f3", "f4"}}, + }, + "t2": { + PullRequest{locator2, []string{"f3", "f4"}}, + }, }) locator3 := Locator{Digest: blockdigest.MakeTestBlockDigest(0xDeadBeef)} locator4 := Locator{Digest: blockdigest.MakeTestBlockDigest(0xFedBeef)} c.Check( BuildPullLists(map[Locator]PullServers{ - locator1: PullServers{To: []string{"t1"}, From: []string{"f1", "f2"}}, - locator2: PullServers{To: []string{"t2", "t1"}, From: []string{"f3", "f4"}}, - locator3: PullServers{To: []string{"t3", "t2", "t1"}, From: []string{"f4", "f5"}}, - locator4: PullServers{To: []string{"t4", "t3", "t2", "t1"}, From: []string{"f1", "f5"}}, + locator1: { + To: []string{"t1"}, + From: []string{"f1", "f2"}}, + locator2: { + To: []string{"t2", "t1"}, + From: []string{"f3", "f4"}}, + locator3: { + To: []string{"t3", "t2", "t1"}, + From: []string{"f4", "f5"}}, + locator4: { + To: []string{"t4", "t3", "t2", "t1"}, + From: []string{"f1", "f5"}}, }), PullListMapEquals, map[string]PullList{ - "t1": PullList{Entries: []PullListEntry{ - PullListEntry{ - Locator: locator1, - Servers: []string{"f1", "f2"}}, - PullListEntry{ - Locator: locator2, - Servers: []string{"f3", "f4"}}, - PullListEntry{ - Locator: locator3, - Servers: []string{"f4", "f5"}}, - PullListEntry{ - Locator: locator4, - Servers: []string{"f1", "f5"}}, - }}, - "t2": PullList{Entries: []PullListEntry{ - PullListEntry{ - Locator: locator2, - Servers: []string{"f3", "f4"}}, - PullListEntry{ - Locator: locator3, - Servers: []string{"f4", "f5"}}, - PullListEntry{ - Locator: locator4, - Servers: []string{"f1", "f5"}}, - }}, - "t3": PullList{Entries: []PullListEntry{ - PullListEntry{ - Locator: locator3, - Servers: []string{"f4", "f5"}}, - PullListEntry{ - Locator: locator4, - Servers: []string{"f1", "f5"}}, - }}, - "t4": PullList{Entries: []PullListEntry{ - PullListEntry{ - Locator: locator4, - Servers: []string{"f1", "f5"}}, - }}, + "t1": { + PullRequest{locator1, []string{"f1", "f2"}}, + PullRequest{locator2, []string{"f3", "f4"}}, + PullRequest{locator3, []string{"f4", "f5"}}, + PullRequest{locator4, []string{"f1", "f5"}}, + }, + "t2": { + PullRequest{locator2, []string{"f3", "f4"}}, + PullRequest{locator3, []string{"f4", "f5"}}, + PullRequest{locator4, []string{"f1", "f5"}}, + }, + "t3": { + PullRequest{locator3, []string{"f4", "f5"}}, + PullRequest{locator4, []string{"f1", "f5"}}, + }, + "t4": { + PullRequest{locator4, []string{"f1", "f5"}}, + }, }) } - -func (s *MySuite) TestRemoveProtocolPrefix(c *C) { - c.Check(RemoveProtocolPrefix("blah"), Equals, "blah") - c.Check(RemoveProtocolPrefix("bl/ah"), Equals, "ah") - c.Check(RemoveProtocolPrefix("http://blah.com"), Equals, "blah.com") - c.Check(RemoveProtocolPrefix("https://blah.com:8900"), Equals, "blah.com:8900") -}