mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-10-31 21:14:37 +00:00 
			
		
		
		
	 a583063664
			
		
	
	a583063664
	
	
	
		
			
			This commit fixes memory leaks in unity tests when the debug option CONFIG_FREERTOS_USE_LIST_DATA_INTEGRITY_CHECK_BYTES is enabled. The commit increases the threshold to 1200 bytes from 1024 bytes.
		
			
				
	
	
		
			92 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD
 | |
|  *
 | |
|  * SPDX-License-Identifier: Apache-2.0
 | |
|  */
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <stddef.h>
 | |
| #include "esp_err.h"
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| /**
 | |
|  * @brief Leak for components
 | |
|  */
 | |
| typedef enum {
 | |
|     ESP_COMP_LEAK_GENERAL = 0,  /**< Leak by default */
 | |
|     ESP_COMP_LEAK_LWIP,         /**< Leak for LWIP */
 | |
|     ESP_COMP_LEAK_NVS,          /**< Leak for NVS */
 | |
|     ESP_COMP_LEAK_ALL,          /**< Use for getting the summary leak level */
 | |
| } esp_comp_leak_t;
 | |
| 
 | |
| /**
 | |
|  * @brief Type of a leak threshold
 | |
|  */
 | |
| typedef enum {
 | |
|     ESP_LEAK_TYPE_WARNING = 0,  /**< Warning level of leak */
 | |
|     ESP_LEAK_TYPE_CRITICAL,     /**< Critical level of leak */
 | |
|     ESP_LEAK_TYPE_MAX,          /**< Max number of leak levels for all components/levels */
 | |
| } esp_type_leak_t;
 | |
| 
 | |
| /**
 | |
|  * @brief Adjust the memory leak thresholds for unit tests.
 | |
|  *
 | |
|  * Usually, unit tests will check if memory is leaked. Some functionality used by unit tests may unavoidably
 | |
|  * leak memory. This is why there is a default threshold for memory leaks (currently 1200 bytes).
 | |
|  * Within this range, the number of bytes leaked will be visually reported on the terminal, but no test failure will
 | |
|  * be triggered. Any memory leak above the default threshold will trigger a unit test failure.
 | |
|  * This function allows to adjust that memory leak threshold.
 | |
|  *
 | |
|  * @param leak_level Maximum allowed memory leak which will not trigger a unit test failure.
 | |
|  * @param type_of_leak There are two types of leak thresholds: critical and warning. Only the
 | |
|  *                      critical threshold will trigger a unit test failure if exceeded.
 | |
|  * @param component Thresholds can be set in general or for specific components. Note that this argument
 | |
|  *                      is not checked.
 | |
|  *
 | |
|  * @return ESP_OK on success, ESP_INVALID_ARG if type_of_leak is invalid. \c component is unchecked.
 | |
|  */
 | |
| esp_err_t test_utils_set_leak_level(size_t leak_level, esp_type_leak_t type_of_leak, esp_comp_leak_t component);
 | |
| 
 | |
| /**
 | |
|  * @brief Return the memory leak thresholds for unit tests for a leak type and component.
 | |
|  *
 | |
|  * For more information, see \c test_utils_set_leak_level above.
 | |
|  *
 | |
|  * @param type_of_leak Warning or Critical
 | |
|  * @param component The component for which to return the leak threshold.
 | |
|  */
 | |
| size_t test_utils_get_leak_level(esp_type_leak_t type_of_leak, esp_comp_leak_t component);
 | |
| 
 | |
| /**
 | |
|  * @brief Start/Restart memory leak checking.
 | |
|  *
 | |
|  * Records the current free memory values at time of calling. After the test case, it may be checked with
 | |
|  * \c test_utils_finish_and_evaluate_leaks.
 | |
|  *
 | |
|  * If this function is called repeatedly, only the free memory values at the last time of calling will prevail
 | |
|  * as reference.
 | |
|  */
 | |
| void test_utils_record_free_mem(void);
 | |
| 
 | |
| /**
 | |
|  * @brief Evaluate memory leak checking according to the provided thresholds.
 | |
|  *
 | |
|  * If the current memory leak level (counted from the last time calling \c test_utils_record_free_mem() ) exceeds
 | |
|  * \c critical_threshold, a unit test failure will be triggered. If it exceeds only the warning,
 | |
|  * a warning message will be issued.
 | |
|  */
 | |
| void test_utils_finish_and_evaluate_leaks(size_t warn_threshold, size_t critical_threshold);
 | |
| 
 | |
| /**
 | |
|  * @brief Helper function to setup and initialize heap tracing.
 | |
|  */
 | |
| void setup_heap_record(void);
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 |