Example #1
0
  def test_get_accounting_stats(self, get_info_mock):
    """
    Exercises the get_accounting_stats() method.
    """

    get_info_mock.side_effect = lambda param, **kwargs: {
      'accounting/enabled': '1',
      'accounting/hibernating': 'awake',
      'accounting/interval-end': '2014-09-14 19:41:00',
      'accounting/bytes': '4837 2050',
      'accounting/bytes-left': '102944 7440',
    }[param]

    expected = stem.control.AccountingStats(
      1410723598.276578,
      'awake',
      datetime.datetime(2014, 9, 14, 19, 41),
      62,
      4837, 102944, 107781,
      2050, 7440, 9490,
    )

    self.assertEqual(expected, self.controller.get_accounting_stats())

    get_info_mock.side_effect = ControllerError('nope, too bad')
    self.assertRaises(ControllerError, self.controller.get_accounting_stats)
    self.assertEqual('my default', self.controller.get_accounting_stats('my default'))
Example #2
0
    def test_get_effective_rate(self, get_conf_mock):
        """
    Exercise the get_effective_rate() method.
    """

        # check default if nothing was set
        async def get_conf_mock_side_effect(self, param, *args, **kwargs):
            return {
                'BandwidthRate': '1073741824',
                'BandwidthBurst': '1073741824',
                'RelayBandwidthRate': '0',
                'RelayBandwidthBurst': '0',
                'MaxAdvertisedBandwidth': '1073741824',
            }[param]

        get_conf_mock.side_effect = get_conf_mock_side_effect

        self.assertEqual(1073741824, self.controller.get_effective_rate())
        self.assertEqual(1073741824,
                         self.controller.get_effective_rate(burst=True))

        get_conf_mock.side_effect = coro_func_raising_exc(
            ControllerError('nope, too bad'))
        self.assertRaises(ControllerError, self.controller.get_effective_rate)
        self.assertEqual('my_default',
                         self.controller.get_effective_rate('my_default'))
Example #3
0
    def test_get_network_status_for_ourselves(self, get_info_mock):
        """
    Exercises the get_network_status() method for getting our own relay.
    """

        # when there's an issue getting our fingerprint

        get_info_mock.side_effect = ControllerError('nope, too bad')

        try:
            self.controller.get_network_status()
            self.fail("We should've raised an exception")
        except ControllerError as exc:
            self.assertEqual(
                'Unable to determine our own fingerprint: nope, too bad',
                str(exc))

        self.assertEqual('boom',
                         self.controller.get_network_status(default='boom'))

        # successful request

        desc = NS_DESC % ('moria1', '/96bKo4soysolMgKn5Hex2nyFSY')

        get_info_mock.side_effect = lambda param, **kwargs: {
            'fingerprint': '9695DFC35FFEB861329B9F1AB04C46397020CE31',
            'ns/id/9695DFC35FFEB861329B9F1AB04C46397020CE31': desc,
        }[param]

        self.assertEqual(
            stem.descriptor.router_status_entry.RouterStatusEntryV3(desc),
            self.controller.get_network_status())
Example #4
0
    def test_get_network_status_for_ourselves(self, get_info_mock):
        """
    Exercises the get_network_status() method for getting our own relay.
    """

        # when there's an issue getting our fingerprint

        get_info_mock.side_effect = coro_func_raising_exc(
            ControllerError('nope, too bad'))

        exc_msg = 'Unable to determine our own fingerprint: nope, too bad'
        self.assertRaisesWith(ControllerError, exc_msg,
                              self.controller.get_network_status)
        self.assertEqual('boom',
                         self.controller.get_network_status(default='boom'))

        # successful request

        desc = NS_DESC % ('moria1', '/96bKo4soysolMgKn5Hex2nyFSY')

        async def get_info_mock_side_effect(self, param, **kwargs):
            return {
                'fingerprint': '9695DFC35FFEB861329B9F1AB04C46397020CE31',
                'ns/id/9695DFC35FFEB861329B9F1AB04C46397020CE31': desc,
            }[param]

        get_info_mock.side_effect = get_info_mock_side_effect

        self.assertEqual(
            stem.descriptor.router_status_entry.RouterStatusEntryV3(desc),
            self.controller.get_network_status())
Example #5
0
  def test_get_effective_rate(self, get_conf_mock):
    """
    Exercise the get_effective_rate() method.
    """

    # check default if nothing was set

    get_conf_mock.side_effect = lambda param, **kwargs: {
      'BandwidthRate': '1073741824',
      'BandwidthBurst': '1073741824',
      'RelayBandwidthRate': '0',
      'RelayBandwidthBurst': '0',
      'MaxAdvertisedBandwidth': '1073741824',
    }[param]

    self.assertEqual(1073741824, self.controller.get_effective_rate())
    self.assertEqual(1073741824, self.controller.get_effective_rate(burst = True))

    get_conf_mock.side_effect = ControllerError('nope, too bad')
    self.assertRaises(ControllerError, self.controller.get_effective_rate)
    self.assertEqual('my_default', self.controller.get_effective_rate('my_default'))