]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/blobdiff - src/allmydata/test/test_checker.py
Teach StorageFarmBroker to fire a deferred when a connection threshold is reached...
[tahoe-lafs/tahoe-lafs.git] / src / allmydata / test / test_checker.py
index e1a575440c727bff6ad33fdcb97b1174b7c2a108..0040a021af78d5bdd24feb6c49cb8f0e8922ddf1 100644 (file)
@@ -22,7 +22,7 @@ class FakeClient:
 class WebResultsRendering(unittest.TestCase, WebRenderingMixin):
 
     def create_fake_client(self):
-        sb = StorageFarmBroker(None, True)
+        sb = StorageFarmBroker(None, True, 0, None)
         # s.get_name() (the "short description") will be "v0-00000000".
         # s.get_longname() will include the -long suffix.
         # s.get_peerid() (i.e. tubid) will be "aaa.." or "777.." or "ceir.."
@@ -41,7 +41,7 @@ class WebResultsRendering(unittest.TestCase, WebRenderingMixin):
                     "my-version": "ver",
                     "oldest-supported": "oldest",
                     }
-            s = NativeStorageServer(key_s, ann)
+            s = NativeStorageServer(key_s, ann, sb)
             sb.test_add_server(peerid, s) # XXX: maybe use key_s?
         c = FakeClient()
         c.storage_broker = sb
@@ -84,7 +84,8 @@ class WebResultsRendering(unittest.TestCase, WebRenderingMixin):
         server_1 = sb.get_stub_server(serverid_1)
         server_f = sb.get_stub_server(serverid_f)
         u = uri.CHKFileURI("\x00"*16, "\x00"*32, 3, 10, 1234)
