Комплекс утилит для поизведения тестирования различных DVFS регуляторов OS Android на предмет энергопотребления процессора
Технологии:
- Python 3.10+
- Android debug bridge
git clone https://github.com/makar-pelogeiko/freq_gov_test.git
cd freq_gov_test
pip install -r requirements.txt
Конфигурационные константы расположены в файле config.py
.
python "utilname"
Например:
python test_govs.py
Утилита меняющяя для всех ядер текущий DVFS-регулятор на переданный как аргумент. Конфигурируется параметрами из config.py
.
Пример вызова:
python change_freq_governor.py <governor_name>
Аргументы:
- governor_name - название регулятора
Утилита исполняющаяя заранее сконфигурированный набор тестов для текущего регулятора. Конфигурируется параметрами из config.py
.
Пример вызова:
python single_gov_test.py
Утилита выполняющая построение графиков по собранным в ходе тестирования данным. Конфигурируется параметрами из config.py
.
Пример вызова:
python plot_results.py
Утилита, выполняющяя тестирование выбранных регуляторов. Конфигурируется параметрами из config.py
.
Пример вызова:
python test_govs.py
Класс сценария тестирования должен быть унаследован от testing_core.base_classes.test_base.TestBase
. Поле test_name
должно быть уникально относительно остальных сценариев тестирования. Сбор данных и запись их на диск осуществляется специальными клсссами. Необходимо реализовать логкиу нового сценария тестирования в certain_virtual_test(self, time_sec)
. сценарий тестирования запускается посредством вызова exec_test(self, time_sec=3)
. Тестирование при помощи одиного объекта сценария тестирования может быть выполнено несколько раз. Для выгрузки собранных в ходе теста(ов) данных используется метод write_results_on_disk()
. Файл сценария тестирования помещается в testing_core/test_scenarios
и будет подключен к проекту динамически.
Необходимые для тестового сценария *.apk
файлы помещаются в специальную папку, путь к которой указан в файле config.py
в config.path_apk
. Остальные необходимые для тестового сценария файлы помещаются в специальную папку, путь к которой указан в файле config.py
в config.path_pc_data
Класс сбора данных должен быть унаследован от testing_core.base_classes.default_data_collector.DefaultDataCollector
. метод collect_data
будет вызван при необходимости собрать данные. Данные собираются перед тестом и после него потом расчитывется разница при помощи статического метода make_diff_data
. Готовый класс сбора данных необходимо поместить в каталоге testing_core/data_collectors
. В конфигурационном файле можно указать используемый класс сбора данных и класс записи данных, а так же указать необходимые аргументы для создания этих классов. Необходимо учитывать то, что класс сбора данных и класс записи данных на диск используют одинаковую структуру данных.
Класс сбора данных должен быть унаследован от testing_core.base_classes.default_results_writer.DefaultResultsWriter
. метод write_results
будет вызван при необходимости записать данные на диск. Готовый класс сбора данных необходимо поместить в каталоге testing_core/test_result_writers
. В конфигурационном файле можно указать используемый класс сбора данных и класс записи данных, а так же указать необходимые аргументы для создания этих классов. Необходимо учитывать то, что класс сбора данных и класс записи данных на диск используют одинаковую структуру данных.
.
│
│ change_freq_governor.py
│ config.py
│ freq_gov_test.py
│ plot_results.py
│ test_govs.py
│
├───apk - папка содержащая необходимые *.apk файлы для тестирования (название может отличаться)
│
├───phoneFiles - папка содержащая необходимые файлы для тестирования (название может отличаться)
│
├───testing_core - python пакет для тестирования
│ ├───base_classes - папка содержит базовые классы для сценария тестирования, сбора данных, вывода данных
│ │ default_data_collector.py - базовый класс сбора данных, используется как класс по умолчанию
│ │ default_results_writer.py - базовый класс записи собранных данных, используется как класс по умолчанию
│ │ test_base.py - базовый класс для сценариев тестирования
│ │
│ ├───data_collectors - специальные классы сбора данных перед тестированием и после него
│ │
│ ├───test_result_writers - специальные классы записи собранных в ходе тестирования данных на диск
│ │
│ └───test_scenarios - сценарии тестирования
- Пелогейко Макар: m.pelogeiko@gmail.com