Exemple #1
0
    def test_run_with_real_frame(self):
        # Start a thread and sample a frame from it.
        from slowlog.compat import Queue
        from slowlog.compat import get_ident
        import threading

        start_queue = Queue()
        end_queue = Queue()

        def run():
            start_queue.put(get_ident())
            end_queue.get()

        th = threading.Thread(target=run)
        th.start()
        try:
            ident = start_queue.get()  # Wait for the thread to start.
            obj = self._make()
            obj.queue = self._make_nosleep_queue()
            reporter = self._make_reporter(report_at=1234.0, ident=ident)
            obj.reporters.add(reporter)
            obj.run(time=lambda: 1234.1)
        finally:
            end_queue.put(None)  # Let the thread end.
        th.join()

        self.assertEqual(len(self.reported), 1)
        report_time, frame = self.reported[0]
        self.assertEqual(report_time, 1234.1)
        self.assertIsNotNone(frame)
        self.assertIsNotNone(frame.f_code.co_filename)
        self.assertIsNotNone(frame.f_code.co_name)

        self.assertEqual(len(self.queue_gets), 1)
        t = self.queue_gets[0][1]
        self.assertEqual(t, 10.0)
Exemple #2
0
 def __init__(self):
     super(Monitor, self).__init__(name='slowlog_monitor')
     self.setDaemon(True)
     self.queue = Queue()  # Thread communication: [(reporter, add) or None]
     self.reporters = set()  # set([Reporter])