def set_attenuation_and_run_iperf(self, called_func=None):
        """Sets attenuation and runs iperf for Attenuation max value.

        Args:
            called_func : Function object to run.

        Returns:
            True if Pass
            False if Fail
        """
        self.attenuators[self.num_atten - 1].set_atten(0)
        self.rvr["bt_attenuation"] = []
        self.rvr["test_name"] = self.current_test_name
        self.rvr["bt_gap_analysis"] = {}
        self.rvr["bt_range"] = []
        status_flag = True
        for bt_atten in self.bt_atten_range:
            self.rvr[bt_atten] = {}
            self.rvr[bt_atten]["fixed_attenuation"] = (
                self.test_params["fixed_attenuation"][str(
                    self.network["channel"])])
            self.log.info('Setting bt attenuation to: {} dB'.format(bt_atten))
            self.attenuators[self.num_atten - 1].set_atten(bt_atten)
            for i in range(self.num_atten - 1):
                self.attenuators[i].set_atten(0)
            if not wifi_connection_check(self.pri_ad, self.network["SSID"]):
                wifi_test_device_init(self.pri_ad)
                wifi_connect(self.pri_ad, self.network, num_of_tries=5)
            adb_rssi_results = self.pri_ad.search_logcat(RSSI_RESULTS)
            if adb_rssi_results:
                self.log.debug(adb_rssi_results[-1])
                self.log.info('Android device: {}'.format(
                    (adb_rssi_results[-1]['log_message']).split(',')[5]))
            (self.rvr[bt_atten]["throughput_received"],
             self.rvr[bt_atten]["a2dp_packet_drop"],
             status_flag) = self.rvr_throughput(bt_atten, called_func)
            self.wifi_max_atten_metric.metric_value = max(
                self.rvr[bt_atten]["attenuation"])
            self.wifi_min_atten_metric.metric_value = min(
                self.rvr[bt_atten]["attenuation"])

            if self.rvr[bt_atten]["throughput_received"]:
                for i, atten in enumerate(self.rvr[bt_atten]["attenuation"]):
                    if self.rvr[bt_atten]["throughput_received"][i] < 1.0:
                        self.wifi_range_metric.metric_value = (
                            self.rvr[bt_atten]["attenuation"][i - 1])
                        break
                else:
                    self.wifi_range_metric.metric_value = max(
                        self.rvr[bt_atten]["attenuation"])
            else:
                self.wifi_range_metric.metric_value = max(
                    self.rvr[bt_atten]["attenuation"])
            if self.a2dp_streaming:
                if not any(x > 0 for x in self.a2dp_dropped_list):
                    self.rvr[bt_atten]["a2dp_packet_drop"] = []
        if not self.rvr["bt_range"]:
            self.rvr["bt_range"].append(0)
        return status_flag
 def setup_test(self):
     if ('a2dp_streaming' in self.current_test_name
             and hasattr(self, 'audio_params')):
         self.audio = get_audio_capture_device(self.sec_ad,
                                               self.audio_params)
         self.a2dp_streaming = True
     for i in range(self.num_atten):
         self.attenuators[i].set_atten(0)
     if not wifi_connection_check(self.pri_ad, self.network["SSID"]):
         wifi_connect(self.pri_ad, self.network, num_of_tries=5)
     super().setup_test()
示例#3
0
 def setup_test(self):
     self.result = {}
     self.received = []
     for a in self.android_devices:
         a.ed.clear_all_events()
     self.json_file = "{}/{}.json".format(self.pri_ad.log_path,
                                          self.current_test_name)
     if not wifi_connection_check(self.pri_ad, self.network["SSID"]):
         self.log.error("Wifi connection does not exist")
         return False
     if not enable_bluetooth(self.pri_ad.droid, self.pri_ad.ed):
         self.log.error("Failed to enable bluetooth")
         return False
    def set_attenuation_and_run_iperf(self, called_func=None):
        """Sets attenuation and runs iperf for Attenuation max value.

        Args:
            called_func : Function object to run.

        Returns:
            True if Pass
            False if Fail
        """
        self.iperf_received = []
        for atten in self.attenuation_range:
            self.log.info("Setting attenuation = {}".format(atten))
            for i in range(self.num_atten):
                self.attenuators[i].set_atten(atten)
            if not wifi_connection_check(self.pri_ad, self.network["SSID"]):
                return False
            time.sleep(5)  # Time for attenuation to set.
            if called_func:
                if not multithread_func(self.log, called_func):
                    return False
            else:
                self.run_iperf_and_get_result()
            if "a2dp_streaming" in self.current_test_name:
                if not collect_bluetooth_manager_dumpsys_logs(
                        self.pri_ad, self.current_test_name):
                    return False
            self.teardown_result()
        for i in range(self.num_atten):
            self.attenuators[i].set_atten(0)
        for received in self.received:
            iperf_value = str(received).strip("Mb/s")
            if iperf_value == "Iperf Failed":
                self.iperf_received.append(0)
            else:
                self.iperf_received.append(float(iperf_value))
        self.rvr["test_name"] = self.current_test_name
        self.rvr["attenuation"] = list(self.attenuation_range)
        self.rvr["throughput_received"] = self.iperf_received
        self.rvr["fixed_attenuation"] = (
            self.test_params["fixed_attenuation"][str(self.network["channel"])])
        return True
