)
// 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.
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),
c.Check(
CreatePullServers(cs,
- stringSet("keep0:25107", "keep1:25108"),
+ stringSet("https://keep0:25107", "https://keep1:25108"),
+ stringSet(),
[]string{},
5),
DeepEquals,
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{"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"},
5),
DeepEquals,
- PullServers{To: []string{}, From: []string{"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{"keep3:25110", "keep2:25109"},
- 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{"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
}
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,
BuildPullLists(map[Locator]PullServers{
locator1: PullServers{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": PullList{PullRequest{locator1, []string{"f1", "f2"}}}})
c.Check(
BuildPullLists(map[Locator]PullServers{
locator1: PullServers{To: []string{"t1"}, From: []string{}}}),
PullListMapEquals,
- map[string]PullList{"t1": PullList{Entries: []PullListEntry{PullListEntry{
- Locator: locator1,
- Servers: []string{}}}}})
+ map[string]PullList{"t1": PullList{
+ PullRequest{locator1, []string{}}}})
c.Check(
BuildPullLists(map[Locator]PullServers{
- locator1: PullServers{To: []string{"t1", "t2"}, From: []string{"f1", "f2"}}}),
+ locator1: PullServers{
+ 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": PullList{PullRequest{locator1, []string{"f1", "f2"}}},
+ "t2": PullList{PullRequest{locator1, []string{"f1", "f2"}}},
})
locator2 := Locator{Digest: blockdigest.MakeTestBlockDigest(0xCabbed)}
locator2: PullServers{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": PullList{PullRequest{locator1, []string{"f1", "f2"}}},
+ "t2": PullList{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: PullServers{
+ To: []string{"t1"},
+ From: []string{"f1", "f2"}},
+ locator2: PullServers{
+ 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": PullList{
+ PullRequest{locator1, []string{"f1", "f2"}},
+ PullRequest{locator2, []string{"f3", "f4"}},
+ },
+ "t2": PullList{
+ 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: 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"}},
}),
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": PullList{
+ PullRequest{locator1, []string{"f1", "f2"}},
+ PullRequest{locator2, []string{"f3", "f4"}},
+ PullRequest{locator3, []string{"f4", "f5"}},
+ PullRequest{locator4, []string{"f1", "f5"}},
+ },
+ "t2": PullList{
+ PullRequest{locator2, []string{"f3", "f4"}},
+ PullRequest{locator3, []string{"f4", "f5"}},
+ PullRequest{locator4, []string{"f1", "f5"}},
+ },
+ "t3": PullList{
+ PullRequest{locator3, []string{"f4", "f5"}},
+ PullRequest{locator4, []string{"f1", "f5"}},
+ },
+ "t4": PullList{
+ 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")
-}