本文整理汇总了Python中txtorcon.TorState._add_events方法的典型用法代码示例。如果您正苦于以下问题:Python TorState._add_events方法的具体用法?Python TorState._add_events怎么用?Python TorState._add_events使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类txtorcon.TorState
的用法示例。
在下文中一共展示了TorState._add_events方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: TorStatePy3Tests
# 需要导入模块: from txtorcon import TorState [as 别名]
# 或者: from txtorcon.TorState import _add_events [as 别名]
class TorStatePy3Tests(unittest.TestCase):
def setUp(self):
self.protocol = TorControlProtocol()
self.state = TorState(self.protocol)
# avoid spew in trial logs; state prints this by default
self.state._attacher_error = lambda f: f
self.protocol.connectionMade = lambda: None
self.transport = proto_helpers.StringTransport()
self.protocol.makeConnection(self.transport)
def send(self, line):
self.protocol.dataReceived(line.strip() + b"\r\n")
def test_attacher_coroutine(self):
@implementer(IStreamAttacher)
class MyAttacher(object):
def __init__(self, answer):
self.streams = []
self.answer = answer
async def attach_stream(self, stream, circuits):
self.streams.append(stream)
x = await defer.succeed(self.answer)
return x
self.state.circuits[1] = FakeCircuit(1)
self.state.circuits[1].state = 'BUILT'
attacher = MyAttacher(self.state.circuits[1])
self.state.set_attacher(attacher, FakeReactor(self))
# boilerplate to finish enough set-up in the protocol so it
# works
events = 'GUARD STREAM CIRC NS NEWCONSENSUS ORCONN NEWDESC ADDRMAP STATUS_GENERAL'
self.protocol._set_valid_events(events)
self.state._add_events()
for ignored in self.state.event_map.items():
self.send(b"250 OK")
self.send(b"650 STREAM 1 NEW 0 ca.yahoo.com:80 SOURCE_ADDR=127.0.0.1:54327 PURPOSE=USER")
self.send(b"650 STREAM 1 REMAP 0 87.248.112.181:80 SOURCE=CACHE")
self.assertEqual(len(attacher.streams), 1)
self.assertEqual(attacher.streams[0].id, 1)
self.assertEqual(len(self.protocol.commands), 1)
self.assertEqual(self.protocol.commands[0][1], b'ATTACHSTREAM 1 1')
示例2: StateTests
# 需要导入模块: from txtorcon import TorState [as 别名]
# 或者: from txtorcon.TorState import _add_events [as 别名]
#.........这里部分代码省略.........
return d
def test_unset_attacher(self):
class MyAttacher(object):
implements(IStreamAttacher)
def attach_stream(self, stream, circuits):
return None
fr = FakeReactor(self)
self.state.set_attacher(MyAttacher(), fr)
self.send("250 OK")
self.state.set_attacher(None, fr)
self.send("250 OK")
self.assertEqual(self.transport.value(), 'SETCONF __LeaveStreamsUnattached=1\r\nSETCONF __LeaveStreamsUnattached=0\r\n')
def test_attacher(self):
class MyAttacher(object):
implements(IStreamAttacher)
def __init__(self):
self.streams = []
self.answer = None
def attach_stream(self, stream, circuits):
self.streams.append(stream)
return self.answer
attacher = MyAttacher()
self.state.set_attacher(attacher, FakeReactor(self))
events = 'GUARD STREAM CIRC NS NEWCONSENSUS ORCONN NEWDESC ADDRMAP STATUS_GENERAL'
self.protocol._set_valid_events(events)
self.state._add_events()
for ignored in self.state.event_map.items():
self.send("250 OK")
self.send("650 STREAM 1 NEW 0 ca.yahoo.com:80 SOURCE_ADDR=127.0.0.1:54327 PURPOSE=USER")
self.send("650 STREAM 1 REMAP 0 87.248.112.181:80 SOURCE=CACHE")
self.assertEqual(len(attacher.streams), 1)
self.assertEqual(attacher.streams[0].id, 1)
self.assertEqual(len(self.protocol.commands), 1)
self.assertEqual(self.protocol.commands[0][1], 'ATTACHSTREAM 1 0')
# we should totally ignore .exit URIs
attacher.streams = []
self.send("650 STREAM 2 NEW 0 10.0.0.0.$E11D2B2269CC25E67CA6C9FB5843497539A74FD0.exit:80 SOURCE_ADDR=127.0.0.1:12345 PURPOSE=TIME")
self.assertEqual(len(attacher.streams), 0)
self.assertEqual(len(self.protocol.commands), 1)
# we should NOT ignore .onion URIs
attacher.streams = []
self.send("650 STREAM 3 NEW 0 xxxxxxxxxxxxxxxx.onion:80 SOURCE_ADDR=127.0.0.1:12345 PURPOSE=TIME")
self.assertEqual(len(attacher.streams), 1)
self.assertEqual(len(self.protocol.commands), 2)
self.assertEqual(self.protocol.commands[1][1], 'ATTACHSTREAM 3 0')
# normal attach
circ = FakeCircuit(1)
circ.state = 'BUILT'
self.state.circuits[1] = circ
attacher.answer = circ
self.send("650 STREAM 4 NEW 0 xxxxxxxxxxxxxxxx.onion:80 SOURCE_ADDR=127.0.0.1:12345 PURPOSE=TIME")
self.assertEqual(len(attacher.streams), 2)
self.assertEqual(len(self.protocol.commands), 3)
self.assertEqual(self.protocol.commands[2][1], 'ATTACHSTREAM 4 1')