示例#5
0
 def setup_test(self):
     self.tag = 0
     self.result = {}
     self.dev_list = {}
     self.iperf_variables = self.IperfVariables(self.current_test_name)
     self.a2dp_dumpsys = A2dpDumpsysParser()
     self.log_path = os.path.join(self.pri_ad.log_path,
             self.current_test_name)
     os.makedirs(self.log_path, exist_ok=True)
     self.json_file = os.path.join(self.log_path, 'test_results.json')
     for a in self.android_devices:
         a.ed.clear_all_events()
     if not wifi_connection_check(self.pri_ad, self.network['SSID']):
         self.log.error('Wifi connection does not exist')
         return False
     if not enable_bluetooth(self.pri_ad.droid, self.pri_ad.ed):
         self.log.error('Failed to enable bluetooth')
         return False
     if hasattr(self, 'required_devices'):
         if ('discovery' in self.current_test_name or
                 'ble' in self.current_test_name):
             self.create_android_relay_object()
     else:
         self.log.warning('required_devices is not given in config file')
 def setup_test(self):
     if not wifi_connection_check(self.pri_ad, self.network["SSID"]):
         reset_wifi(self.pri_ad)
         wifi_connect(self.pri_ad, self.network, num_of_tries=5)
     super().setup_test()
    def rvr_throughput(self, bt_atten, called_func=None):
        """Sets attenuation and runs the function passed.

        Args:
            bt_atten: Bluetooth attenuation.
            called_func: Functions object to run parallely.

        Returns:
            Throughput, a2dp_drops and True/False.
        """
        self.iperf_received = []
        self.iperf_variables.received = []
        self.a2dp_dropped_list = []
        self.rvr["bt_attenuation"].append(bt_atten)
        self.rvr[bt_atten]["audio_artifacts"] = {}
        self.rvr[bt_atten]["attenuation"] = []
        self.rvr["bt_gap_analysis"][bt_atten] = {}
        for atten in self.wifi_atten_range:
            tag = '{}_{}'.format(bt_atten, atten)
            self.rvr[bt_atten]["attenuation"].append(
                atten + self.rvr[bt_atten]["fixed_attenuation"])
            self.log.info('Setting wifi attenuation to: {} dB'.format(atten))
            for i in range(self.num_atten - 1):
                self.attenuators[i].set_atten(atten)
            if not wifi_connection_check(self.pri_ad, self.network["SSID"]):
                self.iperf_received.append(0)
                return self.iperf_received, self.a2dp_dropped_list, False
            time.sleep(5)  # Time for attenuation to set.
            begin_time = get_current_epoch_time()
            if self.a2dp_streaming:
                self.audio.start()
            if called_func:
                if not multithread_func(self.log, called_func):
                    self.iperf_received.append(
                        float(
                            str(self.iperf_variables.received[-1]).strip(
                                "Mb/s")))
                    return self.iperf_received, self.a2dp_dropped_list, False
            else:
                self.run_iperf_and_get_result()

            adb_rssi_poll_results = self.pri_ad.search_logcat(
                RSSI_POLL_RESULTS, begin_time)
            adb_rssi_results = self.pri_ad.search_logcat(
                RSSI_RESULTS, begin_time)
            if adb_rssi_results:
                self.log.debug(adb_rssi_poll_results)
                self.log.debug(adb_rssi_results[-1])
                self.log.info('Android device: {}'.format(
                    (adb_rssi_results[-1]['log_message']).split(',')[5]))
            if self.a2dp_streaming:
                self.path = self.audio.stop()
                analysis_path = AudioCaptureResult(
                    self.path).audio_quality_analysis(self.audio_params)
                with open(analysis_path) as f:
                    self.rvr[bt_atten]["audio_artifacts"][atten] = f.readline()
                content = json.loads(
                    self.rvr[bt_atten]["audio_artifacts"][atten])
                self.rvr["bt_gap_analysis"][bt_atten][atten] = {}
                for idx, data in enumerate(content["quality_result"]):
                    if data['artifacts']['delay_during_playback']:
                        self.rvr["bt_gap_analysis"][bt_atten][atten][idx] = (
                            data['artifacts']['delay_during_playback'])
                        self.rvr["bt_range"].append(bt_atten)
                    else:
                        self.rvr["bt_gap_analysis"][bt_atten][atten][idx] = 0
                file_path = collect_bluetooth_manager_dumpsys_logs(
                    self.pri_ad, self.current_test_name)
                self.a2dp_dropped_list.append(
                    self.a2dp_dumpsys.parse(file_path))
            self.iperf_received.append(
                float(str(self.iperf_variables.throughput[-1]).strip("Mb/s")))
        for i in range(self.num_atten - 1):
            self.attenuators[i].set_atten(0)
        return self.iperf_received, self.a2dp_dropped_list, True