def test_blocking_this_thread(self): hub = get_hub() stream = hub.exception_stream = NativeStrIO() monitor = hub.start_periodic_monitoring_thread() self.assertIsNotNone(monitor) basic_monitor_func_count = 1 if get_this_psutil_process() is not None: # psutil is installed basic_monitor_func_count += 1 self.assertEqual(basic_monitor_func_count, len(monitor.monitoring_functions())) monitor.add_monitoring_function(self._monitor, 0.1) self.assertEqual(basic_monitor_func_count + 1, len(monitor.monitoring_functions())) self.assertEqual(self._monitor, monitor.monitoring_functions()[-1].function) self.assertEqual(0.1, monitor.monitoring_functions()[-1].period) # We must make sure we have switched greenlets at least once, # otherwise we can't detect a failure. gevent.sleep(hub.loop.approx_timer_resolution) assert hub.exception_stream is stream try: time.sleep(0.3) # Thrice the default self._run_monitoring_threads(monitor) finally: monitor.add_monitoring_function(self._monitor, None) self.assertEqual(basic_monitor_func_count, len(monitor._monitoring_functions)) assert hub.exception_stream is stream monitor.kill() del hub.exception_stream self.assertGreaterEqual(self.monitor_fired, 1) data = stream.getvalue() self.assertIn('appears to be blocked', data) self.assertIn('PeriodicMonitoringThread', data)
def test_blocking_this_thread(self): hub = get_hub() stream = hub.exception_stream = NativeStrIO() monitor = hub.start_periodic_monitoring_thread() self.assertIsNotNone(monitor) basic_monitor_func_count = 1 if get_this_psutil_process() is not None: # psutil is installed basic_monitor_func_count += 1 self.assertEqual(basic_monitor_func_count, len(monitor.monitoring_functions())) monitor.add_monitoring_function(self._monitor, 0.1) self.assertEqual(basic_monitor_func_count + 1, len(monitor.monitoring_functions())) self.assertEqual(self._monitor, monitor.monitoring_functions()[-1].function) self.assertEqual(0.1, monitor.monitoring_functions()[-1].period) # We must make sure we have switched greenlets at least once, # otherwise we can't detect a failure. gevent.sleep(hub.loop.approx_timer_resolution) assert hub.exception_stream is stream try: time.sleep(0.3) # Thrice the default self._run_monitoring_threads(monitor) finally: monitor.add_monitoring_function(self._monitor, None) self.assertEqual(basic_monitor_func_count, len(monitor._monitoring_functions)) assert hub.exception_stream is stream monitor.kill() del hub.exception_stream self.assertGreaterEqual(self.monitor_fired, 1) data = stream.getvalue() self.assertIn('appears to be blocked', data) self.assertIn('PeriodicMonitoringThread', data)
def _get_process(self): # pylint:disable=method-hidden proc = get_this_psutil_process() self._get_process = lambda: proc return proc
def _get_process(self): # pylint:disable=method-hidden proc = get_this_psutil_process() self._get_process = lambda: proc return proc