]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/blobdiff - src/allmydata/test/test_dirnode.py
Flesh out "tahoe magic-folder status" command
[tahoe-lafs/tahoe-lafs.git] / src / allmydata / test / test_dirnode.py
index 9f9a5ad75ae4decff5fe0f8cd66b699841eb470f..65366709cc9afd96b843936a0b61b8ba0d38ae20 100644 (file)
@@ -41,11 +41,11 @@ class MemAccum:
 setup_py_uri = "URI:CHK:n7r3m6wmomelk4sep3kw5cvduq:os7ijw5c3maek7pg65e5254k2fzjflavtpejjyhshpsxuqzhcwwq:3:20:14861"
 one_uri = "URI:LIT:n5xgk" # LIT for "one"
 mut_write_uri = "URI:SSK:vfvcbdfbszyrsaxchgevhmmlii:euw4iw7bbnkrrwpzuburbhppuxhc3gwxv26f6imekhz7zyw2ojnq"
-mdmf_write_uri = "URI:MDMF:x533rhbm6kiehzl5kj3s44n5ie:4gif5rhneyd763ouo5qjrgnsoa3bg43xycy4robj2rf3tvmhdl3a:1:131072"
+mdmf_write_uri = "URI:MDMF:x533rhbm6kiehzl5kj3s44n5ie:4gif5rhneyd763ouo5qjrgnsoa3bg43xycy4robj2rf3tvmhdl3a"
 empty_litdir_uri = "URI:DIR2-LIT:"
 tiny_litdir_uri = "URI:DIR2-LIT:gqytunj2onug64tufqzdcosvkjetutcjkq5gw4tvm5vwszdgnz5hgyzufqydulbshj5x2lbm" # contains one child which is itself also LIT
 mut_read_uri = "URI:SSK-RO:jf6wkflosyvntwxqcdo7a54jvm:euw4iw7bbnkrrwpzuburbhppuxhc3gwxv26f6imekhz7zyw2ojnq"
-mdmf_read_uri = "URI:MDMF-RO:d4cydxselputycfzkw6qgz4zv4:4gif5rhneyd763ouo5qjrgnsoa3bg43xycy4robj2rf3tvmhdl3a:1:131072"
+mdmf_read_uri = "URI:MDMF-RO:d4cydxselputycfzkw6qgz4zv4:4gif5rhneyd763ouo5qjrgnsoa3bg43xycy4robj2rf3tvmhdl3a"
 future_write_uri = "x-tahoe-crazy://I_am_from_the_future."
 future_read_uri = "x-tahoe-crazy-readonly://I_am_from_the_future."
 future_nonascii_write_uri = u"x-tahoe-even-more-crazy://I_am_from_the_future_rw_\u263A".encode('utf-8')
@@ -1097,6 +1097,23 @@ class Dirnode(GridTestMixin, unittest.TestCase,
         d.addCallback(_check_results)
         return d
 
+    def test_deepcheck_cachemisses(self):
+        self.basedir = "dirnode/Dirnode/test_mdmf_cachemisses"
+        self.set_up_grid()
+        d = self._test_deepcheck_create()
+        # Clear the counters and set the rootnode
+        d.addCallback(lambda rootnode:
+                      not [ss._clear_counters() for ss
+                           in self.g.wrappers_by_id.values()] or rootnode)
+        d.addCallback(lambda rootnode: rootnode.start_deep_check().when_done())
+        def _check(ign):
+            count = sum([ss.counter_by_methname['slot_readv']
+                         for ss in self.g.wrappers_by_id.values()])
+            self.failIf(count > 60, 'Expected only 60 cache misses,'
+                                    'unfortunately there were %d' % (count,))
+        d.addCallback(_check)
+        return d
+
     def test_deepcheck_mdmf(self):
         self.basedir = "dirnode/Dirnode/test_deepcheck_mdmf"
         self.set_up_grid()
@@ -1376,7 +1393,7 @@ class Packing(testutil.ReallyEqualMixin, unittest.TestCase):
         known_tree = b32decode(self.known_tree)
         nodemaker = NodeMaker(None, None, None,
                               None, None,
-                              {"k": 3, "n": 10}, None)
+                              {"k": 3, "n": 10}, None, None)
         write_uri = "URI:SSK-RO:e3mdrzfwhoq42hy5ubcz6rp3o4:ybyibhnp3vvwuq2vaw2ckjmesgkklfs6ghxleztqidihjyofgw7q"
         filenode = nodemaker.create_from_cap(write_uri)
         node = dirnode.DirectoryNode(filenode, nodemaker, None)
@@ -1437,7 +1454,7 @@ class Packing(testutil.ReallyEqualMixin, unittest.TestCase):
         return kids
 
     def test_deep_immutable(self):
-        nm = NodeMaker(None, None, None, None, None, {"k": 3, "n": 10}, None)
+        nm = NodeMaker(None, None, None, None, None, {"k": 3, "n": 10}, None, None)
         fn = MinimalFakeMutableFile()
 
         kids = self._make_kids(nm, ["imm", "lit", "write", "read",
@@ -1502,7 +1519,7 @@ class FakeMutableFile:
     def get_write_uri(self):
         return self.uri.to_string()
 
-    def download_best_version(self):
+    def download_best_version(self, progress=None):
         return defer.succeed(self.data)
 
     def get_writekey(self):
@@ -1536,7 +1553,7 @@ class FakeClient2(Client):
     def __init__(self):
         self.nodemaker = FakeNodeMaker(None, None, None,
                                        None, None,
-                                       {"k":3,"n":10}, None)
+                                       {"k":3,"n":10}, None, None)
     def create_node_from_uri(self, rwcap, rocap):
         return self.nodemaker.create_from_cap(rwcap, rocap)
 
@@ -1710,16 +1727,16 @@ class Dirnode2(testutil.ReallyEqualMixin, testutil.ShouldFailMixin, unittest.Tes
             n.raise_error()
 
         for (i, n) in unknown_rw:
-            self.failUnlessRaises(MustNotBeUnknownRWError, lambda: n.raise_error())
+            self.failUnlessRaises(MustNotBeUnknownRWError, lambda n=n: n.raise_error())
 
         for (i, n) in must_be_ro:
-            self.failUnlessRaises(MustBeReadonlyError, lambda: n.raise_error())
+            self.failUnlessRaises(MustBeReadonlyError, lambda n=n: n.raise_error())
 
         for (i, n) in must_be_imm:
-            self.failUnlessRaises(MustBeDeepImmutableError, lambda: n.raise_error())
+            self.failUnlessRaises(MustBeDeepImmutableError, lambda n=n: n.raise_error())
 
         for (i, n) in bad_uri:
-            self.failUnlessRaises(uri.BadURIError, lambda: n.raise_error())
+            self.failUnlessRaises(uri.BadURIError, lambda n=n: n.raise_error())
 
         for (i, n) in ok:
             self.failIf(n.get_readonly_uri() is None, i)
@@ -1825,6 +1842,7 @@ class Deleter(GridTestMixin, testutil.ReallyEqualMixin, unittest.TestCase):
                                   c0.get_history(), c0.getServiceNamed("uploader"),
                                   c0.terminator,
                                   c0.get_encoding_parameters(),
+                                  c0.mutable_file_default,
                                   c0._key_generator)
             n = nm.create_from_cap(self.root_uri)
             assert n._node.please_ucwe_after_next_upload == False