6221: Add trash_list_test.go
authorPeter Amstutz <peter.amstutz@curoverse.com>
Thu, 16 Jul 2015 13:54:13 +0000 (09:54 -0400)
committerPeter Amstutz <peter.amstutz@curoverse.com>
Thu, 16 Jul 2015 13:54:13 +0000 (09:54 -0400)
services/datamanager/summary/trash_list_test.go [new file with mode: 0644]

diff --git a/services/datamanager/summary/trash_list_test.go b/services/datamanager/summary/trash_list_test.go
new file mode 100644 (file)
index 0000000..b6f9582
--- /dev/null
@@ -0,0 +1,76 @@
+package summary
+
+import (
+       "git.curoverse.com/arvados.git/sdk/go/blockdigest"
+       "git.curoverse.com/arvados.git/services/datamanager/keep"
+       . "gopkg.in/check.v1"
+       "testing"
+)
+
+// Gocheck boilerplate
+func TrashTest(t *testing.T) {
+       TestingT(t)
+}
+
+type TrashSuite struct{}
+
+var _ = Suite(&TrashSuite{})
+
+func (s *TrashSuite) TestBuildTrashLists(c *C) {
+       var sv0 = keep.ServerAddress{Host: "keep0.example.com", Port: 80}
+       var sv1 = keep.ServerAddress{Host: "keep1.example.com", Port: 80}
+
+       var block0 = blockdigest.MakeTestDigestWithSize(0xdeadbeef)
+       var block1 = blockdigest.MakeTestDigestWithSize(0xfedbeef)
+
+       var keepServerInfo = keep.ReadServers{
+               KeepServerIndexToAddress: []keep.ServerAddress{sv0, sv1},
+               BlockToServers: map[blockdigest.DigestWithSize][]keep.BlockServerInfo{
+                       block0: []keep.BlockServerInfo{
+                               keep.BlockServerInfo{0, 99},
+                               keep.BlockServerInfo{1, 101}},
+                       block1: []keep.BlockServerInfo{
+                               keep.BlockServerInfo{0, 99},
+                               keep.BlockServerInfo{1, 101}}}}
+
+       // only block0 is in delete set
+       var bs BlockSet = make(BlockSet)
+       bs[block0] = struct{}{}
+
+       // Test trash list where only sv0 is on writable list.
+       c.Check(BuildTrashListsInternal(
+               map[string]struct{}{
+                       sv0.URL(): struct{}{}},
+               &keepServerInfo,
+               110,
+               bs),
+               DeepEquals,
+               map[string]keep.TrashList{
+                       "http://keep0.example.com:80": keep.TrashList{keep.TrashRequest{"000000000000000000000000deadbeef", 99}}})
+
+       // Test trash list where both sv0 and sv1 are on writable list.
+       c.Check(BuildTrashListsInternal(
+               map[string]struct{}{
+                       sv0.URL(): struct{}{},
+                       sv1.URL(): struct{}{}},
+               &keepServerInfo,
+               110,
+               bs),
+               DeepEquals,
+               map[string]keep.TrashList{
+                       "http://keep0.example.com:80": keep.TrashList{keep.TrashRequest{"000000000000000000000000deadbeef", 99}},
+                       "http://keep1.example.com:80": keep.TrashList{keep.TrashRequest{"000000000000000000000000deadbeef", 101}}})
+
+       // Test trash list where only block on sv0 is expired
+       c.Check(BuildTrashListsInternal(
+               map[string]struct{}{
+                       sv0.URL(): struct{}{},
+                       sv1.URL(): struct{}{}},
+               &keepServerInfo,
+               100,
+               bs),
+               DeepEquals,
+               map[string]keep.TrashList{
+                       "http://keep0.example.com:80": keep.TrashList{keep.TrashRequest{"000000000000000000000000deadbeef", 99}}})
+
+}