Commit Graph

19 Commits (e16f59a2ee138f03b86ab1a3faa19f12ca320b8f)

Author SHA1 Message Date
Robert Walton a0befae2d4 CMake: Only build unit tests if Mbed OS is the current project
Typically when adding a unit test directory to a CMake project a check
will be used to ensure the subdirectory is added only if the following
are true:

* The BUILD_TESTING option is set to ON.
* The current CMake project is the top-level project.

The reason being, if a downstream project includes our project they
generally don't want to build our unit tests.

In mbed-os, we do correctly specify the above condition before adding
the central UNITTEST subdirectory, which fetches googletest and adds the
"stub" libraries the unit tests depend on. However, we only check if
CMAKE_CROSSCOMPILING is OFF (or undefined) before actually adding the
unit tests. This mismatched logic would lead to unexpected build
failures in various scenarios. One likely case could be: a downstream
project including mbed-os happens to set CMAKE_CROSSCOMPILING to
OFF/undefined for any reason (possibly to build its own unit tests).
mbed-os would go ahead and attempt to build its tests without fetching
googletest or adding the required stub targets.

To fix the issue replace the check for CMAKE_CROSSCOMPILING in the unit
tests with the same BUILD_TESTING idiom we use for adding the central
UNITTESTS subdirectory.
2021-06-10 23:34:14 +01:00
Rajkumar Kanagaraj 50fc85dc44 CMake: Remove all unittest.cmake script from test suite
- Remove redundant cmake script as already added the CMake configuration file
- Remove redundant empty_baseline as it is no longer needed with the help of CMake configuration file
2021-05-26 07:09:14 -07:00
Rajkumar Kanagaraj c0a8fe62f5 CMake: Refactor storage TDBstore and FileSystemStore unittest cmake
- Add CMake configuration file in TDBstore and FileSystemStore unittest.
2021-05-11 02:29:56 -07:00
Rajkumar Kanagaraj ba04c1cf76 CMake: Add add_subdirectory of unittests
- add every libraries unittest directory into respective CMake
  which allows to include unittest source into build based on
  MBED_BUILD_UNITTESTS flag
2021-05-11 02:29:56 -07:00
Lingkai Dong 7b763be0e3 TDBStore Whitebox tests: fix memory check
Each block of HeapBlockDevice is only allocated from the heap when
that block is programmed. And erasing a block frees the associated
buffer.

To decide if there is enough heap to run the TDBStore Whitebox tests,
we need to perform a trial program() instead of erase().
2021-04-14 17:19:38 +01:00
Lingkai Dong aedc6009ea TDBStore: call `BlockDevice::erase()` regarless of erase value
From the documentations of `BlockDevice::get_erase_value()`:

    -1 if you can't rely on the value of the erased storage

and `BlockDevice::program()`:

    The blocks must have been erased prior to being programmed

So, `BlockDevice::erase()` should always be called regardless of
erase value.
2021-04-14 17:19:38 +01:00
Lingkai Dong fb4e5e80b4 TDBStore: optimize erase algorithms
Currently `TDBStore::offset_in_erase_unit()` and
`TDBStore::check_erase_before_write()` loop through erase units
one-by-one, until the entire range is covered. This is very inefficient
when the erase size is tiny, e.g. one-byte on a non-flash device for
which we use program as erase.

This commit reworks the algorithms, based on the fact that a block
device can erase or program as many units as needed in one go.
2021-04-14 17:19:38 +01:00
Lingkai Dong 2064adee7c TDBStore Doxygen: flash characteristics no longer required 2020-12-11 14:56:39 +00:00
Lingkai Dong cfedf1b027 TDBStore whitebox test: flash simulation no longer required 2020-12-11 14:56:39 +00:00
Lingkai Dong 15e582fc27 TDBStore unit test: flash simulation no longer required 2020-12-11 14:56:36 +00:00
Lingkai Dong 170c07ccdf KVStore: drop './' from CMake paths 2020-12-09 17:26:32 +00:00
Lingkai Dong 34bbcbff92 Fix astyle in KVStore unit tests 2020-12-09 17:26:32 +00:00
Lingkai Dong 0c33db04d5 KVStore: componentize CMake definitions into sub-components 2020-12-09 17:20:43 +00:00
Lingkai Dong 26acbd141a Relocate kvstore Greentea tests into each store type's path 2020-12-09 17:20:43 +00:00
Lingkai Dong 8c1dd01066 Relocate kvstore unit tests into each store type's path 2020-12-09 17:20:42 +00:00
Lingkai Dong c2d6e9146c Turn TDBStore and FileSystemStore into standalone libraries 2020-12-09 17:20:42 +00:00
Rajkumar Kanagaraj d05d3471fe Refactore storage/kvstore directory 2020-07-20 07:28:53 -07:00
Rajkumar Kanagaraj e92efbd800 Update the header file reference 2020-07-17 03:10:58 -07:00
Rajkumar Kanagaraj 0bcf967870 Storage directory restructure:
- Move mbed-os/features/storage to mbed-os/storage
- Move components/storage/blockdevice to storage/blockdevice/COMPONENT_xxx
2020-07-10 14:59:53 +01:00