예제 #1
0
 def setUp(self):
     BaseDigraphTest.setUp(self)
     self._biigraph = BiiGraph(DigraphTest.DIM)
     self._biigraph.gen_compatible_graph()
예제 #2
0
 def setUp(self):
     BaseDigraphTest.setUp(self)
     self._biigraph = BiiGraph(DigraphTest.DIM)
     self._biigraph.gen_compatible_graph()
예제 #3
0
class DigraphTest(BaseDigraphTest):
    DIM = [7] * 7  # [<num. vers. cell1>, <num. vers. cell2>, ...]
    pr = cProfile.Profile()

    def setUp(self):
        BaseDigraphTest.setUp(self)
        self._biigraph = BiiGraph(DigraphTest.DIM)
        self._biigraph.gen_compatible_graph()

    def testFinderCompatibleTest(self):
        ''' Generates compatible problem critical in the last two versions '''
        last_block = self._biigraph.get_num_blocks() - 1
        self._biigraph.make_independent(last_block, last_block - 1)
        t = self._biigraph._get_range_block(last_block - 2)
        self._biigraph.make_dependent(last_block, t[0])
        self._biigraph.make_dependent(last_block - 1,  t[0])
        self._publish_graph()

        # Solve
        request = self._unresolvedDependencyRequest(self.lbcn)
        result = self.service.find(request, BiiResponse())
        self.assertEqual(len(self.lbcn), len(result.resolved))

    def testFinderIncompatibleTest(self):
        ''' 'Generates incompatible problem with consistent closures '''
        last_block = self._biigraph.get_num_blocks() - 1
        self._biigraph.make_independent(last_block, last_block - 1)
        t = self._biigraph._get_range_block(last_block - 2)
        self._biigraph.make_dependent(last_block, t[0])
        self._biigraph.make_dependent(last_block - 1,  t[0] + 1)
        self._publish_graph()

        # Solve (profile code has been commented)
        request = self._unresolvedDependencyRequest(self.lbcn)
        #  DigraphTest.pr.enable()
        result = self.service.find(request, BiiResponse())
        #  DigraphTest.pr.disable()
        #  s = io.FileIO('C:/Users/pablo/Desktop/profile.txt','w')
        #  ps = pstats.Stats(DigraphTest.pr, stream=s)
        #  ps.strip_dirs().sort_stats(-1).print_stats()
        #  s.close()
        logger.debug('\n-------------Finder result-----------------------\n')
        logger.debug(result.resolved)
        self.assertEqual(0, len(result.resolved))

    def _publish_graph(self):
        self._initUser()
        self.lbcn = self._getBlockCellNames(DigraphTest.DIM)

        #publish independent cell
        self._publishIndependentCell(self.lbcn[0], DigraphTest.DIM[0])

        #publish dependent cells (all the rest)
        for block in range(1, len(DigraphTest.DIM)):
            self._publishDependentCell(block)

    def _publishDependentCell(self, block_id):
        low, high = self._biigraph._get_range_block(block_id)
        count = 0
        d = self.lbcn
        bcn = d[block_id]
        brl = self._getBlockBRL(bcn)
        for row in range(low, high + 1):
            r = SimpleCell(d[block_id])
            r.root = ID((0, bcn.block_name[-1:], 0))
            deps = DependencySet()
            dep_table = BlockVersionTable()
            for block in range(block_id):
                time = self._biigraph._get_dep_elem_offset(row, block)
                if time != -1:
                    deps.add_implicit(d[block])
                    dep_table[d[block].block_name] = \
                       BlockVersion(self._getBlockBRL(d[block]), time)
            r.dependencies = deps
            pack = PublishRequest(BlockVersion(brl, count - 1))
            pack.tag = STABLE
            count += 1
            pack.cells.append(r)
            pack.contents[r.name.cell_name] = Content(id_=None, load=Blob('hola {0}'.
                                                                format(r.name.cell_name)))
            pack.deptable = dep_table
            self.service.publish(pack)
예제 #4
0
class DigraphTest(BaseDigraphTest):
    DIM = [7] * 7  # [<num. vers. cell1>, <num. vers. cell2>, ...]
    pr = cProfile.Profile()

    def setUp(self):
        BaseDigraphTest.setUp(self)
        self._biigraph = BiiGraph(DigraphTest.DIM)
        self._biigraph.gen_compatible_graph()

    def testFinderCompatibleTest(self):
        ''' Generates compatible problem critical in the last two versions '''
        last_block = self._biigraph.get_num_blocks() - 1
        self._biigraph.make_independent(last_block, last_block - 1)
        t = self._biigraph._get_range_block(last_block - 2)
        self._biigraph.make_dependent(last_block, t[0])
        self._biigraph.make_dependent(last_block - 1, t[0])
        self._publish_graph()

        # Solve
        request = self._unresolvedDependencyRequest(self.lbcn)
        result = self.service.find(request, BiiResponse())
        self.assertEqual(len(self.lbcn), len(result.resolved))

    def testFinderIncompatibleTest(self):
        ''' 'Generates incompatible problem with consistent closures '''
        last_block = self._biigraph.get_num_blocks() - 1
        self._biigraph.make_independent(last_block, last_block - 1)
        t = self._biigraph._get_range_block(last_block - 2)
        self._biigraph.make_dependent(last_block, t[0])
        self._biigraph.make_dependent(last_block - 1, t[0] + 1)
        self._publish_graph()

        # Solve (profile code has been commented)
        request = self._unresolvedDependencyRequest(self.lbcn)
        #  DigraphTest.pr.enable()
        result = self.service.find(request, BiiResponse())
        #  DigraphTest.pr.disable()
        #  s = io.FileIO('C:/Users/pablo/Desktop/profile.txt','w')
        #  ps = pstats.Stats(DigraphTest.pr, stream=s)
        #  ps.strip_dirs().sort_stats(-1).print_stats()
        #  s.close()
        logger.debug('\n-------------Finder result-----------------------\n')
        logger.debug(result.resolved)
        self.assertEqual(0, len(result.resolved))

    def _publish_graph(self):
        self._initUser()
        self.lbcn = self._getBlockCellNames(DigraphTest.DIM)

        #publish independent cell
        self._publishIndependentCell(self.lbcn[0], DigraphTest.DIM[0])

        #publish dependent cells (all the rest)
        for block in range(1, len(DigraphTest.DIM)):
            self._publishDependentCell(block)

    def _publishDependentCell(self, block_id):
        low, high = self._biigraph._get_range_block(block_id)
        count = 0
        d = self.lbcn
        bcn = d[block_id]
        brl = self._getBlockBRL(bcn)
        for row in range(low, high + 1):
            r = SimpleCell(d[block_id])
            r.root = ID((0, bcn.block_name[-1:], 0))
            deps = DependencySet()
            dep_table = BlockVersionTable()
            for block in range(block_id):
                time = self._biigraph._get_dep_elem_offset(row, block)
                if time != -1:
                    deps.add_implicit(d[block])
                    dep_table[d[block].block_name] = \
                       BlockVersion(self._getBlockBRL(d[block]), time)
            r.dependencies = deps
            pack = PublishRequest(BlockVersion(brl, count - 1))
            pack.tag = STABLE
            count += 1
            pack.cells.append(r)
            pack.contents[r.name.cell_name] = Content(
                id_=None, load=Blob('hola {0}'.format(r.name.cell_name)))
            pack.deptable = dep_table
            self.service.publish(pack)