1#!/usr/bin/env python3 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 17from acts_contrib.test_utils.bt.BluetoothBaseTest import BluetoothBaseTest 18from acts_contrib.test_utils.bt.bt_test_utils import * 19 20import time 21import pprint 22 23 24class ToolsTest(BluetoothBaseTest): 25 tests = None 26 default_timeout = 10 27 28 def __init__(self, controllers): 29 BluetoothBaseTest.__init__(self, controllers) 30 self.tests = ("test_toggle_bluetooth", 31 "test_toggle_airplane_mode", 32 "test_create_10_sms", 33 "test_continuously_log_battery_stats", ) 34 35 @BluetoothBaseTest.bt_test_wrap 36 def test_toggle_bluetooth(self): 37 """ 38 Test the integrity of toggling bluetooth on and off. 39 Steps: 40 1. Toggle bluetooth off. 41 2. Toggle bluetooth on. 42 3. Repeat steps 1 and 2 one-hundred times. 43 :return: boolean test_result 44 """ 45 droid, ed = (self.android_devices[0].droid, self.android_devices[0].ed) 46 n = 0 47 test_result = True 48 test_result_list = [] 49 while n < 100: 50 self.log.info("Toggling bluetooth iteration {}.".format(n)) 51 test_result = reset_bluetooth([self.android_devices[0]]) 52 start_time = time.time() 53 connected_devices = droid.bluetoothGetConnectedDevices() 54 print(pprint.pformat(connected_devices)) 55 while time.time() < start_time + 10 and len( 56 connected_devices) != 1: 57 time.sleep(1) 58 connected_devices = droid.bluetoothGetConnectedDevices() 59 print(pprint.pformat(connected_devices)) 60 if len(connected_devices) != 1: 61 print("died at iteration {}".format(n)) 62 return False 63 test_result_list.append(test_result) 64 n += 1 65 if False in test_result_list: 66 return False 67 return test_result 68 69 @BluetoothBaseTest.bt_test_wrap 70 def test_toggle_airplane_mode(self): 71 """ 72 Test the integrity of toggling airplane mode on and off. 73 Steps: 74 1. Toggle airplane off. 75 2. Toggle airplane on. 76 3. Repeat steps 1 and 2 one-hundred times. 77 :return: boolean test_result 78 """ 79 droid, ed = (self.android_devices[0].droid, self.android_devices[0].ed) 80 n = 0 81 test_result = True 82 test_result_list = [] 83 while n < 100: 84 self.log.info("Toggling bluetooth iteration {}.".format(n)) 85 droid.toggleAirplaneMode(True) 86 time.sleep(6) 87 droid.toggleAirplaneMode(False) 88 start_time = time.time() 89 connected_devices = droid.bluetoothGetConnectedDevices() 90 print(pprint.pformat(connected_devices)) 91 while time.time() < start_time + 10 and len( 92 connected_devices) != 1: 93 time.sleep(1) 94 connected_devices = droid.bluetoothGetConnectedDevices() 95 print(pprint.pformat(connected_devices)) 96 if len(connected_devices) != 1: 97 print("died at iteration {}".format(n)) 98 return False 99 test_result_list.append(test_result) 100 n += 1 101 if False in test_result_list: 102 return False 103 return test_result 104 105 @BluetoothBaseTest.bt_test_wrap 106 def test_create_10_sms(self): 107 phone_number = input("Enter a phone number: ") 108 message_size = input("Enter message size: ") 109 for _ in range(10): 110 self.android_devices[0].droid.smsSendTextMessage( 111 phone_number, generate_id_by_size(int(message_size)), False) 112 time.sleep(3) 113 return True 114