def test_simulate_updates(self): max_blocks = 4 iterations = 10000 change_size = 2 * 1024 blocks = [(index, index, 0) for index in range(0, max_blocks)] changes = [] for dummy in range(0, iterations): old_blocks = blocks[:] blocks = self.updateFunc(blocks, change_size, max_blocks) if not ((is_ordered(blocks) or (is_ordered(blocks[1:]) and blocks[0][2] < 32 * 1024))): print blocks self.assertTrue( is_ordered(blocks) or (is_ordered(blocks[1:]) and blocks[0][2] < 32 * 1024)) changed = set(old_blocks) - set(blocks) for value in changed: # i.e. the number of bytes we had to write changes.append(value[2]) # Fix ordinals. Shouldn't matter. blocks = [(index, index, blocks[index][2]) for index in range(0, len(blocks))] #hist = self.histogram(changes, 32 * 1024) #for value in hist: # print value[0], value[1] changes.sort() #max_insert = max(changes) for percent in (50, 75, 80, 85, 90, 95, 99, 100): point = changes[min(int((percent / 100.0) * len(changes)), len(changes) - 1)] print "%i %i %i" % (percent, point, point / (32 * 1024 + 1))
def test_simulate_updates(self): max_blocks = 4 iterations = 10000 change_size = 2*1024 blocks = [(index, index, 0) for index in range(0, max_blocks)] changes = [] for dummy in range(0, iterations): old_blocks = blocks[:] blocks = self.updateFunc(blocks, change_size, max_blocks) if not ((is_ordered(blocks) or (is_ordered(blocks[1:]) and blocks[0][2] < 32 * 1024))): print blocks self.assertTrue(is_ordered(blocks) or (is_ordered(blocks[1:]) and blocks[0][2] < 32 * 1024)) changed = set(old_blocks) - set(blocks) for value in changed: # i.e. the number of bytes we had to write changes.append(value[2]) # Fix ordinals. Shouldn't matter. blocks = [(index, index, blocks[index][2]) for index in range(0, len(blocks))] #hist = self.histogram(changes, 32 * 1024) #for value in hist: # print value[0], value[1] changes.sort() #max_insert = max(changes) for percent in (50, 75, 80, 85, 90, 95, 99, 100): point = changes[min(int((percent/100.0) * len(changes)), len(changes) - 1)] print "%i %i %i" % (percent, point, point/(32*1024 + 1))
def test_repartition(self): for dummy in range(0, 1000): length = random.randrange(1, 8) blocks = [(index, index, random.randrange(1, 10)) for index in range(0, length)] self.assertTrue(is_contiguous(blocks)) original_blocks = blocks[:] #were_ordered = is_ordered(blocks) #print blocks repartioned = repartition(blocks) #print repartioned self.assertTrue(is_ordered(repartioned)) self.assertTrue(blocks == original_blocks) # Can't assert this anymore. # Trips when in order partitions get merged because they # don't meet the multiple constraint. # #self.assertTrue((were_ordered and blocks == repartioned) or # ((not were_ordered) and blocks != repartioned)) self.assertTrue(is_contiguous(repartioned))
def test_is_ordered(self): self.assertTrue(is_ordered(())) self.assertTrue(is_ordered((('?', '?', 2), ))) self.assertTrue(is_ordered((('?', '?', 2), ('?', '?', 2)))) self.assertFalse(is_ordered((('?', '?', 2), ('?', '?', 1)))) self.assertTrue(is_ordered((('?', '?', 1), ('?', '?', 2)))) self.assertTrue( is_ordered((('?', '?', 2), ('?', '?', 2), ('?', '?', 2)))) self.assertTrue( is_ordered((('?', '?', 1), ('?', '?', 2), ('?', '?', 2)))) self.assertFalse( is_ordered((('?', '?', 1), ('?', '?', 0), ('?', '?', 2)))) self.assertTrue( is_ordered((('?', '?', 1), ('?', '?', 2), ('?', '?', 3)))) self.assertTrue(is_ordered((('?', '?', 2), ('?', '?', 0)))) self.assertTrue( is_ordered((('?', '?', 2), ('?', '?', 2), ('?', '?', 0)))) self.assertFalse( is_ordered((('?', '?', 2), ('?', '?', 1), ('?', '?', 0)))) self.assertTrue( is_ordered( (('?', '?', 1), ('?', '?', 2), ('?', '?', 0), ('?', '?', 0)))) self.assertTrue( is_ordered( (('?', '?', 2), ('?', '?', 2), ('?', '?', 2), ('?', '?', 0)))) self.assertTrue( is_ordered( (('?', '?', 2), ('?', '?', 2), ('?', '?', 2), ('?', '?', 0)))) self.assertTrue( is_ordered( (('?', '?', 1), ('?', '?', 2), ('?', '?', 2), ('?', '?', 0)))) self.assertFalse( is_ordered( (('?', '?', 1), ('?', '?', 0), ('?', '?', 2), ('?', '?', 0)))) self.assertTrue( is_ordered( (('?', '?', 1), ('?', '?', 2), ('?', '?', 3), ('?', '?', 0)))) self.assertFalse( is_ordered( (('?', '?', 3), ('?', '?', 2), ('?', '?', 1), ('?', '?', 0)))) self.assertFalse( is_ordered((('?', '?', 3), ('?', '?', 2), ('?', '?', 1))))
def test_is_ordered(self): self.assertTrue(is_ordered( () )) self.assertTrue(is_ordered( (('?', '?', 2),) )) self.assertTrue(is_ordered( (('?', '?', 2), ('?', '?', 2)) )) self.assertFalse(is_ordered( (('?', '?', 2), ('?', '?', 1)) )) self.assertTrue(is_ordered( (('?', '?', 1), ('?', '?', 2)) )) self.assertTrue(is_ordered( (('?', '?', 2), ('?', '?', 2), ('?', '?', 2)) )) self.assertTrue(is_ordered( (('?', '?', 1), ('?', '?', 2), ('?', '?', 2)) )) self.assertFalse(is_ordered( (('?', '?', 1), ('?', '?', 0), ('?', '?', 2)) )) self.assertTrue(is_ordered( (('?', '?', 1), ('?', '?', 2), ('?', '?', 3)) )) self.assertTrue(is_ordered( (('?', '?', 2), ('?', '?', 0)) )) self.assertTrue(is_ordered( (('?', '?', 2), ('?', '?', 2), ('?', '?', 0)) )) self.assertFalse(is_ordered( (('?', '?', 2), ('?', '?', 1), ('?', '?', 0)) )) self.assertTrue(is_ordered( (('?', '?', 1), ('?', '?', 2), ('?', '?', 0), ('?', '?', 0)) )) self.assertTrue(is_ordered( (('?', '?', 2), ('?', '?', 2), ('?', '?', 2), ('?', '?', 0)) )) self.assertTrue(is_ordered( (('?', '?', 2), ('?', '?', 2), ('?', '?', 2), ('?', '?', 0)) )) self.assertTrue(is_ordered( (('?', '?', 1), ('?', '?', 2), ('?', '?', 2), ('?', '?', 0)) )) self.assertFalse(is_ordered( (('?', '?', 1), ('?', '?', 0), ('?', '?', 2), ('?', '?', 0)) )) self.assertTrue(is_ordered( (('?', '?', 1), ('?', '?', 2), ('?', '?', 3), ('?', '?', 0)) )) self.assertFalse(is_ordered( (('?', '?', 3), ('?', '?', 2), ('?', '?', 1), ('?', '?', 0)) )) self.assertFalse(is_ordered( (('?', '?', 3), ('?', '?', 2), ('?', '?', 1) )) )