def tearDown(self): for p in list(process._current_processes.values()): try: process.kill_process(p.pyngrok_config.ngrok_path) p.proc.wait() except OSError: pass if os.path.exists(self.config_dir): shutil.rmtree(self.config_dir)
def kill(ngrok_path=None): """ Terminate the `ngrok` processes, if running, for the given path. This method will not block, it will just issue a kill request. :param ngrok_path: A `ngrok` binary override (instead of using `pyngrok`'s). :type ngrok_path: string, optional """ ngrok_path = ngrok_path if ngrok_path else DEFAULT_NGROK_PATH process.kill_process(ngrok_path)
def kill(pyngrok_config=None): """ Terminate the :code:`ngrok` processes, if running, for the given config's :code:`ngrok_path`. This method will not block, it will just issue a kill request. :param pyngrok_config: The :code:`pyngrok` configuration to use when interacting with the :code:`ngrok` binary. :type pyngrok_config: PyngrokConfig, optional """ if pyngrok_config is None: pyngrok_config = PyngrokConfig() process.kill_process(pyngrok_config.ngrok_path)
def kill(pyngrok_config=None): """ Terminate the ``ngrok`` processes, if running, for the given config's ``ngrok_path``. This method will not block, it will just issue a kill request. :param pyngrok_config: The ``pyngrok`` configuration to use when interacting with the ``ngrok`` binary, defaults to ``conf.DEFAULT_PYNGROK_CONFIG``. :type pyngrok_config: PyngrokConfig, optional """ if pyngrok_config is None: pyngrok_config = conf.DEFAULT_PYNGROK_CONFIG process.kill_process(pyngrok_config.ngrok_path)
def kill(pyngrok_config=None): """ Terminate the ``ngrok`` processes, if running, for the given config's ``ngrok_path``. This method will not block, it will just issue a kill request. :param pyngrok_config: A ``pyngrok`` configuration to use when interacting with the ``ngrok`` binary, overriding :func:`~pyngrok.conf.get_default()`. :type pyngrok_config: PyngrokConfig, optional """ if pyngrok_config is None: pyngrok_config = conf.get_default() process.kill_process(pyngrok_config.ngrok_path) _current_tunnels.clear()
def test_process_external_kill(self): # GIVEN self.given_ngrok_installed(ngrok.DEFAULT_NGROK_PATH) ngrok_process = process._start_process(ngrok.DEFAULT_NGROK_PATH, config_path=self.config_path) self.assertEqual(len(process._current_processes.keys()), 1) # WHEN # Kill the process by external means, pyngrok still thinks process is active ngrok_process.proc.kill() ngrok_process.proc.wait() self.assertEqual(len(process._current_processes.keys()), 1) # Try to kill the process via pyngrok, no error, just update state process.kill_process(ngrok.DEFAULT_NGROK_PATH) self.assertEqual(len(process._current_processes.keys()), 0)
def test_process_external_kill(self): # GIVEN self.given_ngrok_installed(self.pyngrok_config.ngrok_path) ngrok_process = process._start_process(self.pyngrok_config) monitor_thread = ngrok_process._monitor_thread self.assertEqual(len(process._current_processes.keys()), 1) self.assertTrue(ngrok_process._monitor_thread.is_alive()) # WHEN # Kill the process by external means, pyngrok still thinks process is active ngrok_process.proc.kill() ngrok_process.proc.wait() self.assertEqual(len(process._current_processes.keys()), 1) time.sleep(1) self.assertFalse(monitor_thread.is_alive()) # THEN # Try to kill the process via pyngrok, no error, just update state process.kill_process(conf.DEFAULT_NGROK_PATH) self.assertEqual(len(process._current_processes.keys()), 0) self.assertFalse(monitor_thread.is_alive())