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.."
"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
def test_check(self):
c = self.create_fake_client()
+ sb = c.storage_broker
serverid_1 = "\x00"*20
serverid_f = "\xff"*20
+ 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)
- cr = check_results.CheckResults(u, u.get_storage_index())
- cr.set_healthy(True)
- cr.set_needs_rebalancing(False)
- cr.set_summary("groovy")
- data = { "count-shares-needed": 3,
- "count-shares-expected": 9,
- "count-shares-good": 10,
- "count-good-share-hosts": 11,
- "count-corrupt-shares": 0,
- "list-corrupt-shares": [],
- "count-wrong-shares": 0,
- "sharemap": {"shareid1": [serverid_1, serverid_f]},
- "count-recoverable-versions": 1,
- "count-unrecoverable-versions": 0,
- "servers-responding": [],
+ data = { "count_happiness": 8,
+ "count_shares_needed": 3,
+ "count_shares_expected": 9,
+ "count_shares_good": 10,
+ "count_good_share_hosts": 11,
+ "count_recoverable_versions": 1,
+ "count_unrecoverable_versions": 0,
+ "servers_responding": [],
+ "sharemap": {"shareid1": [server_1, server_f]},
+ "count_wrong_shares": 0,
+ "list_corrupt_shares": [],
+ "count_corrupt_shares": 0,
+ "list_incompatible_shares": [],
+ "count_incompatible_shares": 0,
+ "report": [], "share_problems": [], "servermap": None,
}
- cr.set_data(data)
-
+ cr = check_results.CheckResults(u, u.get_storage_index(),
+ healthy=True, recoverable=True,
+ summary="groovy",
+ **data)
w = web_check_results.CheckResultsRenderer(c, cr)
html = self.render2(w)
s = self.remove_tags(html)
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.set_healthy(False)
- cr.set_recoverable(True)
- cr.set_summary("ungroovy")
+ cr = check_results.CheckResults(u, u.get_storage_index(),
+ healthy=False, recoverable=True,
+ summary="ungroovy",
+ **data)
+ w = web_check_results.CheckResultsRenderer(c, cr)
html = self.render2(w)
s = self.remove_tags(html)
self.failUnlessIn("File Check Results for SI=2k6avp", s) # abbreviated
self.failUnlessIn("Not Healthy! : ungroovy", s)
- cr.set_healthy(False)
- cr.set_recoverable(False)
- cr.set_summary("rather dead")
- data["count-corrupt-shares"] = 1
- data["list-corrupt-shares"] = [(serverid_1, u.get_storage_index(), 2)]
- cr.set_data(data)
+ data["count_corrupt_shares"] = 1
+ data["list_corrupt_shares"] = [(server_1, u.get_storage_index(), 2)]
+ cr = check_results.CheckResults(u, u.get_storage_index(),
+ healthy=False, recoverable=False,
+ summary="rather dead",
+ **data)
+ w = web_check_results.CheckResultsRenderer(c, cr)
html = self.render2(w)
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)
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":
- ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
- "77777777777777777777777777777777"]},
+ ["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,
def test_check_and_repair(self):
c = self.create_fake_client()
+ sb = c.storage_broker
serverid_1 = "\x00"*20
serverid_f = "\xff"*20
u = uri.CHKFileURI("\x00"*16, "\x00"*32, 3, 10, 1234)
- pre_cr = check_results.CheckResults(u, u.get_storage_index())
- pre_cr.set_healthy(False)
- pre_cr.set_recoverable(True)
- pre_cr.set_needs_rebalancing(False)
- pre_cr.set_summary("illing")
- data = { "count-shares-needed": 3,
- "count-shares-expected": 10,
- "count-shares-good": 6,
- "count-good-share-hosts": 7,
- "count-corrupt-shares": 0,
- "list-corrupt-shares": [],
- "count-wrong-shares": 0,
- "sharemap": {"shareid1": [serverid_1, serverid_f]},
- "count-recoverable-versions": 1,
- "count-unrecoverable-versions": 0,
- "servers-responding": [],
+ data = { "count_happiness": 5,
+ "count_shares_needed": 3,
+ "count_shares_expected": 10,
+ "count_shares_good": 6,
+ "count_good_share_hosts": 7,
+ "count_recoverable_versions": 1,
+ "count_unrecoverable_versions": 0,
+ "servers_responding": [],
+ "sharemap": {"shareid1": [sb.get_stub_server(serverid_1),
+ sb.get_stub_server(serverid_f)]},
+ "count_wrong_shares": 0,
+ "list_corrupt_shares": [],
+ "count_corrupt_shares": 0,
+ "list_incompatible_shares": [],
+ "count_incompatible_shares": 0,
+ "report": [], "share_problems": [], "servermap": None,
}
- pre_cr.set_data(data)
-
- post_cr = check_results.CheckResults(u, u.get_storage_index())
- post_cr.set_healthy(True)
- post_cr.set_recoverable(True)
- post_cr.set_needs_rebalancing(False)
- post_cr.set_summary("groovy")
- data = { "count-shares-needed": 3,
- "count-shares-expected": 10,
- "count-shares-good": 10,
- "count-good-share-hosts": 11,
- "count-corrupt-shares": 0,
- "list-corrupt-shares": [],
- "count-wrong-shares": 0,
- "sharemap": {"shareid1": [serverid_1, serverid_f]},
- "count-recoverable-versions": 1,
- "count-unrecoverable-versions": 0,
- "servers-responding": [],
+ pre_cr = check_results.CheckResults(u, u.get_storage_index(),
+ healthy=False, recoverable=True,
+ summary="illing",
+ **data)
+
+ data = { "count_happiness": 9,
+ "count_shares_needed": 3,
+ "count_shares_expected": 10,
+ "count_shares_good": 10,
+ "count_good_share_hosts": 11,
+ "count_recoverable_versions": 1,
+ "count_unrecoverable_versions": 0,
+ "servers_responding": [],
+ "sharemap": {"shareid1": [sb.get_stub_server(serverid_1),
+ sb.get_stub_server(serverid_f)]},
+ "count_wrong_shares": 0,
+ "count_corrupt_shares": 0,
+ "list_corrupt_shares": [],
+ "list_incompatible_shares": [],
+ "count_incompatible_shares": 0,
+ "report": [], "share_problems": [], "servermap": None,
}
- post_cr.set_data(data)
+ post_cr = check_results.CheckResults(u, u.get_storage_index(),
+ healthy=True, recoverable=True,
+ summary="groovy",
+ **data)
crr = check_results.CheckAndRepairResults(u.get_storage_index())
crr.pre_repair_results = pre_cr
crr.repair_attempted = True
crr.repair_successful = False
- post_cr.set_healthy(False)
- post_cr.set_summary("better")
+ post_cr = check_results.CheckResults(u, u.get_storage_index(),
+ healthy=False, recoverable=True,
+ summary="better",
+ **data)
+ crr.post_repair_results = post_cr
html = self.render2(w)
s = self.remove_tags(html)
crr.repair_attempted = True
crr.repair_successful = False
- post_cr.set_healthy(False)
- post_cr.set_recoverable(False)
- post_cr.set_summary("worse")
+ post_cr = check_results.CheckResults(u, u.get_storage_index(),
+ healthy=False, recoverable=False,
+ summary="worse",
+ **data)
+ crr.post_repair_results = post_cr
html = self.render2(w)
s = self.remove_tags(html)
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=""))
def _check_and_repair(_):
return self.imm.check_and_repair(Monitor())
def _check_counts(crr, shares_good, good_share_hosts):
- p_crr = crr.get_post_repair_results().get_data()
+ prr = crr.get_post_repair_results()
#print self._pretty_shares_chart(self.uri)
- self.failUnlessEqual(p_crr['count-shares-good'], shares_good)
- self.failUnlessEqual(p_crr['count-good-share-hosts'],
+ self.failUnlessEqual(prr.get_share_counter_good(), shares_good)
+ self.failUnlessEqual(prr.get_host_counter_good_shares(),
good_share_hosts)
"""
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=""))
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=""))