4 "git.curoverse.com/arvados.git/sdk/go/blockdigest"
10 func Test(t *testing.T) {
14 // Tests that require the Keep server running
17 var _ = Suite(&MySuite{})
19 // This captures the result we expect from
20 // ReadCollections.Summarize(). Because CollectionUuidToIndex is
21 // indeterminate, we replace BlockToCollectionIndices with
22 // BlockToCollectionUuids.
23 type ExpectedSummary struct {
24 OwnerToCollectionSize map[string]int
25 BlockToReplication map[blockdigest.BlockDigest]int
26 BlockToCollectionUuids map[blockdigest.BlockDigest][]string
29 func CompareSummarizedReadCollections(c *C,
30 summarized ReadCollections,
31 expected ExpectedSummary) {
33 c.Assert(summarized.OwnerToCollectionSize, DeepEquals,
34 expected.OwnerToCollectionSize)
36 c.Assert(summarized.BlockToReplication, DeepEquals,
37 expected.BlockToReplication)
39 summarizedBlockToCollectionUuids :=
40 make(map[blockdigest.BlockDigest]map[string]struct{})
41 for digest, indices := range summarized.BlockToCollectionIndices {
42 uuidSet := make(map[string]struct{})
43 summarizedBlockToCollectionUuids[digest] = uuidSet
44 for _, index := range indices {
45 uuidSet[summarized.CollectionIndexToUuid[index]] = struct{}{}
49 expectedBlockToCollectionUuids :=
50 make(map[blockdigest.BlockDigest]map[string]struct{})
51 for digest, uuidSlice := range expected.BlockToCollectionUuids {
52 uuidSet := make(map[string]struct{})
53 expectedBlockToCollectionUuids[digest] = uuidSet
54 for _, uuid := range uuidSlice {
55 uuidSet[uuid] = struct{}{}
59 c.Assert(summarizedBlockToCollectionUuids, DeepEquals,
60 expectedBlockToCollectionUuids)
63 func (s *MySuite) TestSummarizeSimple(checker *C) {
64 rc := MakeTestReadCollections([]TestCollectionSpec{TestCollectionSpec{
71 c := rc.UuidToCollection["col0"]
73 blockDigest1 := blockdigest.MakeTestBlockDigest(1)
74 blockDigest2 := blockdigest.MakeTestBlockDigest(2)
76 expected := ExpectedSummary{
77 OwnerToCollectionSize: map[string]int{c.OwnerUuid: c.TotalSize},
78 BlockToReplication: map[blockdigest.BlockDigest]int{blockDigest1: 5, blockDigest2: 5},
79 BlockToCollectionUuids: map[blockdigest.BlockDigest][]string{blockDigest1: []string{c.Uuid}, blockDigest2: []string{c.Uuid}},
82 CompareSummarizedReadCollections(checker, rc, expected)
85 func (s *MySuite) TestSummarizeOverlapping(checker *C) {
86 rc := MakeTestReadCollections([]TestCollectionSpec{
99 c0 := rc.UuidToCollection["col0"]
100 c1 := rc.UuidToCollection["col1"]
102 blockDigest1 := blockdigest.MakeTestBlockDigest(1)
103 blockDigest2 := blockdigest.MakeTestBlockDigest(2)
104 blockDigest3 := blockdigest.MakeTestBlockDigest(3)
106 expected := ExpectedSummary{
107 OwnerToCollectionSize: map[string]int{
108 c0.OwnerUuid: c0.TotalSize,
109 c1.OwnerUuid: c1.TotalSize,
111 BlockToReplication: map[blockdigest.BlockDigest]int{
116 BlockToCollectionUuids: map[blockdigest.BlockDigest][]string{
117 blockDigest1: []string{c0.Uuid},
118 blockDigest2: []string{c0.Uuid, c1.Uuid},
119 blockDigest3: []string{c1.Uuid},
123 CompareSummarizedReadCollections(checker, rc, expected)