#/usr/bin/env python3.4 # # Copyright 2016 - The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ Power tests for cellular connectivity. """ import time import json import logging import os import scapy.all as scapy import acts.controllers.iperf_server as ipf from acts import base_test from acts.test_decorators import test_tracker_info from acts.controllers.anritsu_lib._anritsu_utils import AnritsuError from acts.controllers.anritsu_lib.md8475a import MD8475A from acts.controllers.anritsu_lib.md8475a import BtsBandwidth from acts.controllers.anritsu_lib.md8475a import BtsPacketRate from acts.controllers.anritsu_lib.md8475a import VirtualPhoneStatus from acts.test_utils.tel.anritsu_utils import cb_serial_number from acts.test_utils.tel.anritsu_utils import set_system_model_1x from acts.test_utils.tel.anritsu_utils import set_system_model_gsm from acts.test_utils.tel.anritsu_utils import load_system_model_from_config_files from acts.test_utils.tel.anritsu_utils import load_system_model_from_config_files_ca from acts.test_utils.tel.anritsu_utils import set_system_model_lte from acts.test_utils.tel.anritsu_utils import set_system_model_lte_wcdma from acts.test_utils.tel.anritsu_utils import set_system_model_wcdma from acts.test_utils.tel.anritsu_utils import sms_mo_send from acts.test_utils.tel.anritsu_utils import sms_mt_receive_verify from acts.test_utils.tel.anritsu_utils import set_usim_parameters from acts.test_utils.tel.anritsu_utils import set_post_sim_params from acts.test_utils.tel.tel_defines import DIRECTION_MOBILE_ORIGINATED from acts.test_utils.tel.tel_defines import DIRECTION_MOBILE_TERMINATED from acts.test_utils.tel.tel_defines import NETWORK_MODE_CDMA from acts.test_utils.tel.tel_defines import NETWORK_MODE_GSM_ONLY from acts.test_utils.tel.tel_defines import NETWORK_MODE_GSM_UMTS from acts.test_utils.tel.tel_defines import NETWORK_MODE_LTE_GSM_WCDMA from acts.test_utils.tel.tel_defines import NETWORK_MODE_LTE_CDMA_EVDO from acts.test_utils.tel.tel_defines import RAT_1XRTT from acts.test_utils.tel.tel_defines import RAT_GSM from acts.test_utils.tel.tel_defines import RAT_LTE from acts.test_utils.tel.tel_defines import RAT_WCDMA from acts.test_utils.tel.tel_defines import RAT_FAMILY_CDMA2000 from acts.test_utils.tel.tel_defines import RAT_FAMILY_GSM from acts.test_utils.tel.tel_defines import RAT_FAMILY_LTE from acts.test_utils.tel.tel_defines import RAT_FAMILY_UMTS from acts.test_utils.tel.tel_defines import NETWORK_SERVICE_DATA from acts.test_utils.tel.tel_defines import GEN_4G from acts.test_utils.tel.tel_test_utils import ensure_network_rat from acts.test_utils.tel.tel_test_utils import ensure_phones_idle from acts.test_utils.tel.tel_test_utils import ensure_network_generation from acts.test_utils.tel.tel_test_utils import toggle_airplane_mode from acts.test_utils.tel.tel_test_utils import iperf_test_by_adb from acts.test_utils.wifi import wifi_power_test_utils as wputils from acts.utils import adb_shell_ping from acts.utils import rand_ascii_str from acts.controllers import iperf_server from acts.utils import exe_cmd DEFAULT_PING_DURATION = 30 SCHEDULING_DYNAMIC = 0 SCHEDULING_MIN_MCS = 1 SCHEDULING_MAX_MCS = 2 DIRECTION_UPLINK = 0 DIRECTION_DOWNLINK = 1 TM1 = 1 TM4 = 4 class PowerTelTest(base_test.BaseTestClass): SETTLING_TIME = 10 def __init__(self, controllers): base_test.BaseTestClass.__init__(self, controllers) self.ad = self.android_devices[0] self.iperf_server = self.iperf_servers[0] self.port_num = self.iperf_server.port self.log.info("Iperf Port is %s", self.port_num) self.ad.sim_card = getattr(self.ad, "sim_card", None) self.log.info("SIM Card is %s", self.ad.sim_card) self.md8475a_ip_address = self.user_params[ "anritsu_md8475a_ip_address"] self.wlan_option = self.user_params.get("anritsu_wlan_option", False) # Load power level values self.big_step = self.user_params.get("big_step", 10) self.small_step_range = self.user_params.get("small_step_range", []) self.small_step = self.user_params.get("small_step", 3) # Load power levels self.uplink_power_levels = self.get_power_levels( small_step_range = self.user_params.get("uplink_small_step_range", []), big_step_range = self.user_params.get("uplink_big_step_range", []) ) self.downlink_power_levels = self.get_power_levels( small_step_range = self.user_params.get("downlink_small_step_range", []), big_step_range = self.user_params.get("downlink_big_step_range", []) ) # Setup sampling durations self.mon_offset = self.user_params.get("monsoon_offset", 15) self.mon_duration = self.user_params.get("monsoon_sampling_time", 10) self.iperf_offset = self.user_params.get("iperf_offset", 5) self.iperf_duration = self.mon_duration + self.iperf_offset + self.mon_offset # Setup monsoon self.mon_freq = 5000 self.mon_data_path = os.path.join(self.log_path, 'Monsoon') self.mon = self.monsoons[0] self.mon.set_max_current(8.0) self.mon.set_voltage(4.2) self.mon.attach_device(self.ad) self.mon_info = wputils.create_monsoon_info(self) # Fetch IP address of the host machine self.ip = scapy.get_if_addr(self.user_params.get("interface", "eno1")) self.log.info("Dest IP is %s", self.ip) def setup_class(self): try: self.anritsu = MD8475A(self.md8475a_ip_address, self.log, self.wlan_option) except AnritsuError: self.log.error("Error in connecting to Anritsu Simulator") return False return True def setup_test(self): ensure_phones_idle(self.log, self.android_devices) wputils.dut_rockbottom(self.ad) return True def teardown_test(self): self.log.info("Stopping Simulation") self.anritsu.stop_simulation() toggle_airplane_mode(self.log, self.ad, True) return True def teardown_class(self): self.anritsu.disconnect() return True def get_power_levels(self, small_step_range, big_step_range): power_levels = [] if len(big_step_range) != 0: if len(big_step_range) != 2: self.log.error("big_step_range should contain an array with a min and max value for that part of the sweeping range.") else: if big_step_range[0] > big_step_range[1]: aux = big_step_range[0] big_step_range[0] = big_step_range[1] big_step_range[1] = aux power_levels.extend(range(big_step_range[1], big_step_range[0], -self.big_step)) power_levels.append(big_step_range[0]) if len(small_step_range) != 0: if len(small_step_range) != 2: self.log.error("small_step_range should contain an array with a min and max value for that part of the sweeping range.") else: if small_step_range[0] > small_step_range[1]: aux = small_step_range[0] small_step_range[0] = small_step_range[1] small_step_range[1] = aux power_levels.extend(range(small_step_range[1], small_step_range[0], -self.small_step)) power_levels.append(small_step_range[0]) print(str(power_levels)) return power_levels def start_sitmulation(self, set_simulation_func, band, scheduling, bandwidth, transmission_mode): [self.bts1] = set_simulation_func(self.anritsu, self.user_params, self.ad.sim_card) self.bts1.band = band if bandwidth == 20: self.bts1.bandwidth = BtsBandwidth.LTE_BANDWIDTH_20MHz elif bandwidth == 15: self.bts1.bandwidth = BtsBandwidth.LTE_BANDWIDTH_15MHz elif bandwidth == 10: self.bts1.bandwidth = BtsBandwidth.LTE_BANDWIDTH_10MHz elif bandwidth == 5: self.bts1.bandwidth = BtsBandwidth.LTE_BANDWIDTH_5MHz elif bandwidth == 3: self.bts1.bandwidth = BtsBandwidth.LTE_BANDWIDTH_3MHz elif bandwidth == 1.4: self.bts1.bandwidth = BtsBandwidth.LTE_BANDWIDTH_1dot4MHz if scheduling == SCHEDULING_DYNAMIC: self.bts1.lte_scheduling_mode = "DYNAMIC" else: self.bts1.lte_scheduling_mode = "STATIC" self.bts1.packet_rate = BtsPacketRate.LTE_MANUAL self.anritsu.send_command("TBSPATTERN OFF, BTS1") self.bts1.lte_mcs_dl = 0 self.bts1.nrb_dl = 5 * bandwidth self.bts1.nrb_ul = 5 * bandwidth if scheduling == SCHEDULING_MIN_MCS: self.bts1.lte_mcs_ul = 0 else: self.bts1.lte_mcs_ul = 23 if transmission_mode == TM1: self.bts1.dl_antenna = 1 self.bts1.transmode = "TM1" elif transmission_mode == TM4: self.bts1.dl_antenna = 2 self.bts1.transmode = "TM4" self.anritsu.start_simulation() def start_sitmulation_ca(self, set_simulation_func): [self.bts1] = set_simulation_func(self.anritsu, self.user_params, self.ad.sim_card) self.anritsu.start_simulation() def measure_throughput_and_power(self, direction): # Start iperf locally self.log.info("Starting iperf server.") self.iperf_server.start() self.log.info("Starting iperf client on the phone.") iperf_args = '-i 1 -t %d' % self.iperf_duration if direction == DIRECTION_DOWNLINK: iperf_args = iperf_args + ' -R' iperf_args = iperf_args + ' > /dev/null' wputils.run_iperf_client_nonblocking( self.ad, self.ip, iperf_args) # Collect power data self.log.info("Starting sampling with monsoon.") file_path, current = wputils.monsoon_data_collect_save( self.ad, self.mon_info, self.current_test_name, bug_report=0) # Collect iperf data # Give some time for iperf to finish time.sleep(self.iperf_offset) self.iperf_server.stop() throughput = 0 try: iperf_result = ipf.IPerfResult(self.iperf_server.log_files[-1]) if direction == DIRECTION_DOWNLINK: if iperf_result.avg_send_rate is not None: throughput = iperf_result.avg_send_rate * 8 elif direction == DIRECTION_UPLINK: if iperf_result.avg_receive_rate is not None: throughput = iperf_result.avg_receive_rate * 8 except: pass self.log.info("Average receive rate: %sMbps", throughput) return [throughput, current] def sweep(self, power_levels, direction): if direction == DIRECTION_DOWNLINK: self.bts1.input_level = -40 results_throughput = [] results_power = [] for power in power_levels: self.log.info("------- Measuring with power level %d dBm -------", power) if direction == DIRECTION_DOWNLINK: self.bts1.output_level = power elif direction == DIRECTION_UPLINK: self.bts1.input_level = power self.log.info("Current Power Level is %s dBm", power) throughput, current = self.measure_throughput_and_power(direction) results_throughput.append(throughput) results_power.append(current) return [results_throughput, results_power] def set_to_rockbottom_and_attach(self): self.bts1.input_power = -10 self.bts1.output_power = -30 # Set device to rockbottom self.ad.droid.goToSleepNow() # Turn of airplane mode and wait until the phone attaches toggle_airplane_mode(self.log, self.ad, False) time.sleep(2) self.anritsu.wait_for_registration_state() time.sleep(self.SETTLING_TIME) self.log.info("UE attached to the callbox.") def save_results(self, results_throughput, results_power, power_levels, file_name = ""): if file_name == "": file_name = self.current_test_name self.logpath = os.path.join(logging.log_path, self.current_test_name + ".csv") with open(self.logpath, "a") as tput_file: tput_file.write("# rf_power, current, throughput") tput_file.write("\n") for i in range(0, len(results_power)): tput_file.write(str(power_levels[i]) + ", " + str(results_power[i]) + ", " + str(results_throughput[i])) tput_file.write("\n") def do_test(self, direction, band, scheduling, bandwidth, transmission_mode, ca_band2 = 0): if direction == DIRECTION_DOWNLINK: power_levels = self.downlink_power_levels elif direction == DIRECTION_UPLINK: power_levels = self.uplink_power_levels if ca_band2 == 0: self.start_sitmulation(load_system_model_from_config_files, band, scheduling, bandwidth, transmission_mode) else: self.start_sitmulation_ca(load_system_model_from_config_files_ca, band, ca_band2, scheduling, bandwidth) self.set_to_rockbottom_and_attach() results_throughput, results_power = self.sweep(power_levels, direction) self.save_results(results_throughput, results_power, power_levels) def do_test_ca(self, direction): if direction == DIRECTION_DOWNLINK: power_levels = self.downlink_power_levels elif direction == DIRECTION_UPLINK: power_levels = self.uplink_power_levels self.start_sitmulation_ca(load_system_model_from_config_files_ca) self.set_to_rockbottom_and_attach() results_throughput, results_power = self.sweep(power_levels, direction) self.save_results(results_throughput, results_power, power_levels) """ Tests Begin """ def test_downlink_tm1_band4_14MHz_dynamic(self): self.do_test(direction = DIRECTION_DOWNLINK, band = 4, scheduling = SCHEDULING_DYNAMIC, bandwidth = 1.4, transmission_mode = TM1, ca_band2 = 0) def test_uplink_tm1_band4_14MHz_min_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 4, scheduling = SCHEDULING_MIN_MCS, bandwidth = 1.4, transmission_mode = TM1, ca_band2 = 0) def test_uplink_tm1_band4_14MHz_max_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 4, scheduling = SCHEDULING_MAX_MCS, bandwidth = 1.4, transmission_mode = TM1, ca_band2 = 0) def test_downlink_tm4_band4_14MHz_dynamic(self): self.do_test(direction = DIRECTION_DOWNLINK, band = 4, scheduling = SCHEDULING_DYNAMIC, bandwidth = 1.4, transmission_mode = TM4, ca_band2 = 0) def test_uplink_tm4_band4_14MHz_min_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 4, scheduling = SCHEDULING_MIN_MCS, bandwidth = 1.4, transmission_mode = TM4, ca_band2 = 0) def test_uplink_tm4_band4_14MHz_max_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 4, scheduling = SCHEDULING_MAX_MCS, bandwidth = 1.4, transmission_mode = TM4, ca_band2 = 0) def test_downlink_tm1_band4_3MHz_dynamic(self): self.do_test(direction = DIRECTION_DOWNLINK, band = 4, scheduling = SCHEDULING_DYNAMIC, bandwidth = 3, transmission_mode = TM1, ca_band2 = 0) def test_uplink_tm1_band4_3MHz_min_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 4, scheduling = SCHEDULING_MIN_MCS, bandwidth = 3, transmission_mode = TM1, ca_band2 = 0) def test_uplink_tm1_band4_3MHz_max_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 4, scheduling = SCHEDULING_MAX_MCS, bandwidth = 3, transmission_mode = TM1, ca_band2 = 0) def test_downlink_tm4_band4_3MHz_dynamic(self): self.do_test(direction = DIRECTION_DOWNLINK, band = 4, scheduling = SCHEDULING_DYNAMIC, bandwidth = 3, transmission_mode = TM4, ca_band2 = 0) def test_uplink_tm4_band4_3MHz_min_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 4, scheduling = SCHEDULING_MIN_MCS, bandwidth = 3, transmission_mode = TM4, ca_band2 = 0) def test_uplink_tm4_band4_3MHz_max_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 4, scheduling = SCHEDULING_MAX_MCS, bandwidth = 3, transmission_mode = TM4, ca_band2 = 0) def test_downlink_tm1_band4_5MHz_dynamic(self): self.do_test(direction = DIRECTION_DOWNLINK, band = 4, scheduling = SCHEDULING_DYNAMIC, bandwidth = 5, transmission_mode = TM1, ca_band2 = 0) def test_uplink_tm1_band4_5MHz_min_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 4, scheduling = SCHEDULING_MIN_MCS, bandwidth = 5, transmission_mode = TM1, ca_band2 = 0) def test_uplink_tm1_band4_5MHz_max_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 4, scheduling = SCHEDULING_MAX_MCS, bandwidth = 5, transmission_mode = TM1, ca_band2 = 0) def test_downlink_tm4_band4_5MHz_dynamic(self): self.do_test(direction = DIRECTION_DOWNLINK, band = 4, scheduling = SCHEDULING_DYNAMIC, bandwidth = 5, transmission_mode = TM4, ca_band2 = 0) def test_uplink_tm4_band4_5MHz_min_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 4, scheduling = SCHEDULING_MIN_MCS, bandwidth = 5, transmission_mode = TM4, ca_band2 = 0) def test_uplink_tm4_band4_5MHz_max_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 4, scheduling = SCHEDULING_MAX_MCS, bandwidth = 5, transmission_mode = TM4, ca_band2 = 0) def test_downlink_tm1_band4_10MHz_dynamic(self): self.do_test(direction = DIRECTION_DOWNLINK, band = 4, scheduling = SCHEDULING_DYNAMIC, bandwidth = 10, transmission_mode = TM1, ca_band2 = 0) def test_uplink_tm1_band4_10MHz_min_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 4, scheduling = SCHEDULING_MIN_MCS, bandwidth = 10, transmission_mode = TM1, ca_band2 = 0) def test_uplink_tm1_band4_10MHz_max_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 4, scheduling = SCHEDULING_MAX_MCS, bandwidth = 10, transmission_mode = TM1, ca_band2 = 0) def test_downlink_tm4_band4_10MHz_dynamic(self): self.do_test(direction = DIRECTION_DOWNLINK, band = 4, scheduling = SCHEDULING_DYNAMIC, bandwidth = 10, transmission_mode = TM4, ca_band2 = 0) def test_uplink_tm4_band4_10MHz_min_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 4, scheduling = SCHEDULING_MIN_MCS, bandwidth = 10, transmission_mode = TM4, ca_band2 = 0) def test_uplink_tm4_band4_10MHz_max_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 4, scheduling = SCHEDULING_MAX_MCS, bandwidth = 10, transmission_mode = TM4, ca_band2 = 0) def test_downlink_tm1_band4_20MHz_dynamic(self): self.do_test(direction = DIRECTION_DOWNLINK, band = 4, scheduling = SCHEDULING_DYNAMIC, bandwidth = 20, transmission_mode = TM1, ca_band2 = 0) def test_uplink_tm1_band4_20MHz_min_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 4, scheduling = SCHEDULING_MIN_MCS, bandwidth = 20, transmission_mode = TM1, ca_band2 = 0) def test_uplink_tm1_band4_20MHz_max_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 4, scheduling = SCHEDULING_MAX_MCS, bandwidth = 20, transmission_mode = TM1, ca_band2 = 0) def test_downlink_tm4_band4_20MHz_dynamic(self): self.do_test(direction = DIRECTION_DOWNLINK, band = 4, scheduling = SCHEDULING_DYNAMIC, bandwidth = 20, transmission_mode = TM4, ca_band2 = 0) def test_uplink_tm4_band4_20MHz_min_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 4, scheduling = SCHEDULING_MIN_MCS, bandwidth = 20, transmission_mode = TM4, ca_band2 = 0) def test_uplink_tm4_band4_20MHz_max_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 4, scheduling = SCHEDULING_MAX_MCS, bandwidth = 20, transmission_mode = TM4, ca_band2 = 0) def test_downlink_tm1_band7_5MHz_dynamic(self): self.do_test(direction = DIRECTION_DOWNLINK, band = 7, scheduling = SCHEDULING_DYNAMIC, bandwidth = 5, transmission_mode = TM1, ca_band2 = 0) def test_uplink_tm1_band7_5MHz_min_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 7, scheduling = SCHEDULING_MIN_MCS, bandwidth = 5, transmission_mode = TM1, ca_band2 = 0) def test_uplink_tm1_band7_5MHz_max_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 7, scheduling = SCHEDULING_MAX_MCS, bandwidth = 5, transmission_mode = TM1, ca_band2 = 0) def test_downlink_tm4_band7_5MHz_dynamic(self): self.do_test(direction = DIRECTION_DOWNLINK, band = 7, scheduling = SCHEDULING_DYNAMIC, bandwidth = 5, transmission_mode = TM4, ca_band2 = 0) def test_uplink_tm4_band7_5MHz_min_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 7, scheduling = SCHEDULING_MIN_MCS, bandwidth = 5, transmission_mode = TM4, ca_band2 = 0) def test_uplink_tm4_band7_5MHz_max_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 7, scheduling = SCHEDULING_MAX_MCS, bandwidth = 5, transmission_mode = TM4, ca_band2 = 0) def test_downlink_tm1_band7_10MHz_dynamic(self): self.do_test(direction = DIRECTION_DOWNLINK, band = 7, scheduling = SCHEDULING_DYNAMIC, bandwidth = 10, transmission_mode = TM1, ca_band2 = 0) def test_uplink_tm1_band7_10MHz_min_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 7, scheduling = SCHEDULING_MIN_MCS, bandwidth = 10, transmission_mode = TM1, ca_band2 = 0) def test_uplink_tm1_band7_10MHz_max_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 7, scheduling = SCHEDULING_MAX_MCS, bandwidth = 10, transmission_mode = TM1, ca_band2 = 0) def test_downlink_tm4_band7_10MHz_dynamic(self): self.do_test(direction = DIRECTION_DOWNLINK, band = 7, scheduling = SCHEDULING_DYNAMIC, bandwidth = 10, transmission_mode = TM4, ca_band2 = 0) def test_uplink_tm4_band7_10MHz_min_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 7, scheduling = SCHEDULING_MIN_MCS, bandwidth = 10, transmission_mode = TM4, ca_band2 = 0) def test_uplink_tm4_band7_10MHz_max_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 7, scheduling = SCHEDULING_MAX_MCS, bandwidth = 10, transmission_mode = TM4, ca_band2 = 0) def test_downlink_tm1_band7_20MHz_dynamic(self): self.do_test(direction = DIRECTION_DOWNLINK, band = 7, scheduling = SCHEDULING_DYNAMIC, bandwidth = 20, transmission_mode = TM1, ca_band2 = 0) def test_uplink_tm1_band7_20MHz_min_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 7, scheduling = SCHEDULING_MIN_MCS, bandwidth = 20, transmission_mode = TM1, ca_band2 = 0) def test_uplink_tm1_band7_20MHz_max_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 7, scheduling = SCHEDULING_MAX_MCS, bandwidth = 20, transmission_mode = TM1, ca_band2 = 0) def test_downlink_tm4_band7_20MHz_dynamic(self): self.do_test(direction = DIRECTION_DOWNLINK, band = 7, scheduling = SCHEDULING_DYNAMIC, bandwidth = 20, transmission_mode = TM4, ca_band2 = 0) def test_uplink_tm4_band7_20MHz_min_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 7, scheduling = SCHEDULING_MIN_MCS, bandwidth = 20, transmission_mode = TM4, ca_band2 = 0) def test_uplink_tm4_band7_20MHz_max_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 7, scheduling = SCHEDULING_MAX_MCS, bandwidth = 20, transmission_mode = TM4, ca_band2 = 0) def test_downlink_tm1_band13_5MHz_dynamic(self): self.do_test(direction = DIRECTION_DOWNLINK, band = 13, scheduling = SCHEDULING_DYNAMIC, bandwidth = 5, transmission_mode = TM1, ca_band2 = 0) def test_uplink_tm1_band13_5MHz_min_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 13, scheduling = SCHEDULING_MIN_MCS, bandwidth = 5, transmission_mode = TM1, ca_band2 = 0) def test_uplink_tm1_band13_5MHz_max_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 13, scheduling = SCHEDULING_MAX_MCS, bandwidth = 5, transmission_mode = TM1, ca_band2 = 0) def test_downlink_tm4_band13_5MHz_dynamic(self): self.do_test(direction = DIRECTION_DOWNLINK, band = 13, scheduling = SCHEDULING_DYNAMIC, bandwidth = 5, transmission_mode = TM4, ca_band2 = 0) def test_uplink_tm4_band13_5MHz_min_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 13, scheduling = SCHEDULING_MIN_MCS, bandwidth = 5, transmission_mode = TM4, ca_band2 = 0) def test_uplink_tm4_band13_5MHz_max_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 13, scheduling = SCHEDULING_MAX_MCS, bandwidth = 5, transmission_mode = TM4, ca_band2 = 0) def test_downlink_tm1_band13_10MHz_dynamic(self): self.do_test(direction = DIRECTION_DOWNLINK, band = 13, scheduling = SCHEDULING_DYNAMIC, bandwidth = 10, transmission_mode = TM1, ca_band2 = 0) def test_uplink_tm1_band13_10MHz_min_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 13, scheduling = SCHEDULING_MIN_MCS, bandwidth = 10, transmission_mode = TM1, ca_band2 = 0) def test_uplink_tm1_band13_10MHz_max_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 13, scheduling = SCHEDULING_MAX_MCS, bandwidth = 10, transmission_mode = TM1, ca_band2 = 0) def test_downlink_tm4_band13_10MHz_dynamic(self): self.do_test(direction = DIRECTION_DOWNLINK, band = 13, scheduling = SCHEDULING_DYNAMIC, bandwidth = 10, transmission_mode = TM4, ca_band2 = 0) def test_uplink_tm4_band13_10MHz_min_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 13, scheduling = SCHEDULING_MIN_MCS, bandwidth = 10, transmission_mode = TM4, ca_band2 = 0) def test_uplink_tm4_band13_10MHz_max_mcs(self): self.do_test(direction = DIRECTION_UPLINK, band = 13, scheduling = SCHEDULING_MAX_MCS, bandwidth = 10, transmission_mode = TM4, ca_band2 = 0) def test_downlink_ca_20MHz(self): self.do_test_ca(DIRECTION_DOWNLINK) def test_uplink_ca_20MHz(self): self.do_test_ca(DIRECTION_UPLINK) """ Tests End """