# Copyright 2015 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.
import logging
import common
from autotest_lib.client.cros.cellular.mbim_compliance \
import mbim_device_context
from autotest_lib.client.cros.cellular.mbim_compliance import mbim_errors
class MbimTestBase(object):
"""
Base class for all MBIM Compliance Suite tests.
This class contains boilerplate code and utility functions for MBIM
Compliance Suite. A brief description of non-trivial facilities follows.
Test initialization: populates the following members:
- device_context: An MBIMTestContext. This class finds the relevant MBIM
device on the DUT and stashes that in this context.
Utility functions: None yet.
"""
def run_test(self, id_vendor=None, id_product=None, **kwargs):
"""
Run the test.
To test a specific device based on VID/PID, add id_vendor=0xHHHH,
id_product=0xHHHH to the control file invocation of tests.
@param id_vendor: Specific vendor ID for the modem to be tested.
@param id_product: Specific product ID for the modem to be tested.
@param kwargs: Optional parameters passed to tests.
"""
self.device_context = mbim_device_context.MbimDeviceContext(
id_vendor=id_vendor, id_product=id_product)
logging.info('Running test on modem with VID: %04X, PID: %04X',
self.device_context.id_vendor,
self.device_context.id_product)
self.run_internal(**kwargs)
def run_internal(self):
"""
This method actually implements the core test logic.
Subclasses should override this method to run their own test.
"""
mbim_errors.log_and_raise(NotImplementedError)