1db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu#!/usr/bin/env python 2db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 3db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu# Copyright (c) 2013 The Chromium OS Authors. All rights reserved. 4db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu# Use of this source code is governed by a BSD-style license that can be 5db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu# found in the LICENSE file. 6db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 7db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhuimport common 8db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhuimport request_response 9db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 10db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhuimport logging 11db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhuimport mox 12db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhuimport unittest 13db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 14db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhuimport at_transceiver 15db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhuimport global_state 16db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhuimport modem_configuration 17db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhuimport task_loop 18db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 19db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 20db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhuclass RequestResponseTestCase(unittest.TestCase): 21db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu """ Test fixture for RequestResponse class. """ 22db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 23db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu def setUp(self): 24db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._mox = mox.Mox() 25db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 26db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu # Prepare modem configuration to suit our needs. 27db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._modem_conf = modem_configuration.ModemConfiguration() 28db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._modem_conf.base_wm_request_response_map = { 29db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'AT1': 'AT1RESPONSE', 30db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'AT2': ('AT2OK', 'AT2ERROR'), 31db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'AT3': 'AT3RESPONSE' 32db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu } 33db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._modem_conf.plugin_wm_request_response_map = { 34db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'AT3': 'AT3RESPONSE_OVERRIDEN', 35db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'AT4': 'AT4RESPONSE', 36db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'AT5': ['AT5RESPONSE1', 'AT5RESPONSE2'] 37db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu } 38db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 39db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._task_loop = self._mox.CreateMock(task_loop.TaskLoop) 40db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._transceiver = self._mox.CreateMock(at_transceiver.ATTransceiver) 41db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._machine = request_response.RequestResponse( 42db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu global_state.GlobalState(), 43db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._transceiver, 44db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._modem_conf) 45db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 46db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu # Mock out the task_loop 47db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._machine._task_loop = self._task_loop 48db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 49db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu def test_enabled_responses(self): 50db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu """ 51db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu Responses for different configurations when machine is enabled. 52db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 53db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu """ 54db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._machine.enable_machine() 55db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._task_loop.post_task_after_delay(mox.IgnoreArg(), 56db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 0, 57db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'wm_response_text_only', 58db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'AT1RESPONSE') 59db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._task_loop.post_task_after_delay(mox.IgnoreArg(), 60db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 0, 61db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'wm_response_text_only', 62db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'AT2OK') 63db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._task_loop.post_task_after_delay(mox.IgnoreArg(), 64db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 0, 65db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'wm_response_text_only', 66db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'AT3RESPONSE_OVERRIDEN') 67db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._task_loop.post_task_after_delay(mox.IgnoreArg(), 68db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 0, 69db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'wm_response_text_only', 70db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'AT4RESPONSE') 71db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._task_loop.post_task_after_delay(mox.IgnoreArg(), 72db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 0, 73db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'wm_response_text_only', 74db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'AT5RESPONSE1') 75db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._task_loop.post_task_after_delay(mox.IgnoreArg(), 76db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 0, 77db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'wm_response_text_only', 78db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'AT5RESPONSE2') 79db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._task_loop.post_task_after_delay(mox.IgnoreArg(), 80db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 0, 81db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'wm_response_ok') 82db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._task_loop.post_task_after_delay(mox.IgnoreArg(), 83db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 0, 84db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'wm_response_error') 85db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 86db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._mox.ReplayAll() 87db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._machine.act_on('AT1') 88db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._machine.act_on('AT2') 89db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._machine.act_on('AT3') 90db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._machine.act_on('AT4') 91db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._machine.act_on('AT5') 92db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._machine.act_on('AT6') 93db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._mox.VerifyAll() 94db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 95db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 96db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu def test_disabled_responses(self): 97db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu """ 98db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu Responses for different configurations when machine is enabled. 99db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 100db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu """ 101db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._machine.disable_machine() 102db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 103db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._task_loop.post_task_after_delay(mox.IgnoreArg(), 104db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 0, 105db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'wm_response_error') 106db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._task_loop.post_task_after_delay(mox.IgnoreArg(), 107db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 0, 108db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'wm_response_text_only', 109db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'AT2ERROR') 110db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._task_loop.post_task_after_delay(mox.IgnoreArg(), 111db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 0, 112db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'wm_response_error') 113db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._task_loop.post_task_after_delay(mox.IgnoreArg(), 114db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 0, 115db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'wm_response_error') 116db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._task_loop.post_task_after_delay(mox.IgnoreArg(), 117db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 0, 118db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'wm_response_error') 119db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._task_loop.post_task_after_delay(mox.IgnoreArg(), 120db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 0, 121db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 'wm_response_error') 122db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 123db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._mox.ReplayAll() 124db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._machine.act_on('AT1') 125db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._machine.act_on('AT2') 126db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._machine.act_on('AT3') 127db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._machine.act_on('AT4') 128db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._machine.act_on('AT5') 129db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._machine.act_on('AT6') 130db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu self._mox.VerifyAll() 131db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 132db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu 133db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhuif __name__ == '__main__': 134db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu logging.basicConfig(level=logging.DEBUG) 135db2e125078222e46e26eb5180ca4fbcc5f09a66bPrathmesh Prabhu unittest.main() 136