Changeset d346e085 in trunk
- Timestamp:
- 2010-07-11T20:02:52Z (15 years ago)
- Branches:
- master
- Children:
- 2166eef
- Parents:
- ca660a5
- Location:
- src/allmydata/test
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified src/allmydata/test/test_client.py ¶
rca660a5 rd346e085 28 28 ) 29 29 30 class Basic( unittest.TestCase):30 class Basic(testutil.ReallyEqualMixin, unittest.TestCase): 31 31 def test_loadable(self): 32 32 basedir = "test_client.Basic.test_loadable" … … 82 82 f.close() 83 83 c = client.Client(basedir) 84 self.failUnless Equal(c.getServiceNamed("storage").reserved_space, 1000)84 self.failUnlessReallyEqual(c.getServiceNamed("storage").reserved_space, 1000) 85 85 86 86 def test_reserved_2(self): … … 94 94 f.close() 95 95 c = client.Client(basedir) 96 self.failUnless Equal(c.getServiceNamed("storage").reserved_space, 10*1000)96 self.failUnlessReallyEqual(c.getServiceNamed("storage").reserved_space, 10*1000) 97 97 98 98 def test_reserved_3(self): … … 106 106 f.close() 107 107 c = client.Client(basedir) 108 self.failUnless Equal(c.getServiceNamed("storage").reserved_space,108 self.failUnlessReallyEqual(c.getServiceNamed("storage").reserved_space, 109 109 5*1000*1000) 110 110 … … 119 119 f.close() 120 120 c = client.Client(basedir) 121 self.failUnless Equal(c.getServiceNamed("storage").reserved_space,122 78*1000*1000*1000)121 self.failUnlessReallyEqual(c.getServiceNamed("storage").reserved_space, 122 78*1000*1000*1000) 123 123 124 124 def test_reserved_bad(self): … … 132 132 f.close() 133 133 c = client.Client(basedir) 134 self.failUnless Equal(c.getServiceNamed("storage").reserved_space, 0)134 self.failUnlessReallyEqual(c.getServiceNamed("storage").reserved_space, 0) 135 135 136 136 def _permute(self, sb, key): … … 143 143 sb.test_add_server(k, None) 144 144 145 self.failUnless Equal(self._permute(sb, "one"), ['3','1','0','4','2'])146 self.failUnless Equal(self._permute(sb, "two"), ['0','4','2','1','3'])145 self.failUnlessReallyEqual(self._permute(sb, "one"), ['3','1','0','4','2']) 146 self.failUnlessReallyEqual(self._permute(sb, "two"), ['0','4','2','1','3']) 147 147 sb.test_servers.clear() 148 self.failUnless Equal(self._permute(sb, "one"), [])148 self.failUnlessReallyEqual(self._permute(sb, "one"), []) 149 149 150 150 def test_versions(self): … … 155 155 ss = c.getServiceNamed("storage") 156 156 verdict = ss.remote_get_version() 157 self.failUnless Equal(verdict["application-version"],158 str(allmydata.__full_version__))157 self.failUnlessReallyEqual(verdict["application-version"], 158 str(allmydata.__full_version__)) 159 159 self.failIfEqual(str(allmydata.__version__), "unknown") 160 160 self.failUnless("." in str(allmydata.__full_version__), … … 226 226 return d 227 227 228 class NodeMaker( unittest.TestCase):228 class NodeMaker(testutil.ReallyEqualMixin, unittest.TestCase): 229 229 def test_maker(self): 230 230 basedir = "client/NodeMaker/maker" … … 298 298 self.failIf(IDirectoryNode.providedBy(n)) 299 299 self.failUnless(n.is_unknown()) 300 self.failUnlessEqual(n.get_uri(), unknown_rw) 301 self.failUnlessEqual(n.get_write_uri(), unknown_rw) 302 self.failUnlessEqual(n.get_readonly_uri(), "ro." + unknown_ro) 300 self.failUnlessReallyEqual(n.get_uri(), unknown_rw) 301 self.failUnlessReallyEqual(n.get_write_uri(), unknown_rw) 302 self.failUnlessReallyEqual(n.get_readonly_uri(), "ro." + unknown_ro) 303 304 unknown_rw = u"lafs://from_the_future_rw_\u263A".encode('utf-8') 305 unknown_ro = u"lafs://readonly_from_the_future_ro_\u263A".encode('utf-8') 306 n = c.create_node_from_uri(unknown_rw, unknown_ro) 307 self.failUnless(IFilesystemNode.providedBy(n)) 308 self.failIf(IFileNode.providedBy(n)) 309 self.failIf(IImmutableFileNode.providedBy(n)) 310 self.failIf(IMutableFileNode.providedBy(n)) 311 self.failIf(IDirectoryNode.providedBy(n)) 312 self.failUnless(n.is_unknown()) 313 self.failUnlessReallyEqual(n.get_uri(), unknown_rw) 314 self.failUnlessReallyEqual(n.get_write_uri(), unknown_rw) 315 self.failUnlessReallyEqual(n.get_readonly_uri(), "ro." + unknown_ro) -
TabularUnified src/allmydata/test/test_dirnode.py ¶
rca660a5 rd346e085 47 47 future_write_uri = "x-tahoe-crazy://I_am_from_the_future." 48 48 future_read_uri = "x-tahoe-crazy-readonly://I_am_from_the_future." 49 future_nonascii_write_uri = u"x-tahoe-even-more-crazy://I_am_from_the_future_rw_\u263A".encode('utf-8') 50 future_nonascii_read_uri = u"x-tahoe-even-more-crazy-readonly://I_am_from_the_future_ro_\u263A".encode('utf-8') 49 51 50 52 # 'o' 'n' 'e-macron' … … 53 55 54 56 class Dirnode(GridTestMixin, unittest.TestCase, 55 testutil. ShouldFailMixin, testutil.StallMixin, ErrorMixin):57 testutil.ReallyEqualMixin, testutil.ShouldFailMixin, testutil.StallMixin, ErrorMixin): 56 58 timeout = 240 # It takes longer than 120 seconds on Francois's arm box. 57 59 … … 85 87 u"fut": (nm.create_from_cap(future_write_uri, future_read_uri), {}), 86 88 u"fro": (nm.create_from_cap(None, future_read_uri), {}), 89 u"fut-unic": (nm.create_from_cap(future_nonascii_write_uri, future_nonascii_read_uri), {}), 90 u"fro-unic": (nm.create_from_cap(None, future_nonascii_read_uri), {}), 87 91 u"empty_litdir": (nm.create_from_cap(empty_litdir_uri), {}), 88 92 u"tiny_litdir": (nm.create_from_cap(tiny_litdir_uri), {}), … … 103 107 104 108 def _check_kids(children): 105 self.failUnlessEqual(set(children.keys()), 106 set([one_nfc, u"two", u"mut", u"fut", u"fro", u"empty_litdir", u"tiny_litdir"])) 109 self.failUnlessReallyEqual(set(children.keys()), 110 set([one_nfc, u"two", u"mut", u"fut", u"fro", 111 u"fut-unic", u"fro-unic", u"empty_litdir", u"tiny_litdir"])) 107 112 one_node, one_metadata = children[one_nfc] 108 113 two_node, two_metadata = children[u"two"] … … 110 115 fut_node, fut_metadata = children[u"fut"] 111 116 fro_node, fro_metadata = children[u"fro"] 117 futna_node, futna_metadata = children[u"fut-unic"] 118 frona_node, frona_metadata = children[u"fro-unic"] 112 119 emptylit_node, emptylit_metadata = children[u"empty_litdir"] 113 120 tinylit_node, tinylit_metadata = children[u"tiny_litdir"] 114 121 115 self.failUnless Equal(one_node.get_size(), 3)116 self.failUnless Equal(one_node.get_uri(), one_uri)117 self.failUnless Equal(one_node.get_readonly_uri(), one_uri)122 self.failUnlessReallyEqual(one_node.get_size(), 3) 123 self.failUnlessReallyEqual(one_node.get_uri(), one_uri) 124 self.failUnlessReallyEqual(one_node.get_readonly_uri(), one_uri) 118 125 self.failUnless(isinstance(one_metadata, dict), one_metadata) 119 126 120 self.failUnless Equal(two_node.get_size(), 14861)121 self.failUnless Equal(two_node.get_uri(), setup_py_uri)122 self.failUnless Equal(two_node.get_readonly_uri(), setup_py_uri)123 self.failUnless Equal(two_metadata["metakey"], "metavalue")127 self.failUnlessReallyEqual(two_node.get_size(), 14861) 128 self.failUnlessReallyEqual(two_node.get_uri(), setup_py_uri) 129 self.failUnlessReallyEqual(two_node.get_readonly_uri(), setup_py_uri) 130 self.failUnlessReallyEqual(two_metadata["metakey"], "metavalue") 124 131 125 self.failUnless Equal(mut_node.get_uri(), mut_write_uri)126 self.failUnless Equal(mut_node.get_readonly_uri(), mut_read_uri)132 self.failUnlessReallyEqual(mut_node.get_uri(), mut_write_uri) 133 self.failUnlessReallyEqual(mut_node.get_readonly_uri(), mut_read_uri) 127 134 self.failUnless(isinstance(mut_metadata, dict), mut_metadata) 128 135 129 136 self.failUnless(fut_node.is_unknown()) 130 self.failUnless Equal(fut_node.get_uri(), future_write_uri)131 self.failUnless Equal(fut_node.get_readonly_uri(), "ro." + future_read_uri)137 self.failUnlessReallyEqual(fut_node.get_uri(), future_write_uri) 138 self.failUnlessReallyEqual(fut_node.get_readonly_uri(), "ro." + future_read_uri) 132 139 self.failUnless(isinstance(fut_metadata, dict), fut_metadata) 133 140 141 self.failUnless(futna_node.is_unknown()) 142 self.failUnlessReallyEqual(futna_node.get_uri(), future_nonascii_write_uri) 143 self.failUnlessReallyEqual(futna_node.get_readonly_uri(), "ro." + future_nonascii_read_uri) 144 self.failUnless(isinstance(futna_metadata, dict), futna_metadata) 145 134 146 self.failUnless(fro_node.is_unknown()) 135 self.failUnless Equal(fro_node.get_uri(), "ro." + future_read_uri)136 self.failUnless Equal(fut_node.get_readonly_uri(), "ro." + future_read_uri)147 self.failUnlessReallyEqual(fro_node.get_uri(), "ro." + future_read_uri) 148 self.failUnlessReallyEqual(fut_node.get_readonly_uri(), "ro." + future_read_uri) 137 149 self.failUnless(isinstance(fro_metadata, dict), fro_metadata) 138 150 151 self.failUnless(frona_node.is_unknown()) 152 self.failUnlessReallyEqual(frona_node.get_uri(), "ro." + future_nonascii_read_uri) 153 self.failUnlessReallyEqual(futna_node.get_readonly_uri(), "ro." + future_nonascii_read_uri) 154 self.failUnless(isinstance(frona_metadata, dict), frona_metadata) 155 139 156 self.failIf(emptylit_node.is_unknown()) 140 self.failUnless Equal(emptylit_node.get_storage_index(), None)157 self.failUnlessReallyEqual(emptylit_node.get_storage_index(), None) 141 158 self.failIf(tinylit_node.is_unknown()) 142 self.failUnless Equal(tinylit_node.get_storage_index(), None)159 self.failUnlessReallyEqual(tinylit_node.get_storage_index(), None) 143 160 144 161 d2 = defer.succeed(None) … … 146 163 d2.addCallback(lambda children: self.failUnlessEqual(children, {})) 147 164 d2.addCallback(lambda ignored: tinylit_node.list()) 148 d2.addCallback(lambda children: self.failUnless Equal(set(children.keys()),149 set([u"short"])))165 d2.addCallback(lambda children: self.failUnlessReallyEqual(set(children.keys()), 166 set([u"short"]))) 150 167 d2.addCallback(lambda ignored: tinylit_node.list()) 151 168 d2.addCallback(lambda children: children[u"short"][0].read(MemAccum())) 152 d2.addCallback(lambda accum: self.failUnless Equal(accum.data, "The end."))169 d2.addCallback(lambda accum: self.failUnlessReallyEqual(accum.data, "The end.")) 153 170 return d2 154 171 … … 186 203 {"metakey": "metavalue"}), 187 204 u"fut": (nm.create_from_cap(None, future_read_uri), {}), 205 u"futna": (nm.create_from_cap(None, future_nonascii_read_uri), {}), 188 206 u"empty_litdir": (nm.create_from_cap(empty_litdir_uri), {}), 189 207 u"tiny_litdir": (nm.create_from_cap(tiny_litdir_uri), {}), … … 207 225 208 226 def _check_kids(children): 209 self.failUnless Equal(set(children.keys()),210 set([one_nfc, u"two", u"fut", u"empty_litdir", u"tiny_litdir"]))227 self.failUnlessReallyEqual(set(children.keys()), 228 set([one_nfc, u"two", u"fut", u"futna", u"empty_litdir", u"tiny_litdir"])) 211 229 one_node, one_metadata = children[one_nfc] 212 230 two_node, two_metadata = children[u"two"] 213 231 fut_node, fut_metadata = children[u"fut"] 232 futna_node, futna_metadata = children[u"futna"] 214 233 emptylit_node, emptylit_metadata = children[u"empty_litdir"] 215 234 tinylit_node, tinylit_metadata = children[u"tiny_litdir"] 216 235 217 self.failUnless Equal(one_node.get_size(), 3)218 self.failUnless Equal(one_node.get_uri(), one_uri)219 self.failUnless Equal(one_node.get_readonly_uri(), one_uri)236 self.failUnlessReallyEqual(one_node.get_size(), 3) 237 self.failUnlessReallyEqual(one_node.get_uri(), one_uri) 238 self.failUnlessReallyEqual(one_node.get_readonly_uri(), one_uri) 220 239 self.failUnless(isinstance(one_metadata, dict), one_metadata) 221 240 222 self.failUnless Equal(two_node.get_size(), 14861)223 self.failUnless Equal(two_node.get_uri(), setup_py_uri)224 self.failUnless Equal(two_node.get_readonly_uri(), setup_py_uri)225 self.failUnless Equal(two_metadata["metakey"], "metavalue")241 self.failUnlessReallyEqual(two_node.get_size(), 14861) 242 self.failUnlessReallyEqual(two_node.get_uri(), setup_py_uri) 243 self.failUnlessReallyEqual(two_node.get_readonly_uri(), setup_py_uri) 244 self.failUnlessReallyEqual(two_metadata["metakey"], "metavalue") 226 245 227 246 self.failUnless(fut_node.is_unknown()) 228 self.failUnless Equal(fut_node.get_uri(), "imm." + future_read_uri)229 self.failUnless Equal(fut_node.get_readonly_uri(), "imm." + future_read_uri)247 self.failUnlessReallyEqual(fut_node.get_uri(), "imm." + future_read_uri) 248 self.failUnlessReallyEqual(fut_node.get_readonly_uri(), "imm." + future_read_uri) 230 249 self.failUnless(isinstance(fut_metadata, dict), fut_metadata) 231 250 251 self.failUnless(futna_node.is_unknown()) 252 self.failUnlessReallyEqual(futna_node.get_uri(), "imm." + future_nonascii_read_uri) 253 self.failUnlessReallyEqual(futna_node.get_readonly_uri(), "imm." + future_nonascii_read_uri) 254 self.failUnless(isinstance(futna_metadata, dict), futna_metadata) 255 232 256 self.failIf(emptylit_node.is_unknown()) 233 self.failUnless Equal(emptylit_node.get_storage_index(), None)257 self.failUnlessReallyEqual(emptylit_node.get_storage_index(), None) 234 258 self.failIf(tinylit_node.is_unknown()) 235 self.failUnless Equal(tinylit_node.get_storage_index(), None)259 self.failUnlessReallyEqual(tinylit_node.get_storage_index(), None) 236 260 237 261 d2 = defer.succeed(None) … … 239 263 d2.addCallback(lambda children: self.failUnlessEqual(children, {})) 240 264 d2.addCallback(lambda ignored: tinylit_node.list()) 241 d2.addCallback(lambda children: self.failUnless Equal(set(children.keys()),242 set([u"short"])))265 d2.addCallback(lambda children: self.failUnlessReallyEqual(set(children.keys()), 266 set([u"short"]))) 243 267 d2.addCallback(lambda ignored: tinylit_node.list()) 244 268 d2.addCallback(lambda children: children[u"short"][0].read(MemAccum())) 245 d2.addCallback(lambda accum: self.failUnless Equal(accum.data, "The end."))269 d2.addCallback(lambda accum: self.failUnlessReallyEqual(accum.data, "The end.")) 246 270 return d2 247 271 … … 296 320 cap = dn.get_cap() 297 321 self.failUnlessIn("LIT", cap.to_string()) 298 self.failUnless Equal(cap.to_string(), "URI:DIR2-LIT:")322 self.failUnlessReallyEqual(cap.to_string(), "URI:DIR2-LIT:") 299 323 self.cap = cap 300 324 return dn.list() … … 314 338 cap = dn.get_cap() 315 339 self.failUnlessIn("LIT", cap.to_string()) 316 self.failUnless Equal(cap.to_string(),317 "URI:DIR2-LIT:gi4tumj2n4wdcmz2kvjesosmjfkdu3rvpbtwwlbqhiwdeot3puwcy")340 self.failUnlessReallyEqual(cap.to_string(), 341 "URI:DIR2-LIT:gi4tumj2n4wdcmz2kvjesosmjfkdu3rvpbtwwlbqhiwdeot3puwcy") 318 342 self.cap = cap 319 343 return dn.list() 320 344 d.addCallback(_created_small) 321 d.addCallback(lambda kids: self.failUnless Equal(kids.keys(), [u"o"]))345 d.addCallback(lambda kids: self.failUnlessReallyEqual(kids.keys(), [u"o"])) 322 346 323 347 # now test n.create_subdirectory(mutable=False) … … 329 353 d.addCallback(lambda ign: n.list()) 330 354 d.addCallback(lambda children: 331 self.failUnless Equal(children.keys(), [u"subdir"]))355 self.failUnlessReallyEqual(children.keys(), [u"subdir"])) 332 356 d.addCallback(lambda ign: n.get(u"subdir")) 333 357 d.addCallback(lambda sd: sd.list()) … … 363 387 364 388 child = nm.create_from_cap(spacedout_write_uri, spacedout_read_uri) 365 self.failUnless Equal(child.get_write_uri(), spacedout_write_uri)366 self.failUnless Equal(child.get_readonly_uri(), "ro." + spacedout_read_uri)389 self.failUnlessReallyEqual(child.get_write_uri(), spacedout_write_uri) 390 self.failUnlessReallyEqual(child.get_readonly_uri(), "ro." + spacedout_read_uri) 367 391 368 392 child_dottedi = u"ch\u0131\u0307ld" … … 397 421 self.failUnlessIn(name, kids_out) 398 422 (expected_child, ign) = kids_out[name] 399 self.failUnless Equal(rw_uri, expected_child.get_write_uri())400 self.failUnless Equal("ro." + ro_uri, expected_child.get_readonly_uri())423 self.failUnlessReallyEqual(rw_uri, expected_child.get_write_uri()) 424 self.failUnlessReallyEqual("ro." + ro_uri, expected_child.get_readonly_uri()) 401 425 numkids += 1 402 426 403 self.failUnless Equal(numkids, len(kids_out))427 self.failUnlessReallyEqual(numkids, len(kids_out)) 404 428 return self.rootnode 405 429 d.addCallback(_check_data) … … 430 454 # normalized to 'i'. 431 455 432 self.failUnless Equal(set(children.keys()), set(kids_norm.keys()))456 self.failUnlessReallyEqual(set(children.keys()), set(kids_norm.keys())) 433 457 child_node, child_metadata = children[u"child"] 434 458 435 self.failUnless Equal(child_node.get_write_uri(), stripped_write_uri)436 self.failUnless Equal(child_node.get_readonly_uri(), "ro." + stripped_read_uri)459 self.failUnlessReallyEqual(child_node.get_write_uri(), stripped_write_uri) 460 self.failUnlessReallyEqual(child_node.get_readonly_uri(), "ro." + stripped_read_uri) 437 461 d.addCallback(_check_kids) 438 462 … … 490 514 self.failUnless(IDeepCheckResults.providedBy(r)) 491 515 c = r.get_counters() 492 self.failUnless Equal(c,493 {"count-objects-checked": 4,494 "count-objects-healthy": 4,495 "count-objects-unhealthy": 0,496 "count-objects-unrecoverable": 0,497 "count-corrupt-shares": 0,498 })516 self.failUnlessReallyEqual(c, 517 {"count-objects-checked": 4, 518 "count-objects-healthy": 4, 519 "count-objects-unhealthy": 0, 520 "count-objects-unrecoverable": 0, 521 "count-corrupt-shares": 0, 522 }) 499 523 self.failIf(r.get_corrupt_shares()) 500 self.failUnless Equal(len(r.get_all_results()), 4)524 self.failUnlessReallyEqual(len(r.get_all_results()), 4) 501 525 d.addCallback(_check_results) 502 526 return d … … 511 535 self.failUnless(IDeepCheckAndRepairResults.providedBy(r)) 512 536 c = r.get_counters() 513 self.failUnless Equal(c,514 {"count-objects-checked": 4,515 "count-objects-healthy-pre-repair": 4,516 "count-objects-unhealthy-pre-repair": 0,517 "count-objects-unrecoverable-pre-repair": 0,518 "count-corrupt-shares-pre-repair": 0,519 "count-objects-healthy-post-repair": 4,520 "count-objects-unhealthy-post-repair": 0,521 "count-objects-unrecoverable-post-repair": 0,522 "count-corrupt-shares-post-repair": 0,523 "count-repairs-attempted": 0,524 "count-repairs-successful": 0,525 "count-repairs-unsuccessful": 0,526 })537 self.failUnlessReallyEqual(c, 538 {"count-objects-checked": 4, 539 "count-objects-healthy-pre-repair": 4, 540 "count-objects-unhealthy-pre-repair": 0, 541 "count-objects-unrecoverable-pre-repair": 0, 542 "count-corrupt-shares-pre-repair": 0, 543 "count-objects-healthy-post-repair": 4, 544 "count-objects-unhealthy-post-repair": 0, 545 "count-objects-unrecoverable-post-repair": 0, 546 "count-corrupt-shares-post-repair": 0, 547 "count-repairs-attempted": 0, 548 "count-repairs-successful": 0, 549 "count-repairs-unsuccessful": 0, 550 }) 527 551 self.failIf(r.get_corrupt_shares()) 528 552 self.failIf(r.get_remaining_corrupt_shares()) 529 self.failUnless Equal(len(r.get_all_results()), 4)553 self.failUnlessReallyEqual(len(r.get_all_results()), 4) 530 554 d.addCallback(_check_results) 531 555 return d … … 543 567 def _check_results(r): 544 568 c = r.get_counters() 545 self.failUnless Equal(c,546 {"count-objects-checked": 4,547 "count-objects-healthy": 3,548 "count-objects-unhealthy": 1,549 "count-objects-unrecoverable": 0,550 "count-corrupt-shares": 0,551 })552 #self.failUnless Equal(len(r.get_problems()), 1) # TODO569 self.failUnlessReallyEqual(c, 570 {"count-objects-checked": 4, 571 "count-objects-healthy": 3, 572 "count-objects-unhealthy": 1, 573 "count-objects-unrecoverable": 0, 574 "count-corrupt-shares": 0, 575 }) 576 #self.failUnlessReallyEqual(len(r.get_problems()), 1) # TODO 553 577 d.addCallback(_check_results) 554 578 return d … … 632 656 self.failUnless(u_v.startswith("URI:DIR2-Verifier:"), u_v) 633 657 u_r = n.get_repair_cap().to_string() 634 self.failUnless Equal(u_r, u)658 self.failUnlessReallyEqual(u_r, u) 635 659 self.expected_manifest.append( ((), u) ) 636 660 self.expected_verifycaps.add(u_v) … … 638 662 self.expected_storage_indexes.add(base32.b2a(si)) 639 663 expected_si = n._uri.get_storage_index() 640 self.failUnless Equal(si, expected_si)664 self.failUnlessReallyEqual(si, expected_si) 641 665 642 666 d = n.list() … … 687 711 d.addCallback(lambda res: n.list()) 688 712 d.addCallback(lambda children: 689 self.failUnless Equal(set(children.keys()),690 set([u"child", u"subdir"])))713 self.failUnlessReallyEqual(set(children.keys()), 714 set([u"child", u"subdir"]))) 691 715 692 716 d.addCallback(lambda res: n.start_deep_stats().when_done()) … … 706 730 } 707 731 for k,v in expected.iteritems(): 708 self.failUnless Equal(stats[k], v,709 "stats[%s] was %s, not %s" %710 (k, stats[k], v))732 self.failUnlessReallyEqual(stats[k], v, 733 "stats[%s] was %s, not %s" % 734 (k, stats[k], v)) 711 735 self.failUnless(stats["size-directories"] > 500, 712 736 stats["size-directories"]) 713 737 self.failUnless(stats["largest-directory"] > 500, 714 738 stats["largest-directory"]) 715 self.failUnless Equal(stats["size-files-histogram"], [])739 self.failUnlessReallyEqual(stats["size-files-histogram"], []) 716 740 d.addCallback(_check_deepstats) 717 741 … … 719 743 def _check_manifest(res): 720 744 manifest = res["manifest"] 721 self.failUnless Equal(sorted(manifest),722 sorted(self.expected_manifest))745 self.failUnlessReallyEqual(sorted(manifest), 746 sorted(self.expected_manifest)) 723 747 stats = res["stats"] 724 748 _check_deepstats(stats) 725 self.failUnless Equal(self.expected_verifycaps,726 res["verifycaps"])727 self.failUnless Equal(self.expected_storage_indexes,728 res["storage-index"])749 self.failUnlessReallyEqual(self.expected_verifycaps, 750 res["verifycaps"]) 751 self.failUnlessReallyEqual(self.expected_storage_indexes, 752 res["storage-index"]) 729 753 d.addCallback(_check_manifest) 730 754 … … 741 765 dirnode.DirectoryNode))) 742 766 d.addCallback(lambda res: n.get_child_at_path(u"")) 743 d.addCallback(lambda res: self.failUnless Equal(res.get_uri(),744 n.get_uri()))767 d.addCallback(lambda res: self.failUnlessReallyEqual(res.get_uri(), 768 n.get_uri())) 745 769 746 770 d.addCallback(lambda res: n.get_metadata_for(u"child")) 747 771 d.addCallback(lambda metadata: 748 self.failUnless Equal(set(metadata.keys()),749 set(["tahoe"])))772 self.failUnlessReallyEqual(set(metadata.keys()), 773 set(["tahoe"]))) 750 774 751 775 d.addCallback(lambda res: … … 760 784 self.failUnless(isinstance(child, dirnode.DirectoryNode)) 761 785 # edge-metadata needs at least one path segment 762 self.failUnless Equal(set(metadata.keys()), set([]))786 self.failUnlessReallyEqual(set(metadata.keys()), set([])) 763 787 d.addCallback(_check_child_and_metadata1) 764 788 d.addCallback(lambda res: … … 767 791 def _check_child_and_metadata2(res): 768 792 child, metadata = res 769 self.failUnless Equal(child.get_uri(),770 fake_file_uri)771 self.failUnless Equal(set(metadata.keys()), set(["tahoe"]))793 self.failUnlessReallyEqual(child.get_uri(), 794 fake_file_uri) 795 self.failUnlessReallyEqual(set(metadata.keys()), set(["tahoe"])) 772 796 d.addCallback(_check_child_and_metadata2) 773 797 … … 777 801 child, metadata = res 778 802 self.failUnless(isinstance(child, dirnode.DirectoryNode)) 779 self.failUnless Equal(set(metadata.keys()), set(["tahoe"]))803 self.failUnlessReallyEqual(set(metadata.keys()), set(["tahoe"])) 780 804 d.addCallback(_check_child_and_metadata3) 781 805 … … 787 811 d.addCallback(lambda res: n.get_metadata_for(u"c2")) 788 812 d.addCallback(lambda metadata: 789 self.failUnless Equal(set(metadata.keys()), set(["tahoe"])))813 self.failUnlessReallyEqual(set(metadata.keys()), set(["tahoe"]))) 790 814 791 815 # You can't override the link timestamps. … … 805 829 d.addCallback(lambda res: n.get_metadata_for(u"c3")) 806 830 d.addCallback(lambda metadata: 807 self.failUnless Equal(set(metadata.keys()), set(["tahoe"])))831 self.failUnlessReallyEqual(set(metadata.keys()), set(["tahoe"]))) 808 832 809 833 # we can also add specific metadata at set_uri() time … … 831 855 d.addCallback(lambda res: n.get_metadata_for(u"d2")) 832 856 d.addCallback(lambda metadata: 833 self.failUnless Equal(set(metadata.keys()), set(["tahoe"])))857 self.failUnlessReallyEqual(set(metadata.keys()), set(["tahoe"]))) 834 858 835 859 # if we don't set any defaults, the child should get timestamps … … 837 861 d.addCallback(lambda res: n.get_metadata_for(u"d3")) 838 862 d.addCallback(lambda metadata: 839 self.failUnless Equal(set(metadata.keys()), set(["tahoe"])))863 self.failUnlessReallyEqual(set(metadata.keys()), set(["tahoe"]))) 840 864 841 865 # we can also add specific metadata at set_node() time … … 875 899 d.addCallback(lambda res: n.get_metadata_for(u"e1")) 876 900 d.addCallback(lambda metadata: 877 self.failUnless Equal(set(metadata.keys()), set(["tahoe"])))901 self.failUnlessReallyEqual(set(metadata.keys()), set(["tahoe"]))) 878 902 d.addCallback(lambda res: n.get_metadata_for(u"e2")) 879 903 d.addCallback(lambda metadata: 880 self.failUnless Equal(set(metadata.keys()), set(["tahoe"])))904 self.failUnlessReallyEqual(set(metadata.keys()), set(["tahoe"]))) 881 905 d.addCallback(lambda res: n.get_metadata_for(u"e3")) 882 906 d.addCallback(lambda metadata: … … 906 930 d.addCallback(lambda res: n.get_metadata_for(u"f1")) 907 931 d.addCallback(lambda metadata: 908 self.failUnless Equal(set(metadata.keys()), set(["tahoe"])))932 self.failUnlessReallyEqual(set(metadata.keys()), set(["tahoe"]))) 909 933 d.addCallback(lambda res: n.get_metadata_for(u"f2")) 910 934 d.addCallback(lambda metadata: 911 self.failUnless Equal(set(metadata.keys()), set(["tahoe"])))935 self.failUnlessReallyEqual(set(metadata.keys()), set(["tahoe"]))) 912 936 d.addCallback(lambda res: n.get_metadata_for(u"f3")) 913 937 d.addCallback(lambda metadata: … … 952 976 d.addCallback(lambda res: n.get_metadata_for(u"timestamps")) 953 977 def _check_timestamp1(metadata): 954 self.failUnless Equal(set(metadata.keys()), set(["tahoe"]))978 self.failUnlessReallyEqual(set(metadata.keys()), set(["tahoe"])) 955 979 tahoe_md = metadata["tahoe"] 956 self.failUnless Equal(set(tahoe_md.keys()), set(["linkcrtime", "linkmotime"]))980 self.failUnlessReallyEqual(set(tahoe_md.keys()), set(["linkcrtime", "linkmotime"])) 957 981 958 982 self.failUnlessGreaterOrEqualThan(tahoe_md["linkcrtime"], … … 976 1000 self.failUnlessIn("tahoe", metadata) 977 1001 tahoe_md = metadata["tahoe"] 978 self.failUnless Equal(set(tahoe_md.keys()), set(["linkcrtime", "linkmotime"]))979 980 self.failUnless Equal(tahoe_md["linkcrtime"], self._old_linkcrtime)1002 self.failUnlessReallyEqual(set(tahoe_md.keys()), set(["linkcrtime", "linkmotime"])) 1003 1004 self.failUnlessReallyEqual(tahoe_md["linkcrtime"], self._old_linkcrtime) 981 1005 self.failUnlessGreaterThan(tahoe_md["linkmotime"], self._old_linkmotime) 982 1006 return n.delete(u"timestamps") … … 985 1009 d.addCallback(lambda res: n.delete(u"subdir")) 986 1010 d.addCallback(lambda old_child: 987 self.failUnless Equal(old_child.get_uri(),1011 self.failUnlessReallyEqual(old_child.get_uri(), 988 1012 self.subdir.get_uri())) 989 1013 990 1014 d.addCallback(lambda res: n.list()) 991 1015 d.addCallback(lambda children: 992 self.failUnless Equal(set(children.keys()),993 set([u"child"])))1016 self.failUnlessReallyEqual(set(children.keys()), 1017 set([u"child"]))) 994 1018 995 1019 uploadable1 = upload.Data("some data", convergence="converge") … … 1006 1030 d.addCallback(lambda res: n.list()) 1007 1031 d.addCallback(lambda children: 1008 self.failUnless Equal(set(children.keys()),1009 set([u"child", u"newfile"])))1032 self.failUnlessReallyEqual(set(children.keys()), 1033 set([u"child", u"newfile"]))) 1010 1034 d.addCallback(lambda res: n.get_metadata_for(u"newfile")) 1011 1035 d.addCallback(lambda metadata: 1012 self.failUnless Equal(set(metadata.keys()), set(["tahoe"])))1036 self.failUnlessReallyEqual(set(metadata.keys()), set(["tahoe"]))) 1013 1037 1014 1038 uploadable3 = upload.Data("some data", convergence="converge") … … 1036 1060 d.addCallback(lambda res: n.list()) 1037 1061 d.addCallback(lambda children: 1038 self.failUnless Equal(set(children.keys()),1039 set([u"newfile", u"subdir2"])))1062 self.failUnlessReallyEqual(set(children.keys()), 1063 set([u"newfile", u"subdir2"]))) 1040 1064 d.addCallback(lambda res: self.subdir2.list()) 1041 1065 d.addCallback(lambda children: 1042 self.failUnless Equal(set(children.keys()),1043 set([u"child"])))1066 self.failUnlessReallyEqual(set(children.keys()), 1067 set([u"child"]))) 1044 1068 d.addCallback(lambda res: self.subdir2.get(u"child")) 1045 1069 d.addCallback(lambda child: 1046 self.failUnless Equal(child.get_uri(),1047 fake_file_uri))1070 self.failUnlessReallyEqual(child.get_uri(), 1071 fake_file_uri)) 1048 1072 1049 1073 # move it back, using new_child_name= … … 1052 1076 d.addCallback(lambda res: n.list()) 1053 1077 d.addCallback(lambda children: 1054 self.failUnless Equal(set(children.keys()),1055 set([u"newchild", u"newfile",1056 u"subdir2"])))1078 self.failUnlessReallyEqual(set(children.keys()), 1079 set([u"newchild", u"newfile", 1080 u"subdir2"]))) 1057 1081 d.addCallback(lambda res: self.subdir2.list()) 1058 1082 d.addCallback(lambda children: 1059 self.failUnless Equal(set(children.keys()), set([])))1083 self.failUnlessReallyEqual(set(children.keys()), set([]))) 1060 1084 1061 1085 # now make sure that we honor overwrite=False … … 1072 1096 d.addCallback(lambda res: self.subdir2.get(u"newchild")) 1073 1097 d.addCallback(lambda child: 1074 self.failUnless Equal(child.get_uri(),1075 other_file_uri))1098 self.failUnlessReallyEqual(child.get_uri(), 1099 other_file_uri)) 1076 1100 1077 1101 … … 1115 1139 1116 1140 md1 = dirnode.update_metadata({"ctime": t1}, {}, t2) 1117 self.failUnless Equal(md1, {"tahoe":{"linkcrtime": t1, "linkmotime": t2}})1141 self.failUnlessReallyEqual(md1, {"tahoe":{"linkcrtime": t1, "linkmotime": t2}}) 1118 1142 1119 1143 md2 = dirnode.update_metadata(md1, {"key": "value", "tahoe": {"bad": "mojo"}}, t3) 1120 self.failUnless Equal(md2, {"key": "value",1121 "tahoe":{"linkcrtime": t1, "linkmotime": t3}})1144 self.failUnlessReallyEqual(md2, {"key": "value", 1145 "tahoe":{"linkcrtime": t1, "linkmotime": t3}}) 1122 1146 1123 1147 md3 = dirnode.update_metadata({}, None, t3) 1124 self.failUnless Equal(md3, {"tahoe":{"linkcrtime": t3, "linkmotime": t3}})1148 self.failUnlessReallyEqual(md3, {"tahoe":{"linkcrtime": t3, "linkmotime": t3}}) 1125 1149 1126 1150 md4 = dirnode.update_metadata({}, {"bool": True, "number": 42}, t1) 1127 self.failUnless Equal(md4, {"bool": True, "number": 42,1128 "tahoe":{"linkcrtime": t1, "linkmotime": t1}})1151 self.failUnlessReallyEqual(md4, {"bool": True, "number": 42, 1152 "tahoe":{"linkcrtime": t1, "linkmotime": t1}}) 1129 1153 1130 1154 def test_create_subdirectory(self): … … 1147 1171 def _check(sub): 1148 1172 d = n.get_child_at_path(u"subdir") 1149 d.addCallback(lambda sub2: self.failUnless Equal(sub2.get_uri(),1150 sub.get_uri()))1173 d.addCallback(lambda sub2: self.failUnlessReallyEqual(sub2.get_uri(), 1174 sub.get_uri())) 1151 1175 d.addCallback(lambda ign: sub.list()) 1152 1176 return d 1153 1177 d.addCallback(_check) 1154 1178 def _check_kids(kids2): 1155 self.failUnless Equal(set(kids.keys()), set(kids2.keys()))1156 self.failUnless Equal(kids2[u"kid2"][1]["metakey"], "metavalue")1179 self.failUnlessReallyEqual(set(kids.keys()), set(kids2.keys())) 1180 self.failUnlessReallyEqual(kids2[u"kid2"][1]["metakey"], "metavalue") 1157 1181 d.addCallback(_check_kids) 1158 1182 return d … … 1164 1188 return "writekey" 1165 1189 1166 class Packing( unittest.TestCase):1190 class Packing(testutil.ReallyEqualMixin, unittest.TestCase): 1167 1191 # This is a base32-encoded representation of the directory tree 1168 1192 # root/file1 … … 1201 1225 file3_rwcap = "URI:CHK:cmtcxq7hwxvfxan34yiev6ivhy:qvcekmjtoetdcw4kmi7b3rtblvgx7544crnwaqtiewemdliqsokq:3:10:5" 1202 1226 file3_metadata = {'ctime': 1246663897.4336269, 'tahoe': {'linkmotime': 1246663897.4336269, 'linkcrtime': 1246663897.4336269}, 'mtime': 1246663897.4336269} 1203 self.failUnless Equal(file3_metadata, children[u'file3'][1])1204 self.failUnless Equal(file3_rocap,1205 children[u'file3'][0].get_readonly_uri())1206 self.failUnless Equal(file3_rwcap,1207 children[u'file3'][0].get_uri())1227 self.failUnlessReallyEqual(file3_metadata, children[u'file3'][1]) 1228 self.failUnlessReallyEqual(file3_rocap, 1229 children[u'file3'][0].get_readonly_uri()) 1230 self.failUnlessReallyEqual(file3_rwcap, 1231 children[u'file3'][0].get_uri()) 1208 1232 1209 1233 # Are the metadata for child 2 right? … … 1211 1235 file2_rwcap = "URI:CHK:apegrpehshwugkbh3jlt5ei6hq:5oougnemcl5xgx4ijgiumtdojlipibctjkbwvyygdymdphib2fvq:3:10:4" 1212 1236 file2_metadata = {'ctime': 1246663897.430218, 'tahoe': {'linkmotime': 1246663897.430218, 'linkcrtime': 1246663897.430218}, 'mtime': 1246663897.430218} 1213 self.failUnless Equal(file2_metadata, children[u'file2'][1])1214 self.failUnless Equal(file2_rocap,1237 self.failUnlessReallyEqual(file2_metadata, children[u'file2'][1]) 1238 self.failUnlessReallyEqual(file2_rocap, 1215 1239 children[u'file2'][0].get_readonly_uri()) 1216 self.failUnless Equal(file2_rwcap,1240 self.failUnlessReallyEqual(file2_rwcap, 1217 1241 children[u'file2'][0].get_uri()) 1218 1242 … … 1221 1245 file1_rwcap = "URI:CHK:olxtimympo7f27jvhtgqlnbtn4:emzdnhk2um4seixozlkw3qx2nfijvdkx3ky7i7izl47yedl6e64a:3:10:10" 1222 1246 file1_metadata = {'ctime': 1246663897.4275661, 'tahoe': {'linkmotime': 1246663897.4275661, 'linkcrtime': 1246663897.4275661}, 'mtime': 1246663897.4275661} 1223 self.failUnless Equal(file1_metadata, children[u'file1'][1])1224 self.failUnless Equal(file1_rocap,1247 self.failUnlessReallyEqual(file1_metadata, children[u'file1'][1]) 1248 self.failUnlessReallyEqual(file1_rocap, 1225 1249 children[u'file1'][0].get_readonly_uri()) 1226 self.failUnless Equal(file1_rwcap,1250 self.failUnlessReallyEqual(file1_rwcap, 1227 1251 children[u'file1'][0].get_uri()) 1228 1252 … … 1341 1365 return self.nodemaker.create_from_cap(rwcap, rocap) 1342 1366 1343 class Dirnode2( unittest.TestCase, testutil.ShouldFailMixin):1367 class Dirnode2(testutil.ReallyEqualMixin, testutil.ShouldFailMixin, unittest.TestCase): 1344 1368 def setUp(self): 1345 1369 client = FakeClient2() … … 1350 1374 # we tolerate them properly. 1351 1375 d = self.nodemaker.create_new_mutable_directory() 1352 future_write_uri = "x-tahoe-crazy://I_am_from_the_future."1353 future_read_uri = "x-tahoe-crazy-readonly://I_am_from_the_future."1354 future_imm_uri = "x-tahoe-crazy-immutable://I_am_from_the_future."1376 future_write_uri = u"x-tahoe-crazy://I_am_from_the_future_rw_\u263A".encode('utf-8') 1377 future_read_uri = u"x-tahoe-crazy-readonly://I_am_from_the_future_ro_\u263A".encode('utf-8') 1378 future_imm_uri = u"x-tahoe-crazy-immutable://I_am_from_the_future_imm_\u263A".encode('utf-8') 1355 1379 future_node = UnknownNode(future_write_uri, future_read_uri) 1356 1380 def _then(n): … … 1383 1407 d.addCallback(lambda ign: self._node.list()) 1384 1408 def _check(children): 1385 self.failUnless Equal(len(children), 4)1409 self.failUnlessReallyEqual(len(children), 4) 1386 1410 (fn, metadata) = children[u"future"] 1387 1411 self.failUnless(isinstance(fn, UnknownNode), fn) 1388 self.failUnless Equal(fn.get_uri(), future_write_uri)1389 self.failUnless Equal(fn.get_write_uri(), future_write_uri)1390 self.failUnless Equal(fn.get_readonly_uri(), "ro." + future_read_uri)1412 self.failUnlessReallyEqual(fn.get_uri(), future_write_uri) 1413 self.failUnlessReallyEqual(fn.get_write_uri(), future_write_uri) 1414 self.failUnlessReallyEqual(fn.get_readonly_uri(), "ro." + future_read_uri) 1391 1415 1392 1416 (fn2, metadata2) = children[u"add-pair"] 1393 1417 self.failUnless(isinstance(fn2, UnknownNode), fn2) 1394 self.failUnless Equal(fn2.get_uri(), future_write_uri)1395 self.failUnless Equal(fn2.get_write_uri(), future_write_uri)1396 self.failUnless Equal(fn2.get_readonly_uri(), "ro." + future_read_uri)1418 self.failUnlessReallyEqual(fn2.get_uri(), future_write_uri) 1419 self.failUnlessReallyEqual(fn2.get_write_uri(), future_write_uri) 1420 self.failUnlessReallyEqual(fn2.get_readonly_uri(), "ro." + future_read_uri) 1397 1421 1398 1422 (fn3, metadata3) = children[u"add-ro"] 1399 1423 self.failUnless(isinstance(fn3, UnknownNode), fn3) 1400 self.failUnless Equal(fn3.get_uri(), "ro." + future_read_uri)1401 self.failUnless Equal(fn3.get_write_uri(), None)1402 self.failUnless Equal(fn3.get_readonly_uri(), "ro." + future_read_uri)1424 self.failUnlessReallyEqual(fn3.get_uri(), "ro." + future_read_uri) 1425 self.failUnlessReallyEqual(fn3.get_write_uri(), None) 1426 self.failUnlessReallyEqual(fn3.get_readonly_uri(), "ro." + future_read_uri) 1403 1427 1404 1428 (fn4, metadata4) = children[u"add-imm"] 1405 1429 self.failUnless(isinstance(fn4, UnknownNode), fn4) 1406 self.failUnless Equal(fn4.get_uri(), "imm." + future_imm_uri)1407 self.failUnless Equal(fn4.get_write_uri(), None)1408 self.failUnless Equal(fn4.get_readonly_uri(), "imm." + future_imm_uri)1430 self.failUnlessReallyEqual(fn4.get_uri(), "imm." + future_imm_uri) 1431 self.failUnlessReallyEqual(fn4.get_write_uri(), None) 1432 self.failUnlessReallyEqual(fn4.get_readonly_uri(), "imm." + future_imm_uri) 1409 1433 1410 1434 # We should also be allowed to copy the "future" UnknownNode, because … … 1416 1440 d.addCallback(lambda ign: self._node.list()) 1417 1441 def _check2(children): 1418 self.failUnless Equal(len(children), 5)1442 self.failUnlessReallyEqual(len(children), 5) 1419 1443 (fn, metadata) = children[u"copy"] 1420 1444 self.failUnless(isinstance(fn, UnknownNode), fn) 1421 self.failUnless Equal(fn.get_uri(), future_write_uri)1422 self.failUnless Equal(fn.get_write_uri(), future_write_uri)1423 self.failUnless Equal(fn.get_readonly_uri(), "ro." + future_read_uri)1445 self.failUnlessReallyEqual(fn.get_uri(), future_write_uri) 1446 self.failUnlessReallyEqual(fn.get_write_uri(), future_write_uri) 1447 self.failUnlessReallyEqual(fn.get_readonly_uri(), "ro." + future_read_uri) 1424 1448 d.addCallback(_check2) 1425 1449 return d 1426 1450 1427 1451 def test_unknown_strip_prefix_for_ro(self): 1428 self.failUnless Equal(strip_prefix_for_ro("foo", False), "foo")1429 self.failUnless Equal(strip_prefix_for_ro("ro.foo", False), "foo")1430 self.failUnless Equal(strip_prefix_for_ro("imm.foo", False), "imm.foo")1431 self.failUnless Equal(strip_prefix_for_ro("foo", True), "foo")1432 self.failUnless Equal(strip_prefix_for_ro("ro.foo", True), "foo")1433 self.failUnless Equal(strip_prefix_for_ro("imm.foo", True), "foo")1452 self.failUnlessReallyEqual(strip_prefix_for_ro("foo", False), "foo") 1453 self.failUnlessReallyEqual(strip_prefix_for_ro("ro.foo", False), "foo") 1454 self.failUnlessReallyEqual(strip_prefix_for_ro("imm.foo", False), "imm.foo") 1455 self.failUnlessReallyEqual(strip_prefix_for_ro("foo", True), "foo") 1456 self.failUnlessReallyEqual(strip_prefix_for_ro("ro.foo", True), "foo") 1457 self.failUnlessReallyEqual(strip_prefix_for_ro("imm.foo", True), "foo") 1434 1458 1435 1459 def test_unknownnode(self): … … 1529 1553 1530 1554 1531 class DeepStats( unittest.TestCase):1555 class DeepStats(testutil.ReallyEqualMixin, unittest.TestCase): 1532 1556 timeout = 240 # It takes longer than 120 seconds on Francois's arm box. 1533 1557 def test_stats(self): … … 1539 1563 1540 1564 s = ds.get_results() 1541 self.failUnless Equal(s["count-files"], 1)1542 self.failUnless Equal(s["size-immutable-files"], 123)1543 self.failUnless Equal(s["largest-directory"], 444)1544 self.failUnless Equal(s["count-literal-files"], 0)1565 self.failUnlessReallyEqual(s["count-files"], 1) 1566 self.failUnlessReallyEqual(s["size-immutable-files"], 123) 1567 self.failUnlessReallyEqual(s["largest-directory"], 444) 1568 self.failUnlessReallyEqual(s["count-literal-files"], 0) 1545 1569 1546 1570 ds.add("count-files") … … 1550 1574 1551 1575 s = ds.get_results() 1552 self.failUnless Equal(s["count-files"], 2)1553 self.failUnless Equal(s["size-immutable-files"], 444)1554 self.failUnless Equal(s["largest-directory"], 444)1555 self.failUnless Equal(s["count-literal-files"], 0)1556 self.failUnless Equal(s["size-files-histogram"],1576 self.failUnlessReallyEqual(s["count-files"], 2) 1577 self.failUnlessReallyEqual(s["size-immutable-files"], 444) 1578 self.failUnlessReallyEqual(s["largest-directory"], 444) 1579 self.failUnlessReallyEqual(s["count-literal-files"], 0) 1580 self.failUnlessReallyEqual(s["size-files-histogram"], 1557 1581 [ (101, 316, 1), (317, 1000, 1) ]) 1558 1582 … … 1562 1586 ds.histogram("size-files-histogram", 4*1000*1000*1000*1000) # 4TB 1563 1587 s = ds.get_results() 1564 self.failUnless Equal(s["size-files-histogram"],1588 self.failUnlessReallyEqual(s["size-files-histogram"], 1565 1589 [ (1, 3, 3), 1566 1590 (4, 10, 7), … … 1594 1618 1595 1619 1596 class Deleter(GridTestMixin, unittest.TestCase):1620 class Deleter(GridTestMixin, testutil.ReallyEqualMixin, unittest.TestCase): 1597 1621 timeout = 3600 # It takes longer than 433 seconds on Zandr's ARM box. 1598 1622 def test_retry(self): -
TabularUnified src/allmydata/test/test_uri.py ¶
rca660a5 rd346e085 5 5 from allmydata.interfaces import IURI, IFileURI, IDirnodeURI, IMutableFileURI, \ 6 6 IVerifierURI, CapConstraintError 7 8 class Literal(unittest.TestCase): 7 import allmydata.test.common_util as testutil 8 9 class Literal(testutil.ReallyEqualMixin, unittest.TestCase): 9 10 def _help_test(self, data): 10 11 u = uri.LiteralFileURI(data) … … 12 13 self.failUnless(IFileURI.providedBy(u)) 13 14 self.failIf(IDirnodeURI.providedBy(u)) 14 self.failUnless Equal(u.data, data)15 self.failUnless Equal(u.get_size(), len(data))15 self.failUnlessReallyEqual(u.data, data) 16 self.failUnlessReallyEqual(u.get_size(), len(data)) 16 17 self.failUnless(u.is_readonly()) 17 18 self.failIf(u.is_mutable()) … … 21 22 self.failUnless(IFileURI.providedBy(u2)) 22 23 self.failIf(IDirnodeURI.providedBy(u2)) 23 self.failUnless Equal(u2.data, data)24 self.failUnless Equal(u2.get_size(), len(data))24 self.failUnlessReallyEqual(u2.data, data) 25 self.failUnlessReallyEqual(u2.get_size(), len(data)) 25 26 self.failUnless(u2.is_readonly()) 26 27 self.failIf(u2.is_mutable()) … … 29 30 self.failUnless(IFileURI.providedBy(u2i)) 30 31 self.failIf(IDirnodeURI.providedBy(u2i)) 31 self.failUnless Equal(u2i.data, data)32 self.failUnless Equal(u2i.get_size(), len(data))32 self.failUnlessReallyEqual(u2i.data, data) 33 self.failUnlessReallyEqual(u2i.get_size(), len(data)) 33 34 self.failUnless(u2i.is_readonly()) 34 35 self.failIf(u2i.is_mutable()) … … 36 37 u3 = u.get_readonly() 37 38 self.failUnlessIdentical(u, u3) 38 self.failUnless Equal(u.get_verify_cap(), None)39 self.failUnlessReallyEqual(u.get_verify_cap(), None) 39 40 40 41 he = u.to_human_encoding() 41 42 u_h = uri.LiteralFileURI.init_from_human_encoding(he) 42 self.failUnless Equal(u, u_h)43 self.failUnlessReallyEqual(u, u_h) 43 44 44 45 def test_empty(self): … … 54 55 return self._help_test(data) 55 56 56 class Compare( unittest.TestCase):57 class Compare(testutil.ReallyEqualMixin, unittest.TestCase): 57 58 def test_compare(self): 58 59 lit1 = uri.LiteralFileURI("some data") … … 62 63 unk = uri.UnknownURI("lafs://from_the_future") 63 64 self.failIfEqual(lit1, chk1) 64 self.failUnless Equal(chk1, chk2)65 self.failUnlessReallyEqual(chk1, chk2) 65 66 self.failIfEqual(chk1, "not actually a URI") 66 67 # these should be hashable too 67 68 s = set([lit1, chk1, chk2, unk]) 68 self.failUnless Equal(len(s), 3) # since chk1==chk269 self.failUnlessReallyEqual(len(s), 3) # since chk1==chk2 69 70 70 71 def test_is_uri(self): … … 90 91 self.failIf(uri.has_uri_prefix("foo")) 91 92 92 class CHKFile( unittest.TestCase):93 class CHKFile(testutil.ReallyEqualMixin, unittest.TestCase): 93 94 def test_pack(self): 94 95 key = "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f" … … 103 104 total_shares=total_shares, 104 105 size=size) 105 self.failUnless Equal(u.get_storage_index(), storage_index)106 self.failUnless Equal(u.key, key)107 self.failUnless Equal(u.uri_extension_hash, uri_extension_hash)108 self.failUnless Equal(u.needed_shares, needed_shares)109 self.failUnless Equal(u.total_shares, total_shares)110 self.failUnless Equal(u.size, size)106 self.failUnlessReallyEqual(u.get_storage_index(), storage_index) 107 self.failUnlessReallyEqual(u.key, key) 108 self.failUnlessReallyEqual(u.uri_extension_hash, uri_extension_hash) 109 self.failUnlessReallyEqual(u.needed_shares, needed_shares) 110 self.failUnlessReallyEqual(u.total_shares, total_shares) 111 self.failUnlessReallyEqual(u.size, size) 111 112 self.failUnless(u.is_readonly()) 112 113 self.failIf(u.is_mutable()) … … 114 115 self.failUnless(IFileURI.providedBy(u)) 115 116 self.failIf(IDirnodeURI.providedBy(u)) 116 self.failUnless Equal(u.get_size(), 1234)117 self.failUnlessReallyEqual(u.get_size(), 1234) 117 118 118 119 u_ro = u.get_readonly() 119 120 self.failUnlessIdentical(u, u_ro) 120 121 he = u.to_human_encoding() 121 self.failUnless Equal(he, "http://127.0.0.1:3456/uri/" + u.to_string())122 self.failUnless Equal(uri.CHKFileURI.init_from_human_encoding(he), u)122 self.failUnlessReallyEqual(he, "http://127.0.0.1:3456/uri/" + u.to_string()) 123 self.failUnlessReallyEqual(uri.CHKFileURI.init_from_human_encoding(he), u) 123 124 124 125 u2 = uri.from_string(u.to_string()) 125 self.failUnless Equal(u2.get_storage_index(), storage_index)126 self.failUnless Equal(u2.key, key)127 self.failUnless Equal(u2.uri_extension_hash, uri_extension_hash)128 self.failUnless Equal(u2.needed_shares, needed_shares)129 self.failUnless Equal(u2.total_shares, total_shares)130 self.failUnless Equal(u2.size, size)126 self.failUnlessReallyEqual(u2.get_storage_index(), storage_index) 127 self.failUnlessReallyEqual(u2.key, key) 128 self.failUnlessReallyEqual(u2.uri_extension_hash, uri_extension_hash) 129 self.failUnlessReallyEqual(u2.needed_shares, needed_shares) 130 self.failUnlessReallyEqual(u2.total_shares, total_shares) 131 self.failUnlessReallyEqual(u2.size, size) 131 132 self.failUnless(u2.is_readonly()) 132 133 self.failIf(u2.is_mutable()) … … 134 135 self.failUnless(IFileURI.providedBy(u2)) 135 136 self.failIf(IDirnodeURI.providedBy(u2)) 136 self.failUnless Equal(u2.get_size(), 1234)137 self.failUnlessReallyEqual(u2.get_size(), 1234) 137 138 138 139 u2i = uri.from_string(u.to_string(), deep_immutable=True) 139 self.failUnless Equal(u.to_string(), u2i.to_string())140 self.failUnlessReallyEqual(u.to_string(), u2i.to_string()) 140 141 u2ro = uri.from_string(uri.ALLEGED_READONLY_PREFIX + u.to_string()) 141 self.failUnless Equal(u.to_string(), u2ro.to_string())142 self.failUnlessReallyEqual(u.to_string(), u2ro.to_string()) 142 143 u2imm = uri.from_string(uri.ALLEGED_IMMUTABLE_PREFIX + u.to_string()) 143 self.failUnless Equal(u.to_string(), u2imm.to_string())144 self.failUnlessReallyEqual(u.to_string(), u2imm.to_string()) 144 145 145 146 v = u.get_verify_cap() … … 149 150 150 151 v2 = uri.from_string(v.to_string()) 151 self.failUnless Equal(v, v2)152 self.failUnlessReallyEqual(v, v2) 152 153 he = v.to_human_encoding() 153 154 v2_h = uri.CHKFileVerifierURI.init_from_human_encoding(he) 154 self.failUnless Equal(v2, v2_h)155 self.failUnlessReallyEqual(v2, v2_h) 155 156 156 157 v3 = uri.CHKFileVerifierURI(storage_index="\x00"*16, … … 193 194 194 195 195 class Extension( unittest.TestCase):196 class Extension(testutil.ReallyEqualMixin, unittest.TestCase): 196 197 def test_pack(self): 197 198 data = {"stuff": "value", … … 202 203 ext = uri.pack_extension(data) 203 204 d = uri.unpack_extension(ext) 204 self.failUnless Equal(d["stuff"], "value")205 self.failUnless Equal(d["size"], 12)206 self.failUnless Equal(d["big_hash"], hashutil.tagged_hash("foo", "bar"))205 self.failUnlessReallyEqual(d["stuff"], "value") 206 self.failUnlessReallyEqual(d["size"], 12) 207 self.failUnlessReallyEqual(d["big_hash"], hashutil.tagged_hash("foo", "bar")) 207 208 208 209 readable = uri.unpack_extension_readable(ext) 209 self.failUnless Equal(readable["needed_shares"], 3)210 self.failUnless Equal(readable["stuff"], "value")211 self.failUnless Equal(readable["size"], 12)212 self.failUnless Equal(readable["big_hash"],210 self.failUnlessReallyEqual(readable["needed_shares"], 3) 211 self.failUnlessReallyEqual(readable["stuff"], "value") 212 self.failUnlessReallyEqual(readable["size"], 12) 213 self.failUnlessReallyEqual(readable["big_hash"], 213 214 base32.b2a(hashutil.tagged_hash("foo", "bar"))) 214 self.failUnless Equal(readable["UEB_hash"],215 self.failUnlessReallyEqual(readable["UEB_hash"], 215 216 base32.b2a(hashutil.uri_extension_hash(ext))) 216 217 217 class Unknown( unittest.TestCase):218 class Unknown(testutil.ReallyEqualMixin, unittest.TestCase): 218 219 def test_from_future(self): 219 220 # any URI type that we don't recognize should be treated as unknown … … 221 222 u = uri.from_string(future_uri) 222 223 self.failUnless(isinstance(u, uri.UnknownURI)) 223 self.failUnless Equal(u.to_string(), future_uri)224 self.failUnlessReallyEqual(u.to_string(), future_uri) 224 225 self.failUnless(u.get_readonly() is None) 225 226 self.failUnless(u.get_error() is None) 226 227 227 228 u2 = uri.UnknownURI(future_uri, error=CapConstraintError("...")) 228 self.failUnless Equal(u.to_string(), future_uri)229 self.failUnlessReallyEqual(u.to_string(), future_uri) 229 230 self.failUnless(u2.get_readonly() is None) 230 231 self.failUnless(isinstance(u2.get_error(), CapConstraintError)) 231 232 232 class Constraint(unittest.TestCase): 233 # Future caps might have non-ASCII chars in them. (Or maybe not, who can tell about the future?) 234 future_uri = u"I am a cap from the \u263A future. Whatever you ".encode('utf-8') 235 u = uri.from_string(future_uri) 236 self.failUnless(isinstance(u, uri.UnknownURI)) 237 self.failUnlessReallyEqual(u.to_string(), future_uri) 238 self.failUnless(u.get_readonly() is None) 239 self.failUnless(u.get_error() is None) 240 241 u2 = uri.UnknownURI(future_uri, error=CapConstraintError("...")) 242 self.failUnlessReallyEqual(u.to_string(), future_uri) 243 self.failUnless(u2.get_readonly() is None) 244 self.failUnless(isinstance(u2.get_error(), CapConstraintError)) 245 246 class Constraint(testutil.ReallyEqualMixin, unittest.TestCase): 233 247 def test_constraint(self): 234 248 good="http://127.0.0.1:3456/uri/URI%3ADIR2%3Agh3l5rbvnv2333mrfvalmjfr4i%3Alz6l7u3z3b7g37s4zkdmfpx5ly4ib4m6thrpbusi6ys62qtc6mma/" … … 241 255 uri.CHKFileURI.init_from_string(fileURI) 242 256 243 class Mutable( unittest.TestCase):257 class Mutable(testutil.ReallyEqualMixin, unittest.TestCase): 244 258 def test_pack(self): 245 259 writekey = "\x01" * 16 … … 247 261 248 262 u = uri.WriteableSSKFileURI(writekey, fingerprint) 249 self.failUnless Equal(u.writekey, writekey)250 self.failUnless Equal(u.fingerprint, fingerprint)263 self.failUnlessReallyEqual(u.writekey, writekey) 264 self.failUnlessReallyEqual(u.fingerprint, fingerprint) 251 265 self.failIf(u.is_readonly()) 252 266 self.failUnless(u.is_mutable()) … … 258 272 he = u.to_human_encoding() 259 273 u_h = uri.WriteableSSKFileURI.init_from_human_encoding(he) 260 self.failUnless Equal(u, u_h)274 self.failUnlessReallyEqual(u, u_h) 261 275 262 276 u2 = uri.from_string(u.to_string()) 263 self.failUnless Equal(u2.writekey, writekey)264 self.failUnless Equal(u2.fingerprint, fingerprint)277 self.failUnlessReallyEqual(u2.writekey, writekey) 278 self.failUnlessReallyEqual(u2.fingerprint, fingerprint) 265 279 self.failIf(u2.is_readonly()) 266 280 self.failUnless(u2.is_mutable()) … … 278 292 u3 = u2.get_readonly() 279 293 readkey = hashutil.ssk_readkey_hash(writekey) 280 self.failUnless Equal(u3.fingerprint, fingerprint)281 self.failUnless Equal(u3.readkey, readkey)294 self.failUnlessReallyEqual(u3.fingerprint, fingerprint) 295 self.failUnlessReallyEqual(u3.readkey, readkey) 282 296 self.failUnless(u3.is_readonly()) 283 297 self.failUnless(u3.is_mutable()) … … 289 303 self.failUnless(isinstance(u3i, uri.UnknownURI), u3i) 290 304 u3ro = uri.from_string(uri.ALLEGED_READONLY_PREFIX + u3.to_string()) 291 self.failUnless Equal(u3.to_string(), u3ro.to_string())305 self.failUnlessReallyEqual(u3.to_string(), u3ro.to_string()) 292 306 u3imm = uri.from_string(uri.ALLEGED_IMMUTABLE_PREFIX + u3.to_string()) 293 307 self.failUnless(isinstance(u3imm, uri.UnknownURI), u3imm) … … 295 309 he = u3.to_human_encoding() 296 310 u3_h = uri.ReadonlySSKFileURI.init_from_human_encoding(he) 297 self.failUnless Equal(u3, u3_h)311 self.failUnlessReallyEqual(u3, u3_h) 298 312 299 313 u4 = uri.ReadonlySSKFileURI(readkey, fingerprint) 300 self.failUnless Equal(u4.fingerprint, fingerprint)301 self.failUnless Equal(u4.readkey, readkey)314 self.failUnlessReallyEqual(u4.fingerprint, fingerprint) 315 self.failUnlessReallyEqual(u4.readkey, readkey) 302 316 self.failUnless(u4.is_readonly()) 303 317 self.failUnless(u4.is_mutable()) … … 309 323 self.failUnless(isinstance(u4i, uri.UnknownURI), u4i) 310 324 u4ro = uri.from_string(uri.ALLEGED_READONLY_PREFIX + u4.to_string()) 311 self.failUnless Equal(u4.to_string(), u4ro.to_string())325 self.failUnlessReallyEqual(u4.to_string(), u4ro.to_string()) 312 326 u4imm = uri.from_string(uri.ALLEGED_IMMUTABLE_PREFIX + u4.to_string()) 313 327 self.failUnless(isinstance(u4imm, uri.UnknownURI), u4imm) 314 328 315 329 u4a = uri.from_string(u4.to_string()) 316 self.failUnless Equal(u4a, u4)330 self.failUnlessReallyEqual(u4a, u4) 317 331 self.failUnless("ReadonlySSKFileURI" in str(u4a)) 318 332 self.failUnlessIdentical(u4a.get_readonly(), u4a) … … 320 334 u5 = u4.get_verify_cap() 321 335 self.failUnless(IVerifierURI.providedBy(u5)) 322 self.failUnless Equal(u5.get_storage_index(), u.get_storage_index())336 self.failUnlessReallyEqual(u5.get_storage_index(), u.get_storage_index()) 323 337 u7 = u.get_verify_cap() 324 338 self.failUnless(IVerifierURI.providedBy(u7)) 325 self.failUnless Equal(u7.get_storage_index(), u.get_storage_index())339 self.failUnlessReallyEqual(u7.get_storage_index(), u.get_storage_index()) 326 340 327 341 he = u5.to_human_encoding() 328 342 u5_h = uri.SSKVerifierURI.init_from_human_encoding(he) 329 self.failUnless Equal(u5, u5_h)330 331 332 class Dirnode( unittest.TestCase):343 self.failUnlessReallyEqual(u5, u5_h) 344 345 346 class Dirnode(testutil.ReallyEqualMixin, unittest.TestCase): 333 347 def test_pack(self): 334 348 writekey = "\x01" * 16 … … 348 362 349 363 u2 = uri.from_string(u1.to_string()) 350 self.failUnless Equal(u1.to_string(), u2.to_string())364 self.failUnlessReallyEqual(u1.to_string(), u2.to_string()) 351 365 self.failIf(u2.is_readonly()) 352 366 self.failUnless(u2.is_mutable()) … … 379 393 380 394 u4 = uri.ReadonlyDirectoryURI(u2._filenode_uri.get_readonly()) 381 self.failUnless Equal(u4.to_string(), u3.to_string())395 self.failUnlessReallyEqual(u4.to_string(), u3.to_string()) 382 396 self.failUnless(u4.is_readonly()) 383 397 self.failUnless(u4.is_mutable()) … … 396 410 for v in verifiers: 397 411 self.failUnless(IVerifierURI.providedBy(v)) 398 self.failUnless Equal(v._filenode_uri,412 self.failUnlessReallyEqual(v._filenode_uri, 399 413 u1.get_verify_cap()._filenode_uri) 400 414 … … 412 426 size=size) 413 427 fncap = fnuri.to_string() 414 self.failUnless Equal(fncap, "URI:CHK:aeaqcaibaeaqcaibaeaqcaibae:nf3nimquen7aeqm36ekgxomalstenpkvsdmf6fplj7swdatbv5oa:3:10:1234")428 self.failUnlessReallyEqual(fncap, "URI:CHK:aeaqcaibaeaqcaibaeaqcaibae:nf3nimquen7aeqm36ekgxomalstenpkvsdmf6fplj7swdatbv5oa:3:10:1234") 415 429 u1 = uri.ImmutableDirectoryURI(fnuri) 416 430 self.failUnless(u1.is_readonly()) … … 423 437 self.failIf(u1_filenode.is_mutable()) 424 438 self.failUnless(u1_filenode.is_readonly()) 425 self.failUnless Equal(u1_filenode.to_string(), fncap)439 self.failUnlessReallyEqual(u1_filenode.to_string(), fncap) 426 440 self.failUnless(str(u1)) 427 441 428 442 u2 = uri.from_string(u1.to_string()) 429 self.failUnless Equal(u1.to_string(), u2.to_string())443 self.failUnlessReallyEqual(u1.to_string(), u2.to_string()) 430 444 self.failUnless(u2.is_readonly()) 431 445 self.failIf(u2.is_mutable()) … … 435 449 436 450 u2i = uri.from_string(u1.to_string(), deep_immutable=True) 437 self.failUnless Equal(u1.to_string(), u2i.to_string())451 self.failUnlessReallyEqual(u1.to_string(), u2i.to_string()) 438 452 439 453 u3 = u2.get_readonly() 440 self.failUnless Equal(u3.to_string(), u2.to_string())454 self.failUnlessReallyEqual(u3.to_string(), u2.to_string()) 441 455 self.failUnless(str(u3)) 442 456 443 457 u3i = uri.from_string(u2.to_string(), deep_immutable=True) 444 self.failUnless Equal(u2.to_string(), u3i.to_string())458 self.failUnlessReallyEqual(u2.to_string(), u3i.to_string()) 445 459 446 460 u2_verifier = u2.get_verify_cap() … … 456 470 u2vfs = u2_verifier_fileuri.to_string() 457 471 # URI:CHK-Verifier:$key:$ueb:$k:$n:$size 458 self.failUnless Equal(u2vfs, fnuri.get_verify_cap().to_string())459 self.failUnless Equal(u2vs[len("URI:DIR2-"):], u2vfs[len("URI:"):])472 self.failUnlessReallyEqual(u2vfs, fnuri.get_verify_cap().to_string()) 473 self.failUnlessReallyEqual(u2vs[len("URI:DIR2-"):], u2vfs[len("URI:"):]) 460 474 self.failUnless(str(u2_verifier)) 461 475 … … 464 478 u1 = uri.LiteralDirectoryURI(u0) 465 479 self.failUnless(str(u1)) 466 self.failUnless Equal(u1.to_string(), "URI:DIR2-LIT:mrqxiyi")480 self.failUnlessReallyEqual(u1.to_string(), "URI:DIR2-LIT:mrqxiyi") 467 481 self.failUnless(u1.is_readonly()) 468 482 self.failIf(u1.is_mutable()) … … 470 484 self.failIf(IFileURI.providedBy(u1)) 471 485 self.failUnless(IDirnodeURI.providedBy(u1)) 472 self.failUnless Equal(u1.get_verify_cap(), None)473 self.failUnless Equal(u1.get_storage_index(), None)474 self.failUnless Equal(u1.abbrev_si(), "<LIT>")486 self.failUnlessReallyEqual(u1.get_verify_cap(), None) 487 self.failUnlessReallyEqual(u1.get_storage_index(), None) 488 self.failUnlessReallyEqual(u1.abbrev_si(), "<LIT>") -
TabularUnified src/allmydata/test/test_web.py ¶
rca660a5 rd346e085 1 1 2 import os.path, re, urllib 2 3 import simplejson … … 36 37 timeout = 480 # Most of these take longer than 240 seconds on Francois's arm box. 37 38 38 unknown_rwcap = "lafs://from_the_future"39 unknown_rocap = "ro.lafs://readonly_from_the_future"40 unknown_immcap = "imm.lafs://immutable_from_the_future"39 unknown_rwcap = u"lafs://from_the_future_rw_\u263A".encode('utf-8') 40 unknown_rocap = u"ro.lafs://readonly_from_the_future_ro_\u263A".encode('utf-8') 41 unknown_immcap = u"imm.lafs://immutable_from_the_future_imm_\u263A".encode('utf-8') 41 42 42 43 class FakeStatsProvider: … … 209 210 210 211 def failUnlessIsBarDotTxt(self, res): 211 self.failUnless Equal(res, self.BAR_CONTENTS, res)212 self.failUnlessReallyEqual(res, self.BAR_CONTENTS, res) 212 213 213 214 def failUnlessIsBarJSON(self, res): 214 215 data = simplejson.loads(res) 215 216 self.failUnless(isinstance(data, list)) 216 self.failUnless Equal(data[0], u"filenode")217 self.failUnlessReallyEqual(data[0], "filenode") 217 218 self.failUnless(isinstance(data[1], dict)) 218 219 self.failIf(data[1]["mutable"]) 219 220 self.failIf("rw_uri" in data[1]) # immutable 220 self.failUnless Equal(data[1]["ro_uri"], self._bar_txt_uri)221 self.failUnless Equal(data[1]["verify_uri"], self._bar_txt_verifycap)222 self.failUnless Equal(data[1]["size"], len(self.BAR_CONTENTS))221 self.failUnlessReallyEqual(data[1]["ro_uri"], self._bar_txt_uri) 222 self.failUnlessReallyEqual(data[1]["verify_uri"], self._bar_txt_verifycap) 223 self.failUnlessReallyEqual(data[1]["size"], len(self.BAR_CONTENTS)) 223 224 224 225 def failUnlessIsFooJSON(self, res): 225 226 data = simplejson.loads(res) 226 227 self.failUnless(isinstance(data, list)) 227 self.failUnless Equal(data[0], "dirnode", res)228 self.failUnlessReallyEqual(data[0], "dirnode", res) 228 229 self.failUnless(isinstance(data[1], dict)) 229 230 self.failUnless(data[1]["mutable"]) 230 231 self.failUnless("rw_uri" in data[1]) # mutable 231 self.failUnless Equal(data[1]["rw_uri"], self._foo_uri)232 self.failUnless Equal(data[1]["ro_uri"], self._foo_readonly_uri)233 self.failUnless Equal(data[1]["verify_uri"], self._foo_verifycap)232 self.failUnlessReallyEqual(data[1]["rw_uri"], self._foo_uri) 233 self.failUnlessReallyEqual(data[1]["ro_uri"], self._foo_readonly_uri) 234 self.failUnlessReallyEqual(data[1]["verify_uri"], self._foo_verifycap) 234 235 235 236 kidnames = sorted([unicode(n) for n in data[1]["children"]]) 236 self.failUnless Equal(kidnames,237 [u"bar.txt", u"blockingfile", u"empty",238 u"n\u00fc.txt", u"sub"])237 self.failUnlessReallyEqual(kidnames, 238 [u"bar.txt", u"blockingfile", u"empty", 239 u"n\u00fc.txt", u"sub"]) 239 240 kids = dict( [(unicode(name),value) 240 241 for (name,value) 241 242 in data[1]["children"].iteritems()] ) 242 self.failUnless Equal(kids[u"sub"][0], "dirnode")243 self.failUnlessReallyEqual(kids[u"sub"][0], "dirnode") 243 244 self.failUnlessIn("metadata", kids[u"sub"][1]) 244 245 self.failUnlessIn("tahoe", kids[u"sub"][1]["metadata"]) … … 246 247 self.failUnlessIn("linkcrtime", tahoe_md) 247 248 self.failUnlessIn("linkmotime", tahoe_md) 248 self.failUnless Equal(kids[u"bar.txt"][0], "filenode")249 self.failUnless Equal(kids[u"bar.txt"][1]["size"], len(self.BAR_CONTENTS))250 self.failUnless Equal(kids[u"bar.txt"][1]["ro_uri"], self._bar_txt_uri)251 self.failUnless Equal(kids[u"bar.txt"][1]["verify_uri"],252 self._bar_txt_verifycap)249 self.failUnlessReallyEqual(kids[u"bar.txt"][0], "filenode") 250 self.failUnlessReallyEqual(kids[u"bar.txt"][1]["size"], len(self.BAR_CONTENTS)) 251 self.failUnlessReallyEqual(kids[u"bar.txt"][1]["ro_uri"], self._bar_txt_uri) 252 self.failUnlessReallyEqual(kids[u"bar.txt"][1]["verify_uri"], 253 self._bar_txt_verifycap) 253 254 self.failUnlessIn("metadata", kids[u"bar.txt"][1]) 254 255 self.failUnlessIn("tahoe", kids[u"bar.txt"][1]["metadata"]) 255 self.failUnless Equal(kids[u"bar.txt"][1]["metadata"]["tahoe"]["linkcrtime"],256 self._bar_txt_metadata["tahoe"]["linkcrtime"])257 self.failUnless Equal(kids[u"n\u00fc.txt"][1]["ro_uri"],258 self._bar_txt_uri)256 self.failUnlessReallyEqual(kids[u"bar.txt"][1]["metadata"]["tahoe"]["linkcrtime"], 257 self._bar_txt_metadata["tahoe"]["linkcrtime"]) 258 self.failUnlessReallyEqual(kids[u"n\u00fc.txt"][1]["ro_uri"], 259 self._bar_txt_uri) 259 260 260 261 def GET(self, urlpath, followRedirect=False, return_response=False, … … 374 375 if isinstance(res, failure.Failure): 375 376 res.trap(error.Error) 376 self.failUnless Equal(res.value.status, "404")377 self.failUnlessReallyEqual(res.value.status, "404") 377 378 else: 378 379 self.fail("%s was supposed to Error(404), not get '%s'" % … … 382 383 if isinstance(res, failure.Failure): 383 384 res.trap(error.Error) 384 self.failUnless Equal(res.value.status, "302")385 self.failUnlessReallyEqual(res.value.status, "302") 385 386 else: 386 387 self.fail("%s was supposed to Error(302), not get '%s'" % … … 388 389 389 390 390 class Web(WebMixin, WebErrorMixin, testutil.StallMixin, unittest.TestCase):391 class Web(WebMixin, WebErrorMixin, testutil.StallMixin, testutil.ReallyEqualMixin, unittest.TestCase): 391 392 def test_create(self): 392 393 pass … … 535 536 def test_status_numbers(self): 536 537 drrm = status.DownloadResultsRendererMixin() 537 self.failUnless Equal(drrm.render_time(None, None), "")538 self.failUnless Equal(drrm.render_time(None, 2.5), "2.50s")539 self.failUnless Equal(drrm.render_time(None, 0.25), "250ms")540 self.failUnless Equal(drrm.render_time(None, 0.0021), "2.1ms")541 self.failUnless Equal(drrm.render_time(None, 0.000123), "123us")542 self.failUnless Equal(drrm.render_rate(None, None), "")543 self.failUnless Equal(drrm.render_rate(None, 2500000), "2.50MBps")544 self.failUnless Equal(drrm.render_rate(None, 30100), "30.1kBps")545 self.failUnless Equal(drrm.render_rate(None, 123), "123Bps")538 self.failUnlessReallyEqual(drrm.render_time(None, None), "") 539 self.failUnlessReallyEqual(drrm.render_time(None, 2.5), "2.50s") 540 self.failUnlessReallyEqual(drrm.render_time(None, 0.25), "250ms") 541 self.failUnlessReallyEqual(drrm.render_time(None, 0.0021), "2.1ms") 542 self.failUnlessReallyEqual(drrm.render_time(None, 0.000123), "123us") 543 self.failUnlessReallyEqual(drrm.render_rate(None, None), "") 544 self.failUnlessReallyEqual(drrm.render_rate(None, 2500000), "2.50MBps") 545 self.failUnlessReallyEqual(drrm.render_rate(None, 30100), "30.1kBps") 546 self.failUnlessReallyEqual(drrm.render_rate(None, 123), "123Bps") 546 547 547 548 urrm = status.UploadResultsRendererMixin() 548 self.failUnless Equal(urrm.render_time(None, None), "")549 self.failUnless Equal(urrm.render_time(None, 2.5), "2.50s")550 self.failUnless Equal(urrm.render_time(None, 0.25), "250ms")551 self.failUnless Equal(urrm.render_time(None, 0.0021), "2.1ms")552 self.failUnless Equal(urrm.render_time(None, 0.000123), "123us")553 self.failUnless Equal(urrm.render_rate(None, None), "")554 self.failUnless Equal(urrm.render_rate(None, 2500000), "2.50MBps")555 self.failUnless Equal(urrm.render_rate(None, 30100), "30.1kBps")556 self.failUnless Equal(urrm.render_rate(None, 123), "123Bps")549 self.failUnlessReallyEqual(urrm.render_time(None, None), "") 550 self.failUnlessReallyEqual(urrm.render_time(None, 2.5), "2.50s") 551 self.failUnlessReallyEqual(urrm.render_time(None, 0.25), "250ms") 552 self.failUnlessReallyEqual(urrm.render_time(None, 0.0021), "2.1ms") 553 self.failUnlessReallyEqual(urrm.render_time(None, 0.000123), "123us") 554 self.failUnlessReallyEqual(urrm.render_rate(None, None), "") 555 self.failUnlessReallyEqual(urrm.render_rate(None, 2500000), "2.50MBps") 556 self.failUnlessReallyEqual(urrm.render_rate(None, 30100), "30.1kBps") 557 self.failUnlessReallyEqual(urrm.render_rate(None, 123), "123Bps") 557 558 558 559 def test_GET_FILEURL(self): … … 566 567 return_response=True) 567 568 def _got((res, status, headers)): 568 self.failUnless Equal(int(status), 206)569 self.failUnlessReallyEqual(int(status), 206) 569 570 self.failUnless(headers.has_key("content-range")) 570 self.failUnless Equal(headers["content-range"][0],571 "bytes 1-10/%d" % len(self.BAR_CONTENTS))572 self.failUnless Equal(res, self.BAR_CONTENTS[1:11])571 self.failUnlessReallyEqual(headers["content-range"][0], 572 "bytes 1-10/%d" % len(self.BAR_CONTENTS)) 573 self.failUnlessReallyEqual(res, self.BAR_CONTENTS[1:11]) 573 574 d.addCallback(_got) 574 575 return d … … 580 581 return_response=True) 581 582 def _got((res, status, headers)): 582 self.failUnless Equal(int(status), 206)583 self.failUnlessReallyEqual(int(status), 206) 583 584 self.failUnless(headers.has_key("content-range")) 584 self.failUnless Equal(headers["content-range"][0],585 "bytes 5-%d/%d" % (length-1, length))586 self.failUnless Equal(res, self.BAR_CONTENTS[5:])585 self.failUnlessReallyEqual(headers["content-range"][0], 586 "bytes 5-%d/%d" % (length-1, length)) 587 self.failUnlessReallyEqual(res, self.BAR_CONTENTS[5:]) 587 588 d.addCallback(_got) 588 589 return d … … 594 595 return_response=True) 595 596 def _got((res, status, headers)): 596 self.failUnless Equal(int(status), 206)597 self.failUnlessReallyEqual(int(status), 206) 597 598 self.failUnless(headers.has_key("content-range")) 598 self.failUnless Equal(headers["content-range"][0],599 "bytes %d-%d/%d" % (length-5, length-1, length))600 self.failUnless Equal(res, self.BAR_CONTENTS[-5:])599 self.failUnlessReallyEqual(headers["content-range"][0], 600 "bytes %d-%d/%d" % (length-5, length-1, length)) 601 self.failUnlessReallyEqual(res, self.BAR_CONTENTS[-5:]) 601 602 d.addCallback(_got) 602 603 return d … … 616 617 return_response=True) 617 618 def _got((res, status, headers)): 618 self.failUnless Equal(res, "")619 self.failUnless Equal(int(status), 206)619 self.failUnlessReallyEqual(res, "") 620 self.failUnlessReallyEqual(int(status), 206) 620 621 self.failUnless(headers.has_key("content-range")) 621 self.failUnless Equal(headers["content-range"][0],622 "bytes 1-10/%d" % len(self.BAR_CONTENTS))622 self.failUnlessReallyEqual(headers["content-range"][0], 623 "bytes 1-10/%d" % len(self.BAR_CONTENTS)) 623 624 d.addCallback(_got) 624 625 return d … … 630 631 return_response=True) 631 632 def _got((res, status, headers)): 632 self.failUnless Equal(int(status), 206)633 self.failUnlessReallyEqual(int(status), 206) 633 634 self.failUnless(headers.has_key("content-range")) 634 self.failUnless Equal(headers["content-range"][0],635 "bytes 5-%d/%d" % (length-1, length))635 self.failUnlessReallyEqual(headers["content-range"][0], 636 "bytes 5-%d/%d" % (length-1, length)) 636 637 d.addCallback(_got) 637 638 return d … … 643 644 return_response=True) 644 645 def _got((res, status, headers)): 645 self.failUnless Equal(int(status), 206)646 self.failUnlessReallyEqual(int(status), 206) 646 647 self.failUnless(headers.has_key("content-range")) 647 self.failUnless Equal(headers["content-range"][0],648 "bytes %d-%d/%d" % (length-5, length-1, length))648 self.failUnlessReallyEqual(headers["content-range"][0], 649 "bytes %d-%d/%d" % (length-5, length-1, length)) 649 650 d.addCallback(_got) 650 651 return d … … 664 665 return_response=True) 665 666 def _got((res, status, headers)): 666 self.failUnless Equal(int(status), 200)667 self.failUnlessReallyEqual(int(status), 200) 667 668 self.failUnless(not headers.has_key("content-range")) 668 self.failUnless Equal(res, self.BAR_CONTENTS)669 self.failUnlessReallyEqual(res, self.BAR_CONTENTS) 669 670 d.addCallback(_got) 670 671 return d … … 673 674 d = self.HEAD(self.public_url + "/foo/bar.txt", return_response=True) 674 675 def _got((res, status, headers)): 675 self.failUnless Equal(res, "")676 self.failUnless Equal(headers["content-length"][0],677 str(len(self.BAR_CONTENTS)))678 self.failUnless Equal(headers["content-type"], ["text/plain"])676 self.failUnlessReallyEqual(res, "") 677 self.failUnlessReallyEqual(headers["content-length"][0], 678 str(len(self.BAR_CONTENTS))) 679 self.failUnlessReallyEqual(headers["content-type"], ["text/plain"]) 679 680 d.addCallback(_got) 680 681 return d … … 806 807 d = self.PUT(self.public_url + "/foo/new.txt", self.NEWFILE_CONTENTS) 807 808 # TODO: we lose the response code, so we can't check this 808 #self.failUnless Equal(responsecode, 201)809 #self.failUnlessReallyEqual(responsecode, 201) 809 810 d.addCallback(self.failUnlessURIMatchesROChild, self._foo_node, u"new.txt") 810 811 d.addCallback(lambda res: … … 817 818 self.NEWFILE_CONTENTS) 818 819 # TODO: we lose the response code, so we can't check this 819 #self.failUnless Equal(responsecode, 201)820 #self.failUnlessReallyEqual(responsecode, 201) 820 821 d.addCallback(self.failUnlessURIMatchesROChild, self._foo_node, u"new.txt") 821 822 d.addCallback(lambda res: … … 841 842 self.NEWFILE_CONTENTS) 842 843 # TODO: we lose the response code, so we can't check this 843 #self.failUnless Equal(responsecode, 201)844 #self.failUnlessReallyEqual(responsecode, 201) 844 845 def _check_uri(res): 845 846 u = uri.from_string_mutable_filenode(res) … … 867 868 d = self.PUT(self.public_url + "/foo/bar.txt", self.NEWFILE_CONTENTS) 868 869 # TODO: we lose the response code, so we can't check this 869 #self.failUnless Equal(responsecode, 200)870 #self.failUnlessReallyEqual(responsecode, 200) 870 871 d.addCallback(self.failUnlessURIMatchesROChild, self._foo_node, u"bar.txt") 871 872 d.addCallback(lambda res: … … 940 941 self.failUnlessIn("linkcrtime", data[1]["metadata"]["tahoe"]) 941 942 self.failUnlessIn("linkmotime", data[1]["metadata"]["tahoe"]) 942 self.failUnless Equal(data[1]["metadata"]["tahoe"]["linkcrtime"],943 self._bar_txt_metadata["tahoe"]["linkcrtime"])943 self.failUnlessReallyEqual(data[1]["metadata"]["tahoe"]["linkcrtime"], 944 self._bar_txt_metadata["tahoe"]["linkcrtime"]) 944 945 945 946 def test_GET_FILEURL_json(self): … … 964 965 d = self.GET(self.public_url + "/foo/bar.txt?t=uri") 965 966 def _check(res): 966 self.failUnless Equal(res, self._bar_txt_uri)967 self.failUnlessReallyEqual(res, self._bar_txt_uri) 967 968 d.addCallback(_check) 968 969 d.addCallback(lambda res: … … 970 971 def _check2(res): 971 972 # for now, for files, uris and readonly-uris are the same 972 self.failUnless Equal(res, self._bar_txt_uri)973 self.failUnlessReallyEqual(res, self._bar_txt_uri) 973 974 d.addCallback(_check2) 974 975 return d … … 1132 1133 for (path_list, cap) in data: 1133 1134 got[tuple(path_list)] = cap 1134 self.failUnless Equal(got[(u"sub",)], self._sub_uri)1135 self.failUnlessReallyEqual(got[(u"sub",)], self._sub_uri) 1135 1136 self.failUnless((u"sub",u"baz.txt") in got) 1136 1137 self.failUnless("finished" in res) … … 1156 1157 d.addCallback(self.get_operation_results, "126", "json") 1157 1158 def _got_json(data): 1158 self.failUnless Equal(data["finished"], True)1159 self.failUnlessReallyEqual(data["finished"], True) 1159 1160 size = data["size"] 1160 1161 self.failUnless(size > 1000) … … 1197 1198 } 1198 1199 for k,v in expected.iteritems(): 1199 self.failUnless Equal(stats[k], v,1200 "stats[%s] was %s, not %s" %1201 (k, stats[k], v))1202 self.failUnless Equal(stats["size-files-histogram"],1203 [ [11, 31, 3] ])1200 self.failUnlessReallyEqual(stats[k], v, 1201 "stats[%s] was %s, not %s" % 1202 (k, stats[k], v)) 1203 self.failUnlessReallyEqual(stats["size-files-histogram"], 1204 [ [11, 31, 3] ]) 1204 1205 d.addCallback(_got_json) 1205 1206 return d … … 1210 1211 self.failUnless(res.endswith("\n")) 1211 1212 units = [simplejson.loads(t) for t in res[:-1].split("\n")] 1212 self.failUnless Equal(len(units), 7)1213 self.failUnless Equal(units[-1]["type"], "stats")1213 self.failUnlessReallyEqual(len(units), 7) 1214 self.failUnlessReallyEqual(units[-1]["type"], "stats") 1214 1215 first = units[0] 1215 self.failUnless Equal(first["path"], [])1216 self.failUnless Equal(first["cap"], self._foo_uri)1217 self.failUnless Equal(first["type"], "directory")1216 self.failUnlessReallyEqual(first["path"], []) 1217 self.failUnlessReallyEqual(first["cap"], self._foo_uri) 1218 self.failUnlessReallyEqual(first["type"], "directory") 1218 1219 baz = [u for u in units[:-1] if u["cap"] == self._baz_file_uri][0] 1219 self.failUnless Equal(baz["path"], ["sub", "baz.txt"])1220 self.failUnlessReallyEqual(baz["path"], ["sub", "baz.txt"]) 1220 1221 self.failIfEqual(baz["storage-index"], None) 1221 1222 self.failIfEqual(baz["verifycap"], None) … … 1228 1229 d = self.GET(self.public_url + "/foo?t=uri") 1229 1230 def _check(res): 1230 self.failUnless Equal(res, self._foo_uri)1231 self.failUnlessReallyEqual(res, self._foo_uri) 1231 1232 d.addCallback(_check) 1232 1233 return d … … 1235 1236 d = self.GET(self.public_url + "/foo?t=readonly-uri") 1236 1237 def _check(res): 1237 self.failUnless Equal(res, self._foo_readonly_uri)1238 self.failUnlessReallyEqual(res, self._foo_readonly_uri) 1238 1239 d.addCallback(_check) 1239 1240 return d … … 1387 1388 def made_subsub(ssuri): 1388 1389 d = self._foo_node.get_child_at_path(u"mkp/sub1/sub2") 1389 d.addCallback(lambda ssnode: self.failUnless Equal(ssnode.get_uri(), ssuri))1390 d.addCallback(lambda ssnode: self.failUnlessReallyEqual(ssnode.get_uri(), ssuri)) 1390 1391 d = self.POST(url) 1391 d.addCallback(lambda uri2: self.failUnless Equal(uri2, ssuri))1392 d.addCallback(lambda uri2: self.failUnlessReallyEqual(uri2, ssuri)) 1392 1393 return d 1393 1394 d.addCallback(made_subsub) … … 1438 1439 d = node.list() 1439 1440 def _check(children): 1440 self.failUnless Equal(sorted(children.keys()), sorted(expected_keys))1441 self.failUnlessReallyEqual(sorted(children.keys()), sorted(expected_keys)) 1441 1442 d.addCallback(_check) 1442 1443 return d … … 1461 1462 d.addCallback(lambda node: download_to_data(node)) 1462 1463 def _check(contents): 1463 self.failUnless Equal(contents, expected_contents)1464 self.failUnlessReallyEqual(contents, expected_contents) 1464 1465 d.addCallback(_check) 1465 1466 return d … … 1470 1471 d.addCallback(lambda node: node.download_best_version()) 1471 1472 def _check(contents): 1472 self.failUnless Equal(contents, expected_contents)1473 self.failUnlessReallyEqual(contents, expected_contents) 1473 1474 d.addCallback(_check) 1474 1475 return d … … 1479 1480 def _check(child): 1480 1481 self.failUnless(child.is_unknown() or not child.is_readonly()) 1481 self.failUnless Equal(child.get_uri(), expected_uri.strip())1482 self.failUnless Equal(child.get_write_uri(), expected_uri.strip())1482 self.failUnlessReallyEqual(child.get_uri(), expected_uri.strip()) 1483 self.failUnlessReallyEqual(child.get_write_uri(), expected_uri.strip()) 1483 1484 expected_ro_uri = self._make_readonly(expected_uri) 1484 1485 if expected_ro_uri: 1485 self.failUnless Equal(child.get_readonly_uri(), expected_ro_uri.strip())1486 self.failUnlessReallyEqual(child.get_readonly_uri(), expected_ro_uri.strip()) 1486 1487 d.addCallback(_check) 1487 1488 return d … … 1492 1493 def _check(child): 1493 1494 self.failUnless(child.is_unknown() or child.is_readonly()) 1494 self.failUnless Equal(child.get_write_uri(), None)1495 self.failUnless Equal(child.get_uri(), expected_uri.strip())1496 self.failUnless Equal(child.get_readonly_uri(), expected_uri.strip())1495 self.failUnlessReallyEqual(child.get_write_uri(), None) 1496 self.failUnlessReallyEqual(child.get_uri(), expected_uri.strip()) 1497 self.failUnlessReallyEqual(child.get_readonly_uri(), expected_uri.strip()) 1497 1498 d.addCallback(_check) 1498 1499 return d … … 1503 1504 def _check(child): 1504 1505 self.failUnless(child.is_unknown() or not child.is_readonly()) 1505 self.failUnless Equal(child.get_uri(), got_uri.strip())1506 self.failUnless Equal(child.get_write_uri(), got_uri.strip())1506 self.failUnlessReallyEqual(child.get_uri(), got_uri.strip()) 1507 self.failUnlessReallyEqual(child.get_write_uri(), got_uri.strip()) 1507 1508 expected_ro_uri = self._make_readonly(got_uri) 1508 1509 if expected_ro_uri: 1509 self.failUnless Equal(child.get_readonly_uri(), expected_ro_uri.strip())1510 self.failUnlessReallyEqual(child.get_readonly_uri(), expected_ro_uri.strip()) 1510 1511 d.addCallback(_check) 1511 1512 return d … … 1516 1517 def _check(child): 1517 1518 self.failUnless(child.is_unknown() or child.is_readonly()) 1518 self.failUnless Equal(child.get_write_uri(), None)1519 self.failUnless Equal(got_uri.strip(), child.get_uri())1520 self.failUnless Equal(got_uri.strip(), child.get_readonly_uri())1519 self.failUnlessReallyEqual(child.get_write_uri(), None) 1520 self.failUnlessReallyEqual(got_uri.strip(), child.get_uri()) 1521 self.failUnlessReallyEqual(got_uri.strip(), child.get_readonly_uri()) 1521 1522 d.addCallback(_check) 1522 1523 return d … … 1546 1547 target_url = self.public_url + "/foo/" + filename.encode("utf-8") 1547 1548 d.addCallback(lambda res: self.GET(target_url)) 1548 d.addCallback(lambda contents: self.failUnless Equal(contents,1549 self.NEWFILE_CONTENTS,1550 contents))1549 d.addCallback(lambda contents: self.failUnlessReallyEqual(contents, 1550 self.NEWFILE_CONTENTS, 1551 contents)) 1551 1552 return d 1552 1553 … … 1563 1564 target_url = self.public_url + "/foo/" + filename.encode("utf-8") 1564 1565 d.addCallback(lambda res: self.GET(target_url)) 1565 d.addCallback(lambda contents: self.failUnless Equal(contents,1566 self.NEWFILE_CONTENTS,1567 contents))1566 d.addCallback(lambda contents: self.failUnlessReallyEqual(contents, 1567 self.NEWFILE_CONTENTS, 1568 contents)) 1568 1569 return d 1569 1570 … … 1606 1607 def test_POST_upload_no_link_whendone_results(self): 1607 1608 def check(statuscode, target): 1608 self.failUnless Equal(statuscode, str(http.FOUND))1609 self.failUnlessReallyEqual(statuscode, str(http.FOUND)) 1609 1610 self.failUnless(target.startswith(self.webish_url), target) 1610 1611 return client.getPage(target, method="GET") … … 1615 1616 file=("new.txt", self.NEWFILE_CONTENTS)) 1616 1617 d.addCallback(lambda res: 1617 self.failUnless Equal(res, self.NEWFILE_CONTENTS))1618 self.failUnlessReallyEqual(res, self.NEWFILE_CONTENTS)) 1618 1619 return d 1619 1620 … … 1631 1632 d.addCallback(_check) 1632 1633 def _check2(data): 1633 self.failUnless Equal(data, self.NEWFILE_CONTENTS)1634 self.failUnlessReallyEqual(data, self.NEWFILE_CONTENTS) 1634 1635 return self.GET("/uri/%s" % urllib.quote(self.filecap)) 1635 1636 d.addCallback(_check2) 1636 1637 def _check3(data): 1637 self.failUnless Equal(data, self.NEWFILE_CONTENTS)1638 self.failUnlessReallyEqual(data, self.NEWFILE_CONTENTS) 1638 1639 return self.GET("/file/%s" % urllib.quote(self.filecap)) 1639 1640 d.addCallback(_check3) 1640 1641 def _check4(data): 1641 self.failUnless Equal(data, self.NEWFILE_CONTENTS)1642 self.failUnlessReallyEqual(data, self.NEWFILE_CONTENTS) 1642 1643 d.addCallback(_check4) 1643 1644 return d … … 1687 1688 self.failUnless(newnode.is_mutable()) 1688 1689 self.failIf(newnode.is_readonly()) 1689 self.failUnless Equal(self._mutable_uri, newnode.get_uri())1690 self.failUnlessReallyEqual(self._mutable_uri, newnode.get_uri()) 1690 1691 d.addCallback(_got2) 1691 1692 … … 1716 1717 self.failUnless(newnode.is_mutable()) 1717 1718 self.failIf(newnode.is_readonly()) 1718 self.failUnless Equal(self._mutable_uri, newnode.get_uri())1719 self.failUnlessReallyEqual(self._mutable_uri, newnode.get_uri()) 1719 1720 d.addCallback(_got3) 1720 1721 … … 1725 1726 def _check_page_json(res): 1726 1727 parsed = simplejson.loads(res) 1727 self.failUnless Equal(parsed[0], "dirnode")1728 self.failUnlessReallyEqual(parsed[0], "dirnode") 1728 1729 children = dict( [(unicode(name),value) 1729 1730 for (name,value) … … 1731 1732 self.failUnless("new.txt" in children) 1732 1733 new_json = children["new.txt"] 1733 self.failUnless Equal(new_json[0], "filenode")1734 self.failUnlessReallyEqual(new_json[0], "filenode") 1734 1735 self.failUnless(new_json[1]["mutable"]) 1735 self.failUnless Equal(new_json[1]["rw_uri"], self._mutable_uri)1736 ro_uri = unicode(self._mutable_node.get_readonly().to_string())1737 self.failUnless Equal(new_json[1]["ro_uri"], ro_uri)1736 self.failUnlessReallyEqual(new_json[1]["rw_uri"], self._mutable_uri) 1737 ro_uri = self._mutable_node.get_readonly().to_string() 1738 self.failUnlessReallyEqual(new_json[1]["ro_uri"], ro_uri) 1738 1739 d.addCallback(_check_page_json) 1739 1740 … … 1743 1744 def _check_file_json(res): 1744 1745 parsed = simplejson.loads(res) 1745 self.failUnless Equal(parsed[0], "filenode")1746 self.failUnlessReallyEqual(parsed[0], "filenode") 1746 1747 self.failUnless(parsed[1]["mutable"]) 1747 self.failUnless Equal(parsed[1]["rw_uri"], self._mutable_uri)1748 ro_uri = unicode(self._mutable_node.get_readonly().to_string())1749 self.failUnless Equal(parsed[1]["ro_uri"], ro_uri)1748 self.failUnlessReallyEqual(parsed[1]["rw_uri"], self._mutable_uri) 1749 ro_uri = self._mutable_node.get_readonly().to_string() 1750 self.failUnlessReallyEqual(parsed[1]["ro_uri"], ro_uri) 1750 1751 d.addCallback(_check_file_json) 1751 1752 … … 1753 1754 d.addCallback(lambda res: 1754 1755 self.GET(self.public_url + "/foo/new.txt?t=uri")) 1755 d.addCallback(lambda res: self.failUnless Equal(res, self._mutable_uri))1756 d.addCallback(lambda res: self.failUnlessReallyEqual(res, self._mutable_uri)) 1756 1757 d.addCallback(lambda res: 1757 1758 self.GET(self.public_url + "/foo/new.txt?t=readonly-uri")) 1758 1759 def _check_ro_uri(res): 1759 ro_uri = unicode(self._mutable_node.get_readonly().to_string())1760 self.failUnless Equal(res, ro_uri)1760 ro_uri = self._mutable_node.get_readonly().to_string() 1761 self.failUnlessReallyEqual(res, ro_uri) 1761 1762 d.addCallback(_check_ro_uri) 1762 1763 … … 1765 1766 self.GET("/uri/%s" % urllib.quote(self._mutable_uri))) 1766 1767 d.addCallback(lambda res: 1767 self.failUnless Equal(res, NEW2_CONTENTS))1768 self.failUnlessReallyEqual(res, NEW2_CONTENTS)) 1768 1769 1769 1770 # and that HEAD computes the size correctly … … 1772 1773 return_response=True)) 1773 1774 def _got_headers((res, status, headers)): 1774 self.failUnless Equal(res, "")1775 self.failUnless Equal(headers["content-length"][0],1776 str(len(NEW2_CONTENTS)))1777 self.failUnless Equal(headers["content-type"], ["text/plain"])1775 self.failUnlessReallyEqual(res, "") 1776 self.failUnlessReallyEqual(headers["content-length"][0], 1777 str(len(NEW2_CONTENTS))) 1778 self.failUnlessReallyEqual(headers["content-type"], ["text/plain"]) 1778 1779 d.addCallback(_got_headers) 1779 1780 … … 1833 1834 file=("new.txt", self.NEWFILE_CONTENTS)) 1834 1835 d.addCallback(lambda res: self.GET(self.public_url + "/foo/new.txt")) 1835 d.addCallback(lambda res: self.failUnless Equal(res,1836 self.NEWFILE_CONTENTS))1836 d.addCallback(lambda res: self.failUnlessReallyEqual(res, 1837 self.NEWFILE_CONTENTS)) 1837 1838 return d 1838 1839 … … 1904 1905 redir_url = "http://allmydata.org/TARGET" 1905 1906 def _check2(statuscode, target): 1906 self.failUnless Equal(statuscode, str(http.FOUND))1907 self.failUnless Equal(target, redir_url)1907 self.failUnlessReallyEqual(statuscode, str(http.FOUND)) 1908 self.failUnlessReallyEqual(target, redir_url) 1908 1909 d.addCallback(lambda res: 1909 1910 self.shouldRedirect2("test_POST_FILEURL_check", … … 1938 1939 redir_url = "http://allmydata.org/TARGET" 1939 1940 def _check2(statuscode, target): 1940 self.failUnless Equal(statuscode, str(http.FOUND))1941 self.failUnless Equal(target, redir_url)1941 self.failUnlessReallyEqual(statuscode, str(http.FOUND)) 1942 self.failUnlessReallyEqual(target, redir_url) 1942 1943 d.addCallback(lambda res: 1943 1944 self.shouldRedirect2("test_POST_FILEURL_check_and_repair", … … 1963 1964 redir_url = "http://allmydata.org/TARGET" 1964 1965 def _check2(statuscode, target): 1965 self.failUnless Equal(statuscode, str(http.FOUND))1966 self.failUnless Equal(target, redir_url)1966 self.failUnlessReallyEqual(statuscode, str(http.FOUND)) 1967 self.failUnlessReallyEqual(target, redir_url) 1967 1968 d.addCallback(lambda res: 1968 1969 self.shouldRedirect2("test_POST_DIRURL_check", … … 1997 1998 redir_url = "http://allmydata.org/TARGET" 1998 1999 def _check2(statuscode, target): 1999 self.failUnless Equal(statuscode, str(http.FOUND))2000 self.failUnless Equal(target, redir_url)2000 self.failUnlessReallyEqual(statuscode, str(http.FOUND)) 2001 self.failUnlessReallyEqual(target, redir_url) 2001 2002 d.addCallback(lambda res: 2002 2003 self.shouldRedirect2("test_POST_DIRURL_check_and_repair", … … 2051 2052 def test_POST_DIRURL_deepcheck(self): 2052 2053 def _check_redirect(statuscode, target): 2053 self.failUnless Equal(statuscode, str(http.FOUND))2054 self.failUnlessReallyEqual(statuscode, str(http.FOUND)) 2054 2055 self.failUnless(target.endswith("/operations/123")) 2055 2056 d = self.shouldRedirect2("test_POST_DIRURL_deepcheck", _check_redirect, … … 2058 2059 d.addCallback(self.wait_for_operation, "123") 2059 2060 def _check_json(data): 2060 self.failUnless Equal(data["finished"], True)2061 self.failUnless Equal(data["count-objects-checked"], 8)2062 self.failUnless Equal(data["count-objects-healthy"], 8)2061 self.failUnlessReallyEqual(data["finished"], True) 2062 self.failUnlessReallyEqual(data["count-objects-checked"], 8) 2063 self.failUnlessReallyEqual(data["count-objects-healthy"], 8) 2063 2064 d.addCallback(_check_json) 2064 2065 d.addCallback(self.get_operation_results, "123", "html") … … 2083 2084 def _check_foo_json(res): 2084 2085 data = simplejson.loads(res) 2085 self.failUnless Equal(data["storage-index"], foo_si_s)2086 self.failUnlessReallyEqual(data["storage-index"], foo_si_s) 2086 2087 self.failUnless(data["results"]["healthy"]) 2087 2088 d.addCallback(_check_foo_json) … … 2093 2094 d.addCallback(self.wait_for_operation, "124") 2094 2095 def _check_json(data): 2095 self.failUnless Equal(data["finished"], True)2096 self.failUnless Equal(data["count-objects-checked"], 8)2097 self.failUnless Equal(data["count-objects-healthy-pre-repair"], 8)2098 self.failUnless Equal(data["count-objects-unhealthy-pre-repair"], 0)2099 self.failUnless Equal(data["count-corrupt-shares-pre-repair"], 0)2100 self.failUnless Equal(data["count-repairs-attempted"], 0)2101 self.failUnless Equal(data["count-repairs-successful"], 0)2102 self.failUnless Equal(data["count-repairs-unsuccessful"], 0)2103 self.failUnless Equal(data["count-objects-healthy-post-repair"], 8)2104 self.failUnless Equal(data["count-objects-unhealthy-post-repair"], 0)2105 self.failUnless Equal(data["count-corrupt-shares-post-repair"], 0)2096 self.failUnlessReallyEqual(data["finished"], True) 2097 self.failUnlessReallyEqual(data["count-objects-checked"], 8) 2098 self.failUnlessReallyEqual(data["count-objects-healthy-pre-repair"], 8) 2099 self.failUnlessReallyEqual(data["count-objects-unhealthy-pre-repair"], 0) 2100 self.failUnlessReallyEqual(data["count-corrupt-shares-pre-repair"], 0) 2101 self.failUnlessReallyEqual(data["count-repairs-attempted"], 0) 2102 self.failUnlessReallyEqual(data["count-repairs-successful"], 0) 2103 self.failUnlessReallyEqual(data["count-repairs-unsuccessful"], 0) 2104 self.failUnlessReallyEqual(data["count-objects-healthy-post-repair"], 8) 2105 self.failUnlessReallyEqual(data["count-objects-unhealthy-post-repair"], 0) 2106 self.failUnlessReallyEqual(data["count-corrupt-shares-post-repair"], 0) 2106 2107 d.addCallback(_check_json) 2107 2108 d.addCallback(self.get_operation_results, "124", "html") … … 2638 2639 def failUnlessIsEmptyJSON(self, res): 2639 2640 data = simplejson.loads(res) 2640 self.failUnless Equal(data[0], "dirnode", data)2641 self.failUnless Equal(len(data[1]["children"]), 0)2641 self.failUnlessReallyEqual(data[0], "dirnode", data) 2642 self.failUnlessReallyEqual(len(data[1]["children"]), 0) 2642 2643 2643 2644 def test_POST_rename_file_slash_fail(self): … … 2674 2675 res.trap(error.PageRedirect) 2675 2676 if statuscode is not None: 2676 self.failUnless Equal(res.value.status, statuscode,2677 "%s: not a redirect" % which)2677 self.failUnlessReallyEqual(res.value.status, statuscode, 2678 "%s: not a redirect" % which) 2678 2679 if target is not None: 2679 2680 # the PageRedirect does not seem to capture the uri= query arg 2680 2681 # properly, so we can't check for it. 2681 2682 realtarget = self.webish_url + target 2682 self.failUnless Equal(res.value.location, realtarget,2683 "%s: wrong target" % which)2683 self.failUnlessReallyEqual(res.value.location, realtarget, 2684 "%s: wrong target" % which) 2684 2685 return res.value.location 2685 2686 … … 2759 2760 d = self.PUT(self.public_url + "/foo?t=uri", new_uri) 2760 2761 d.addCallback(lambda res: 2761 self.failUnless Equal(res.strip(), new_uri))2762 self.failUnlessReallyEqual(res.strip(), new_uri)) 2762 2763 d.addCallback(lambda res: 2763 2764 self.failUnlessRWChildURIIs(self.public_root, … … 2800 2801 contents, n, new_uri = self.makefile(8) 2801 2802 d = self.PUT(self.public_url + "/foo/new.txt?t=uri", new_uri) 2802 d.addCallback(lambda res: self.failUnless Equal(res.strip(), new_uri))2803 d.addCallback(lambda res: self.failUnlessReallyEqual(res.strip(), new_uri)) 2803 2804 d.addCallback(lambda res: 2804 2805 self.failUnlessChildContentsAre(self._foo_node, u"new.txt", … … 2809 2810 contents, n, new_uri = self.makefile(8) 2810 2811 d = self.PUT(self.public_url + "/foo/bar.txt?t=uri", new_uri) 2811 d.addCallback(lambda res: self.failUnless Equal(res.strip(), new_uri))2812 d.addCallback(lambda res: self.failUnlessReallyEqual(res.strip(), new_uri)) 2812 2813 d.addCallback(lambda res: 2813 2814 self.failUnlessChildContentsAre(self._foo_node, u"bar.txt", … … 2850 2851 assert isinstance(uri, str), uri 2851 2852 self.failUnless(uri in FakeCHKFileNode.all_contents) 2852 self.failUnless Equal(FakeCHKFileNode.all_contents[uri],2853 file_contents)2853 self.failUnlessReallyEqual(FakeCHKFileNode.all_contents[uri], 2854 file_contents) 2854 2855 return self.GET("/uri/%s" % uri) 2855 2856 d.addCallback(_check) 2856 2857 def _check2(res): 2857 self.failUnless Equal(res, file_contents)2858 self.failUnlessReallyEqual(res, file_contents) 2858 2859 d.addCallback(_check2) 2859 2860 return d … … 2865 2866 assert isinstance(uri, str), uri 2866 2867 self.failUnless(uri in FakeCHKFileNode.all_contents) 2867 self.failUnless Equal(FakeCHKFileNode.all_contents[uri],2868 file_contents)2868 self.failUnlessReallyEqual(FakeCHKFileNode.all_contents[uri], 2869 file_contents) 2869 2870 return self.GET("/uri/%s" % uri) 2870 2871 d.addCallback(_check) 2871 2872 def _check2(res): 2872 self.failUnless Equal(res, file_contents)2873 self.failUnlessReallyEqual(res, file_contents) 2873 2874 d.addCallback(_check2) 2874 2875 return d … … 2895 2896 d.addCallback(_check1) 2896 2897 def _check2(data): 2897 self.failUnless Equal(data, file_contents)2898 self.failUnlessReallyEqual(data, file_contents) 2898 2899 return self.GET("/uri/%s" % urllib.quote(self.filecap)) 2899 2900 d.addCallback(_check2) 2900 2901 def _check3(res): 2901 self.failUnless Equal(res, file_contents)2902 self.failUnlessReallyEqual(res, file_contents) 2902 2903 d.addCallback(_check3) 2903 2904 return d … … 3102 3103 d = self.GET("/static/subdir/hello.txt") 3103 3104 def _check(res): 3104 self.failUnless Equal(res, "hello")3105 self.failUnlessReallyEqual(res, "hello") 3105 3106 d.addCallback(_check) 3106 3107 return d 3107 3108 3108 3109 3109 class Util( unittest.TestCase, ShouldFailMixin):3110 class Util(ShouldFailMixin, testutil.ReallyEqualMixin, unittest.TestCase): 3110 3111 def test_load_file(self): 3111 3112 # This will raise an exception unless a well-formed XML file is found under that name. … … 3113 3114 3114 3115 def test_parse_replace_arg(self): 3115 self.failUnless Equal(common.parse_replace_arg("true"), True)3116 self.failUnless Equal(common.parse_replace_arg("false"), False)3117 self.failUnless Equal(common.parse_replace_arg("only-files"),3118 "only-files")3116 self.failUnlessReallyEqual(common.parse_replace_arg("true"), True) 3117 self.failUnlessReallyEqual(common.parse_replace_arg("false"), False) 3118 self.failUnlessReallyEqual(common.parse_replace_arg("only-files"), 3119 "only-files") 3119 3120 self.shouldFail(AssertionError, "test_parse_replace_arg", "", 3120 3121 common.parse_replace_arg, "only_fles") 3121 3122 3122 3123 def test_abbreviate_time(self): 3123 self.failUnless Equal(common.abbreviate_time(None), "")3124 self.failUnless Equal(common.abbreviate_time(1.234), "1.23s")3125 self.failUnless Equal(common.abbreviate_time(0.123), "123ms")3126 self.failUnless Equal(common.abbreviate_time(0.00123), "1.2ms")3127 self.failUnless Equal(common.abbreviate_time(0.000123), "123us")3124 self.failUnlessReallyEqual(common.abbreviate_time(None), "") 3125 self.failUnlessReallyEqual(common.abbreviate_time(1.234), "1.23s") 3126 self.failUnlessReallyEqual(common.abbreviate_time(0.123), "123ms") 3127 self.failUnlessReallyEqual(common.abbreviate_time(0.00123), "1.2ms") 3128 self.failUnlessReallyEqual(common.abbreviate_time(0.000123), "123us") 3128 3129 3129 3130 def test_abbreviate_rate(self): 3130 self.failUnless Equal(common.abbreviate_rate(None), "")3131 self.failUnless Equal(common.abbreviate_rate(1234000), "1.23MBps")3132 self.failUnless Equal(common.abbreviate_rate(12340), "12.3kBps")3133 self.failUnless Equal(common.abbreviate_rate(123), "123Bps")3131 self.failUnlessReallyEqual(common.abbreviate_rate(None), "") 3132 self.failUnlessReallyEqual(common.abbreviate_rate(1234000), "1.23MBps") 3133 self.failUnlessReallyEqual(common.abbreviate_rate(12340), "12.3kBps") 3134 self.failUnlessReallyEqual(common.abbreviate_rate(123), "123Bps") 3134 3135 3135 3136 def test_abbreviate_size(self): 3136 self.failUnless Equal(common.abbreviate_size(None), "")3137 self.failUnless Equal(common.abbreviate_size(1.23*1000*1000*1000), "1.23GB")3138 self.failUnless Equal(common.abbreviate_size(1.23*1000*1000), "1.23MB")3139 self.failUnless Equal(common.abbreviate_size(1230), "1.2kB")3140 self.failUnless Equal(common.abbreviate_size(123), "123B")3137 self.failUnlessReallyEqual(common.abbreviate_size(None), "") 3138 self.failUnlessReallyEqual(common.abbreviate_size(1.23*1000*1000*1000), "1.23GB") 3139 self.failUnlessReallyEqual(common.abbreviate_size(1.23*1000*1000), "1.23MB") 3140 self.failUnlessReallyEqual(common.abbreviate_size(1230), "1.2kB") 3141 self.failUnlessReallyEqual(common.abbreviate_size(123), "123B") 3141 3142 3142 3143 def test_plural(self): 3143 3144 def convert(s): 3144 3145 return "%d second%s" % (s, status.plural(s)) 3145 self.failUnless Equal(convert(0), "0 seconds")3146 self.failUnless Equal(convert(1), "1 second")3147 self.failUnless Equal(convert(2), "2 seconds")3146 self.failUnlessReallyEqual(convert(0), "0 seconds") 3147 self.failUnlessReallyEqual(convert(1), "1 second") 3148 self.failUnlessReallyEqual(convert(2), "2 seconds") 3148 3149 def convert2(s): 3149 3150 return "has share%s: %s" % (status.plural(s), ",".join(s)) 3150 self.failUnless Equal(convert2([]), "has shares: ")3151 self.failUnless Equal(convert2(["1"]), "has share: 1")3152 self.failUnless Equal(convert2(["1","2"]), "has shares: 1,2")3153 3154 3155 class Grid(GridTestMixin, WebErrorMixin, unittest.TestCase, ShouldFailMixin):3151 self.failUnlessReallyEqual(convert2([]), "has shares: ") 3152 self.failUnlessReallyEqual(convert2(["1"]), "has share: 1") 3153 self.failUnlessReallyEqual(convert2(["1","2"]), "has shares: 1,2") 3154 3155 3156 class Grid(GridTestMixin, WebErrorMixin, ShouldFailMixin, testutil.ReallyEqualMixin, unittest.TestCase): 3156 3157 3157 3158 def CHECK(self, ign, which, args, clientnum=0): … … 3195 3196 def _clobber_shares(ignored): 3196 3197 good_shares = self.find_shares(self.uris["good"]) 3197 self.failUnless Equal(len(good_shares), 10)3198 self.failUnlessReallyEqual(len(good_shares), 10) 3198 3199 sick_shares = self.find_shares(self.uris["sick"]) 3199 3200 os.unlink(sick_shares[0][2]) … … 3223 3224 def _got_json_good(res): 3224 3225 r = simplejson.loads(res) 3225 self.failUnless Equal(r["summary"], "Healthy")3226 self.failUnlessReallyEqual(r["summary"], "Healthy") 3226 3227 self.failUnless(r["results"]["healthy"]) 3227 3228 self.failIf(r["results"]["needs-rebalancing"]) … … 3244 3245 def _got_json_small(res): 3245 3246 r = simplejson.loads(res) 3246 self.failUnless Equal(r["storage-index"], "")3247 self.failUnlessReallyEqual(r["storage-index"], "") 3247 3248 self.failUnless(r["results"]["healthy"]) 3248 3249 d.addCallback(_got_json_small) … … 3256 3257 def _got_json_smalldir(res): 3257 3258 r = simplejson.loads(res) 3258 self.failUnless Equal(r["storage-index"], "")3259 self.failUnlessReallyEqual(r["storage-index"], "") 3259 3260 self.failUnless(r["results"]["healthy"]) 3260 3261 d.addCallback(_got_json_smalldir) … … 3267 3268 def _got_json_sick(res): 3268 3269 r = simplejson.loads(res) 3269 self.failUnless Equal(r["summary"],3270 "Not Healthy: 9 shares (enc 3-of-10)")3270 self.failUnlessReallyEqual(r["summary"], 3271 "Not Healthy: 9 shares (enc 3-of-10)") 3271 3272 self.failIf(r["results"]["healthy"]) 3272 3273 self.failIf(r["results"]["needs-rebalancing"]) … … 3281 3282 def _got_json_dead(res): 3282 3283 r = simplejson.loads(res) 3283 self.failUnless Equal(r["summary"],3284 "Not Healthy: 1 shares (enc 3-of-10)")3284 self.failUnlessReallyEqual(r["summary"], 3285 "Not Healthy: 1 shares (enc 3-of-10)") 3285 3286 self.failIf(r["results"]["healthy"]) 3286 3287 self.failIf(r["results"]["needs-rebalancing"]) … … 3299 3300 self.failIf(r["results"]["healthy"]) 3300 3301 self.failUnless(r["results"]["recoverable"]) 3301 self.failUnless Equal(r["results"]["count-shares-good"], 9)3302 self.failUnless Equal(r["results"]["count-corrupt-shares"], 1)3302 self.failUnlessReallyEqual(r["results"]["count-shares-good"], 9) 3303 self.failUnlessReallyEqual(r["results"]["count-corrupt-shares"], 1) 3303 3304 d.addCallback(_got_json_corrupt) 3304 3305 … … 3336 3337 def _clobber_shares(ignored): 3337 3338 good_shares = self.find_shares(self.uris["good"]) 3338 self.failUnless Equal(len(good_shares), 10)3339 self.failUnlessReallyEqual(len(good_shares), 10) 3339 3340 sick_shares = self.find_shares(self.uris["sick"]) 3340 3341 os.unlink(sick_shares[0][2]) … … 3410 3411 def _got_json_sick(res): 3411 3412 r = simplejson.loads(res) 3412 self.failUnless Equal(r["repair-attempted"], True)3413 self.failUnless Equal(r["repair-successful"], True)3414 self.failUnless Equal(r["pre-repair-results"]["summary"],3415 "Not Healthy: 9 shares (enc 3-of-10)")3413 self.failUnlessReallyEqual(r["repair-attempted"], True) 3414 self.failUnlessReallyEqual(r["repair-successful"], True) 3415 self.failUnlessReallyEqual(r["pre-repair-results"]["summary"], 3416 "Not Healthy: 9 shares (enc 3-of-10)") 3416 3417 self.failIf(r["pre-repair-results"]["results"]["healthy"]) 3417 self.failUnless Equal(r["post-repair-results"]["summary"], "healthy")3418 self.failUnlessReallyEqual(r["post-repair-results"]["summary"], "healthy") 3418 3419 self.failUnless(r["post-repair-results"]["results"]["healthy"]) 3419 3420 d.addCallback(_got_json_sick) … … 3463 3464 mo = re.search(r'<a href="([^"]+)">More Info</a>', res) 3464 3465 info_url = mo.group(1) 3465 self.failUnless Equal(info_url, "%s?t=info" % (str(name),))3466 self.failUnlessReallyEqual(info_url, "%s?t=info" % (str(name),)) 3466 3467 if immutable: 3467 3468 d.addCallback(_check_directory_html, "-IMM") … … 3472 3473 def _check_directory_json(res, expect_rw_uri): 3473 3474 data = simplejson.loads(res) 3474 self.failUnless Equal(data[0], "dirnode")3475 self.failUnlessReallyEqual(data[0], "dirnode") 3475 3476 f = data[1]["children"][name] 3476 self.failUnless Equal(f[0], "unknown")3477 self.failUnlessReallyEqual(f[0], "unknown") 3477 3478 if expect_rw_uri: 3478 self.failUnless Equal(f[1]["rw_uri"], unknown_rwcap)3479 self.failUnlessReallyEqual(f[1]["rw_uri"], unknown_rwcap.decode('utf-8')) 3479 3480 else: 3480 3481 self.failIfIn("rw_uri", f[1]) 3481 3482 if immutable: 3482 self.failUnless Equal(f[1]["ro_uri"], unknown_immcap, data)3483 self.failUnlessReallyEqual(f[1]["ro_uri"], unknown_immcap.decode('utf-8'), data) 3483 3484 else: 3484 self.failUnless Equal(f[1]["ro_uri"], unknown_rocap)3485 self.failUnlessReallyEqual(f[1]["ro_uri"], unknown_rocap.decode('utf-8')) 3485 3486 self.failUnless("metadata" in f[1]) 3486 3487 d.addCallback(_check_directory_json, expect_rw_uri=not immutable) … … 3513 3514 def _check_json(res, expect_rw_uri): 3514 3515 data = simplejson.loads(res) 3515 self.failUnless Equal(data[0], "unknown")3516 self.failUnlessReallyEqual(data[0], "unknown") 3516 3517 if expect_rw_uri: 3517 self.failUnless Equal(data[1]["rw_uri"], unknown_rwcap)3518 self.failUnlessReallyEqual(data[1]["rw_uri"], unknown_rwcap.decode('utf-8')) 3518 3519 else: 3519 3520 self.failIfIn("rw_uri", data[1]) 3520 3521 3521 3522 if immutable: 3522 self.failUnless Equal(data[1]["ro_uri"], unknown_immcap)3523 self.failUnless Equal(data[1]["mutable"], False)3523 self.failUnlessReallyEqual(data[1]["ro_uri"], unknown_immcap.decode('utf-8')) 3524 self.failUnlessReallyEqual(data[1]["mutable"], False) 3524 3525 elif expect_rw_uri: 3525 self.failUnless Equal(data[1]["ro_uri"], unknown_rocap)3526 self.failUnless Equal(data[1]["mutable"], True)3526 self.failUnlessReallyEqual(data[1]["ro_uri"], unknown_rocap.decode('utf-8')) 3527 self.failUnlessReallyEqual(data[1]["mutable"], True) 3527 3528 else: 3528 self.failUnless Equal(data[1]["ro_uri"], unknown_rocap)3529 self.failUnlessReallyEqual(data[1]["ro_uri"], unknown_rocap.decode('utf-8')) 3529 3530 self.failIf("mutable" in data[1], data[1]) 3530 3531 … … 3633 3634 self.failUnless(name in kids) 3634 3635 (expected_child, ign) = kids[name] 3635 self.failUnless Equal(ro_uri, expected_child.get_readonly_uri())3636 self.failUnlessReallyEqual(ro_uri, expected_child.get_readonly_uri()) 3636 3637 numkids += 1 3637 3638 3638 self.failUnless Equal(numkids, 3)3639 self.failUnlessReallyEqual(numkids, 3) 3639 3640 return self.rootnode.list() 3640 3641 d.addCallback(_check_data) … … 3642 3643 # Now when we use the real directory listing code, the mutants should be absent. 3643 3644 def _check_kids(children): 3644 self.failUnless Equal(sorted(children.keys()), [u"lonely"])3645 self.failUnlessReallyEqual(sorted(children.keys()), [u"lonely"]) 3645 3646 lonely_node, lonely_metadata = children[u"lonely"] 3646 3647 3647 self.failUnless Equal(lonely_node.get_write_uri(), None)3648 self.failUnless Equal(lonely_node.get_readonly_uri(), lonely_uri)3648 self.failUnlessReallyEqual(lonely_node.get_write_uri(), None) 3649 self.failUnlessReallyEqual(lonely_node.get_readonly_uri(), lonely_uri) 3649 3650 d.addCallback(_check_kids) 3650 3651 … … 3675 3676 def _check_json(res): 3676 3677 data = simplejson.loads(res) 3677 self.failUnless Equal(data[0], "dirnode")3678 self.failUnlessReallyEqual(data[0], "dirnode") 3678 3679 listed_children = data[1]["children"] 3679 self.failUnless Equal(sorted(listed_children.keys()), [u"lonely"])3680 self.failUnlessReallyEqual(sorted(listed_children.keys()), [u"lonely"]) 3680 3681 ll_type, ll_data = listed_children[u"lonely"] 3681 self.failUnless Equal(ll_type, "filenode")3682 self.failUnlessReallyEqual(ll_type, "filenode") 3682 3683 self.failIf("rw_uri" in ll_data) 3683 self.failUnless Equal(ll_data["ro_uri"], lonely_uri)3684 self.failUnlessReallyEqual(ll_data["ro_uri"], lonely_uri) 3684 3685 d.addCallback(_check_json) 3685 3686 return d … … 3738 3739 print "undecodeable line was '%s'" % line 3739 3740 raise 3740 self.failUnless Equal(len(units), 5+1)3741 self.failUnlessReallyEqual(len(units), 5+1) 3741 3742 # should be parent-first 3742 3743 u0 = units[0] 3743 self.failUnless Equal(u0["path"], [])3744 self.failUnless Equal(u0["type"], "directory")3745 self.failUnless Equal(u0["cap"], self.rootnode.get_uri())3744 self.failUnlessReallyEqual(u0["path"], []) 3745 self.failUnlessReallyEqual(u0["type"], "directory") 3746 self.failUnlessReallyEqual(u0["cap"], self.rootnode.get_uri()) 3746 3747 u0cr = u0["check-results"] 3747 self.failUnless Equal(u0cr["results"]["count-shares-good"], 10)3748 self.failUnlessReallyEqual(u0cr["results"]["count-shares-good"], 10) 3748 3749 3749 3750 ugood = [u for u in units 3750 3751 if u["type"] == "file" and u["path"] == [u"good"]][0] 3751 self.failUnless Equal(ugood["cap"], self.uris["good"])3752 self.failUnlessReallyEqual(ugood["cap"], self.uris["good"]) 3752 3753 ugoodcr = ugood["check-results"] 3753 self.failUnless Equal(ugoodcr["results"]["count-shares-good"], 10)3754 self.failUnlessReallyEqual(ugoodcr["results"]["count-shares-good"], 10) 3754 3755 3755 3756 stats = units[-1] 3756 self.failUnless Equal(stats["type"], "stats")3757 self.failUnlessReallyEqual(stats["type"], "stats") 3757 3758 s = stats["stats"] 3758 self.failUnless Equal(s["count-immutable-files"], 2)3759 self.failUnless Equal(s["count-literal-files"], 1)3760 self.failUnless Equal(s["count-directories"], 1)3761 self.failUnless Equal(s["count-unknown"], 1)3759 self.failUnlessReallyEqual(s["count-immutable-files"], 2) 3760 self.failUnlessReallyEqual(s["count-literal-files"], 1) 3761 self.failUnlessReallyEqual(s["count-directories"], 1) 3762 self.failUnlessReallyEqual(s["count-unknown"], 1) 3762 3763 d.addCallback(_done) 3763 3764 … … 3766 3767 self.failUnless(res.endswith("\n")) 3767 3768 units = [simplejson.loads(t) for t in res[:-1].split("\n")] 3768 self.failUnless Equal(len(units), 5+1)3769 self.failUnless Equal(units[-1]["type"], "stats")3769 self.failUnlessReallyEqual(len(units), 5+1) 3770 self.failUnlessReallyEqual(units[-1]["type"], "stats") 3770 3771 first = units[0] 3771 self.failUnless Equal(first["path"], [])3772 self.failUnless Equal(first["cap"], self.rootnode.get_uri())3773 self.failUnless Equal(first["type"], "directory")3772 self.failUnlessReallyEqual(first["path"], []) 3773 self.failUnlessReallyEqual(first["cap"], self.rootnode.get_uri()) 3774 self.failUnlessReallyEqual(first["type"], "directory") 3774 3775 stats = units[-1]["stats"] 3775 self.failUnless Equal(stats["count-immutable-files"], 2)3776 self.failUnless Equal(stats["count-literal-files"], 1)3777 self.failUnless Equal(stats["count-mutable-files"], 0)3778 self.failUnless Equal(stats["count-immutable-files"], 2)3779 self.failUnless Equal(stats["count-unknown"], 1)3776 self.failUnlessReallyEqual(stats["count-immutable-files"], 2) 3777 self.failUnlessReallyEqual(stats["count-literal-files"], 1) 3778 self.failUnlessReallyEqual(stats["count-mutable-files"], 0) 3779 self.failUnlessReallyEqual(stats["count-immutable-files"], 2) 3780 self.failUnlessReallyEqual(stats["count-unknown"], 1) 3780 3781 d.addCallback(_check_manifest) 3781 3782 … … 3823 3824 self.failUnless(len(error_msg) > 2, error_msg_s) # some traceback 3824 3825 units = [simplejson.loads(line) for line in lines[:first_error]] 3825 self.failUnless Equal(len(units), 6) # includes subdir3826 self.failUnlessReallyEqual(len(units), 6) # includes subdir 3826 3827 last_unit = units[-1] 3827 self.failUnless Equal(last_unit["path"], ["subdir"])3828 self.failUnlessReallyEqual(last_unit["path"], ["subdir"]) 3828 3829 d.addCallback(_check_broken_manifest) 3829 3830 … … 3844 3845 self.failUnless(len(error_msg) > 2, error_msg_s) # some traceback 3845 3846 units = [simplejson.loads(line) for line in lines[:first_error]] 3846 self.failUnless Equal(len(units), 6) # includes subdir3847 self.failUnlessReallyEqual(len(units), 6) # includes subdir 3847 3848 last_unit = units[-1] 3848 self.failUnless Equal(last_unit["path"], ["subdir"])3849 self.failUnlessReallyEqual(last_unit["path"], ["subdir"]) 3849 3850 r = last_unit["check-results"]["results"] 3850 self.failUnless Equal(r["count-recoverable-versions"], 0)3851 self.failUnless Equal(r["count-shares-good"], 1)3852 self.failUnless Equal(r["recoverable"], False)3851 self.failUnlessReallyEqual(r["count-recoverable-versions"], 0) 3852 self.failUnlessReallyEqual(r["count-shares-good"], 1) 3853 self.failUnlessReallyEqual(r["recoverable"], False) 3853 3854 d.addCallback(_check_broken_deepcheck) 3854 3855 … … 3894 3895 def _clobber_shares(ignored): 3895 3896 good_shares = self.find_shares(self.uris["good"]) 3896 self.failUnless Equal(len(good_shares), 10)3897 self.failUnlessReallyEqual(len(good_shares), 10) 3897 3898 sick_shares = self.find_shares(self.uris["sick"]) 3898 3899 os.unlink(sick_shares[0][2]) … … 3918 3919 for line in res.splitlines() 3919 3920 if line] 3920 self.failUnless Equal(len(units), 4+1)3921 self.failUnlessReallyEqual(len(units), 4+1) 3921 3922 # should be parent-first 3922 3923 u0 = units[0] 3923 self.failUnless Equal(u0["path"], [])3924 self.failUnless Equal(u0["type"], "directory")3925 self.failUnless Equal(u0["cap"], self.rootnode.get_uri())3924 self.failUnlessReallyEqual(u0["path"], []) 3925 self.failUnlessReallyEqual(u0["type"], "directory") 3926 self.failUnlessReallyEqual(u0["cap"], self.rootnode.get_uri()) 3926 3927 u0crr = u0["check-and-repair-results"] 3927 self.failUnless Equal(u0crr["repair-attempted"], False)3928 self.failUnless Equal(u0crr["pre-repair-results"]["results"]["count-shares-good"], 10)3928 self.failUnlessReallyEqual(u0crr["repair-attempted"], False) 3929 self.failUnlessReallyEqual(u0crr["pre-repair-results"]["results"]["count-shares-good"], 10) 3929 3930 3930 3931 ugood = [u for u in units 3931 3932 if u["type"] == "file" and u["path"] == [u"good"]][0] 3932 self.failUnless Equal(ugood["cap"], self.uris["good"])3933 self.failUnlessReallyEqual(ugood["cap"], self.uris["good"]) 3933 3934 ugoodcrr = ugood["check-and-repair-results"] 3934 self.failUnless Equal(ugoodcrr["repair-attempted"], False)3935 self.failUnless Equal(ugoodcrr["pre-repair-results"]["results"]["count-shares-good"], 10)3935 self.failUnlessReallyEqual(ugoodcrr["repair-attempted"], False) 3936 self.failUnlessReallyEqual(ugoodcrr["pre-repair-results"]["results"]["count-shares-good"], 10) 3936 3937 3937 3938 usick = [u for u in units 3938 3939 if u["type"] == "file" and u["path"] == [u"sick"]][0] 3939 self.failUnless Equal(usick["cap"], self.uris["sick"])3940 self.failUnlessReallyEqual(usick["cap"], self.uris["sick"]) 3940 3941 usickcrr = usick["check-and-repair-results"] 3941 self.failUnless Equal(usickcrr["repair-attempted"], True)3942 self.failUnless Equal(usickcrr["repair-successful"], True)3943 self.failUnless Equal(usickcrr["pre-repair-results"]["results"]["count-shares-good"], 9)3944 self.failUnless Equal(usickcrr["post-repair-results"]["results"]["count-shares-good"], 10)3942 self.failUnlessReallyEqual(usickcrr["repair-attempted"], True) 3943 self.failUnlessReallyEqual(usickcrr["repair-successful"], True) 3944 self.failUnlessReallyEqual(usickcrr["pre-repair-results"]["results"]["count-shares-good"], 9) 3945 self.failUnlessReallyEqual(usickcrr["post-repair-results"]["results"]["count-shares-good"], 10) 3945 3946 3946 3947 stats = units[-1] 3947 self.failUnless Equal(stats["type"], "stats")3948 self.failUnlessReallyEqual(stats["type"], "stats") 3948 3949 s = stats["stats"] 3949 self.failUnless Equal(s["count-immutable-files"], 2)3950 self.failUnless Equal(s["count-literal-files"], 1)3951 self.failUnless Equal(s["count-directories"], 1)3950 self.failUnlessReallyEqual(s["count-immutable-files"], 2) 3951 self.failUnlessReallyEqual(s["count-literal-files"], 1) 3952 self.failUnlessReallyEqual(s["count-directories"], 1) 3952 3953 d.addCallback(_done) 3953 3954 … … 4096 4097 if line] 4097 4098 # root, one, small, mutable, stats 4098 self.failUnless Equal(len(units), 4+1)4099 self.failUnlessReallyEqual(len(units), 4+1) 4099 4100 d.addCallback(_done) 4100 4101 … … 4186 4187 "this object to learn more. The full error message is: " 4187 4188 "Failed to get enough shareholders: have 0, need 3") 4188 self.failUnless Equal(exp, body)4189 self.failUnlessReallyEqual(exp, body) 4189 4190 d.addCallback(_check_zero_shares) 4190 4191 … … 4203 4204 "this object to learn more. The full error message is:" 4204 4205 " Failed to get enough shareholders: have 1, need 3") 4205 self.failUnless Equal(exp, body)4206 self.failUnlessReallyEqual(exp, body) 4206 4207 d.addCallback(_check_one_share) 4207 4208 … … 4269 4270 "departure, hard drive failure, or disk corruption. You " 4270 4271 "should perform a filecheck on this object to learn more.") 4271 self.failUnless Equal(exp, body)4272 self.failUnlessReallyEqual(exp, body) 4272 4273 d.addCallback(_check_unrecoverable_file) 4273 4274
Note: See TracChangeset
for help on using the changeset viewer.