Home | History | Annotate | Download | only in pts
      1 #/usr/bin/env python3.4
      2 #
      3 # Copyright (C) 2016 The Android Open Source Project
      4 #
      5 # Licensed under the Apache License, Version 2.0 (the "License"); you may not
      6 # use this file except in compliance with the License. You may obtain a copy of
      7 # the License at
      8 #
      9 # http://www.apache.org/licenses/LICENSE-2.0
     10 #
     11 # Unless required by applicable law or agreed to in writing, software
     12 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
     13 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
     14 # License for the specific language governing permissions and limitations under
     15 # the License.
     16 """
     17 Script for initializing a cmd line tool for PTS and other purposes.
     18 Required custom config parameters:
     19 'target_mac_address': '00:00:00:00:00:00'
     20 
     21 Optional config parameters:
     22 'sim_conf_file' : '/path_to_config/'
     23 """
     24 from acts.test_utils.bt.BluetoothBaseTest import BluetoothBaseTest
     25 from cmd_input import CmdInput
     26 from queue import Empty
     27 
     28 import os
     29 import uuid
     30 
     31 from acts.test_utils.tel.tel_test_utils import setup_droid_properties
     32 
     33 
     34 class BtCmdLineTest(BluetoothBaseTest):
     35     target_mac_address = ""
     36 
     37     def __init__(self, controllers):
     38         BluetoothBaseTest.__init__(self, controllers)
     39         if not "target_mac_address" in self.user_params.keys():
     40             self.log.warning("Missing user config \"target_mac_address\"!")
     41             self.target_mac_address = ""
     42         else:
     43             self.target_mac_address = self.user_params[
     44                 "target_mac_address"].upper()
     45 
     46         self.android_devices[0].droid.bluetoothSetLocalName("CMD LINE Test")
     47         if len(self.android_devices) > 1:
     48             #Setup for more complex testcases
     49             if not "sim_conf_file" in self.user_params.keys():
     50                 self.log.error(
     51                     "Missing mandatory user config \"sim_conf_file\"!")
     52                 return False
     53             sim_conf_file = self.user_params["sim_conf_file"][0]
     54             # If the sim_conf_file is not a full path, attempt to find it
     55             # relative to the config file.
     56             if not os.path.isfile(sim_conf_file):
     57                 sim_conf_file = os.path.join(
     58                     self.user_params[Config.key_config_path], sim_conf_file)
     59                 if not os.path.isfile(sim_conf_file):
     60                     log.error("Unable to load user config " + sim_conf_file +
     61                               " from test config file.")
     62                     return False
     63             for ad in self.android_devices:
     64                 setup_droid_properties(self.log, ad, sim_conf_file)
     65             music_path_str = "music_path"
     66             android_music_path = "/sdcard/Music/"
     67             if music_path_str not in self.user_params:
     68                 self.log.error("Need music for A2DP testcases")
     69                 return False
     70             music_path = self.user_params[music_path_str]
     71             self._add_music_to_primary_android_device(music_path,
     72                                                       android_music_path)
     73 
     74     def _add_music_to_primary_android_device(self, music_path,
     75                                              android_music_path):
     76         music_list = []
     77         for dirname, dirnames, filenames in os.walk(music_path):
     78             for filename in filenames:
     79                 file = os.path.join(dirname, filename)
     80                 #TODO: Handle file paths with spaces
     81                 self.android_devices[0].adb.push("{} {}".format(
     82                     file, android_music_path))
     83 
     84     def setup_class(self):
     85         return True
     86 
     87     def test_pts_cmd_line_helper(self):
     88         cmd_line = CmdInput()
     89         cmd_line.setup_vars(self.android_devices, self.target_mac_address,
     90                             self.log)
     91         cmd_line.cmdloop()
     92         return True
     93