本文整理汇总了Python中test.mocking.get_router_status_entry_v3函数的典型用法代码示例。如果您正苦于以下问题:Python get_router_status_entry_v3函数的具体用法?Python get_router_status_entry_v3怎么用?Python get_router_status_entry_v3使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了get_router_status_entry_v3函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_flags
def test_flags(self):
"""
Handles a variety of flag inputs.
"""
test_values = {
'': [],
'Fast': [Flag.FAST],
'Fast Valid': [Flag.FAST, Flag.VALID],
'Ugabuga': ['Ugabuga'],
}
for s_line, expected in test_values.items():
entry = get_router_status_entry_v3({'s': s_line})
self.assertEqual(expected, entry.flags)
# tries some invalid inputs
test_values = {
'Fast ': [Flag.FAST, '', '', ''],
'Fast Valid': [Flag.FAST, '', Flag.VALID],
'Fast Fast': [Flag.FAST, Flag.FAST],
}
for s_line, expected in test_values.items():
content = get_router_status_entry_v3({'s': s_line}, content = True)
self._expect_invalid_attr(content, 'flags', expected)
示例2: test_with_router_status_entries
def test_with_router_status_entries(self):
"""
Includes router status entries within the document. This isn't to test the
RouterStatusEntry parsing but rather the inclusion of it within the
document.
"""
entry1 = get_router_status_entry_v3({'s': 'Fast'})
entry2 = get_router_status_entry_v3({
'r': 'Nightfae AWt0XNId/OU2xX5xs5hVtDc5Mes 6873oEfM7fFIbxYtwllw9GPDwkA 2013-02-20 11:12:27 85.177.66.233 9001 9030',
's': 'Valid',
})
document = get_network_status_document_v3(routers = (entry1, entry2))
self.assertTrue(entry1 in document.routers.values())
self.assertTrue(entry2 in document.routers.values())
# try with an invalid RouterStatusEntry
entry3 = RouterStatusEntryV3(get_router_status_entry_v3({'r': 'ugabuga'}, content = True), False)
content = get_network_status_document_v3(routers = (entry3,), content = True)
self.assertRaises(ValueError, NetworkStatusDocumentV3, content, True)
document = NetworkStatusDocumentV3(content, False)
self.assertEqual([entry3], list(document.routers.values()))
# try including with a microdescriptor consensus
content = get_network_status_document_v3({'network-status-version': '3 microdesc'}, routers = (entry1,), content = True)
self.assertRaises(ValueError, NetworkStatusDocumentV3, content, True)
document = NetworkStatusDocumentV3(content, False)
self.assertEqual([RouterStatusEntryMicroV3(str(entry1), False)], list(document.routers.values()))
示例3: test_new_consensus_event
def test_new_consensus_event(self):
expected_desc = []
expected_desc.append(
mocking.get_router_status_entry_v3(
{
"r": "Beaver /96bKo4soysolMgKn5Hex2nyFSY pAJH9dSBp/CG6sPhhVY/5bLaVPM 2012-12-02 22:02:45 77.223.43.54 9001 0",
"s": "Fast Named Running Stable Valid",
}
)
)
expected_desc.append(
mocking.get_router_status_entry_v3(
{
"r": "Unnamed /+fJRWjmIGNAL2C5rRZHq3R91tA 7AnpZjfdBpYzXnMNm+w1bTsFF6Y 2012-12-02 17:51:10 91.121.184.87 9001 0",
"s": "Fast Guard Running Stable Valid",
}
)
)
event = _get_event(NEWCONSENSUS_EVENT)
self.assertTrue(isinstance(event, stem.response.events.NewConsensusEvent))
self.assertEqual(expected_desc, event.desc)
示例4: test_bandwidth
def test_bandwidth(self):
"""
Handles a variety of 'w' lines.
"""
test_values = {
"Bandwidth=0": (0, None, []),
"Bandwidth=63138": (63138, None, []),
"Bandwidth=11111 Measured=482": (11111, 482, []),
"Bandwidth=11111 Measured=482 Blarg!": (11111, 482, ["Blarg!"]),
}
for w_line, expected in test_values.items():
entry = get_router_status_entry_v3({'w': w_line})
self.assertEquals(expected[0], entry.bandwidth)
self.assertEquals(expected[1], entry.measured)
self.assertEquals(expected[2], entry.unrecognized_bandwidth_entries)
# tries some invalid inputs
test_values = (
"",
"blarg",
"Bandwidth",
"Bandwidth=",
"Bandwidth:0",
"Bandwidth 0",
"Bandwidth=-10",
"Bandwidth=10 Measured",
"Bandwidth=10 Measured=",
"Bandwidth=10 Measured=-50",
)
for w_line in test_values:
content = get_router_status_entry_v3({'w': w_line}, content = True)
self._expect_invalid_attr(content)
示例5: test_with_router_status_entries
def test_with_router_status_entries(self):
"""
Includes router status entries within the document. This isn't to test the
RouterStatusEntry parsing but rather the inclusion of it within the
document.
"""
entry1 = get_router_status_entry_v3({'s': "Fast"})
entry2 = get_router_status_entry_v3({'s': "Valid"})
document = get_network_status_document_v3(routers = (entry1, entry2))
self.assertEquals((entry1, entry2), document.routers)
# try with an invalid RouterStatusEntry
entry3 = RouterStatusEntryV3(get_router_status_entry_v3({'r': "ugabuga"}, content = True), False)
content = get_network_status_document_v3(routers = (entry3,), content = True)
self.assertRaises(ValueError, NetworkStatusDocumentV3, content)
document = NetworkStatusDocumentV3(content, False)
self.assertEquals((entry3,), document.routers)
# try including with a microdescriptor consensus
content = get_network_status_document_v3({"network-status-version": "3 microdesc"}, routers = (entry1, entry2), content = True)
self.assertRaises(ValueError, NetworkStatusDocumentV3, content)
expected_routers = (
RouterStatusEntryMicroV3(str(entry1), False),
RouterStatusEntryMicroV3(str(entry2), False),
)
document = NetworkStatusDocumentV3(content, False)
self.assertEquals(expected_routers, document.routers)
示例6: test_flags
def test_flags(self):
"""
Handles a variety of flag inputs.
"""
test_values = {
"": [],
"Fast": [Flag.FAST],
"Fast Valid": [Flag.FAST, Flag.VALID],
"Ugabuga": ["Ugabuga"],
}
for s_line, expected in test_values.items():
entry = get_router_status_entry_v3({'s': s_line})
self.assertEquals(expected, entry.flags)
# tries some invalid inputs
test_values = {
"Fast ": [Flag.FAST, "", "", ""],
"Fast Valid": [Flag.FAST, "", Flag.VALID],
"Fast Fast": [Flag.FAST, Flag.FAST],
}
for s_line, expected in test_values.items():
content = get_router_status_entry_v3({'s': s_line}, content = True)
self._expect_invalid_attr(content, "flags", expected)
示例7: test_handlers
def test_handlers(self):
"""
Try parsing a document with DocumentHandler.DOCUMENT and
DocumentHandler.BARE_DOCUMENT.
"""
# Simple sanity check that they provide the right type, and that the
# document includes or excludes the router status entries as appropriate.
entry1 = get_router_status_entry_v3({'s': 'Fast'})
entry2 = get_router_status_entry_v3({
'r': 'Nightfae AWt0XNId/OU2xX5xs5hVtDc5Mes 6873oEfM7fFIbxYtwllw9GPDwkA 2013-02-20 11:12:27 85.177.66.233 9001 9030',
's': 'Valid',
})
content = get_network_status_document_v3(routers = (entry1, entry2), content = True)
descriptors = list(stem.descriptor.parse_file(io.BytesIO(content), 'network-status-consensus-3 1.0', document_handler = stem.descriptor.DocumentHandler.DOCUMENT))
self.assertEqual(1, len(descriptors))
self.assertTrue(isinstance(descriptors[0], NetworkStatusDocumentV3))
self.assertEqual(2, len(descriptors[0].routers))
descriptors = list(stem.descriptor.parse_file(io.BytesIO(content), 'network-status-consensus-3 1.0', document_handler = stem.descriptor.DocumentHandler.BARE_DOCUMENT))
self.assertEqual(1, len(descriptors))
self.assertTrue(isinstance(descriptors[0], NetworkStatusDocumentV3))
self.assertEqual(0, len(descriptors[0].routers))
示例8: test_examples
def test_examples(self):
"""
Run something similar to the examples in the header pydocs.
"""
# makes a consensus with a couple routers, both with the same nickname
entry1 = get_router_status_entry_v3({'s': "Fast"})
entry2 = get_router_status_entry_v3({'s': "Valid"})
content = get_network_status_document_v3(routers = (entry1, entry2), content = True)
# first example: parsing via the NetworkStatusDocumentV3 constructor
consensus_file = StringIO.StringIO(content)
consensus = NetworkStatusDocumentV3(consensus_file.read())
consensus_file.close()
for router in consensus.routers:
self.assertEqual('caerSidi', router.nickname)
# second example: using parse_file
with support_with(StringIO.StringIO(content)) as consensus_file:
for router in parse_file(consensus_file):
self.assertEqual('caerSidi', router.nickname)
示例9: test_votes_by_bandwidth_authorities
def test_votes_by_bandwidth_authorities(self, query_mock, get_authorities_mock, stdout_mock):
directory_values = [
DIRECTORY_AUTHORITIES['gabelmoo'],
DIRECTORY_AUTHORITIES['tor26'],
DIRECTORY_AUTHORITIES['moria1'],
DIRECTORY_AUTHORITIES['maatuska'],
]
directory_values[0].address = '131.188.40.189'
get_authorities_mock().values.return_value = directory_values
entry_with_measurement = get_router_status_entry_v3({'w': 'Bandwidth=1 Measured=1'})
entry_without_measurement = get_router_status_entry_v3()
query1 = Mock()
query1.download_url = 'http://131.188.40.189:80/tor/status-vote/current/authority'
query1.run.return_value = [entry_with_measurement] * 5935 + [entry_without_measurement] * 1332
query2 = Mock()
query2.download_url = 'http://86.59.21.38:80/tor/status-vote/current/authority'
query2.run.return_value = [entry_with_measurement] * 5735 + [entry_without_measurement] * 1690
query3 = Mock()
query3.download_url = 'http://128.31.0.39:9131/tor/status-vote/current/authority'
query3.run.return_value = [entry_with_measurement] * 6647 + [entry_without_measurement] * 625
query4 = Mock()
query4.download_url = 'http://171.25.193.9:443/tor/status-vote/current/authority'
query4.run.return_value = [entry_with_measurement] * 6313 + [entry_without_measurement] * 1112
query_mock.side_effect = [query1, query2, query3, query4]
exec_documentation_example('votes_by_bandwidth_authorities.py')
self.assert_equal_unordered(VOTES_BY_BANDWIDTH_AUTHORITIES_OUTPUT, stdout_mock.getvalue())
示例10: test_examples
def test_examples(self):
"""
Run something similar to the examples in the header pydocs.
"""
# makes a consensus with a couple routers, both with the same nickname
entry1 = get_router_status_entry_v3({'s': 'Fast'})
entry2 = get_router_status_entry_v3({'s': 'Valid'})
content = get_network_status_document_v3(routers = (entry1, entry2), content = True)
# first example: parsing via the NetworkStatusDocumentV3 constructor
consensus_file = io.BytesIO(content)
consensus = NetworkStatusDocumentV3(consensus_file.read())
consensus_file.close()
for router in consensus.routers.values():
self.assertEqual('caerSidi', router.nickname)
# second example: using stem.descriptor.parse_file
with io.BytesIO(content) as consensus_file:
for router in stem.descriptor.parse_file(consensus_file, 'network-status-consensus-3 1.0'):
self.assertEqual('caerSidi', router.nickname)
示例11: test_exit_policy
def test_exit_policy(self):
"""
Handles a variety of 'p' lines.
"""
test_values = {
"reject 1-65535": MicroExitPolicy("reject 1-65535"),
"accept 80,110,143,443": MicroExitPolicy("accept 80,110,143,443"),
}
for p_line, expected in test_values.items():
entry = get_router_status_entry_v3({'p': p_line})
self.assertEquals(expected, entry.exit_policy)
# tries some invalid inputs
test_values = (
"",
"blarg",
"reject -50",
"accept 80,",
)
for p_line in test_values:
content = get_router_status_entry_v3({'p': p_line}, content = True)
self._expect_invalid_attr(content, "exit_policy")
示例12: test_exit_policy
def test_exit_policy(self):
"""
Handles a variety of 'p' lines.
"""
test_values = {
'reject 1-65535': MicroExitPolicy('reject 1-65535'),
'accept 80,110,143,443': MicroExitPolicy('accept 80,110,143,443'),
}
for p_line, expected in test_values.items():
entry = get_router_status_entry_v3({'p': p_line})
self.assertEqual(expected, entry.exit_policy)
# tries some invalid inputs
test_values = (
'',
'blarg',
'reject -50',
'accept 80,',
)
for p_line in test_values:
content = get_router_status_entry_v3({'p': p_line}, content = True)
self._expect_invalid_attr(content, 'exit_policy')
示例13: test_microdescriptor_hashes
def test_microdescriptor_hashes(self):
"""
Handles a variety of 'm' lines.
"""
test_values = {
'8,9,10,11,12':
[([8, 9, 10, 11, 12], {})],
'8,9,10,11,12 sha256=g1vx9si329muxV3tquWIXXySNOIwRGMeAESKs/v4DWs':
[([8, 9, 10, 11, 12], {'sha256': 'g1vx9si329muxV3tquWIXXySNOIwRGMeAESKs/v4DWs'})],
'8,9,10,11,12 sha256=g1vx9si329muxV md5=3tquWIXXySNOIwRGMeAESKs/v4DWs':
[([8, 9, 10, 11, 12], {'sha256': 'g1vx9si329muxV', 'md5': '3tquWIXXySNOIwRGMeAESKs/v4DWs'})],
}
# we need a document that's a vote
mock_document = lambda x: x # just need anything with a __dict__
setattr(mock_document, 'is_vote', True)
setattr(mock_document, 'is_consensus', False)
for m_line, expected in test_values.items():
content = get_router_status_entry_v3({'m': m_line}, content = True)
entry = RouterStatusEntryV3(content, document = mock_document)
self.assertEqual(expected, entry.microdescriptor_hashes)
# try with multiple 'm' lines
content = get_router_status_entry_v3(content = True)
content += b'\nm 11,12 sha256=g1vx9si329muxV3tquWIXXySNOIwRGMeAESKs/v4DWs'
content += b'\nm 31,32 sha512=g1vx9si329muxV3tquWIXXySNOIwRGMeAESKs/v4DWs'
expected = [
([11, 12], {'sha256': 'g1vx9si329muxV3tquWIXXySNOIwRGMeAESKs/v4DWs'}),
([31, 32], {'sha512': 'g1vx9si329muxV3tquWIXXySNOIwRGMeAESKs/v4DWs'}),
]
entry = RouterStatusEntryV3(content, document = mock_document)
self.assertEqual(expected, entry.microdescriptor_hashes)
# try without a document
content = get_router_status_entry_v3({'m': '8,9,10,11,12'}, content = True)
self._expect_invalid_attr(content, 'microdescriptor_hashes', expected_value = [])
# tries some invalid inputs
test_values = (
'',
'4,a,2',
'1,2,3 stuff',
)
for m_line in test_values:
content = get_router_status_entry_v3({'m': m_line}, content = True)
self.assertRaises(ValueError, RouterStatusEntryV3, content, True, mock_document)
示例14: test_microdescriptor_hashes
def test_microdescriptor_hashes(self):
"""
Handles a variety of 'm' lines.
"""
test_values = {
"8,9,10,11,12":
[([8, 9, 10, 11, 12], {})],
"8,9,10,11,12 sha256=g1vx9si329muxV3tquWIXXySNOIwRGMeAESKs/v4DWs":
[([8, 9, 10, 11, 12], {"sha256": "g1vx9si329muxV3tquWIXXySNOIwRGMeAESKs/v4DWs"})],
"8,9,10,11,12 sha256=g1vx9si329muxV md5=3tquWIXXySNOIwRGMeAESKs/v4DWs":
[([8, 9, 10, 11, 12], {"sha256": "g1vx9si329muxV", "md5": "3tquWIXXySNOIwRGMeAESKs/v4DWs"})],
}
# we need a document that's a vote
mock_document = lambda x: x # just need anything with a __dict__
setattr(mock_document, "is_vote", True)
setattr(mock_document, "is_consensus", False)
for m_line, expected in test_values.items():
content = get_router_status_entry_v3({'m': m_line}, content = True)
entry = RouterStatusEntryV3(content, document = mock_document)
self.assertEquals(expected, entry.microdescriptor_hashes)
# try with multiple 'm' lines
content = get_router_status_entry_v3(content = True)
content += b"\nm 11,12 sha256=g1vx9si329muxV3tquWIXXySNOIwRGMeAESKs/v4DWs"
content += b"\nm 31,32 sha512=g1vx9si329muxV3tquWIXXySNOIwRGMeAESKs/v4DWs"
expected = [
([11, 12], {"sha256": "g1vx9si329muxV3tquWIXXySNOIwRGMeAESKs/v4DWs"}),
([31, 32], {"sha512": "g1vx9si329muxV3tquWIXXySNOIwRGMeAESKs/v4DWs"}),
]
entry = RouterStatusEntryV3(content, document = mock_document)
self.assertEquals(expected, entry.microdescriptor_hashes)
# try without a document
content = get_router_status_entry_v3({'m': "8,9,10,11,12"}, content = True)
self._expect_invalid_attr(content, "microdescriptor_hashes", expected_value = [])
# tries some invalid inputs
test_values = (
"",
"4,a,2",
"1,2,3 stuff",
)
for m_line in test_values:
content = get_router_status_entry_v3({'m': m_line}, content = True)
self.assertRaises(ValueError, RouterStatusEntryV3, content, True, mock_document)
示例15: test_missing_fields
def test_missing_fields(self):
"""
Parses a router status entry that's missing fields.
"""
content = get_router_status_entry_v3(exclude = ('r', 's'), content = True)
self._expect_invalid_attr(content, "address")
content = get_router_status_entry_v3(exclude = ('r',), content = True)
self._expect_invalid_attr(content, "address")
content = get_router_status_entry_v3(exclude = ('s',), content = True)
self._expect_invalid_attr(content, "flags")