from foolscap.logging import log
from allmydata.storage_client import StorageFarmBroker
from allmydata.storage.common import storage_index_to_dir
+from allmydata.scripts import debug
from allmydata.mutable.filenode import MutableFileNode, BackoffAgent
from allmydata.mutable.common import ResponseCache, \
d.addCallback(lambda ign: self.do_upload_sdmf())
return d
+ def test_debug(self):
+ d = self.do_upload_mdmf()
+ def _debug(n):
+ fso = debug.FindSharesOptions()
+ storage_index = base32.b2a(n.get_storage_index())
+ fso.si_s = storage_index
+ fso.nodedirs = [unicode(os.path.dirname(os.path.abspath(storedir)))
+ for (i,ss,storedir)
+ in self.iterate_servers()]
+ fso.stdout = StringIO()
+ fso.stderr = StringIO()
+ debug.find_shares(fso)
+ sharefiles = fso.stdout.getvalue().splitlines()
+ expected = self.nm.default_encoding_parameters["n"]
+ self.failUnlessEqual(len(sharefiles), expected)
+
+ do = debug.DumpOptions()
+ do["filename"] = sharefiles[0]
+ do.stdout = StringIO()
+ debug.dump_share(do)
+ output = do.stdout.getvalue()
+ lines = set(output.splitlines())
+ self.failUnless("Mutable slot found:" in lines, output)
+ self.failUnless(" share_type: MDMF" in lines, output)
+ self.failUnless(" num_extra_leases: 0" in lines, output)
+ self.failUnless(" MDMF contents:" in lines, output)
+ self.failUnless(" seqnum: 1" in lines, output)
+ self.failUnless(" required_shares: 3" in lines, output)
+ self.failUnless(" total_shares: 10" in lines, output)
+ self.failUnless(" segsize: 131073" in lines, output)
+ self.failUnless(" datalen: %d" % len(self.data) in lines, output)
+ vcap = n.get_verify_cap().to_string()
+ self.failUnless(" verify-cap: %s" % vcap in lines, output)
+ d.addCallback(_debug)
+ return d
+
def test_get_sequence_number(self):
d = self.do_upload()
d.addCallback(lambda ign: self.mdmf_node.get_best_readable_version())