15808f684SSatish Balay# -------------------------------------------------------------------- 25808f684SSatish Balay 35808f684SSatish Balayif __name__ == "__main__": 45808f684SSatish Balay import sys, petsc4py 5*d75802c7SJacob Faibussowitsch petsc4py.init(sys.argv+['-log_view']) 65808f684SSatish Balay 75808f684SSatish Balay# -------------------------------------------------------------------- 85808f684SSatish Balay 95808f684SSatish Balayfrom petsc4py import PETSc 105808f684SSatish Balayimport unittest 115808f684SSatish Balay 125808f684SSatish Balay# -------------------------------------------------------------------- 135808f684SSatish Balay 145808f684SSatish Balayclass TestLog(unittest.TestCase): 155808f684SSatish Balay 165808f684SSatish Balay def setUp(self): 175808f684SSatish Balay #PETSc.Log.begin() 185808f684SSatish Balay # register stages 195808f684SSatish Balay self.stage1 = PETSc.Log.Stage('Stage 1') 205808f684SSatish Balay self.stage2 = PETSc.Log.Stage('Stage 2') 215808f684SSatish Balay # register classes 225808f684SSatish Balay self.klassA = PETSc.Log.Class('Class A') 235808f684SSatish Balay self.klassB = PETSc.Log.Class('Class B') 245808f684SSatish Balay # register events 255808f684SSatish Balay self.event1 = PETSc.Log.Event('Event 1') # no class 265808f684SSatish Balay self.event2 = PETSc.Log.Event('Event 2') # no class 275808f684SSatish Balay self.eventA = PETSc.Log.Event('Event A', self.klassA) 285808f684SSatish Balay self.eventB = PETSc.Log.Event('Event B', self.klassB) 295808f684SSatish Balay 305808f684SSatish Balay def testGetName(self): 315808f684SSatish Balay self.assertEqual(self.klassA.name, 'Class A') 325808f684SSatish Balay self.assertEqual(self.klassB.name, 'Class B') 335808f684SSatish Balay self.assertEqual(self.event1.name, 'Event 1') 345808f684SSatish Balay self.assertEqual(self.event2.name, 'Event 2') 355808f684SSatish Balay self.assertEqual(self.eventA.name, 'Event A') 365808f684SSatish Balay self.assertEqual(self.eventB.name, 'Event B') 375808f684SSatish Balay self.assertEqual(self.stage1.name, 'Stage 1') 385808f684SSatish Balay self.assertEqual(self.stage2.name, 'Stage 2') 395808f684SSatish Balay 405808f684SSatish Balay def testLogBeginEnd(self): 415808f684SSatish Balay # ----- 425808f684SSatish Balay self._run_events() # in main stage 435808f684SSatish Balay self._run_stages() # in user stages 445808f684SSatish Balay # ----- 455808f684SSatish Balay for event in self._get_events(): 465808f684SSatish Balay event.deactivate() 475808f684SSatish Balay event.setActive(False) 485808f684SSatish Balay event.active = False 495808f684SSatish Balay self._run_events() # should not be logged 505808f684SSatish Balay for event in self._get_events(): 515808f684SSatish Balay event.activate() 525808f684SSatish Balay event.setActive(True) 535808f684SSatish Balay event.active = True 545808f684SSatish Balay # ----- 555808f684SSatish Balay for klass in self._get_classes(): 565808f684SSatish Balay klass.deactivate() 575808f684SSatish Balay klass.setActive(False) 585808f684SSatish Balay klass.active = False 595808f684SSatish Balay self._run_events() # A and B should not be logged 605808f684SSatish Balay for klass in self._get_classes(): 615808f684SSatish Balay klass.activate() 625808f684SSatish Balay klass.setActive(True) 635808f684SSatish Balay klass.active = True 645808f684SSatish Balay # ----- 655808f684SSatish Balay for stage in self._get_stages(): 665808f684SSatish Balay active = stage.getActive() 675808f684SSatish Balay self.assertTrue(active) 685808f684SSatish Balay self.assertTrue(stage.active) 695808f684SSatish Balay stage.setActive(False) 705808f684SSatish Balay active = stage.getActive() 715808f684SSatish Balay self.assertFalse(active) 725808f684SSatish Balay self.assertFalse(stage.active) 735808f684SSatish Balay self._run_stages() # should not be logged 745808f684SSatish Balay for stage in self._get_stages(): 755808f684SSatish Balay stage.setActive(True) 765808f684SSatish Balay stage.active = True 775808f684SSatish Balay active = stage.getActive() 785808f684SSatish Balay self.assertTrue(active) 795808f684SSatish Balay self.assertTrue(stage.active) 805808f684SSatish Balay # ----- 815808f684SSatish Balay self._run_events() 825808f684SSatish Balay self._run_stages() 835808f684SSatish Balay 845808f684SSatish Balay def _run_stages(self): 855808f684SSatish Balay for stage in self._get_stages(): 865808f684SSatish Balay self._run_events(stage) 875808f684SSatish Balay 885808f684SSatish Balay def _get_stages(self): 895808f684SSatish Balay return (self.stage1, self.stage2) 905808f684SSatish Balay 915808f684SSatish Balay def _get_classes(self): 925808f684SSatish Balay return (self.klassA, self.klassB) 935808f684SSatish Balay 945808f684SSatish Balay def _get_events(self): 955808f684SSatish Balay return (self.event1, self.event2, 965808f684SSatish Balay self.eventA, self.eventB) 975808f684SSatish Balay 985808f684SSatish Balay def _run_events(self, stage=None): 995808f684SSatish Balay if stage is not None: 1005808f684SSatish Balay stage.push() 1015808f684SSatish Balay self._events_begin() 1025808f684SSatish Balay self._events_end() 1035808f684SSatish Balay if stage is not None: 1045808f684SSatish Balay stage.pop() 1055808f684SSatish Balay 1065808f684SSatish Balay def _events_begin(self): 1075808f684SSatish Balay for event in self._get_events(): 1085808f684SSatish Balay event.begin() 1095808f684SSatish Balay 1105808f684SSatish Balay def _events_end(self): 1115808f684SSatish Balay for event in reversed(self._get_events()): 1125808f684SSatish Balay event.end() 1135808f684SSatish Balay 1145808f684SSatish Balay 1155808f684SSatish Balay# -------------------------------------------------------------------- 1165808f684SSatish Balay 1175808f684SSatish Balayif __name__ == '__main__': 1185808f684SSatish Balay unittest.main() 1195808f684SSatish Balay 120