def test_getPath_exception(self, mock_se): mock_ns = mock.Mock() mock_gm = mock.Mock() mock_exit_rs = mock.Mock() mock_exit_rs.digest = 'exit digest' mock_middle_rs = mock.Mock() mock_middle_rs.digest = 'middle digest' mock_guard_rs = mock.Mock() mock_guard_rs.digest = 'guard digest' mock_consensus = mock.Mock() mock_consensus.routers = { 'exit_fprint': mock_exit_rs, 'middle_fprint': mock_middle_rs, 'guard_fprint': mock_guard_rs } mock_consensus.bandwidth_weights = 'bandwidth weights' mock_exit_request = mock.Mock() mock_exit_request.port = 'port' mock_descriptors = { 'exit digest': 'exit_fprint', 'middle digest': 'middle_fprint', 'guard digest': 'guard_fprint' } mock_ns.getMicroconsensus = mock.Mock() mock_ns.getMicroconsensus.return_value = defer.succeed(mock_consensus) mock_ns.getMicrodescriptorsForCircuit = mock.Mock() mock_ns.getMicrodescriptorsForCircuit.return_value = \ defer.succeed(mock_descriptors) mock_gm.getUsableGuards = mock.Mock() mock_gm.getUsableGuards.return_value = defer.succeed('guards') mock_fast = True mock_stable = True mock_internal = False mock_bwweightscale = path.DEFAULT_BWWEIGHTSCALE self.assertEqual( self.failureResultOf( path.getPath(mock_ns, mock_gm, mock_exit_request, mock_fast, mock_stable, mock_internal))\ .trap(path.PathSelectionFailedException), path.PathSelectionFailedException)
def test_getPath_exception(self, mock_se): mock_ns = mock.Mock() mock_gm = mock.Mock() mock_exit_rs = mock.Mock() mock_exit_rs.digest = 'exit digest' mock_middle_rs = mock.Mock() mock_middle_rs.digest = 'middle digest' mock_guard_rs = mock.Mock() mock_guard_rs.digest = 'guard digest' mock_consensus = mock.Mock() mock_consensus.routers = {'exit_fprint': mock_exit_rs, 'middle_fprint': mock_middle_rs, 'guard_fprint': mock_guard_rs} mock_consensus.bandwidth_weights = 'bandwidth weights' mock_exit_request = mock.Mock() mock_exit_request.port = 'port' mock_descriptors = {'exit digest': 'exit_fprint', 'middle digest': 'middle_fprint', 'guard digest': 'guard_fprint'} mock_ns.getMicroconsensus = mock.Mock() mock_ns.getMicroconsensus.return_value = defer.succeed(mock_consensus) mock_ns.getMicrodescriptorsForCircuit = mock.Mock() mock_ns.getMicrodescriptorsForCircuit.return_value = \ defer.succeed(mock_descriptors) mock_gm.getUsableGuards = mock.Mock() mock_gm.getUsableGuards.return_value = defer.succeed('guards') mock_fast = True mock_stable = True mock_internal = False mock_bwweightscale = path.DEFAULT_BWWEIGHTSCALE self.assertEqual( self.failureResultOf( path.getPath(mock_ns, mock_gm, mock_exit_request, mock_fast, mock_stable, mock_internal))\ .trap(path.PathSelectionFailedException), path.PathSelectionFailedException)
def build(self): if self._building is True: msg = "Circuit {} already started build process." raise RuntimeError(msg.format(self.circuit_id)) try: # TODO: update for stable/fast flags based on circuit_type self._tasks = path.getPath(self._netstatus, self._guard_manager, exit_request=self.request) except Exception as e: self._buildFailed(e) return self._current_task = self._tasks self._tasks.addCallback(self._build) self._tasks.addCallback(self._buildSucceeded) self._tasks.addErrback(self._buildFailed) self._building = True
def test_getPath(self, mock_sm, mock_sg, mock_se): mock_ns = mock.Mock() mock_gm = mock.Mock() mock_exit_rs = mock.Mock() mock_exit_rs.digest = 'exit digest' mock_middle_rs = mock.Mock() mock_middle_rs.digest = 'middle digest' mock_guard_rs = mock.Mock() mock_guard_rs.digest = 'guard digest' mock_consensus = mock.Mock() mock_consensus.routers = { 'exit_fprint': mock_exit_rs, 'middle_fprint': mock_middle_rs, 'guard_fprint': mock_guard_rs } mock_consensus.bandwidth_weights = 'bandwidth weights' mock_exit_request = mock.Mock() mock_exit_request.port = 'port' mock_descriptors = { 'exit digest': 'exit_fprint', 'middle digest': 'middle_fprint', 'guard digest': 'guard_fprint' } mock_ns.getMicroconsensus = mock.Mock() mock_ns.getMicroconsensus.return_value = defer.succeed(mock_consensus) mock_ns.getMicrodescriptorsForCircuit = mock.Mock() mock_ns.getMicrodescriptorsForCircuit.return_value = \ defer.succeed(mock_descriptors) mock_gm.getUsableGuards = mock.Mock() mock_gm.getUsableGuards.return_value = defer.succeed('guards') mock_fast = True mock_stable = True mock_internal = False mock_bwweightscale = path.DEFAULT_BWWEIGHTSCALE ret = path.getPath(mock_ns, mock_gm, mock_exit_request, mock_fast, mock_stable, mock_internal) mock_se.assert_called_once_with(mock_consensus.bandwidth_weights, mock_bwweightscale, mock_consensus.routers, mock_descriptors, mock_fast, mock_stable, mock_internal, mock_exit_request.port) mock_sg.assert_called_once_with(mock_consensus.routers, mock_descriptors, 'guards', mock_fast, mock_stable, 'exit_fprint', mock_exit_rs) mock_sm.assert_called_once_with( mock_consensus.bandwidth_weights, mock_bwweightscale, mock_consensus.routers, mock_descriptors, mock_fast, mock_stable, 'exit_fprint', mock_exit_rs, 'guard_fprint', mock_guard_rs) self.assertEqual( self.successResultOf(ret), path.Path(path.PathNode('guard_fprint', mock_guard_rs), path.PathNode('middle_fprint', mock_middle_rs), path.PathNode('exit_fprint', mock_exit_rs)))
def test_getPath(self, mock_sm, mock_sg, mock_se): mock_ns = mock.Mock() mock_gm = mock.Mock() mock_exit_rs = mock.Mock() mock_exit_rs.digest = 'exit digest' mock_middle_rs = mock.Mock() mock_middle_rs.digest = 'middle digest' mock_guard_rs = mock.Mock() mock_guard_rs.digest = 'guard digest' mock_consensus = mock.Mock() mock_consensus.routers = {'exit_fprint': mock_exit_rs, 'middle_fprint': mock_middle_rs, 'guard_fprint': mock_guard_rs} mock_consensus.bandwidth_weights = 'bandwidth weights' mock_exit_request = mock.Mock() mock_exit_request.port = 'port' mock_descriptors = {'exit digest': 'exit_fprint', 'middle digest': 'middle_fprint', 'guard digest': 'guard_fprint'} mock_ns.getMicroconsensus = mock.Mock() mock_ns.getMicroconsensus.return_value = defer.succeed(mock_consensus) mock_ns.getMicrodescriptorsForCircuit = mock.Mock() mock_ns.getMicrodescriptorsForCircuit.return_value = \ defer.succeed(mock_descriptors) mock_gm.getUsableGuards = mock.Mock() mock_gm.getUsableGuards.return_value = defer.succeed('guards') mock_fast = True mock_stable = True mock_internal = False mock_bwweightscale = path.DEFAULT_BWWEIGHTSCALE ret = path.getPath(mock_ns, mock_gm, mock_exit_request, mock_fast, mock_stable, mock_internal) mock_se.assert_called_once_with(mock_consensus.bandwidth_weights, mock_bwweightscale, mock_consensus.routers, mock_descriptors, mock_fast, mock_stable, mock_internal, mock_exit_request.port) mock_sg.assert_called_once_with(mock_consensus.routers, mock_descriptors, 'guards', mock_fast, mock_stable, 'exit_fprint', mock_exit_rs) mock_sm.assert_called_once_with(mock_consensus.bandwidth_weights, mock_bwweightscale, mock_consensus.routers, mock_descriptors, mock_fast, mock_stable, 'exit_fprint', mock_exit_rs, 'guard_fprint', mock_guard_rs) self.assertEqual(self.successResultOf(ret), path.Path(path.PathNode('guard_fprint', mock_guard_rs), path.PathNode('middle_fprint', mock_middle_rs), path.PathNode('exit_fprint', mock_exit_rs)))