spi_flash_test: remove threshold from unit test

This commit is contained in:
Michael (XIAO Xufeng)
2022-01-16 19:19:14 +00:00
parent f01b9a583e
commit 1cbf9506b2
8 changed files with 20 additions and 465 deletions
+12 -20
View File
@@ -163,9 +163,6 @@ typedef void (*flash_test_func_t)(const esp_partition_t *part);
#endif // !CONFIG_IDF_TARGET_ESP32C3
#endif //CONFIG_SPIRAM
#define TEST_FLASH_PERFORMANCE_CCOMP_GREATER_THAN(name, value, chip) \
printf("[Performance][" PERFORMANCE_STR(name) "]: %d, flash_chip: %s\n", value, chip);\
_TEST_PERFORMANCE_ASSERT(value > PERFORMANCE_CON(IDF_PERFORMANCE_MIN_, name));
//currently all the configs are the same with esp_flash_spi_device_config_t, no more information required
typedef esp_flash_spi_device_config_t flashtest_config_t;
@@ -1125,22 +1122,17 @@ static void test_flash_read_write_performance(const esp_partition_t *part)
TEST_ASSERT_EQUAL_HEX8_ARRAY(data_to_write, data_read, total_len);
#if !CONFIG_SPIRAM && !CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE
# define CHECK_DATA(bus, suffix, chip) TEST_FLASH_PERFORMANCE_CCOMP_GREATER_THAN(FLASH_SPEED_BYTE_PER_SEC_##bus##suffix, speed_##suffix, chip)
# define CHECK_ERASE(bus, var, chip) TEST_FLASH_PERFORMANCE_CCOMP_GREATER_THAN(FLASH_SPEED_BYTE_PER_SEC_##bus##ERASE, var, chip)
#else
# define CHECK_DATA(bus, suffix, chip) ((void)speed_##suffix);((void)chip)
# define CHECK_ERASE(bus, var, chip) ((void)var);((void)chip)
#endif
#define LOG_DATA(bus, suffix, chip) IDF_LOG_PERFORMANCE("FLASH_SPEED_BYTE_PER_SEC_"#bus#suffix, "%d, flash_chip: %s", speed_##suffix, chip)
#define LOG_ERASE(bus, var, chip) IDF_LOG_PERFORMANCE("FLASH_SPEED_BYTE_PER_SEC_"#bus"ERASE", "%d, flash_chip: %s", var, chip)
// Erase time may vary a lot, can increase threshold if this fails with a reasonable speed
#define CHECK_PERFORMANCE(bus, chip) do {\
CHECK_DATA(bus, WR_4B, chip); \
CHECK_DATA(bus, RD_4B, chip); \
CHECK_DATA(bus, WR_2KB, chip); \
CHECK_DATA(bus, RD_2KB, chip); \
CHECK_ERASE(bus, erase_1, chip); \
CHECK_ERASE(bus, erase_2, chip); \
#define LOG_PERFORMANCE(bus, chip) do {\
LOG_DATA(bus, WR_4B, chip); \
LOG_DATA(bus, RD_4B, chip); \
LOG_DATA(bus, WR_2KB, chip); \
LOG_DATA(bus, RD_2KB, chip); \
LOG_ERASE(bus, erase_1, chip); \
LOG_ERASE(bus, erase_2, chip); \
} while (0)
spi_host_device_t host_id;
@@ -1152,13 +1144,13 @@ static void test_flash_read_write_performance(const esp_partition_t *part)
get_chip_host(chip, &host_id, &cs_id);
if (host_id != SPI1_HOST) {
// Chips on other SPI buses
CHECK_PERFORMANCE(EXT_, chip_name);
LOG_PERFORMANCE(EXT_, chip_name);
} else if (cs_id == 0) {
// Main flash
CHECK_PERFORMANCE(,chip_name);
LOG_PERFORMANCE(,chip_name);
} else {
// Other cs pins on SPI1
CHECK_PERFORMANCE(SPI1_, chip_name);
LOG_PERFORMANCE(SPI1_, chip_name);
}
free(data_to_write);
free(data_read);
+8 -14
View File
@@ -227,23 +227,17 @@ TEST_CASE("Test spi_flash read/write performance", "[spi_flash]")
TEST_ASSERT_EQUAL_HEX8_ARRAY(data_to_write, data_read, total_len);
// Data checks are disabled when PSRAM is used or in Freertos compliance check test
#if !CONFIG_SPIRAM && !CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE
# define CHECK_DATA(suffix) TEST_PERFORMANCE_CCOMP_GREATER_THAN(FLASH_SPEED_BYTE_PER_SEC_LEGACY_##suffix, "%d", speed_##suffix)
# define CHECK_ERASE(var) TEST_PERFORMANCE_CCOMP_GREATER_THAN(FLASH_SPEED_BYTE_PER_SEC_LEGACY_ERASE, "%d", var)
#else
# define CHECK_DATA(suffix) ((void)speed_##suffix)
# define CHECK_ERASE(var) ((void)var)
#endif
#define LOG_DATA(suffix) IDF_LOG_PERFORMANCE("FLASH_SPEED_BYTE_PER_SEC_LEGACY_"#suffix, "%d", speed_##suffix)
#define LOG_ERASE(var) IDF_LOG_PERFORMANCE("FLASH_SPEED_BYTE_PER_SEC_LEGACY_ERASE", "%d", var)
CHECK_DATA(WR_4B);
CHECK_DATA(RD_4B);
CHECK_DATA(WR_2KB);
CHECK_DATA(RD_2KB);
LOG_DATA(WR_4B);
LOG_DATA(RD_4B);
LOG_DATA(WR_2KB);
LOG_DATA(RD_2KB);
// Erase time may vary a lot, can increase threshold if this fails with a reasonable speed
CHECK_ERASE(erase_1);
CHECK_ERASE(erase_2);
LOG_ERASE(erase_1);
LOG_ERASE(erase_2);
free(data_to_write);
free(data_read);