"""Set of Mocks and stubs for network utilities unit tests.
Implement a set of mocks and stubs use to implement unit tests
for the network libraries.
"""
import socket
from autotest_lib.client.common_lib.test_utils import mock
from autotest_lib.client.bin.net import net_utils
def os_open(*args, **kwarg):
return os_stub('open')
class os_stub(mock.mock_function):
def __init__(self, symbol, **kwargs):
mock.mock_function.__init__(self, symbol, *kwargs)
readval = ""
def open(self, *args, **kwargs):
return self
def read(self, *args, **kwargs):
return os_stub.readval
def netutils_netif(iface):
return netif_stub(iface, 'net_utils', net_utils.netif)
class netif_stub(mock.mock_class):
def __init__(self, iface, cls, name, *args, **kwargs):
mock.mock_class.__init__(self, cls, name, args, *kwargs)
def wait_for_carrier(self, timeout):
return
class socket_stub(mock.mock_class):
"""Class use to mock sockets."""
def __init__(self, iface, cls, name, *args, **kwargs):
mock.mock_class.__init__(self, cls, name, args, *kwargs)
self.recv_val = ''
self.throw_timeout = False
self.send_val = None
self.timeout = None
self.family = None
self.type = None
def close(self):
pass
def socket(self, family, type):
self.family = family
self.type = type
def settimeout(self, timeout):
self.timeout = timeout
return
def send(self, buf):
self.send_val = buf
def recv(self, size):
if self.throw_timeout:
raise socket.timeout
if len(self.recv_val) > size:
return self.recv_val[:size]
return self.recv_val
def bind(self, arg):
pass
class network_interface_mock(net_utils.network_interface):
def __init__(self, iface='some_name', test_init=False):
self._test_init = test_init # test network_interface __init__()
if self._test_init:
super(network_interface_mock, self).__init__(iface)
return
self.ethtool = '/mock/ethtool'
self._name = iface
self.was_down = False
self.orig_ipaddr = '1.2.3.4'
self.was_loopback_enabled = False
self._socket = socket_stub(iface, socket, socket)
self.loopback_enabled = False
self.driver = 'mock_driver'
def is_down(self):
if self._test_init:
return 'is_down'
return super(network_interface_mock, self).is_down()
def get_ipaddr(self):
if self._test_init:
return 'get_ipaddr'
return super(network_interface_mock, self).get_ipaddr()
def is_loopback_enabled(self):
if self._test_init:
return 'is_loopback_enabled'
return self.loopback_enabled
def get_driver(self):
return self.driver
def wait_for_carrier(self, timeout=1):
return