-        data = { "count_shares_needed": 3,
+        data = { "count_happiness": 8,
+                 "count_shares_needed": 3,
                  "count_shares_expected": 9,
                  "count_shares_good": 10,
                  "count_good_share_hosts": 11,
@@ -101,7 +102,6 @@ class WebResultsRendering(unittest.TestCase, WebRenderingMixin):
                  }
         cr = check_results.CheckResults(u, u.get_storage_index(),
                                         healthy=True, recoverable=True,
-                                        needs_rebalancing=False,
                                         summary="groovy",
                                         **data)
         w = web_check_results.CheckResultsRenderer(c, cr)
@@ -110,15 +110,16 @@ class WebResultsRendering(unittest.TestCase, WebRenderingMixin):
         self.failUnlessIn("File Check Results for SI=2k6avp", s) # abbreviated
         self.failUnlessIn("Healthy : groovy", s)
         self.failUnlessIn("Share Counts: need 3-of-9, have 10", s)
+        self.failUnlessIn("Happiness Level: 8", s)
         self.failUnlessIn("Hosts with good shares: 11", s)
         self.failUnlessIn("Corrupt shares: none", s)
         self.failUnlessIn("Wrong Shares: 0", s)
         self.failUnlessIn("Recoverable Versions: 1", s)
         self.failUnlessIn("Unrecoverable Versions: 0", s)
+        self.failUnlessIn("Good Shares (sorted in share order): Share ID Nickname Node ID shareid1 peer-0 00000000 peer-f ffffffff", s)
 
         cr = check_results.CheckResults(u, u.get_storage_index(),
                                         healthy=False, recoverable=True,
-                                        needs_rebalancing=False,
                                         summary="ungroovy",
                                         **data)
         w = web_check_results.CheckResultsRenderer(c, cr)
@@ -131,7 +132,6 @@ class WebResultsRendering(unittest.TestCase, WebRenderingMixin):
         data["list_corrupt_shares"] = [(server_1, u.get_storage_index(), 2)]
         cr = check_results.CheckResults(u, u.get_storage_index(),
                                         healthy=False, recoverable=False,
-                                        needs_rebalancing=False,
                                         summary="rather dead",
                                         **data)
         w = web_check_results.CheckResultsRenderer(c, cr)
@@ -139,7 +139,7 @@ class WebResultsRendering(unittest.TestCase, WebRenderingMixin):
         s = self.remove_tags(html)
         self.failUnlessIn("File Check Results for SI=2k6avp", s) # abbreviated
         self.failUnlessIn("Not Recoverable! : rather dead", s)
-        self.failUnlessIn("Corrupt shares: Share ID Nickname Node ID sh#2 peer-0 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", s)
+        self.failUnlessIn("Corrupt shares: Share ID Nickname Node ID sh#2 peer-0 00000000", s)
 
         html = self.render2(w)
         s = self.remove_tags(html)
@@ -156,18 +156,16 @@ class WebResultsRendering(unittest.TestCase, WebRenderingMixin):
             self.failUnlessEqual(j["summary"], "rather dead")
             self.failUnlessEqual(j["storage-index"],
                                  "2k6avpjga3dho3zsjo6nnkt7n4")
-            expected = {'needs-rebalancing': False,
+            expected = {'count-happiness': 8,
                         'count-shares-expected': 9,
                         'healthy': False,
                         'count-unrecoverable-versions': 0,
                         'count-shares-needed': 3,
                         'sharemap': {"shareid1":
-                                     ["77777777777777777777777777777777",
-                                      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]},
+                                     ["v0-00000000-long", "v0-ffffffff-long"]},
                         'count-recoverable-versions': 1,
                         'list-corrupt-shares':
-                        [["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
-                          "2k6avpjga3dho3zsjo6nnkt7n4", 2]],
+                        [["v0-00000000-long", "2k6avpjga3dho3zsjo6nnkt7n4", 2]],
                         'count-good-share-hosts': 11,
                         'count-wrong-shares': 0,
                         'count-shares-good': 10,
@@ -193,7 +191,8 @@ class WebResultsRendering(unittest.TestCase, WebRenderingMixin):
         serverid_f = "\xff"*20
         u = uri.CHKFileURI("\x00"*16, "\x00"*32, 3, 10, 1234)
 
-        data = { "count_shares_needed": 3,
+        data = { "count_happiness": 5,
+                 "count_shares_needed": 3,
                  "count_shares_expected": 10,
                  "count_shares_good": 6,
                  "count_good_share_hosts": 7,
@@ -211,11 +210,11 @@ class WebResultsRendering(unittest.TestCase, WebRenderingMixin):
                  }
         pre_cr = check_results.CheckResults(u, u.get_storage_index(),
                                             healthy=False, recoverable=True,
-                                            needs_rebalancing=False,
                                             summary="illing",
                                             **data)
 
-        data = { "count_shares_needed": 3,
+        data = { "count_happiness": 9,
+                 "count_shares_needed": 3,
                  "count_shares_expected": 10,
                  "count_shares_good": 10,
                  "count_good_share_hosts": 11,
@@ -233,7 +232,6 @@ class WebResultsRendering(unittest.TestCase, WebRenderingMixin):
                  }
         post_cr = check_results.CheckResults(u, u.get_storage_index(),
                                              healthy=True, recoverable=True,
-                                             needs_rebalancing=False,
                                              summary="groovy",
                                              **data)
 
@@ -266,7 +264,6 @@ class WebResultsRendering(unittest.TestCase, WebRenderingMixin):
         crr.repair_successful = False
         post_cr = check_results.CheckResults(u, u.get_storage_index(),
                                              healthy=False, recoverable=True,
-                                             needs_rebalancing=False,
                                              summary="better",
                                              **data)
         crr.post_repair_results = post_cr
@@ -282,7 +279,6 @@ class WebResultsRendering(unittest.TestCase, WebRenderingMixin):
         crr.repair_successful = False
         post_cr = check_results.CheckResults(u, u.get_storage_index(),
                                              healthy=False, recoverable=False,
-                                             needs_rebalancing=False,
                                              summary="worse",
                                              **data)
         crr.post_repair_results = post_cr
@@ -368,9 +364,9 @@ class BalancingAct(GridTestMixin, unittest.TestCase):
         self.basedir = "checker/BalancingAct/1115"
         self.set_up_grid(num_servers=1)
         c0 = self.g.clients[0]
-        c0.DEFAULT_ENCODING_PARAMETERS['happy'] = 1
-        c0.DEFAULT_ENCODING_PARAMETERS['n'] = 4
-        c0.DEFAULT_ENCODING_PARAMETERS['k'] = 3
+        c0.encoding_params['happy'] = 1
+        c0.encoding_params['n'] = 4
+        c0.encoding_params['k'] = 3
 
         DATA = "data" * 100
         d = c0.upload(Data(DATA, convergence=""))
@@ -427,7 +423,7 @@ class AddLease(GridTestMixin, unittest.TestCase):
         self.basedir = "checker/AddLease/875"
         self.set_up_grid(num_servers=1)
         c0 = self.g.clients[0]
-        c0.DEFAULT_ENCODING_PARAMETERS['happy'] = 1
+        c0.encoding_params['happy'] = 1
         self.uris = {}
         DATA = "data" * 100
         d = c0.upload(Data(DATA, convergence=""))
@@ -515,11 +511,11 @@ class TooParallel(GridTestMixin, unittest.TestCase):
         def _start(ign):
             self.set_up_grid(num_servers=4)
             self.c0 = self.g.clients[0]
-            self.c0.DEFAULT_ENCODING_PARAMETERS = { "k": 1,
-                                               "happy": 4,
-                                               "n": 4,
-                                               "max_segment_size": 5,
-                                               }
+            self.c0.encoding_params = { "k": 1,
+                                        "happy": 4,
+                                        "n": 4,
+                                        "max_segment_size": 5,
+                                      }
             self.uris = {}
             DATA = "data" * 100 # 400/5 = 80 blocks
             return self.c0.upload(Data(DATA, convergence=""))