aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/test/proto_helpers.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/test/proto_helpers.py')
-rwxr-xr-xlib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/test/proto_helpers.py567
1 files changed, 0 insertions, 567 deletions
diff --git a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/test/proto_helpers.py b/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/test/proto_helpers.py
deleted file mode 100755
index dd043276..00000000
--- a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/test/proto_helpers.py
+++ /dev/null
@@ -1,567 +0,0 @@
-# -*- test-case-name: twisted.test.test_stringtransport -*-
-# Copyright (c) Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-"""
-Assorted functionality which is commonly useful when writing unit tests.
-"""
-
-from socket import AF_INET, AF_INET6
-from StringIO import StringIO
-
-from zope.interface import implements
-
-from twisted.internet.interfaces import (
- ITransport, IConsumer, IPushProducer, IConnector)
-from twisted.internet.interfaces import (
- IReactorTCP, IReactorSSL, IReactorUNIX, IReactorSocket)
-from twisted.internet.interfaces import IListeningPort
-from twisted.internet.abstract import isIPv6Address
-from twisted.internet.error import UnsupportedAddressFamily
-from twisted.protocols import basic
-from twisted.internet import protocol, error, address
-
-from twisted.internet.address import IPv4Address, UNIXAddress, IPv6Address
-
-
-class AccumulatingProtocol(protocol.Protocol):
- """
- L{AccumulatingProtocol} is an L{IProtocol} implementation which collects
- the data delivered to it and can fire a Deferred when it is connected or
- disconnected.
-
- @ivar made: A flag indicating whether C{connectionMade} has been called.
- @ivar data: A string giving all the data passed to C{dataReceived}.
- @ivar closed: A flag indicated whether C{connectionLost} has been called.
- @ivar closedReason: The value of the I{reason} parameter passed to
- C{connectionLost}.
- @ivar closedDeferred: If set to a L{Deferred}, this will be fired when
- C{connectionLost} is called.
- """
- made = closed = 0
- closedReason = None
-
- closedDeferred = None
-
- data = ""
-
- factory = None
-
- def connectionMade(self):
- self.made = 1
- if (self.factory is not None and
- self.factory.protocolConnectionMade is not None):
- d = self.factory.protocolConnectionMade
- self.factory.protocolConnectionMade = None
- d.callback(self)
-
- def dataReceived(self, data):
- self.data += data
-
- def connectionLost(self, reason):
- self.closed = 1
- self.closedReason = reason
- if self.closedDeferred is not None:
- d, self.closedDeferred = self.closedDeferred, None
- d.callback(None)
-
-
-class LineSendingProtocol(basic.LineReceiver):
- lostConn = False
-
- def __init__(self, lines, start = True):
- self.lines = lines[:]
- self.response = []
- self.start = start
-
- def connectionMade(self):
- if self.start:
- map(self.sendLine, self.lines)
-
- def lineReceived(self, line):
- if not self.start:
- map(self.sendLine, self.lines)
- self.lines = []
- self.response.append(line)
-
- def connectionLost(self, reason):
- self.lostConn = True
-
-
-class FakeDatagramTransport:
- noAddr = object()
-
- def __init__(self):
- self.written = []
-
- def write(self, packet, addr=noAddr):
- self.written.append((packet, addr))
-
-
-class StringTransport:
- """
- A transport implementation which buffers data in memory and keeps track of
- its other state without providing any behavior.
-
- L{StringTransport} has a number of attributes which are not part of any of
- the interfaces it claims to implement. These attributes are provided for
- testing purposes. Implementation code should not use any of these
- attributes; they are not provided by other transports.
-
- @ivar disconnecting: A C{bool} which is C{False} until L{loseConnection} is
- called, then C{True}.
-
- @ivar producer: If a producer is currently registered, C{producer} is a
- reference to it. Otherwise, C{None}.
-
- @ivar streaming: If a producer is currently registered, C{streaming} refers
- to the value of the second parameter passed to C{registerProducer}.
-
- @ivar hostAddr: C{None} or an object which will be returned as the host
- address of this transport. If C{None}, a nasty tuple will be returned
- instead.
-
- @ivar peerAddr: C{None} or an object which will be returned as the peer
- address of this transport. If C{None}, a nasty tuple will be returned
- instead.
-
- @ivar producerState: The state of this L{StringTransport} in its capacity
- as an L{IPushProducer}. One of C{'producing'}, C{'paused'}, or
- C{'stopped'}.
-
- @ivar io: A L{StringIO} which holds the data which has been written to this
- transport since the last call to L{clear}. Use L{value} instead of
- accessing this directly.
- """
- implements(ITransport, IConsumer, IPushProducer)
-
- disconnecting = False
-
- producer = None
- streaming = None
-
- hostAddr = None
- peerAddr = None
-
- producerState = 'producing'
-
- def __init__(self, hostAddress=None, peerAddress=None):
- self.clear()
- if hostAddress is not None:
- self.hostAddr = hostAddress
- if peerAddress is not None:
- self.peerAddr = peerAddress
- self.connected = True
-
- def clear(self):
- """
- Discard all data written to this transport so far.
-
- This is not a transport method. It is intended for tests. Do not use
- it in implementation code.
- """
- self.io = StringIO()
-
-
- def value(self):
- """
- Retrieve all data which has been buffered by this transport.
-
- This is not a transport method. It is intended for tests. Do not use
- it in implementation code.
-
- @return: A C{str} giving all data written to this transport since the
- last call to L{clear}.
- @rtype: C{str}
- """
- return self.io.getvalue()
-
-
- # ITransport
- def write(self, data):
- if isinstance(data, unicode): # no, really, I mean it
- raise TypeError("Data must not be unicode")
- self.io.write(data)
-
-
- def writeSequence(self, data):
- self.io.write(''.join(data))
-
-
- def loseConnection(self):
- """
- Close the connection. Does nothing besides toggle the C{disconnecting}
- instance variable to C{True}.
- """
- self.disconnecting = True
-
-
- def getPeer(self):
- if self.peerAddr is None:
- return address.IPv4Address('TCP', '192.168.1.1', 54321)
- return self.peerAddr
-
-
- def getHost(self):
- if self.hostAddr is None:
- return address.IPv4Address('TCP', '10.0.0.1', 12345)
- return self.hostAddr
-
-
- # IConsumer
- def registerProducer(self, producer, streaming):
- if self.producer is not None:
- raise RuntimeError("Cannot register two producers")
- self.producer = producer
- self.streaming = streaming
-
-
- def unregisterProducer(self):
- if self.producer is None:
- raise RuntimeError(
- "Cannot unregister a producer unless one is registered")
- self.producer = None
- self.streaming = None
-
-
- # IPushProducer
- def _checkState(self):
- if self.disconnecting:
- raise RuntimeError(
- "Cannot resume producing after loseConnection")
- if self.producerState == 'stopped':
- raise RuntimeError("Cannot resume a stopped producer")
-
-
- def pauseProducing(self):
- self._checkState()
- self.producerState = 'paused'
-
-
- def stopProducing(self):
- self.producerState = 'stopped'
-
-
- def resumeProducing(self):
- self._checkState()
- self.producerState = 'producing'
-
-
-
-class StringTransportWithDisconnection(StringTransport):
- def loseConnection(self):
- if self.connected:
- self.connected = False
- self.protocol.connectionLost(error.ConnectionDone("Bye."))
-
-
-
-class StringIOWithoutClosing(StringIO):
- """
- A StringIO that can't be closed.
- """
- def close(self):
- """
- Do nothing.
- """
-
-
-
-class _FakePort(object):
- """
- A fake L{IListeningPort} to be used in tests.
-
- @ivar _hostAddress: The L{IAddress} this L{IListeningPort} is pretending
- to be listening on.
- """
- implements(IListeningPort)
-
- def __init__(self, hostAddress):
- """
- @param hostAddress: An L{IAddress} this L{IListeningPort} should
- pretend to be listening on.
- """
- self._hostAddress = hostAddress
-
-
- def startListening(self):
- """
- Fake L{IListeningPort.startListening} that doesn't do anything.
- """
-
-
- def stopListening(self):
- """
- Fake L{IListeningPort.stopListening} that doesn't do anything.
- """
-
-
- def getHost(self):
- """
- Fake L{IListeningPort.getHost} that returns our L{IAddress}.
- """
- return self._hostAddress
-
-
-
-class _FakeConnector(object):
- """
- A fake L{IConnector} that allows us to inspect if it has been told to stop
- connecting.
-
- @ivar stoppedConnecting: has this connector's
- L{FakeConnector.stopConnecting} method been invoked yet?
-
- @ivar _address: An L{IAddress} provider that represents our destination.
- """
- implements(IConnector)
-
- stoppedConnecting = False
-
- def __init__(self, address):
- """
- @param address: An L{IAddress} provider that represents this
- connector's destination.
- """
- self._address = address
-
-
- def stopConnecting(self):
- """
- Implement L{IConnector.stopConnecting} and set
- L{FakeConnector.stoppedConnecting} to C{True}
- """
- self.stoppedConnecting = True
-
-
- def disconnect(self):
- """
- Implement L{IConnector.disconnect} as a no-op.
- """
-
-
- def connect(self):
- """
- Implement L{IConnector.connect} as a no-op.
- """
-
-
- def getDestination(self):
- """
- Implement L{IConnector.getDestination} to return the C{address} passed
- to C{__init__}.
- """
- return self._address
-
-
-
-class MemoryReactor(object):
- """
- A fake reactor to be used in tests. This reactor doesn't actually do
- much that's useful yet. It accepts TCP connection setup attempts, but
- they will never succeed.
-
- @ivar tcpClients: a list that keeps track of connection attempts (ie, calls
- to C{connectTCP}).
- @type tcpClients: C{list}
-
- @ivar tcpServers: a list that keeps track of server listen attempts (ie, calls
- to C{listenTCP}).
- @type tcpServers: C{list}
-
- @ivar sslClients: a list that keeps track of connection attempts (ie,
- calls to C{connectSSL}).
- @type sslClients: C{list}
-
- @ivar sslServers: a list that keeps track of server listen attempts (ie,
- calls to C{listenSSL}).
- @type sslServers: C{list}
-
- @ivar unixClients: a list that keeps track of connection attempts (ie,
- calls to C{connectUNIX}).
- @type unixClients: C{list}
-
- @ivar unixServers: a list that keeps track of server listen attempts (ie,
- calls to C{listenUNIX}).
- @type unixServers: C{list}
-
- @ivar adoptedPorts: a list that keeps track of server listen attempts (ie,
- calls to C{adoptStreamPort}).
- """
- implements(IReactorTCP, IReactorSSL, IReactorUNIX, IReactorSocket)
-
- def __init__(self):
- """
- Initialize the tracking lists.
- """
- self.tcpClients = []
- self.tcpServers = []
- self.sslClients = []
- self.sslServers = []
- self.unixClients = []
- self.unixServers = []
- self.adoptedPorts = []
-
-
- def adoptStreamPort(self, fileno, addressFamily, factory):
- """
- Fake L{IReactorSocket.adoptStreamPort}, that logs the call and returns
- an L{IListeningPort}.
- """
- if addressFamily == AF_INET:
- addr = IPv4Address('TCP', '0.0.0.0', 1234)
- elif addressFamily == AF_INET6:
- addr = IPv6Address('TCP', '::', 1234)
- else:
- raise UnsupportedAddressFamily()
-
- self.adoptedPorts.append((fileno, addressFamily, factory))
- return _FakePort(addr)
-
-
- def listenTCP(self, port, factory, backlog=50, interface=''):
- """
- Fake L{reactor.listenTCP}, that logs the call and returns an
- L{IListeningPort}.
- """
- self.tcpServers.append((port, factory, backlog, interface))
- if isIPv6Address(interface):
- address = IPv6Address('TCP', interface, port)
- else:
- address = IPv4Address('TCP', '0.0.0.0', port)
- return _FakePort(address)
-
-
- def connectTCP(self, host, port, factory, timeout=30, bindAddress=None):
- """
- Fake L{reactor.connectTCP}, that logs the call and returns an
- L{IConnector}.
- """
- self.tcpClients.append((host, port, factory, timeout, bindAddress))
- if isIPv6Address(host):
- conn = _FakeConnector(IPv6Address('TCP', host, port))
- else:
- conn = _FakeConnector(IPv4Address('TCP', host, port))
- factory.startedConnecting(conn)
- return conn
-
-
- def listenSSL(self, port, factory, contextFactory,
- backlog=50, interface=''):
- """
- Fake L{reactor.listenSSL}, that logs the call and returns an
- L{IListeningPort}.
- """
- self.sslServers.append((port, factory, contextFactory,
- backlog, interface))
- return _FakePort(IPv4Address('TCP', '0.0.0.0', port))
-
-
- def connectSSL(self, host, port, factory, contextFactory,
- timeout=30, bindAddress=None):
- """
- Fake L{reactor.connectSSL}, that logs the call and returns an
- L{IConnector}.
- """
- self.sslClients.append((host, port, factory, contextFactory,
- timeout, bindAddress))
- conn = _FakeConnector(IPv4Address('TCP', host, port))
- factory.startedConnecting(conn)
- return conn
-
-
- def listenUNIX(self, address, factory,
- backlog=50, mode=0666, wantPID=0):
- """
- Fake L{reactor.listenUNIX}, that logs the call and returns an
- L{IListeningPort}.
- """
- self.unixServers.append((address, factory, backlog, mode, wantPID))
- return _FakePort(UNIXAddress(address))
-
-
- def connectUNIX(self, address, factory, timeout=30, checkPID=0):
- """
- Fake L{reactor.connectUNIX}, that logs the call and returns an
- L{IConnector}.
- """
- self.unixClients.append((address, factory, timeout, checkPID))
- conn = _FakeConnector(UNIXAddress(address))
- factory.startedConnecting(conn)
- return conn
-
-
-
-class RaisingMemoryReactor(object):
- """
- A fake reactor to be used in tests. It accepts TCP connection setup
- attempts, but they will fail.
-
- @ivar _listenException: An instance of an L{Exception}
- @ivar _connectException: An instance of an L{Exception}
- """
- implements(IReactorTCP, IReactorSSL, IReactorUNIX, IReactorSocket)
-
- def __init__(self, listenException=None, connectException=None):
- """
- @param listenException: An instance of an L{Exception} to raise when any
- C{listen} method is called.
-
- @param connectException: An instance of an L{Exception} to raise when
- any C{connect} method is called.
- """
- self._listenException = listenException
- self._connectException = connectException
-
-
- def adoptStreamPort(self, fileno, addressFamily, factory):
- """
- Fake L{IReactorSocket.adoptStreamPort}, that raises
- L{self._listenException}.
- """
- raise self._listenException
-
-
- def listenTCP(self, port, factory, backlog=50, interface=''):
- """
- Fake L{reactor.listenTCP}, that raises L{self._listenException}.
- """
- raise self._listenException
-
-
- def connectTCP(self, host, port, factory, timeout=30, bindAddress=None):
- """
- Fake L{reactor.connectTCP}, that raises L{self._connectException}.
- """
- raise self._connectException
-
-
- def listenSSL(self, port, factory, contextFactory,
- backlog=50, interface=''):
- """
- Fake L{reactor.listenSSL}, that raises L{self._listenException}.
- """
- raise self._listenException
-
-
- def connectSSL(self, host, port, factory, contextFactory,
- timeout=30, bindAddress=None):
- """
- Fake L{reactor.connectSSL}, that raises L{self._connectException}.
- """
- raise self._connectException
-
-
- def listenUNIX(self, address, factory,
- backlog=50, mode=0666, wantPID=0):
- """
- Fake L{reactor.listenUNIX}, that raises L{self._listenException}.
- """
- raise self._listenException
-
-
- def connectUNIX(self, address, factory, timeout=30, checkPID=0):
- """
- Fake L{reactor.connectUNIX}, that raises L{self._connectException}.
- """
- raise self._connectException