mirror of
https://github.com/espressif/esp-matter.git
synced 2026-04-27 19:13:13 +00:00
9ec04c4a87
- Added a parser script to parse heap memory numbers from pytests. - Added provision to post the heap memory numbers in MR description.
47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
# SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
|
|
|
# SPDX-License-Identifier: CC0-1.0
|
|
|
|
import subprocess
|
|
|
|
class StaticMemoryParser:
|
|
@staticmethod
|
|
def execute_idf_size_command(old_file_path, new_file_path):
|
|
try:
|
|
result = subprocess.run(
|
|
["python", "-m", "esp_idf_size", "--diff", old_file_path, new_file_path],
|
|
capture_output=True,
|
|
text=True,
|
|
check=True,
|
|
)
|
|
return result.stdout
|
|
except subprocess.CalledProcessError as e:
|
|
raise
|
|
|
|
class DynamicMemoryParser:
|
|
@staticmethod
|
|
def extract_heap_dump(log_file):
|
|
cmd = f"sed -n '/HEAP-DUMP-START/,/HEAP-DUMP-END/p' {log_file}"
|
|
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
|
|
return result.stdout.splitlines()
|
|
|
|
@staticmethod
|
|
def parse_heap_dump(extracted_lines):
|
|
parsed_logs = []
|
|
current_state = None
|
|
|
|
for line in extracted_lines:
|
|
if "state:" in line:
|
|
current_state = line.split("state:")[1].strip()
|
|
elif "Current Free Memory" in line:
|
|
current_free_mem = line.split()[-1]
|
|
elif "Largest Free Block" in line:
|
|
largest_free_block = line.split()[-1]
|
|
elif "Min. Ever Free Size" in line:
|
|
min_ever_free_size = line.split()[-1]
|
|
parsed_logs.append([current_state, current_free_mem, largest_free_block, min_ever_free_size])
|
|
|
|
return parsed_logs
|
|
|
|
|