Exemplo n.º 1
0
    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))
Exemplo n.º 2
0
    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))
Exemplo n.º 3
0
    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))
Exemplo n.º 4
0
    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))
Exemplo n.º 5
0
    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))))
Exemplo n.º 6
0
    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) )) )