class TunnelTestsMixin: (source)
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 | set |
Create an in-memory I/O system and set up a TuntapPort against it. |
Method | test_datagram |
If the protocol's datagramReceived method raises an exception, the exception is logged. |
Method | test_datagram |
The exception raised by datagramReceived is logged with a message identifying the offending protocol. |
Method | test_do |
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_do |
TuntapPort.doRead reads several datagrams, of up to TuntapPort.maxThroughput bytes total, before returning. |
Method | test_do |
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_eagain |
Once TuntapPort.doRead encounters an EAGAIN errno from a read call, it returns. |
Method | test_eintrblock |
Once TuntapPort.doRead encounters an EINTR errno from a read call, it returns. |
Method | test_ewouldblock |
Once TuntapPort.doRead encounters an EWOULDBLOCK errno from a read call, it returns. |
Method | test_get |
TuntapPort.getHost returns a TunnelAddress including the tunnel's type and name. |
Method | test_interrupted |
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_listening |
The string representation of a TuntapPort instance includes the tunnel type and interface and the protocol associated with the port. |
Method | test_log |
TuntapPort.logPrefix returns a string identifying the application protocol and the type of tunnel. |
Method | test_lose |
TuntapPort.loseConnection stops the port and is deprecated. |
Method | test_multiple |
It is safe and a no-op to call TuntapPort.stopListening more than once with no intervening TuntapPort.startListening call. |
Method | test_start |
TuntapPort.startListening calls makeConnection on the protocol the port was initialized with, passing the port as an argument. |
Method | test_start |
TuntapPort.startListening raises CannotListenError if the ioctl call to configure the tunnel device fails. |
Method | test_start |
TuntapPort.startListening raises CannotListenError if opening the tunnel factory character special device fails. |
Method | test_start |
TuntapPort.startListening opens the tunnel factory character special device "/dev/net/tun" and configures it as a tun tunnel. |
Method | test_start |
TuntapPort.startListening sets connected on the port object to True. |
Method | test_start |
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_stop |
TuntapPort.stopListening calls doStop on the protocol the port was initialized with. |
Method | test_stop |
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_stop |
After the Deferred returned by TuntapPort.stopListening fires, the connected attribute of the port object is set to False. |
Method | test_stop |
TuntapPort.stopListening returns a Deferred which succeeds immediately if it is called when the port is not listening. |
Method | test_unhandled |
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_unhandled |
If Tuntap.doRead encounters any exception other than one explicitly handled by the code, the exception propagates to the caller. |
Method | test_unhandled |
Any exception raised by the underlying write call, except for EINTR, is propagated to the caller. |
Method | test_unlistening |
The string representation of a TuntapPort instance includes the tunnel type and interface and the protocol associated with the port. |
Method | test |
TuntapPort.write sends a datagram into the tunnel. |
Method | test_write |
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 | _datagram |
Deliver some data to a TuntapPort hooked up to an application protocol that raises an exception from its datagramReceived method. |
Method | _stop |
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 | _stops |
No summary |
Method | _tunnel |
Mask off any flags except for TunnelType.IFF_TUN and TunnelType.IFF_TAP . |
The exception raised by datagramReceived is logged with a message identifying the offending protocol.
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.
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.
If the platform write call is interrupted (causing the Python wrapper to raise IOError with errno set to EINTR), the write is re-tried.
The string representation of a TuntapPort
instance includes the tunnel type and interface and the protocol associated with the port.
It is safe and a no-op to call TuntapPort.stopListening
more than once with no intervening TuntapPort.startListening
call.
TuntapPort.startListening
calls makeConnection on the protocol the port was initialized with, passing the port as an argument.
TuntapPort.startListening
raises CannotListenError
if the ioctl call to configure the tunnel device fails.
TuntapPort.startListening
raises CannotListenError
if opening the tunnel factory character special device fails.
TuntapPort.startListening
opens the tunnel factory character special device "/dev/net/tun" and configures it as a tun tunnel.
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.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
returns a Deferred
which succeeds immediately if it is called when the port is not listening.
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).
If Tuntap.doRead
encounters any exception other than one explicitly handled by the code, the exception propagates to the caller.
The string representation of a TuntapPort
instance includes the tunnel type and interface and the protocol associated with the port.
TuntapPort.writeSequence
sends a datagram into the tunnel by concatenating the byte strings in the list passed to it.
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. |
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 provider | The port object to stop. |