"""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