普通文本  |  61行  |  1.64 KB

# Copyright (c) 2017 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Set of Mocks and Stubs for test SCPI & RF Switch.

Implement a set of Mocks and Stubs which will be used in
unittest for SCPI and RF Switch.
"""

import socket

from autotest_lib.client.common_lib.test_utils import mock
from autotest_lib.server.cros.network.rf_switch import rf_switch
from autotest_lib.server.cros.network.rf_switch import scpi


class SocketMock(mock.mock_class):
    """Mock socket for scpi test."""

    def __init__(self, cls, name, *args, **kwargs):
        mock.mock_class.__init__(self, cls, name, *args, **kwargs)
        self.host = None
        self.port = None
        self.recv_buffer = ''
        self.send_data = ''

    def close(self):
        pass

    def connect(self, host, port):
        self.host = host
        self.port = port

    def send(self, data):
        self.send_data = data

    def recv(self, size):
        if len(self.recv_val) > size:
            return self.recv_val[:size]
        return self.recv_val


class ScpiMock(scpi.Scpi):
    """Mock object for Scpi."""

    def __init__(self, host='1.2.3.4', port=12345, test_interface=False):
        if test_interface:
            self.socket = SocketMock(socket, socket)
            self.socket.connect(host, port)
        else:
            scpi.Scpi.__init__(self, host, port)


class RfSwitchMock(rf_switch.RfSwitch):
    """Mock object for RfSwitch."""

    def __init__(self, host='1.2.3.4'):
        self.socket = SocketMock(socket, socket)
        self.socket.connect(host, scpi.Scpi.SCPI_PORT)