Esempio n. 1
0
    def setUp(self):
        socket = stem.socket.ControlSocket()

        # When initially constructing a controller we need to suppress msg, so our
        # constructor's SETEVENTS requests pass.

        with patch('stem.control.BaseController.msg', Mock()):
            self.controller = Controller(socket)
Esempio n. 2
0
def from_port(address='127.0.0.1', port='default'):
    import stem.connection

    if not stem.util.connection.is_valid_ipv4_address(address):
        raise ValueError('Invalid IP address: %s' % address)
    elif port != 'default' and not stem.util.connection.is_valid_port(port):
        raise ValueError('Invalid port: %s' % port)

    if port == 'default':
        raise ValueError('Must specify a port')
    else:
        control_port = PatchedControlPort(address, port)

    return Controller(control_port)
Esempio n. 3
0
    def test_broken_listener(self, stdout_mock, from_port_mock, sleep_mock):
        controller = Controller(stem.socket.ControlSocket())
        from_port_mock.return_value = controller

        # emits a BW event when the example runs time.sleep()

        bw_event = ControlMessage.from_str('650 BW 15 25',
                                           'EVENT',
                                           normalize=True)
        sleep_mock.side_effect = lambda duration: controller._handle_event(
            bw_event)

        import broken_listener

        self.assertEqual('start of broken_handler\n', stdout_mock.getvalue())
Esempio n. 4
0
  def setUp(self):
    socket = stem.socket.ControlSocket()

    # When initially constructing a controller we need to suppress msg, so our
    # constructor's SETEVENTS requests pass.

    with patch('stem.control.BaseController.msg', Mock()):
      self.controller = Controller(socket)

      self.circ_listener = Mock()
      self.controller.add_event_listener(self.circ_listener, EventType.CIRC)

      self.bw_listener = Mock()
      self.controller.add_event_listener(self.bw_listener, EventType.BW)

      self.malformed_listener = Mock()
      self.controller.add_event_listener(self.malformed_listener, MALFORMED_EVENTS)
Esempio n. 5
0
    def test_slow_listener(self, stdout_mock, from_port_mock, sleep_mock):
        controller = Controller(stem.socket.ControlSocket())
        from_port_mock.return_value = controller

        # emits a BW event when the example runs time.sleep() at the end, but *not*
        # within the listener

        bw_event = ControlMessage.from_str('650 BW 15 25',
                                           'EVENT',
                                           normalize=True)
        sleep_mock.side_effect = lambda duration: controller._handle_event(
            bw_event) if duration == 10 else None

        import slow_listener

        self.assertEqual(
            "processing a BW event that's 0.0 seconds old (0 more events are waiting)\n",
            stdout_mock.getvalue())
Esempio n. 6
0
  def setUp(self):
    socket = stem.socket.ControlSocket()

    with patch('stem.control.Controller.add_event_listener', Mock()):
      self.controller = Controller(socket)
Esempio n. 7
0
def initController(stdscr, startTime):
    """
  Spawns the controller, and related panels for it.
  
  Arguments:
    stdscr - curses window
  """

    global ARM_CONTROLLER

    # initializes the panels
    stickyPanels = [
        cli.headerPanel.HeaderPanel(stdscr, startTime),
        LabelPanel(stdscr)
    ]
    pagePanels, firstPagePanels = [], []

    # first page: graph and log
    if CONFIG["features.panels.show.graph"]:
        firstPagePanels.append(cli.graphing.graphPanel.GraphPanel(stdscr))

    if CONFIG["features.panels.show.log"]:
        expandedEvents = cli.logPanel.expandEvents(CONFIG["startup.events"])
        firstPagePanels.append(cli.logPanel.LogPanel(stdscr, expandedEvents))

    if firstPagePanels: pagePanels.append(firstPagePanels)

    # second page: connections
    if not CONFIG["startup.blindModeEnabled"] and CONFIG[
            "features.panels.show.connection"]:
        pagePanels.append([cli.connections.connPanel.ConnectionPanel(stdscr)])

    # third page: config
    if CONFIG["features.panels.show.config"]:
        pagePanels.append(
            [cli.configPanel.ConfigPanel(stdscr, cli.configPanel.State.TOR)])

    # fourth page: torrc
    if CONFIG["features.panels.show.torrc"]:
        pagePanels.append(
            [cli.torrcPanel.TorrcPanel(stdscr, cli.torrcPanel.Config.TORRC)])

    # initializes the controller
    ARM_CONTROLLER = Controller(stdscr, stickyPanels, pagePanels)

    # additional configuration for the graph panel
    graphPanel = ARM_CONTROLLER.getPanel("graph")

    if graphPanel:
        # statistical monitors for graph
        bwStats = cli.graphing.bandwidthStats.BandwidthStats()
        graphPanel.addStats(GraphStat.BANDWIDTH, bwStats)
        graphPanel.addStats(GraphStat.SYSTEM_RESOURCES,
                            cli.graphing.resourceStats.ResourceStats())
        if not CONFIG["startup.blindModeEnabled"]:
            graphPanel.addStats(GraphStat.CONNECTIONS,
                                cli.graphing.connStats.ConnStats())

        # sets graph based on config parameter
        try:
            initialStats = GRAPH_INIT_STATS.get(CONFIG["features.graph.type"])
            graphPanel.setStats(initialStats)
        except ValueError:
            pass  # invalid stats, maybe connections when in blind mode

        # prepopulates bandwidth values from state file
        if CONFIG["features.graph.bw.prepopulate"] and torTools.getConn(
        ).isAlive():
            isSuccessful = bwStats.prepopulateFromState()
            if isSuccessful: graphPanel.updateInterval = 4
Esempio n. 8
0
    def setUp(self):
        socket = stem.socket.ControlSocket()

        mocking.mock_method(Controller, "add_event_listener", mocking.no_op())
        self.controller = Controller(socket)
        mocking.revert_mocking()
Esempio n. 9
0
 def setUp(self):
     socket = stem.socket.ControlSocket()
     self.controller = Controller(socket, enable_caching=True)