class documentation

A mixin defining tests for TuntapPort.

These tests run against MemoryIOSystem (proven equivalent to the real thing by the tests above) to avoid performing any real I/O.

Method setUp Create an in-memory I/O system and set up a TuntapPort against it.
Method test_datagramReceivedException If the protocol's datagramReceived method raises an exception, the exception is logged.
Method test_datagramReceivedExceptionIdentifiesProtocol The exception raised by datagramReceived is logged with a message identifying the offending protocol.
Method test_doReadLargeDatagram TuntapPort.doRead reads the first part of a datagram of more than TuntapPort.maxPacketSize from the port's file descriptor and passes the truncated data to its protocol's datagramReceived method.
Method test_doReadSeveralDatagrams TuntapPort.doRead reads several datagrams, of up to TuntapPort.maxThroughput bytes total, before returning.
Method test_doReadSmallDatagram TuntapPort.doRead reads a datagram of fewer than TuntapPort.maxPacketSize from the port's file descriptor and passes it to its protocol's datagramReceived method.
Method test_eagainStopsReading Once TuntapPort.doRead encounters an EAGAIN errno from a read call, it returns.
Method test_eintrblockStopsReading Once TuntapPort.doRead encounters an EINTR errno from a read call, it returns.
Method test_ewouldblockStopsReading Once TuntapPort.doRead encounters an EWOULDBLOCK errno from a read call, it returns.
Method test_getHost TuntapPort.getHost returns a TunnelAddress including the tunnel's type and name.
Method test_interruptedWrite If the platform write call is interrupted (causing the Python wrapper to raise IOError with errno set to EINTR), the write is re-tried.
Method test_listeningString The string representation of a TuntapPort instance includes the tunnel type and interface and the protocol associated with the port.
Method test_logPrefix TuntapPort.logPrefix returns a string identifying the application protocol and the type of tunnel.
Method test_loseConnection TuntapPort.loseConnection stops the port and is deprecated.
Method test_multipleStopListening It is safe and a no-op to call TuntapPort.stopListening more than once with no intervening TuntapPort.startListening call.
Method test_startListeningConnectsProtocol TuntapPort.startListening calls makeConnection on the protocol the port was initialized with, passing the port as an argument.
Method test_startListeningHandlesConfigureFailure TuntapPort.startListening raises CannotListenError if the ioctl call to configure the tunnel device fails.
Method test_startListeningHandlesOpenFailure TuntapPort.startListening raises CannotListenError if opening the tunnel factory character special device fails.
Method test_startListeningOpensDevice TuntapPort.startListening opens the tunnel factory character special device "/dev/net/tun" and configures it as a tun tunnel.
Method test_startListeningSetsConnected TuntapPort.startListening sets connected on the port object to True.
Method test_startListeningStartsReading TuntapPort.startListening passes the port instance to the reactor's addReader method to begin watching the port's file descriptor for data to read.
Method test_stopListeningStopsProtocol TuntapPort.stopListening calls doStop on the protocol the port was initialized with.
Method test_stopListeningStopsReading TuntapPort.stopListening returns a Deferred which fires after the port has been removed from the reactor's reader list by passing it to the reactor's removeReader method.
Method test_stopListeningUnsetsConnected After the Deferred returned by TuntapPort.stopListening fires, the connected attribute of the port object is set to False.
Method test_stopListeningWhenStopped TuntapPort.stopListening returns a Deferred which succeeds immediately if it is called when the port is not listening.
Method test_unhandledEnvironmentReadError Just like test_unhandledReadError, but for the case where the exception that is not explicitly handled happens to be of type EnvironmentError (OSError or IOError).
Method test_unhandledReadError If Tuntap.doRead encounters any exception other than one explicitly handled by the code, the exception propagates to the caller.
Method test_unhandledWriteError Any exception raised by the underlying write call, except for EINTR, is propagated to the caller.
Method test_unlisteningString The string representation of a TuntapPort instance includes the tunnel type and interface and the protocol associated with the port.
Method test_write TuntapPort.write sends a datagram into the tunnel.
Method test_writeSequence TuntapPort.writeSequence sends a datagram into the tunnel by concatenating the byte strings in the list passed to it.
Instance Variable name Undocumented
Instance Variable port Undocumented
Instance Variable protocol Undocumented
Instance Variable reactor Undocumented
Instance Variable system Undocumented
Method _datagramReceivedException Deliver some data to a TuntapPort hooked up to an application protocol that raises an exception from its datagramReceived method.
Method _stopPort Verify that the stopListening method of an IListeningPort removes that port from the reactor's "readers" set and also that the Deferred returned by that method fires with None.
Method _stopsReadingTest No summary
Method _tunnelTypeOnly Mask off any flags except for TunnelType.IFF_TUN and TunnelType.IFF_TAP.
def setUp(self): (source)

Create an in-memory I/O system and set up a TuntapPort against it.

def test_datagramReceivedException(self): (source)

If the protocol's datagramReceived method raises an exception, the exception is logged.

def test_datagramReceivedExceptionIdentifiesProtocol(self): (source)

