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)
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))