twisted.pair.test.test_tuntap.TunnelTestsMixin(object)
class documentationtwisted.pair.test.test_tuntap
(View In Hierarchy)
Known subclasses: twisted.pair.test.test_tuntap.TapTests, twisted.pair.test.test_tuntap.TunTests
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_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_startListeningConnectsProtocol | TuntapPort.startListening
calls makeConnection on the protocol the port was initialized
with, passing the port as an argument. |
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_startListeningHandlesOpenFailure | TuntapPort.startListening
raises CannotListenError
if opening the tunnel factory character special device fails. |
Method | test_startListeningHandlesConfigureFailure | TuntapPort.startListening
raises CannotListenError
if the ioctl call to configure the tunnel device fails. |
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_stopListeningStopsProtocol | TuntapPort.stopListening
calls doStop on the protocol the port was initialized
with. |
Method | test_stopListeningWhenStopped | TuntapPort.stopListening
returns a Deferred which
succeeds immediately if it is called when the port is not listening. |
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_loseConnection | TuntapPort.loseConnection
stops the port and is deprecated. |
Method | test_eagainStopsReading | Once TuntapPort.doRead
encounters an EAGAIN 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_eintrblockStopsReading | Once TuntapPort.doRead
encounters an EINTR errno from a read call, it
returns. |
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_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_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_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_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_write | TuntapPort.write
sends a datagram into the tunnel. |
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_unhandledWriteError | Any exception raised by the underlying write call, except for EINTR, is propagated to the caller. |
Method | test_writeSequence | TuntapPort.writeSequence
sends a datagram into the tunnel by concatenating the byte strings in the
list passed to it. |
Method | test_getHost | TuntapPort.getHost
returns a TunnelAddress
including the tunnel's type and name. |
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_unlisteningString | 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 | _tunnelTypeOnly | Mask off any flags except for TunnelType.IFF_TUN and
TunnelType.IFF_TAP . |
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 | Test that TuntapPort.doRead
has no side-effects under a certain exception condition. |
Method | _datagramReceivedException | Deliver some data to a TuntapPort
hooked up to an application protocol that raises an exception from its
datagramReceived method. |
Mask off any flags except for TunnelType.IFF_TUN
and
TunnelType.IFF_TAP
.
Parameters | flags | Flags from TunnelType to mask. (type: FlagConstant ) |
Returns | The flags given by flags except the two type flags. (type: FlagConstant ) |
TuntapPort.startListening
opens the tunnel factory character special device
"/dev/net/tun"
and configures it as a tun
tunnel.
TuntapPort.startListening
sets connected
on the port object to True
.
TuntapPort.startListening
calls makeConnection
on the protocol the port was initialized
with, passing the port as an argument.
TuntapPort.startListening
passes the port instance to the reactor's addReader
method to
begin watching the port's file descriptor for data to read.
TuntapPort.startListening
raises CannotListenError
if opening the tunnel factory character special device fails.
TuntapPort.startListening
raises CannotListenError
if the ioctl
call to configure the tunnel device fails.
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 | The port object to stop. (type: IListeningPort
provider) |
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.
After the Deferred
returned by TuntapPort.stopListening
fires, the connected
attribute of the port object is set to
False
.
TuntapPort.stopListening
calls doStop
on the protocol the port was initialized
with.
TuntapPort.stopListening
returns a Deferred
which
succeeds immediately if it is called when the port is not listening.
It is safe and a no-op to call TuntapPort.stopListening
more than once with no intervening TuntapPort.startListening
call.
Test that L{TuntapPort.doRead} has no side-effects under a certain exception condition. @param style: An exception instance to arrange for the (python wrapper around the) underlying platform I{read} call to fail with. @raise C{self.failureException}: If there are any observable side-effects.
Once TuntapPort.doRead
encounters an EAGAIN errno from a read
call, it
returns.
Once TuntapPort.doRead
encounters an EWOULDBLOCK errno from a read
call, it
returns.
Once TuntapPort.doRead
encounters an EINTR errno from a read
call, it
returns.
If Tuntap.doRead
encounters any exception other than one
explicitly handled by the code, the exception propagates to the caller.
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
).
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.
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.
TuntapPort.doRead
reads several datagrams, of up to TuntapPort.maxThroughput
bytes total, before returning.
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. |
If the protocol's datagramReceived
method raises an
exception, the exception is logged.
The exception raised by datagramReceived
is logged with a
message identifying the offending protocol.
If the platform write call is interrupted (causing the Python wrapper to
raise IOError
with errno set to EINTR
), the write
is re-tried.
Any exception raised by the underlying write call, except for EINTR, is propagated to the caller.
TuntapPort.writeSequence
sends a datagram into the tunnel by concatenating the byte strings in the
list passed to it.
TuntapPort.getHost
returns a TunnelAddress
including the tunnel's type and name.
The string representation of a TuntapPort
instance includes the tunnel type and interface and the protocol associated
with the port.
The string representation of a TuntapPort
instance includes the tunnel type and interface and the protocol associated
with the port.
TuntapPort.logPrefix
returns a string identifying the application protocol and the type of
tunnel.