1bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius# Copyright 2014 The Chromium OS Authors. All rights reserved.
2bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius# Use of this source code is governed by a BSD-style license that can be
3bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius# found in the LICENSE file.
4bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius
5bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Piusimport common
6bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Piusfrom autotest_lib.client.cros.cellular.mbim_compliance import mbim_constants
7bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Piusfrom autotest_lib.client.cros.cellular.mbim_compliance import mbim_errors
8bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Piusfrom autotest_lib.client.cros.cellular.mbim_compliance \
9bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius        import mbim_test_base
10bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Piusfrom autotest_lib.client.cros.cellular.mbim_compliance.sequences \
11bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius        import get_descriptors_sequence
12bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Piusfrom autotest_lib.client.cros.cellular.mbim_compliance.sequences \
13bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius        import mbim_open_generic_sequence
14bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius
15bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius
16b156e954bac846f170ee4320db53f996b4b0d868Roshan Piusclass cellular_MbimComplianceCM03(mbim_test_base.MbimTestBase):
17bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius    """
18bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius    CM_03 Validation of Function's Behavior for an Unsynchronized MBIM_OPEN_MSG.
19bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius
20b156e954bac846f170ee4320db53f996b4b0d868Roshan Pius    This test validates function's behavior in case of an unsynchronized open
21b156e954bac846f170ee4320db53f996b4b0d868Roshan Pius    operation.
22b156e954bac846f170ee4320db53f996b4b0d868Roshan Pius
23bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius    Reference:
24bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius        [1] Universal Serial Bus Communication Class MBIM Compliance Testing: 38
25bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius        http://www.usb.org/developers/docs/devclass_docs/MBIM-Compliance-1.0.pdf
26bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius    """
27bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius    version = 1
28bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius
29bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius    def run_internal(self):
30bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius        """ Run CM_03 test. """
31bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius        # Precondition
32bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius        descriptors = get_descriptors_sequence.GetDescriptorsSequence(
33bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius                self.device_context).run()
34bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius        self.device_context.update_descriptor_cache(descriptors)
35bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius        mbim_open_generic_sequence.MBIMOpenGenericSequence(
36bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius                self.device_context).run()
37bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius
38bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius        # Step 1
39bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius        _, response_message = (
40bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius                mbim_open_generic_sequence.MBIMOpenGenericSequence(
41bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius                        self.device_context).run())
42bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius
43bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius        # Validate function's behaviour for an unsynchronized MBIM_OPEN_MSG.
44bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius        if response_message.message_type == mbim_constants.MBIM_CLOSE_DONE:
45bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius            mbim_errors.log_and_raise(mbim_errors.MBIMComplianceAssertionError,
46bcd24e85deddeb1169ec34fcffbc7bee6303bd2cRoshan Pius                                      'mbim1.0:9.3.1#1')
47