Files
esp-matter/tools/ci/memory_data_parser.py
T
shripad621git 9ec04c4a87 .gitlab-ci.yml: Post heap memory numbers in the MR description.
- Added a parser script to parse heap memory numbers from pytests.
- Added provision to post the heap memory numbers in MR description.
2025-04-28 08:41:59 +05:30

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