Merge pull request #14862 from LDong-Arm/storage_stubs

Unit tests: Move storage stubs into the storage directory
pull/14882/head
Martin Kojtal 2021-07-06 14:37:38 +02:00 committed by GitHub
commit 8d3fc33965
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
41 changed files with 131 additions and 278 deletions

View File

@ -6,7 +6,6 @@ add_library(mbed-headers INTERFACE)
add_library(mbed-headers-base INTERFACE) add_library(mbed-headers-base INTERFACE)
add_library(mbed-headers-platform INTERFACE) add_library(mbed-headers-platform INTERFACE)
add_library(mbed-headers-connectivity INTERFACE) add_library(mbed-headers-connectivity INTERFACE)
add_library(mbed-headers-storage INTERFACE)
add_library(mbed-headers-events INTERFACE) add_library(mbed-headers-events INTERFACE)
target_link_libraries(mbed-headers target_link_libraries(mbed-headers
@ -14,7 +13,6 @@ target_link_libraries(mbed-headers
mbed-headers-base mbed-headers-base
mbed-headers-platform mbed-headers-platform
mbed-headers-connectivity mbed-headers-connectivity
mbed-headers-storage
mbed-headers-drivers mbed-headers-drivers
mbed-headers-hal mbed-headers-hal
mbed-headers-events mbed-headers-events
@ -41,26 +39,6 @@ target_include_directories(mbed-headers-base
${mbed-os_SOURCE_DIR}/UNITTESTS/target_h/sys ${mbed-os_SOURCE_DIR}/UNITTESTS/target_h/sys
) )
target_include_directories(mbed-headers-storage
INTERFACE
${mbed-os_SOURCE_DIR}/storage/filesystem/fat/include
${mbed-os_SOURCE_DIR}/storage/filesystem/fat/ChaN
${mbed-os_SOURCE_DIR}/storage/filesystem/littlefs
${mbed-os_SOURCE_DIR}/storage/filesystem/littlefs/include
${mbed-os_SOURCE_DIR}/storage/filesystem/littlefsv2/littlefs
${mbed-os_SOURCE_DIR}/storage/filesystem/littlefsv2/littlefs/bd
${mbed-os_SOURCE_DIR}/storage/filesystem/littlefs/littlefs
${mbed-os_SOURCE_DIR}/storage/blockdevice/include
${mbed-os_SOURCE_DIR}/storage/filesystem/include
${mbed-os_SOURCE_DIR}/storage/kvstore/include
${mbed-os_SOURCE_DIR}/storage/kvstore/kv_config
${mbed-os_SOURCE_DIR}/storage/kvstore/kv_config/include
${mbed-os_SOURCE_DIR}/storage/kvstore/tdbstore/include
${mbed-os_SOURCE_DIR}/storage/kvstore/filesystemstore/include
${mbed-os_SOURCE_DIR}/storage/kvstore/kvstore_global_api/include
${mbed-os_SOURCE_DIR}/storage/blockdevice/include/blockdevice
)
target_include_directories(mbed-headers-connectivity target_include_directories(mbed-headers-connectivity
INTERFACE INTERFACE
${mbed-os_SOURCE_DIR}/connectivity/libraries/nanostack-libservice ${mbed-os_SOURCE_DIR}/connectivity/libraries/nanostack-libservice
@ -103,7 +81,6 @@ target_include_directories(mbed-stubs-headers
add_subdirectory(connectivity) add_subdirectory(connectivity)
add_subdirectory(events) add_subdirectory(events)
add_subdirectory(platform) add_subdirectory(platform)
add_subdirectory(storage)
add_library(mbed-stubs INTERFACE) add_library(mbed-stubs INTERFACE)
@ -115,5 +92,4 @@ target_link_libraries(mbed-stubs
mbed-stubs-hal mbed-stubs-hal
mbed-stubs-platform mbed-stubs-platform
mbed-stubs-rtos mbed-stubs-rtos
mbed-stubs-storage
) )

View File

@ -1,93 +0,0 @@
/* Copyright (c) 2020 ARM Limited
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef EMULATEDSD_H
#define EMULATEDSD_H
#include "blockdevice/BlockDevice.h"
class EmulatedSD_Private;
class EmulatedSD : public mbed::BlockDevice {
public:
EmulatedSD(const char *path);
~EmulatedSD();
/** Initialize a block device
*
* @return 0 on success or a negative error code on failure
*/
virtual int init();
/** Deinitialize a block device
*
* @return 0 on success or a negative error code on failure
*/
virtual int deinit();
/** Read blocks from a block device
*
* If a failure occurs, it is not possible to determine how many bytes succeeded
*
* @param buffer Buffer to write blocks to
* @param addr Address of block to begin reading from
* @param size Size to read in bytes, must be a multiple of the read block size
* @return 0 on success or a negative error code on failure
*/
virtual int read(void *buffer, bd_addr_t addr, bd_size_t size);
/** Program blocks to a block device
*
* The blocks must have been erased prior to being programmed
*
* If a failure occurs, it is not possible to determine how many bytes succeeded
*
* @param buffer Buffer of data to write to blocks
* @param addr Address of block to begin writing to
* @param size Size to write in bytes, must be a multiple of the program block size
* @return 0 on success or a negative error code on failure
*/
virtual int program(const void *buffer, bd_addr_t addr, bd_size_t size);
/** Get the size of a readable block
*
* @return Size of a readable block in bytes
*/
virtual bd_size_t get_read_size() const;
/** Get the size of a programmable block
*
* @return Size of a programmable block in bytes
* @note Must be a multiple of the read size
*/
virtual bd_size_t get_program_size() const;
/** Get the total size of the underlying device
*
* @return Size of the underlying device in bytes
*/
virtual bd_size_t size() const;
/** Get the BlockDevice class type.
*
* @return A string represent the BlockDevice class type.
*/
virtual const char *get_type() const;
private:
EmulatedSD_Private *_p;
};
#endif // EMULATEDSD_H

View File

@ -1,26 +0,0 @@
# Copyright (c) 2021 ARM Limited. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
add_library(mbed-stubs-storage)
target_sources(mbed-stubs-storage
PRIVATE
BufferedBlockDevice_stub.cpp
ChainingBlockDevice_stub.cpp
EmulatedSD.cpp
ExhaustibleBlockDevice_stub.cpp
FlashSimBlockDevice_stub.cpp
HeapBlockDevice_stub.cpp
MBRBlockDevice_stub.cpp
ObservingBlockDevice_stub.cpp
ProfilingBlockDevice_stub.cpp
ReadOnlyBlockDevice_stub.cpp
SlicingBlockDevice_stub.cpp
kv_config_stub.cpp
)
target_link_libraries(mbed-stubs-storage
PRIVATE
mbed-headers
mbed-stubs-headers
)

View File

@ -1,120 +0,0 @@
/* Copyright (c) 2020 ARM Limited
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "EmulatedSD.h"
#include <stdio.h>
class EmulatedSD_Private {
public:
~EmulatedSD_Private() {
if (fs) {
fclose(fs);
}
}
const char *path;
FILE *fs;
bd_size_t size;
};
EmulatedSD::EmulatedSD(const char *path)
{
_p = new EmulatedSD_Private;
_p->path = path;
}
EmulatedSD::~EmulatedSD()
{
delete _p;
}
int EmulatedSD::init()
{
_p->fs = fopen(_p->path, "r+");
if (!_p->fs) {
perror("fdopen():");
return -1;
}
if (fseek(_p->fs, 0, SEEK_END)) {
perror("fseek()");
fclose(_p->fs);
_p->fs = nullptr;
return -1;
}
_p->size = ftell(_p->fs);
rewind(_p->fs);
return 0;
}
int EmulatedSD::deinit()
{
fclose(_p->fs);
_p->fs = nullptr;
return 0;
}
int EmulatedSD::read(void *buffer, bd_addr_t addr, bd_size_t size)
{
if (!_p->fs) {
return -1;
}
if (fseek(_p->fs, addr, SEEK_SET)) {
perror("fseek()");
return -1;
}
size_t r = fread(buffer, size, 1, _p->fs);
if (r < 1) {
perror("fread()");
return -1;
}
return 0;
}
int EmulatedSD::program(const void *buffer, bd_addr_t addr, bd_size_t size)
{
if (!_p->fs) {
return -1;
}
if (fseek(_p->fs, addr, SEEK_SET)) {
perror("fseek()");
return -1;
}
size_t r = fwrite(buffer, size, 1, _p->fs);
if (r < 1) {
perror("fread()");
return -1;
}
return 0;
}
bd_size_t EmulatedSD::get_read_size() const
{
return 512;
}
bd_size_t EmulatedSD::get_program_size() const
{
return 512;
}
bd_size_t EmulatedSD::size() const
{
if (!_p->fs) {
return -1;
}
return _p->size;
}
const char *EmulatedSD::get_type() const
{
return "SD";
}

View File

@ -25,6 +25,7 @@ target_link_libraries(${TEST_NAME}
PRIVATE PRIVATE
mbed-headers mbed-headers
mbed-headers-cellular mbed-headers-cellular
mbed-headers-filesystem
mbed-stubs mbed-stubs
mbed-stubs-cellular mbed-stubs-cellular
mbed-stubs-headers mbed-stubs-headers

View File

@ -35,6 +35,7 @@ if(${CMAKE_CROSSCOMPILING})
else() else()
# Add these subdirectories for the Unit test # Add these subdirectories for the Unit test
add_subdirectory(blockdevice) add_subdirectory(blockdevice)
add_subdirectory(filesystem)
add_subdirectory(kvstore) add_subdirectory(kvstore)
endif() endif()

View File

@ -3,3 +3,4 @@
add_subdirectory(blockdevice) add_subdirectory(blockdevice)
add_subdirectory(SFDP) add_subdirectory(SFDP)
add_subdirectory(doubles)

View File

@ -19,6 +19,7 @@ target_sources(${TEST_NAME}
target_link_libraries(${TEST_NAME} target_link_libraries(${TEST_NAME}
PRIVATE PRIVATE
mbed-headers mbed-headers
mbed-headers-blockdevice
mbed-stubs-platform mbed-stubs-platform
gmock_main gmock_main
) )

View File

@ -14,8 +14,10 @@ target_sources(${TEST_NAME}
target_link_libraries(${TEST_NAME} target_link_libraries(${TEST_NAME}
PRIVATE PRIVATE
mbed-headers mbed-headers
mbed-headers-blockdevice
mbed-stubs-headers mbed-stubs-headers
mbed-stubs-platform mbed-stubs-platform
mbed-stubs-blockdevice
gmock_main gmock_main
) )

View File

@ -15,8 +15,10 @@ target_sources(${TEST_NAME}
target_link_libraries(${TEST_NAME} target_link_libraries(${TEST_NAME}
PRIVATE PRIVATE
mbed-headers mbed-headers
mbed-headers-blockdevice
mbed-stubs-headers mbed-stubs-headers
mbed-stubs-platform mbed-stubs-platform
mbed-stubs-blockdevice
gmock_main gmock_main
) )

View File

@ -14,8 +14,10 @@ target_sources(${TEST_NAME}
target_link_libraries(${TEST_NAME} target_link_libraries(${TEST_NAME}
PRIVATE PRIVATE
mbed-headers mbed-headers
mbed-headers-blockdevice
mbed-stubs-headers mbed-stubs-headers
mbed-stubs-platform mbed-stubs-platform
mbed-stubs-blockdevice
gmock_main gmock_main
) )

View File

@ -14,8 +14,10 @@ target_sources(${TEST_NAME}
target_link_libraries(${TEST_NAME} target_link_libraries(${TEST_NAME}
PRIVATE PRIVATE
mbed-headers mbed-headers
mbed-headers-blockdevice
mbed-stubs-headers mbed-stubs-headers
mbed-stubs-platform mbed-stubs-platform
mbed-stubs-blockdevice
gmock_main gmock_main
) )

View File

@ -58,7 +58,9 @@ target_sources(${TEST_NAME}
target_link_libraries(${TEST_NAME} target_link_libraries(${TEST_NAME}
PRIVATE PRIVATE
mbed-headers mbed-headers
mbed-headers-blockdevice
mbed-stubs-platform mbed-stubs-platform
mbed-stubs-blockdevice
gmock_main gmock_main
) )

View File

@ -14,8 +14,10 @@ target_sources(${TEST_NAME}
target_link_libraries(${TEST_NAME} target_link_libraries(${TEST_NAME}
PRIVATE PRIVATE
mbed-headers mbed-headers
mbed-headers-blockdevice
mbed-stubs-headers mbed-stubs-headers
mbed-stubs-platform mbed-stubs-platform
mbed-stubs-blockdevice
gmock_main gmock_main
) )

View File

@ -15,8 +15,10 @@ target_sources(${TEST_NAME}
target_link_libraries(${TEST_NAME} target_link_libraries(${TEST_NAME}
PRIVATE PRIVATE
mbed-headers mbed-headers
mbed-headers-blockdevice
mbed-stubs-headers mbed-stubs-headers
mbed-stubs-platform mbed-stubs-platform
mbed-stubs-blockdevice
gmock_main gmock_main
) )

View File

@ -15,8 +15,10 @@ target_sources(${TEST_NAME}
target_link_libraries(${TEST_NAME} target_link_libraries(${TEST_NAME}
PRIVATE PRIVATE
mbed-headers mbed-headers
mbed-headers-blockdevice
mbed-stubs-headers mbed-stubs-headers
mbed-stubs-platform mbed-stubs-platform
mbed-stubs-blockdevice
gmock_main gmock_main
) )

View File

@ -15,8 +15,10 @@ target_sources(${TEST_NAME}
target_link_libraries(${TEST_NAME} target_link_libraries(${TEST_NAME}
PRIVATE PRIVATE
mbed-headers mbed-headers
mbed-headers-blockdevice
mbed-stubs-headers mbed-stubs-headers
mbed-stubs-platform mbed-stubs-platform
mbed-stubs-blockdevice
gmock_main gmock_main
) )

View File

@ -15,7 +15,9 @@ target_sources(${TEST_NAME}
target_link_libraries(${TEST_NAME} target_link_libraries(${TEST_NAME}
PRIVATE PRIVATE
mbed-headers mbed-headers
mbed-headers-blockdevice
mbed-stubs-platform mbed-stubs-platform
mbed-stubs-blockdevice
gmock_main gmock_main
) )

View File

@ -0,0 +1,38 @@
# Copyright (c) 2021 ARM Limited. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
add_library(mbed-headers-blockdevice INTERFACE)
target_include_directories(mbed-headers-blockdevice
INTERFACE
${mbed-os_SOURCE_DIR}/storage/blockdevice/include
${mbed-os_SOURCE_DIR}/storage/blockdevice/include/blockdevice
)
add_library(mbed-stubs-blockdevice)
target_include_directories(mbed-stubs-blockdevice
PUBLIC
.
)
target_sources(mbed-stubs-blockdevice
PRIVATE
BufferedBlockDevice_stub.cpp
ChainingBlockDevice_stub.cpp
ExhaustibleBlockDevice_stub.cpp
FlashSimBlockDevice_stub.cpp
HeapBlockDevice_stub.cpp
MBRBlockDevice_stub.cpp
ObservingBlockDevice_stub.cpp
ProfilingBlockDevice_stub.cpp
ReadOnlyBlockDevice_stub.cpp
SlicingBlockDevice_stub.cpp
)
target_link_libraries(mbed-stubs-blockdevice
PRIVATE
mbed-headers-base
mbed-headers-platform
mbed-headers-blockdevice
)

View File

@ -16,7 +16,6 @@
*/ */
#include "ExhaustibleBlockDevice.h" #include "ExhaustibleBlockDevice.h"
#include "mbed.h"
#include "mbed_critical.h" #include "mbed_critical.h"

View File

@ -17,7 +17,6 @@
#include "ObservingBlockDevice.h" #include "ObservingBlockDevice.h"
#include "ReadOnlyBlockDevice.h" #include "ReadOnlyBlockDevice.h"
#include "mbed.h"
ObservingBlockDevice::ObservingBlockDevice(BlockDevice *bd) ObservingBlockDevice::ObservingBlockDevice(BlockDevice *bd)

View File

@ -1,6 +1,10 @@
# Copyright (c) 2020 ARM Limited. All rights reserved. # Copyright (c) 2020 ARM Limited. All rights reserved.
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME AND BUILD_TESTING)
add_subdirectory(tests/UNITTESTS)
endif()
add_subdirectory(fat) add_subdirectory(fat)
add_subdirectory(littlefs) add_subdirectory(littlefs)
add_subdirectory(littlefsv2) add_subdirectory(littlefsv2)

View File

@ -0,0 +1 @@
*

View File

@ -0,0 +1,11 @@
# Copyright (c) 2021 ARM Limited. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
add_library(mbed-headers-filesystem INTERFACE)
target_include_directories(mbed-headers-filesystem
INTERFACE
${mbed-os_SOURCE_DIR}/storage/filesystem/littlefs
${mbed-os_SOURCE_DIR}/storage/filesystem/littlefs/include
${mbed-os_SOURCE_DIR}/storage/filesystem/include
)

View File

@ -1,6 +1,10 @@
# Copyright (c) 2020 ARM Limited. All rights reserved. # Copyright (c) 2020 ARM Limited. All rights reserved.
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME AND BUILD_TESTING)
add_subdirectory(tests/UNITTESTS)
endif()
add_subdirectory(tdbstore) add_subdirectory(tdbstore)
add_subdirectory(filesystemstore) add_subdirectory(filesystemstore)
add_subdirectory(securestore) add_subdirectory(securestore)

View File

@ -2,3 +2,4 @@
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
add_subdirectory(FileSystemStore) add_subdirectory(FileSystemStore)
add_subdirectory(doubles)

View File

@ -33,8 +33,11 @@ target_sources(${TEST_NAME}
target_link_libraries(${TEST_NAME} target_link_libraries(${TEST_NAME}
PRIVATE PRIVATE
mbed-headers mbed-headers
mbed-headers-blockdevice
mbed-headers-filesystem
mbed-headers-kvstore
mbed-stubs-platform mbed-stubs-platform
mbed-stubs-storage mbed-stubs-filesystemstore
gmock_main gmock_main
) )

View File

@ -0,0 +1,15 @@
# Copyright (c) 2021 ARM Limited. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
add_library(mbed-stubs-filesystemstore)
target_sources(mbed-stubs-filesystemstore
PRIVATE
filesystemstore_kv_config_stub.cpp
)
target_link_libraries(mbed-stubs-filesystemstore
PRIVATE
mbed-headers-blockdevice
mbed-headers-kvstore
)

View File

@ -21,6 +21,8 @@ target_sources(${TEST_NAME}
target_link_libraries(${TEST_NAME} target_link_libraries(${TEST_NAME}
PRIVATE PRIVATE
mbed-headers mbed-headers
mbed-headers-blockdevice
mbed-headers-kvstore
mbed-stubs-platform mbed-stubs-platform
gmock_main gmock_main
) )

View File

@ -0,0 +1 @@
*

View File

@ -0,0 +1,14 @@
# Copyright (c) 2021 ARM Limited. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
add_library(mbed-headers-kvstore INTERFACE)
target_include_directories(mbed-headers-kvstore
INTERFACE
${mbed-os_SOURCE_DIR}/storage/kvstore/include
${mbed-os_SOURCE_DIR}/storage/kvstore/kv_config/include
${mbed-os_SOURCE_DIR}/storage/kvstore/kvstore_global_api/include
${mbed-os_SOURCE_DIR}/storage/kvstore/securestore/include
${mbed-os_SOURCE_DIR}/storage/kvstore/tdbstore/include
${mbed-os_SOURCE_DIR}/storage/kvstore/filesystemstore/include
)