Example #1
0
        g.addChild(i)        
        i.addChild(j)   
        e.addChild(j)     
        b.addChild(i)
        a.addChild(j)
        logger.debug("Testing topological sort ...")
        sort = a.sort()
        self.assertEqual(sort, [a, b, c, d, e, f, g, h, i, j])        
        logger.info("DONE.")

    def testCircle(self):
        logger.info("In TestFlow.testCircle ...")
        p1 = HappyJobNode(name="P1")
        c1 = HappyJobNode(name="C1")
        c2 = HappyJobNode(name="C2")
        g1 = HappyJobNode(name="G1")
        p1.addChild(c1)
        p1.addChild(c2)
        c1.addChild(g1)
        self.assertRaises(CycleException, c1.addChild, p1)
        self.assertRaises(CycleException, p1.addParent, c1)
        self.assertRaises(CycleException, c2.addChild, p1)
        self.assertRaises(CycleException, p1.addParent, c2)
        self.assertRaises(CycleException, g1.addChild, p1)
        self.assertRaises(CycleException, p1.addParent, g1)


if __name__ == '__main__':
    setLevel("info")
    unittest.main()
Example #2
0
        names.run(force=True)

    def testFlow2(self):
        logger.info("In TestFlow.testFlow2() ...")
        test_flow = Flow2(inputpaths=['/data/graph/latest/crawl'], outputpath='namelist')
        (names, types) = test_flow.split()
        names.chain(HappyJobNode(name='get_names', 
                                 job=FilterExact(filterkey='propname', 
                                                 filtervalues=['/type/object/name', '/common/topic/alias'],
                                                 keyfield='a:guid', mapfields={'value':'name'})))
        types.chain(HappyJobNode(name='get_types', 
                                 job=FilterExact(filterkey='propname', 
                                                 filtervalues=['/type/object/type'],
                                                 keyfield='b:guid', mapfields={'target':'type'})))
        names.chain(HappyJobNode(name='join_name_types',
                                 job=InnerJoin(joinkeys=['a:guid', 'b:guid'], outkey='guid'),
                                 force=True),
                    join=types)
        names.chain(HappyJobNode(name='filter_people',
                                 job=FilterExact(filterkey='type', 
                                                 filtervalues=['/people/person'],
                                                 keyfield='guid', mapfields={'type':'type', 'name':'name'})))
        names.chain(HappyJobNode(name='invert_names', 
                                 job=AggregateJson(aggkey='name', aggfunc='agg.list("guid")')))
        logger.debug("DAG: \n%s\n" % names.startNode.dictize())
        names.run(force=False)

if __name__ == '__main__':
    setLevel("debug")
    unittest.main()