コード例 #1
0
ファイル: test_util.py プロジェクト: zyk2290/oppy
    def test_selectWeightedNode_lt_mid_equal(self, mock_random):
        mock_node_1 = mock.Mock()
        mock_node_2 = mock.Mock()
        mock_node_3 = mock.Mock()
        mock_node_4 = mock.Mock()
        mock_node_5 = mock.Mock()

        mock_weighted_nodes = [
            (mock_node_1, 0.1),
            (mock_node_2, 0.3),
            (mock_node_3, 0.57),
            (mock_node_4, 0.78),
            (mock_node_5, 1.0),
        ]

        mock_random.return_value = 0.5
        # r < 0.57, so...
        # end = 2, mid = 1
        # then r > 0.3, so...
        # begin = 2, mid = 2
        # r < 0.57
        # mid == begin, so
        # return w[2][0]
        expected = mock_weighted_nodes[2][0]
        ret = path_util.selectWeightedNode(mock_weighted_nodes)
        self.assertEqual(ret, expected)
コード例 #2
0
ファイル: test_util.py プロジェクト: nskinkel/oppy
    def test_selectWeightedNode_lt_mid_equal(self, mock_random):
        mock_node_1 = mock.Mock()
        mock_node_2 = mock.Mock()
        mock_node_3 = mock.Mock()
        mock_node_4 = mock.Mock()
        mock_node_5 = mock.Mock()

        mock_weighted_nodes = [
            (mock_node_1, 0.1),
            (mock_node_2, 0.3),
            (mock_node_3, 0.57),
            (mock_node_4, 0.78),
            (mock_node_5, 1.0),
        ]

        mock_random.return_value = 0.5
        # r < 0.57, so...
        # end = 2, mid = 1
        # then r > 0.3, so...
        # begin = 2, mid = 2
        # r < 0.57
        # mid == begin, so
        # return w[2][0]
        expected = mock_weighted_nodes[2][0]
        ret = path_util.selectWeightedNode(mock_weighted_nodes)
        self.assertEqual(ret, expected)
コード例 #3
0
def selectExitNode(bw_weights, bwweightscale, cons_rel_stats, descriptors,
                   fast, stable, internal, port):
    exits = filterExits(cons_rel_stats, descriptors, fast, stable, internal,
                        port)

    if len(exits) == 0:
        raise ValueError("No usable exit nodes for requested path.")

    if len(exits) == 1:
        return exits[0]

    weight_pos = 'm' if internal is True else 'e'
    weights = path_util.getPositionWeights(exits, cons_rel_stats, weight_pos,
                                           bw_weights, bwweightscale)
    weighted_exits = path_util.getWeightedNodes(exits, weights)

    return path_util.selectWeightedNode(weighted_exits)
コード例 #4
0
def selectMiddleNode(bw_weights, bwweightscale, cons_rel_stats, descriptors,
                     fast, stable, exit_desc, exit_status_entry, guard_desc,
                     guard_status_entry):
    middles = filterMiddles(cons_rel_stats, descriptors, fast, stable,
                            exit_desc, exit_status_entry, guard_desc,
                            guard_status_entry)

    if len(middles) == 0:
        raise ValueError("No usable middle nodes for requested path.")

    if len(middles) == 1:
        return middles[0]

    weights = path_util.getPositionWeights(middles, cons_rel_stats, 'm',
                                           bw_weights, bwweightscale)
    weighted_middles = path_util.getWeightedNodes(middles, weights)
    return path_util.selectWeightedNode(weighted_middles)
コード例 #5
0
ファイル: path.py プロジェクト: nskinkel/oppy
def selectExitNode(bw_weights, bwweightscale, cons_rel_stats, descriptors,
                   fast, stable, internal, port):
    exits = filterExits(cons_rel_stats, descriptors, fast, stable, internal,
                        port)

    if len(exits) == 0:
        raise ValueError("No usable exit nodes for requested path.")

    if len(exits) == 1:
        return exits[0]

    weight_pos = 'm' if internal is True else 'e'
    weights = path_util.getPositionWeights(exits, cons_rel_stats, weight_pos,
                                           bw_weights, bwweightscale)
    weighted_exits = path_util.getWeightedNodes(exits, weights)

    return path_util.selectWeightedNode(weighted_exits)
コード例 #6
0
ファイル: path.py プロジェクト: nskinkel/oppy
def selectMiddleNode(bw_weights, bwweightscale, cons_rel_stats, descriptors,
                     fast, stable, exit_desc, exit_status_entry, guard_desc,
                     guard_status_entry):
    middles = filterMiddles(cons_rel_stats, descriptors, fast, stable,
                            exit_desc, exit_status_entry, guard_desc,
                            guard_status_entry)

    if len(middles) == 0:
        raise ValueError("No usable middle nodes for requested path.")

    if len(middles) == 1:
        return middles[0]

    weights = path_util.getPositionWeights(middles, cons_rel_stats, 'm',
                                           bw_weights, bwweightscale)
    weighted_middles = path_util.getWeightedNodes(middles, weights)
    return path_util.selectWeightedNode(weighted_middles)