blob: 16e1aa0cfe81203cf97e89a5930a5fb44a8722f7 [file] [log] [blame]
Mark De Ruyterd9c540a2018-05-04 11:21:55 -07001#!/usr/bin/env python3
tturney412efba2017-05-12 14:58:18 -07002#
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"""
17Script for initializing a cmd line tool for PTS and other purposes.
18Required custom config parameters:
19'target_mac_address': '00:00:00:00:00:00'
20
21Optional config parameters:
22'sim_conf_file' : '/path_to_config/'
23"""
Xianyuan Jia63751fb2020-11-17 00:07:40 +000024from acts_contrib.test_utils.bt.BluetoothBaseTest import BluetoothBaseTest
tturney412efba2017-05-12 14:58:18 -070025from cmd_input import CmdInput
26from queue import Empty
tturneycb5ee662017-09-26 11:07:54 -070027
tturney412efba2017-05-12 14:58:18 -070028import os
29import uuid
30
Xianyuan Jia63751fb2020-11-17 00:07:40 +000031from acts_contrib.test_utils.tel.tel_test_utils import setup_droid_properties
tturneycb5ee662017-09-26 11:07:54 -070032
tturney412efba2017-05-12 14:58:18 -070033
34class BtCmdLineTest(BluetoothBaseTest):
35 target_mac_address = ""
36
Xianyuan Jiaf17e4bf2019-09-05 17:16:23 -070037 def setup_class(self):
38 super().setup_class()
tturney412efba2017-05-12 14:58:18 -070039 if not "target_mac_address" in self.user_params.keys():
tturney68f4a8c2017-11-07 08:22:19 -080040 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()
tturney412efba2017-05-12 14:58:18 -070045
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
tturneycb5ee662017-09-26 11:07:54 -070053 sim_conf_file = self.user_params["sim_conf_file"][0]
tturney412efba2017-05-12 14:58:18 -070054 # 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(
Xianyuan Jia0c8267e2019-04-08 15:43:58 -070058 self.user_params[Config.key_config_path.value],
59 sim_conf_file)
tturney412efba2017-05-12 14:58:18 -070060 if not os.path.isfile(sim_conf_file):
61 log.error("Unable to load user config " + sim_conf_file +
62 " from test config file.")
63 return False
64 for ad in self.android_devices:
65 setup_droid_properties(self.log, ad, sim_conf_file)
66 music_path_str = "music_path"
67 android_music_path = "/sdcard/Music/"
68 if music_path_str not in self.user_params:
tturneycb5ee662017-09-26 11:07:54 -070069 self.log.error("Need music for A2DP testcases")
tturney412efba2017-05-12 14:58:18 -070070 return False
71 music_path = self.user_params[music_path_str]
72 self._add_music_to_primary_android_device(music_path,
73 android_music_path)
Xianyuan Jiaf17e4bf2019-09-05 17:16:23 -070074 return True
tturney412efba2017-05-12 14:58:18 -070075
76 def _add_music_to_primary_android_device(self, music_path,
77 android_music_path):
78 music_list = []
79 for dirname, dirnames, filenames in os.walk(music_path):
80 for filename in filenames:
81 file = os.path.join(dirname, filename)
82 #TODO: Handle file paths with spaces
tturneycb5ee662017-09-26 11:07:54 -070083 self.android_devices[0].adb.push("{} {}".format(
84 file, android_music_path))
tturney412efba2017-05-12 14:58:18 -070085
tturney412efba2017-05-12 14:58:18 -070086 def test_pts_cmd_line_helper(self):
87 cmd_line = CmdInput()
88 cmd_line.setup_vars(self.android_devices, self.target_mac_address,
89 self.log)
90 cmd_line.cmdloop()
91 return True