|
1 | 1 | /* |
2 | | - * SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD |
| 2 | + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD |
3 | 3 | * |
4 | 4 | * SPDX-License-Identifier: Apache-2.0 |
5 | 5 | */ |
@@ -3808,6 +3808,82 @@ TEST_CASE("nvs multiple write with same key but different types", "[nvs]") |
3808 | 3808 | TEST_ESP_OK(nvs_flash_deinit_partition(NVS_DEFAULT_PART_NAME)); |
3809 | 3809 | } |
3810 | 3810 |
|
| 3811 | +TEST_CASE("nvs multiple write with same key blob and string involved", "[nvs]") |
| 3812 | +{ |
| 3813 | + PartitionEmulationFixture f(0, 10); |
| 3814 | + |
| 3815 | + nvs_handle_t handle_1; |
| 3816 | + const uint32_t NVS_FLASH_SECTOR = 6; |
| 3817 | + const uint32_t NVS_FLASH_SECTOR_COUNT_MIN = 3; |
| 3818 | + TEMPORARILY_DISABLED(f.emu.setBounds(NVS_FLASH_SECTOR, NVS_FLASH_SECTOR + NVS_FLASH_SECTOR_COUNT_MIN);) |
| 3819 | + |
| 3820 | + for (uint16_t j = NVS_FLASH_SECTOR; j < NVS_FLASH_SECTOR + NVS_FLASH_SECTOR_COUNT_MIN; ++j) { |
| 3821 | + f.erase(j); |
| 3822 | + } |
| 3823 | + TEST_ESP_OK(nvs::NVSPartitionManager::get_instance()->init_custom(f.part(), |
| 3824 | + NVS_FLASH_SECTOR, |
| 3825 | + NVS_FLASH_SECTOR_COUNT_MIN)); |
| 3826 | + |
| 3827 | + TEST_ESP_OK(nvs_open("namespace1", NVS_READWRITE, &handle_1)); |
| 3828 | + |
| 3829 | + nvs_erase_all(handle_1); |
| 3830 | + |
| 3831 | + const char key_name[] = "foo"; |
| 3832 | + |
| 3833 | + // integer variables |
| 3834 | + int32_t v32; |
| 3835 | + int8_t v8; |
| 3836 | + |
| 3837 | + // string |
| 3838 | + #define str_data_len 64 |
| 3839 | + const char str_data[] = "string data"; |
| 3840 | + char str_buf[str_data_len] = {0}; |
| 3841 | + size_t str_len = str_data_len; |
| 3842 | + |
| 3843 | + // blob |
| 3844 | + #define blob_data_len 64 |
| 3845 | + uint8_t blob_data[blob_data_len] = {0}; |
| 3846 | + uint8_t blob_buf[blob_data_len] = {0}; |
| 3847 | + size_t blob_read_size; |
| 3848 | + |
| 3849 | + // first write is i32 |
| 3850 | + TEST_ESP_OK(nvs_set_i32(handle_1, key_name, (int32_t)12345678)); |
| 3851 | + |
| 3852 | + TEST_ESP_ERR(nvs_get_i8(handle_1, key_name, &v8), ESP_ERR_NVS_NOT_FOUND); |
| 3853 | + TEST_ESP_OK(nvs_get_i32(handle_1, key_name, &v32)); |
| 3854 | + TEST_ESP_ERR(nvs_get_str(handle_1, key_name, str_buf, &str_len), ESP_ERR_NVS_NOT_FOUND); |
| 3855 | + TEST_ESP_ERR(nvs_get_blob(handle_1, key_name, blob_buf, &blob_read_size), ESP_ERR_NVS_NOT_FOUND); |
| 3856 | + |
| 3857 | + |
| 3858 | + // second write is string |
| 3859 | + TEST_ESP_OK(nvs_set_str(handle_1, key_name, str_data)); |
| 3860 | + |
| 3861 | + TEST_ESP_ERR(nvs_get_i8(handle_1, key_name, &v8), ESP_ERR_NVS_NOT_FOUND); |
| 3862 | + TEST_ESP_ERR(nvs_get_i32(handle_1, key_name, &v32), ESP_ERR_NVS_NOT_FOUND); |
| 3863 | + TEST_ESP_OK(nvs_get_str(handle_1, key_name, str_buf, &str_len)); |
| 3864 | + TEST_ESP_ERR(nvs_get_blob(handle_1, key_name, blob_buf, &blob_read_size), ESP_ERR_NVS_NOT_FOUND); |
| 3865 | + |
| 3866 | + // third write is blob |
| 3867 | + TEST_ESP_OK(nvs_set_blob(handle_1, key_name, blob_data, blob_data_len)); |
| 3868 | + |
| 3869 | + TEST_ESP_ERR(nvs_get_i8(handle_1, key_name, &v8), ESP_ERR_NVS_NOT_FOUND); |
| 3870 | + TEST_ESP_ERR(nvs_get_i32(handle_1, key_name, &v32), ESP_ERR_NVS_NOT_FOUND); |
| 3871 | + TEST_ESP_ERR(nvs_get_str(handle_1, key_name, str_buf, &str_len), ESP_ERR_NVS_NOT_FOUND); |
| 3872 | + TEST_ESP_OK(nvs_get_blob(handle_1, key_name, blob_buf, &blob_read_size)); |
| 3873 | + |
| 3874 | + // fourth write is i8 |
| 3875 | + TEST_ESP_OK(nvs_set_i8(handle_1, key_name, (int8_t)12)); |
| 3876 | + |
| 3877 | + TEST_ESP_OK(nvs_get_i8(handle_1, key_name, &v8)); |
| 3878 | + TEST_ESP_ERR(nvs_get_i32(handle_1, key_name, &v32), ESP_ERR_NVS_NOT_FOUND); |
| 3879 | + TEST_ESP_ERR(nvs_get_str(handle_1, key_name, str_buf, &str_len), ESP_ERR_NVS_NOT_FOUND); |
| 3880 | + TEST_ESP_ERR(nvs_get_blob(handle_1, key_name, blob_buf, &blob_read_size), ESP_ERR_NVS_NOT_FOUND); |
| 3881 | + |
| 3882 | + nvs_close(handle_1); |
| 3883 | + |
| 3884 | + TEST_ESP_OK(nvs_flash_deinit_partition(NVS_DEFAULT_PART_NAME)); |
| 3885 | +} |
| 3886 | + |
3811 | 3887 | TEST_CASE("nvs find key tests", "[nvs]") |
3812 | 3888 | { |
3813 | 3889 | const size_t buff_len = 4096; |
|
0 commit comments