From 161a9c81858133fdb9b3be155af6f672378c99a7 Mon Sep 17 00:00:00 2001 From: Peter Buchegger Date: Sun, 7 Nov 2021 22:06:10 +0000 Subject: [PATCH] :recycle: refactor to path objects, config loading refactor to use pathlib objects, add config loading --- HIL/esp_dut.py | 53 +++++++++++++++++++++++++--------- HIL/testconfig/testconfig.json | 2 +- HIL/tests/test_basic.py | 16 +++++----- 3 files changed, 49 insertions(+), 22 deletions(-) diff --git a/HIL/esp_dut.py b/HIL/esp_dut.py index 518644b..15ce7d7 100644 --- a/HIL/esp_dut.py +++ b/HIL/esp_dut.py @@ -2,6 +2,10 @@ import os import pytest import serial import logging +import json +import tempfile + +from pathlib import Path from HIL.common import runProcess logger = logging.getLogger(__name__) @@ -9,14 +13,15 @@ logger = logging.getLogger(__name__) class EspFlash: def __init__(self, port): - self.pio_package_path = "$HOME/.platformio/packages" - self.port = port - logger.info(f"pio package path: {self.pio_package_path}") - logger.info(f"port: {self.port}") + self._pio_package_path = Path('$HOME') / '.platformio' / 'packages' + self._port = port + logger.info(f"pio package path: {self._pio_package_path}") + logger.info(f"port: {self._port}") def runESPTool(self, cmd): + esp_tool = self._pio_package_path / 'tool-esptoolpy' / 'esptool.py' runProcess( - f"/usr/bin/python3 {self.pio_package_path}/tool-esptoolpy/esptool.py --chip esp32 --port {self.port} {cmd}") + f"/usr/bin/python3 {esp_tool} --chip esp32 --port {self._port} {cmd}") def erase(self): logger.info("erase flash") @@ -34,29 +39,49 @@ class EspFlash: def make_spiffs(self, fs_path, fs_bin): logger.info(f"make spiffs, fs_path: {fs_path}, fs_bin: {fs_bin}") + mkspiffs_espressif32_arduino = self._pio_package_path / \ + 'tool-mkspiffs' / 'mkspiffs_espressif32_arduino' runProcess( - f"{self.pio_package_path}/tool-mkspiffs/mkspiffs_espressif32_arduino -c {fs_path} -p 256 -b 4096 -s 1507328 {fs_bin}") + f"{mkspiffs_espressif32_arduino} -c {fs_path} -p 256 -b 4096 -s 1507328 {fs_bin}") + + +class EspConfig: + def __init__(self, path, filename): + self.filename = filename + logger.info(f"reading config from: {path}/{self.filename}") + with open(path / self.filename) as json_file: + self.data = json.load(json_file) + logger.info(f"was reading this data: {self.data}") + + def writeFile(self): + tmpdirname = tempfile.TemporaryDirectory() + logger.info(f"writing this data: {self.data}") + with open(Path(tmpdirname.name) / self.filename, 'w') as outfile: + json.dump(self.data, outfile) + return tmpdirname class EspDut: - def __init__(self, port): + def __init__(self, port, configPath, configFile): self.port = port self.baudrate = 115200 self.serial = None self.flash = EspFlash(self.port) + self.config = EspConfig(configPath, configFile) def writeFlash(self, bin_dir): logger.info("write flash") self.flash.erase() - self.flash.write("0x1000", f"{bin_dir}/bootloader_dio_40m.bin") - self.flash.write("0x8000", f"{bin_dir}/partitions.bin") - self.flash.write("0xe000", f"{bin_dir}/boot_app0.bin") - self.flash.write("0x10000", f"{bin_dir}/firmware.bin") + self.flash.write("0x1000", bin_dir / 'bootloader_dio_40m.bin') + self.flash.write("0x8000", bin_dir / 'partitions.bin') + self.flash.write("0xe000", bin_dir / 'boot_app0.bin') + self.flash.write("0x10000", bin_dir / 'firmware.bin') - def writeConfig(self, fs_path): + def writeConfig(self): logger.info("write config") fs_bin = "spiffs.bin" - self.flash.make_spiffs(fs_path, fs_bin) + fs_path = self.config.writeFile() + self.flash.make_spiffs(fs_path.name, fs_bin) self.flash.write("0x290000", fs_bin) def openPort(self): @@ -75,4 +100,4 @@ class EspDut: @pytest.fixture def ESP(): - return EspDut(os.environ["ESP_PORT"]) + return EspDut(os.environ["ESP_PORT"], Path(os.environ["ESP_CONFIG_PATH"]), Path(os.environ["ESP_CONFIG_FILE"])) diff --git a/HIL/testconfig/testconfig.json b/HIL/testconfig/testconfig.json index fe51488..0967ef4 100644 --- a/HIL/testconfig/testconfig.json +++ b/HIL/testconfig/testconfig.json @@ -1 +1 @@ -[] +{} diff --git a/HIL/tests/test_basic.py b/HIL/tests/test_basic.py index a40e310..be7cd34 100644 --- a/HIL/tests/test_basic.py +++ b/HIL/tests/test_basic.py @@ -1,5 +1,6 @@ from HIL.esp_dut import ESP from HIL.aprs_con import APRSIS, AprsIs +from pathlib import Path def test_basic_port(ESP): @@ -8,17 +9,18 @@ def test_basic_port(ESP): def test_flash(ESP): - bin_dir = "testbinary" + bin_dir = Path("testbinary") ESP.writeFlash(bin_dir) - ESP.flash.verify("0x1000", f"{bin_dir}/bootloader_dio_40m.bin") - ESP.flash.verify("0x8000", f"{bin_dir}/partitions.bin") - ESP.flash.verify("0xe000", f"{bin_dir}/boot_app0.bin") - ESP.flash.verify("0x10000", f"{bin_dir}/firmware.bin") + ESP.flash.verify("0x1000", bin_dir / 'bootloader_dio_40m.bin') + ESP.flash.verify("0x8000", bin_dir / 'partitions.bin') + ESP.flash.verify("0xe000", bin_dir / 'boot_app0.bin') + ESP.flash.verify("0x10000", bin_dir / 'firmware.bin') def test_flash_config(ESP): - config_dir = "testconfig" - ESP.writeConfig(config_dir) + ESP.config.data["bar"] = "foo" + ESP.config.data["number"] = 123 + ESP.writeConfig() def test_erase(ESP):