def init_ports(self, tor_cfg, socks_port, control_port): """Check SOCKS port and Tor config inputs.""" if tor_cfg == cm.LAUNCH_NEW_TBB_TOR: raise TBDriverConfigError( """`LAUNCH_NEW_TBB_TOR` config is not supported anymore. Use USE_RUNNING_TOR or USE_STEM""") if tor_cfg not in [cm.USE_RUNNING_TOR, cm.USE_STEM]: raise TBDriverConfigError("Unrecognized tor_cfg: %s" % tor_cfg) if socks_port is None: if tor_cfg == cm.USE_RUNNING_TOR: socks_port = cm.DEFAULT_SOCKS_PORT # 9050 else: socks_port = cm.STEM_SOCKS_PORT if control_port is None: if tor_cfg == cm.USE_RUNNING_TOR: control_port = cm.DEFAULT_CONTROL_PORT else: control_port = cm.STEM_CONTROL_PORT if not is_busy(socks_port): raise TBDriverPortError("SOCKS port %s is not listening" % socks_port) self.socks_port = socks_port self.control_port = control_port
def launch_tor(): temp_data_dir = tempfile.mkdtemp() torrc = {'ControlPort': str(cm.DEFAULT_CONTROL_PORT), 'SOCKSPort': str(cm.DEFAULT_SOCKS_PORT), 'DataDirectory': temp_data_dir} if not is_busy(cm.DEFAULT_SOCKS_PORT): launch_tbb_tor_with_stem_fixture(tbb_path=TBB_PATH, torrc=torrc)
def occupy_port(self, port_no): """Occupy the given port to simulate a port conflict.""" if is_busy(port_no): # already occupied, nothing to do return skt = socket.socket(socket.AF_INET, socket.SOCK_STREAM) skt.bind(("localhost", port_no)) skt.listen(1) self.open_sockets.append(skt)
def test_running_with_system_tor(self): if not is_busy(cm.DEFAULT_SOCKS_PORT): self.fail("System Tor doesn't appear to be running.") with TBDriverFixture(TBB_PATH, tor_cfg=cm.USE_RUNNING_TOR) as driver: driver.load_url_ensure(cm.CHECK_TPO_URL) driver.find_element_by("h1.on")
def launch_tor(): tor_process = None temp_data_dir = tempfile.mkdtemp() torrc = {'ControlPort': str(cm.STEM_CONTROL_PORT), 'SOCKSPort': str(cm.STEM_SOCKS_PORT), 'DataDirectory': temp_data_dir} if not is_busy(cm.STEM_SOCKS_PORT): tor_process = launch_tbb_tor_with_stem_fixture(tbb_path=TBB_PATH, torrc=torrc) return (temp_data_dir, tor_process)
def test_running_with_system_tor(self): if not is_busy(cm.DEFAULT_SOCKS_PORT): if cm.TRAVIS: # Tor should be running on CI self.fail("Skipping. Start system Tor to run this test.") else: pytest.skip("Skipping. Start the system Tor to run this test.") with TBDriverFixture(TBB_PATH, tor_cfg=cm.USE_RUNNING_TOR) as driver: driver.load_url_ensure(cm.CHECK_TPO_URL) driver.find_element_by("h1.on")
def test_running_with_system_tor(self): if not is_busy(cm.DEFAULT_SOCKS_PORT): self.fail("System Tor doesn't appear to be running.") with TBDriverFixture(TBB_PATH, tor_cfg=cm.USE_RUNNING_TOR, socks_port=cm.DEFAULT_SOCKS_PORT, control_port=cm.DEFAULT_CONTROL_PORT) as driver: driver.load_url_ensure(cm.CHECK_TPO_URL) driver.find_element_by("h1.on")
def launch_tor(): tor_process = None temp_data_dir = tempfile.mkdtemp() torrc = { 'ControlPort': str(cm.STEM_CONTROL_PORT), 'SOCKSPort': str(cm.STEM_SOCKS_PORT), 'DataDirectory': temp_data_dir } if not is_busy(cm.STEM_SOCKS_PORT): tor_process = launch_tbb_tor_with_stem_fixture(tbb_path=TBB_PATH, torrc=torrc) return (temp_data_dir, tor_process)
def init_ports(self, tor_cfg, socks_port, control_port): """Check SOCKS port and Tor config inputs.""" if tor_cfg not in [cm.USE_RUNNING_TOR, cm.LAUNCH_NEW_TBB_TOR]: raise TBDriverConfigError("Unrecognized tor_cfg: %s" % tor_cfg) if socks_port is None: if tor_cfg == cm.USE_RUNNING_TOR: socks_port = cm.DEFAULT_SOCKS_PORT # 9050 else: socks_port = cm.TBB_SOCKS_PORT # 9150 if control_port is None: if tor_cfg == cm.USE_RUNNING_TOR: control_port = cm.DEFAULT_CONTROL_PORT # 9051 else: control_port = cm.TBB_CONTROL_PORT # 9151 if tor_cfg == cm.LAUNCH_NEW_TBB_TOR: if is_busy(socks_port): raise TBDriverPortError("SOCKS port %s is already in use" % socks_port) if is_busy(control_port): raise TBDriverPortError("Control port %s is already in use" % control_port) if socks_port != cm.TBB_SOCKS_PORT or\ control_port != cm.TBB_CONTROL_PORT: # No support for launching TBB's Tor on a custom port, use Stem raise TBDriverPortError("Can only launch Tor on TBB's default" "ports (9150-9151). Use Stem for" "launching Tor on a custom ports") elif tor_cfg == cm.USE_RUNNING_TOR: if not is_busy(socks_port): raise TBDriverPortError("SOCKS port %s is not listening" % socks_port) self.socks_port = socks_port self.control_port = control_port
def change_default_tor_cfg(self, kwargs): """Use system Tor if the caller doesn't specifically wants to launch a new TBB Tor. if FORCE_TB_LOGS_DURING_TESTS is True add a log file arg to make it easier to debug the failures. This makes tests faster and more robust against network issues since otherwise we'd have to launch a new Tor process for each test. """ if kwargs.get("tor_cfg") is None and is_busy(cm.DEFAULT_SOCKS_PORT): kwargs["tor_cfg"] = cm.USE_RUNNING_TOR if FORCE_TB_LOGS_DURING_TESTS and\ kwargs.get("tbb_logfile_path") is None: _, self.log_file = tempfile.mkstemp() kwargs["tbb_logfile_path"] = self.log_file
def change_default_tor_cfg(self, kwargs): """Use the Tor process that we started with at the beginning of the tests if the caller doesn't want to launch a new TBB Tor. This makes tests faster and more robust against network issues since otherwise we'd have to launch a new Tor process for each test. if FORCE_TB_LOGS_DURING_TESTS is True add a log file arg to make it easier to debug the failures. """ if kwargs.get("tor_cfg") is None and is_busy(cm.STEM_SOCKS_PORT): kwargs["tor_cfg"] = cm.USE_RUNNING_TOR kwargs["socks_port"] = cm.STEM_SOCKS_PORT kwargs["control_port"] = cm.STEM_CONTROL_PORT if FORCE_TB_LOGS_DURING_TESTS and\ kwargs.get("tbb_logfile_path") is None: _, self.log_file = tempfile.mkstemp() kwargs["tbb_logfile_path"] = self.log_file