The exception raised by datagramReceived is logged with a message identifying the offending protocol.

def test_doReadLargeDatagram(self): (source)

TuntapPort.doRead reads the first part of a datagram of more than TuntapPort.maxPacketSize from the port's file descriptor and passes the truncated data to its protocol's datagramReceived method.

def test_doReadSeveralDatagrams(self): (source)

TuntapPort.doRead reads several datagrams, of up to TuntapPort.maxThroughput bytes total, before returning.

def test_doReadSmallDatagram(self): (source)

TuntapPort.doRead reads a datagram of fewer than TuntapPort.maxPacketSize from the port's file descriptor and passes it to its protocol's datagramReceived method.

def test_eagainStopsReading(self): (source)

Once TuntapPort.doRead encounters an EAGAIN errno from a read call, it returns.

def test_eintrblockStopsReading(self): (source)

Once TuntapPort.doRead encounters an EINTR errno from a read call, it returns.

def test_ewouldblockStopsReading(self): (source)

Once TuntapPort.doRead encounters an EWOULDBLOCK errno from a read call, it returns.

def test_getHost(self): (source)

TuntapPort.getHost returns a TunnelAddress including the tunnel's type and name.

def test_interruptedWrite(self): (source)

If the platform write call is interrupted (causing the Python wrapper to raise IOError with errno set to EINTR), the write is re-tried.

def test_listeningString(self): (source)

The string representation of a TuntapPort instance includes the tunnel type and interface and the protocol associated with the port.

def test_logPrefix(self): (source)

TuntapPort.logPrefix returns a string identifying the application protocol and the type of tunnel.

def test_loseConnection(self): (source)

TuntapPort.loseConnection stops the port and is deprecated.

def test_multipleStopListening(self): (source)

It is safe and a no-op to call TuntapPort.stopListening more than once with no intervening TuntapPort.startListening call.

def test_startListeningConnectsProtocol(self): (source)

TuntapPort.startListening calls makeConnection on the protocol the port was initialized with, passing the port as an argument.

def test_startListeningHandlesConfigureFailure(self): (source)

TuntapPort.startListening raises CannotListenError if the ioctl call to configure the tunnel device fails.

def test_startListeningHandlesOpenFailure(self): (source)

TuntapPort.startListening raises CannotListenError if opening the tunnel factory character special device fails.

def test_startListeningOpensDevice(self): (source)

TuntapPort.startListening opens the tunnel factory character special device "/dev/net/tun" and configures it as a tun tunnel.

def test_startListeningSetsConnected(self): (source)

TuntapPort.startListening sets connected on the port object to True.

def test_startListeningStartsReading(self): (source)

TuntapPort.startListening passes the port instance to the reactor's addReader method to begin watching the port's file descriptor for data to read.

def test_stopListeningStopsProtocol(self): (source)

TuntapPort.stopListening calls doStop on the protocol the port was initialized with.

def test_stopListeningStopsReading(self): (source)

TuntapPort.stopListening returns a Deferred which fires after the port has been removed from the reactor's reader list by passing it to the reactor's removeReader method.

def test_stopListeningUnsetsConnected(self): (source)

After the Deferred returned by TuntapPort.stopListening fires, the connected attribute of the port object is set to False.

def test_stopListeningWhenStopped(self): (source)

TuntapPort.stopListening returns a Deferred which succeeds immediately if it is called when the port is not listening.

def test_unhandledEnvironmentReadError(self): (source)

Just like test_unhandledReadError, but for the case where the exception that is not explicitly handled happens to be of type EnvironmentError (OSError or IOError).

def test_unhandledReadError(self): (source)

If Tuntap.doRead encounters any exception other than one explicitly handled by the code, the exception propagates to the caller.

def test_unhandledWriteError(self): (source)

Any exception raised by the underlying write call, except for EINTR, is propagated to the caller.

def test_unlisteningString(self): (source)

The string representation of a TuntapPort instance includes the tunnel type and interface and the protocol associated with the port.

def test_write(self): (source)

TuntapPort.write sends a datagram into the tunnel.

def test_writeSequence(self): (source)

TuntapPort.writeSequence sends a datagram into the tunnel by concatenating the byte strings in the list passed to it.

Undocumented

Undocumented

protocol = (source)

Undocumented

Undocumented

Undocumented

def _datagramReceivedException(self): (source)

Deliver some data to a TuntapPort hooked up to an application protocol that raises an exception from its datagramReceived method.

Returns
Whatever AttributeError exceptions are logged.
def _stopPort(self, port): (source)

Verify that the stopListening method of an IListeningPort removes that port from the reactor's "readers" set and also that the Deferred returned by that method fires with None.

Parameters
port:IListeningPort providerThe port object to stop.
def _stopsReadingTest(self, style): (source)
def _tunnelTypeOnly(self, flags): (source)

Mask off any flags except for TunnelType.IFF_TUN and TunnelType.IFF_TAP.

Parameters
flags:FlagConstantFlags from TunnelType to mask.
Returns
FlagConstantThe flags given by flags except the two type flags.