| # 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) |