Ejemplo n.º 1
0
    def setUp(self):
        self.wdesc = WorkerDescription('test')
        self.rng = etree.RelaxNG(self.wdesc.desc)
        self.tinfo = etree.parse(os.path.join(mydir, "worker-testinfo1.xml")).getroot()
#        self.actions = {'add': set(), 'remove': set(), 'modify': set()}
        self.start = copy.deepcopy(self.tinfo.xpath("status[@id='start']")[0])
        del self.start.attrib['id']
        self.desired = copy.deepcopy(self.tinfo.xpath("status[@id='desired']")[0])
        del self.desired.attrib['id']
        self.comp = XMLCompare(self.start, self.desired)
Ejemplo n.º 2
0
class Testinfo1Case(unittest.TestCase):

    def setUp(self):
        self.wdesc = WorkerDescription('test')
        self.rng = etree.RelaxNG(self.wdesc.desc)
        self.tinfo = etree.parse(os.path.join(mydir, "worker-testinfo1.xml")).getroot()
#        self.actions = {'add': set(), 'remove': set(), 'modify': set()}
        self.start = copy.deepcopy(self.tinfo.xpath("status[@id='start']")[0])
        del self.start.attrib['id']
        self.desired = copy.deepcopy(self.tinfo.xpath("status[@id='desired']")[0])
        del self.desired.attrib['id']
        self.comp = XMLCompare(self.start, self.desired)

    def populate_todo(self, setid):
        self.todo = set()
        for i in self.tinfo.xpath("todosets[@id='%s']" % setid)[0]:
            self.todo.add(MRXpath(t.get("id")).to_xpath())

    def test_010_statuses_valid(self):
        self.rng.assertValid(self.start.xpath("worker[@id='test']")[0])
        self.rng.assertValid(self.desired.xpath("worker[@id='test']")[0])

    def test_020_wuwus_correct(self):
        self.assertFalse(self.wdesc.is_workunit("/worker"))
        self.assertTrue(self.wdesc.is_workunit("/worker/iniFile"))
        self.assertFalse(self.wdesc.is_workunit("/worker/iniFile/section"))
        self.assertFalse(self.wdesc.is_workunit("/worker/iniFile/section/keyvalue"))
#        self.assertFalse(self.wdesc.is_workunit("/worker/orderedItems"))
        self.assertTrue(self.wdesc.is_workunit("/worker/orderedItems/item"))
#        self.assertFalse(self.wdesc.is_workunit("/worker/unordered"))
        self.assertTrue(self.wdesc.is_workunit("/worker/unordered/item"))

    def test_030_generate_wus(self):
#        self.populate_actions(1)
#        start_st = Status(self.start, worker_prefix='/status')
        print()
        pprint.pprint(self.comp.actions())
        mrx = MRXpath("/status/worker[@id='test']/orderedItems/item[@id='1']")
        for k in self.comp.bystate.keys():
            if mrx.to_xpath() in self.comp.bystate[k]:
                print(k)
        wus, working = generate_wus(self.comp.find_work(), self.comp)
        for wu in wus:
            print()
            print(etree.tostring(wu))
#        print()
#        print(etree.tostring(working))

    def test_040_transform_deps(self):
        deps = self.desired.xpath('/status/deps')[0]
        wudeps = self.comp.wudeps(deps.iterchildren(etree.Element))
        print()
        pprint.pprint(wudeps)
        import topsort
        wudeps.extend([["", x] for x in self.comp.find_work()])
        i = 0
        for lev in iter(topsort.topsort_levels(wudeps)):
            if lev == ['']:
                continue
            i += 1
            wus, working = generate_wus(set(lev), self.comp)
            print("*********************************")
            print("* LEVEL: %d" % i)
            print("*********************************")
            for wu in wus:
                print(etree.tostring(wu))