storage-index: a base32-encoded string with the objects's storage index,
or an empty string for LIT files
+ summary: a string, with a one-line summary of the stats of the file
results: a dictionary that describes the state of the file. For LIT files,
this dictionary has only the 'healthy' key, which will always be
True. For distributed files, this dictionary has the following
",".join(["sh%d" % shnum
for shnum in sorted(missing)]))
r.set_report(report)
- # TODO: r.set_summary(summary)
+ if healthy:
+ r.set_summary("Healthy")
+ else:
+ r.set_summary("Not Healthy")
+ # TODO: more detail
return r
class VerifyingOutput:
self._results = results
results.set_healthy(False)
results.set_recoverable(False)
+ results.set_summary("Not Healthy")
def setup_hashtrees(self, plaintext_hashtree, crypttext_hashtree):
self._crypttext_hash_tree = crypttext_hashtree
def finish(self):
self._results.set_healthy(True)
self._results.set_recoverable(True)
+ self._results.set_summary("Healthy")
# the return value of finish() is passed out of FileDownloader._done,
# but SimpleCHKFileVerifier overrides this with the CheckerResults
# instance instead.
self.failUnlessEqual(data["storage-index"],
base32.b2a(n.get_storage_index()), where)
+ self.failUnless("summary" in data, (where, data))
+ self.failUnlessEqual(data["summary"].lower(), "healthy",
+ "%s: '%s'" % (where, data["summary"]))
r = data["results"]
self.failUnlessEqual(r["healthy"], True, where)
needs_rebalancing = bool( len(self.clients) < 10 )
def _json_check_results(self, r):
data = {}
data["storage-index"] = r.get_storage_index_string()
+ data["summary"] = r.get_summary()
data["results"] = self._json_check_counts(r.get_data())
data["results"]["needs-rebalancing"] = r.needs_rebalancing()
data["results"]["healthy"] = r.is_healthy()