pw_kvs: Fuzz test for Put
Change-Id: I42aed74fca7851231355a94429423f35747a7d68
diff --git a/pw_kvs/key_value_store_test.cc b/pw_kvs/key_value_store_test.cc
index fd4adf1..4c7225a 100644
--- a/pw_kvs/key_value_store_test.cc
+++ b/pw_kvs/key_value_store_test.cc
@@ -308,6 +308,29 @@
}
}
+TEST_F(KeyValueStoreTest, DISABLED_Put_VaryingKeysAndValues) {
+ char value[] =
+ "abcdefghijklmnopqrstuvwxyz" // 26
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ" // 52
+ "34567890123"; // 64 (with final \0);
+ static_assert(sizeof(value) == 64);
+
+ for (int i = 0; i < 100; ++i) {
+ for (unsigned key_size = 1; key_size < sizeof(value); ++key_size) {
+ for (unsigned value_size = 0; value_size < sizeof(value); ++value_size) {
+ const std::string_view key(value, key_size);
+ auto status = kvs_.Put(key, as_bytes(span(value, value_size)));
+ if (!status.ok()) {
+ PW_LOG_ERROR("Failed for %s", MakeString<64>(key).c_str());
+ kvs_.LogDebugInfo();
+ }
+
+ ASSERT_EQ(Status::OK, status);
+ }
+ }
+ }
+}
+
TEST_F(KeyValueStoreTest, Delete_GetDeletedKey_ReturnsNotFound) {
ASSERT_EQ(Status::OK, kvs_.Put("kEy", as_bytes(span("123"))));
ASSERT_EQ(Status::OK, kvs_.Delete("kEy"));