1*5808f684SSatish Balay# -------------------------------------------------------------------- 2*5808f684SSatish Balay 3*5808f684SSatish Balayif __name__ == "__main__": 4*5808f684SSatish Balay import sys, petsc4py 5*5808f684SSatish Balay petsc4py.init(sys.argv+['-log_summary']) 6*5808f684SSatish Balay 7*5808f684SSatish Balay# -------------------------------------------------------------------- 8*5808f684SSatish Balay 9*5808f684SSatish Balayfrom petsc4py import PETSc 10*5808f684SSatish Balayimport unittest 11*5808f684SSatish Balay 12*5808f684SSatish Balay# -------------------------------------------------------------------- 13*5808f684SSatish Balay 14*5808f684SSatish Balayclass TestLog(unittest.TestCase): 15*5808f684SSatish Balay 16*5808f684SSatish Balay def setUp(self): 17*5808f684SSatish Balay #PETSc.Log.begin() 18*5808f684SSatish Balay # register stages 19*5808f684SSatish Balay self.stage1 = PETSc.Log.Stage('Stage 1') 20*5808f684SSatish Balay self.stage2 = PETSc.Log.Stage('Stage 2') 21*5808f684SSatish Balay # register classes 22*5808f684SSatish Balay self.klassA = PETSc.Log.Class('Class A') 23*5808f684SSatish Balay self.klassB = PETSc.Log.Class('Class B') 24*5808f684SSatish Balay # register events 25*5808f684SSatish Balay self.event1 = PETSc.Log.Event('Event 1') # no class 26*5808f684SSatish Balay self.event2 = PETSc.Log.Event('Event 2') # no class 27*5808f684SSatish Balay self.eventA = PETSc.Log.Event('Event A', self.klassA) 28*5808f684SSatish Balay self.eventB = PETSc.Log.Event('Event B', self.klassB) 29*5808f684SSatish Balay 30*5808f684SSatish Balay def testGetName(self): 31*5808f684SSatish Balay self.assertEqual(self.klassA.name, 'Class A') 32*5808f684SSatish Balay self.assertEqual(self.klassB.name, 'Class B') 33*5808f684SSatish Balay self.assertEqual(self.event1.name, 'Event 1') 34*5808f684SSatish Balay self.assertEqual(self.event2.name, 'Event 2') 35*5808f684SSatish Balay self.assertEqual(self.eventA.name, 'Event A') 36*5808f684SSatish Balay self.assertEqual(self.eventB.name, 'Event B') 37*5808f684SSatish Balay self.assertEqual(self.stage1.name, 'Stage 1') 38*5808f684SSatish Balay self.assertEqual(self.stage2.name, 'Stage 2') 39*5808f684SSatish Balay 40*5808f684SSatish Balay def testLogBeginEnd(self): 41*5808f684SSatish Balay # ----- 42*5808f684SSatish Balay self._run_events() # in main stage 43*5808f684SSatish Balay self._run_stages() # in user stages 44*5808f684SSatish Balay # ----- 45*5808f684SSatish Balay for event in self._get_events(): 46*5808f684SSatish Balay event.deactivate() 47*5808f684SSatish Balay event.setActive(False) 48*5808f684SSatish Balay event.active = False 49*5808f684SSatish Balay self._run_events() # should not be logged 50*5808f684SSatish Balay for event in self._get_events(): 51*5808f684SSatish Balay event.activate() 52*5808f684SSatish Balay event.setActive(True) 53*5808f684SSatish Balay event.active = True 54*5808f684SSatish Balay # ----- 55*5808f684SSatish Balay for klass in self._get_classes(): 56*5808f684SSatish Balay klass.deactivate() 57*5808f684SSatish Balay klass.setActive(False) 58*5808f684SSatish Balay klass.active = False 59*5808f684SSatish Balay self._run_events() # A and B should not be logged 60*5808f684SSatish Balay for klass in self._get_classes(): 61*5808f684SSatish Balay klass.activate() 62*5808f684SSatish Balay klass.setActive(True) 63*5808f684SSatish Balay klass.active = True 64*5808f684SSatish Balay # ----- 65*5808f684SSatish Balay for stage in self._get_stages(): 66*5808f684SSatish Balay active = stage.getActive() 67*5808f684SSatish Balay self.assertTrue(active) 68*5808f684SSatish Balay self.assertTrue(stage.active) 69*5808f684SSatish Balay stage.setActive(False) 70*5808f684SSatish Balay active = stage.getActive() 71*5808f684SSatish Balay self.assertFalse(active) 72*5808f684SSatish Balay self.assertFalse(stage.active) 73*5808f684SSatish Balay self._run_stages() # should not be logged 74*5808f684SSatish Balay for stage in self._get_stages(): 75*5808f684SSatish Balay stage.setActive(True) 76*5808f684SSatish Balay stage.active = True 77*5808f684SSatish Balay active = stage.getActive() 78*5808f684SSatish Balay self.assertTrue(active) 79*5808f684SSatish Balay self.assertTrue(stage.active) 80*5808f684SSatish Balay # ----- 81*5808f684SSatish Balay self._run_events() 82*5808f684SSatish Balay self._run_stages() 83*5808f684SSatish Balay 84*5808f684SSatish Balay def _run_stages(self): 85*5808f684SSatish Balay for stage in self._get_stages(): 86*5808f684SSatish Balay self._run_events(stage) 87*5808f684SSatish Balay 88*5808f684SSatish Balay def _get_stages(self): 89*5808f684SSatish Balay return (self.stage1, self.stage2) 90*5808f684SSatish Balay 91*5808f684SSatish Balay def _get_classes(self): 92*5808f684SSatish Balay return (self.klassA, self.klassB) 93*5808f684SSatish Balay 94*5808f684SSatish Balay def _get_events(self): 95*5808f684SSatish Balay return (self.event1, self.event2, 96*5808f684SSatish Balay self.eventA, self.eventB) 97*5808f684SSatish Balay 98*5808f684SSatish Balay def _run_events(self, stage=None): 99*5808f684SSatish Balay if stage is not None: 100*5808f684SSatish Balay stage.push() 101*5808f684SSatish Balay self._events_begin() 102*5808f684SSatish Balay self._events_end() 103*5808f684SSatish Balay if stage is not None: 104*5808f684SSatish Balay stage.pop() 105*5808f684SSatish Balay 106*5808f684SSatish Balay def _events_begin(self): 107*5808f684SSatish Balay for event in self._get_events(): 108*5808f684SSatish Balay event.begin() 109*5808f684SSatish Balay 110*5808f684SSatish Balay def _events_end(self): 111*5808f684SSatish Balay for event in reversed(self._get_events()): 112*5808f684SSatish Balay event.end() 113*5808f684SSatish Balay 114*5808f684SSatish Balay 115*5808f684SSatish Balay# -------------------------------------------------------------------- 116*5808f684SSatish Balay 117*5808f684SSatish Balayif __name__ == '__main__': 118*5808f684SSatish Balay unittest.main() 119*5808f684SSatish Balay 120