• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2020 The Pigweed Authors
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may not
4# use this file except in compliance with the License. You may obtain a copy of
5# the License at
6#
7#     https://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations under
13# the License.
14
15load(
16    "//pw_build:pigweed.bzl",
17    "pw_cc_test",
18)
19
20package(default_visibility = ["//visibility:public"])
21
22licenses(["notice"])
23
24cc_library(
25    name = "pw_kvs",
26    srcs = [
27        "alignment.cc",
28        "checksum.cc",
29        "entry.cc",
30        "entry_cache.cc",
31        "flash_memory.cc",
32        "format.cc",
33        "key_value_store.cc",
34        "public/pw_kvs/internal/entry.h",
35        "public/pw_kvs/internal/entry_cache.h",
36        "public/pw_kvs/internal/hash.h",
37        "public/pw_kvs/internal/key_descriptor.h",
38        "public/pw_kvs/internal/sectors.h",
39        "public/pw_kvs/internal/span_traits.h",
40        "pw_kvs_private/config.h",
41        "sectors.cc",
42    ],
43    hdrs = [
44        "public/pw_kvs/alignment.h",
45        "public/pw_kvs/checksum.h",
46        "public/pw_kvs/crc16_checksum.h",
47        "public/pw_kvs/flash_memory.h",
48        "public/pw_kvs/format.h",
49        "public/pw_kvs/io.h",
50        "public/pw_kvs/key.h",
51        "public/pw_kvs/key_value_store.h",
52    ],
53    includes = ["public"],
54    deps = [
55        ":config_override",
56        "//pw_assert",
57        "//pw_bytes",
58        "//pw_bytes:alignment",
59        "//pw_checksum",
60        "//pw_containers",
61        "//pw_log",
62        "//pw_log:pw_log.facade",
63        "//pw_polyfill",
64        "//pw_span",
65        "//pw_status",
66        "//pw_stream",
67    ],
68)
69
70label_flag(
71    name = "config_override",
72    build_setting_default = "//pw_build:default_module_config",
73)
74
75cc_library(
76    name = "crc16",
77    hdrs = [
78        "public/pw_kvs/crc16_checksum.h",
79    ],
80    deps = [
81        ":pw_kvs",
82        "//pw_checksum",
83        "//pw_span",
84    ],
85)
86
87cc_library(
88    name = "flash_test_partition",
89    hdrs = ["public/pw_kvs/flash_test_partition.h"],
90    deps = [":pw_kvs"],
91)
92
93cc_library(
94    name = "test_key_value_store",
95    hdrs = ["public/pw_kvs/test_key_value_store.h"],
96    deps = [
97        ":pw_kvs",
98        "//pw_sync:borrow",
99    ],
100)
101
102cc_library(
103    name = "fake_flash",
104    srcs = [
105        "fake_flash_memory.cc",
106    ],
107    hdrs = [
108        "public/pw_kvs/fake_flash_memory.h",
109    ],
110    includes = ["public"],
111    deps = [
112        ":pw_kvs",
113        "//pw_containers",
114        "//pw_log",
115        "//pw_log:pw_log.facade",
116        "//pw_span",
117        "//pw_status",
118    ],
119)
120
121cc_library(
122    name = "flash_partition_with_logical_sectors",
123    hdrs = [
124        "public/pw_kvs/flash_partition_with_logical_sectors.h",
125    ],
126    includes = ["public"],
127    deps = [
128        ":pw_kvs",
129    ],
130)
131
132cc_library(
133    name = "fake_flash_1_aligned_partition",
134    srcs = [
135        "fake_flash_test_partition.cc",
136    ],
137    hdrs = [
138        "public/pw_kvs/flash_test_partition.h",
139    ],
140    defines = [
141        "PW_FLASH_TEST_SECTORS=6U",
142        "PW_FLASH_TEST_SECTOR_SIZE=4096U",
143        "PW_FLASH_TEST_ALIGNMENT=1U",
144    ],
145    deps = [
146        ":fake_flash",
147        ":pw_kvs",
148    ],
149)
150
151cc_library(
152    name = "fake_flash_1_aligned_4_logical_partition",
153    srcs = [
154        "fake_flash_test_logical_sector_partition.cc",
155    ],
156    hdrs = [
157        "public/pw_kvs/flash_test_partition.h",
158    ],
159    defines = [
160        "PW_FLASH_TEST_SECTORS=24U",
161        "PW_FLASH_TEST_SECTOR_SIZE=4096U",
162        "PW_FLASH_TEST_ALIGNMENT=1U",
163        "PW_FLASH_TEST_SECTORS_PER_LOGICAL_SECTOR=4U",
164    ],
165    deps = [
166        ":fake_flash",
167        ":flash_partition_with_logical_sectors",
168        ":pw_kvs",
169    ],
170)
171
172cc_library(
173    name = "fake_flash_12_byte_partition",
174    srcs = ["fake_flash_test_partition.cc"],
175    hdrs = ["public/pw_kvs/flash_test_partition.h"],
176    defines = [
177        "PW_FLASH_TEST_SECTORS=3",
178        "PW_FLASH_TEST_SECTOR_SIZE=4",
179        "PW_FLASH_TEST_ALIGNMENT=4",
180    ],
181    deps = [
182        ":fake_flash",
183        ":flash_test_partition",
184        ":pw_kvs",
185    ],
186)
187
188cc_library(
189    name = "fake_flash_16_aligned_partition",
190    srcs = [
191        "fake_flash_test_partition.cc",
192    ],
193    hdrs = [
194        "public/pw_kvs/flash_test_partition.h",
195    ],
196    defines = [
197        "PW_FLASH_TEST_SECTORS=6U",
198        "PW_FLASH_TEST_SECTOR_SIZE=4096U",
199        "PW_FLASH_TEST_ALIGNMENT=16",
200    ],
201    deps = [
202        ":fake_flash",
203        ":pw_kvs",
204    ],
205)
206
207cc_library(
208    name = "fake_flash_64_aligned_partition",
209    srcs = [
210        "fake_flash_test_partition.cc",
211    ],
212    hdrs = [
213        "public/pw_kvs/flash_test_partition.h",
214    ],
215    defines = [
216        "PW_FLASH_TEST_SECTORS=6U",
217        "PW_FLASH_TEST_SECTOR_SIZE=4096U",
218        "PW_FLASH_TEST_ALIGNMENT=64U",
219    ],
220    deps = [
221        ":fake_flash",
222        ":pw_kvs",
223    ],
224)
225
226cc_library(
227    name = "fake_flash_256_aligned_partition",
228    srcs = [
229        "fake_flash_test_partition.cc",
230    ],
231    hdrs = [
232        "public/pw_kvs/flash_test_partition.h",
233    ],
234    defines = [
235        "PW_FLASH_TEST_SECTORS=6U",
236        "PW_FLASH_TEST_SECTOR_SIZE=4096U",
237        "PW_FLASH_TEST_ALIGNMENT=256U",
238    ],
239    deps = [
240        ":fake_flash",
241        ":pw_kvs",
242    ],
243)
244
245cc_library(
246    name = "fake_flash_test_key_value_store",
247    srcs = [
248        "fake_flash_test_key_value_store.cc",
249    ],
250    hdrs = [
251        "public/pw_kvs/test_key_value_store.h",
252    ],
253    deps = [
254        ":crc16",
255        ":fake_flash",
256        ":pw_kvs",
257        "//pw_sync:borrow",
258    ],
259)
260
261cc_library(
262    name = "test_partition",
263    srcs = [
264        "flash_partition_with_stats.cc",
265    ],
266    hdrs = [
267        "public/pw_kvs/flash_partition_with_stats.h",
268    ],
269    includes = ["public"],
270    visibility = ["//visibility:private"],
271    deps = [
272        "//pw_containers",
273        "//pw_kvs",
274        "//pw_log",
275        "//pw_log:pw_log.facade",
276        "//pw_status",
277    ],
278)
279
280pw_cc_test(
281    name = "alignment_test",
282    srcs = [
283        "alignment_test.cc",
284    ],
285    deps = [
286        ":pw_kvs",
287        "//pw_status",
288        "//pw_unit_test",
289    ],
290)
291
292pw_cc_test(
293    name = "checksum_test",
294    srcs = ["checksum_test.cc"],
295    deps = [
296        ":crc16",
297        ":pw_kvs",
298        "//pw_checksum",
299        "//pw_log",
300        "//pw_unit_test",
301    ],
302)
303
304pw_cc_test(
305    name = "converts_to_span_test",
306    srcs = ["converts_to_span_test.cc"],
307    deps = [":pw_kvs"],
308)
309
310pw_cc_test(
311    name = "entry_test",
312    srcs = [
313        "entry_test.cc",
314    ],
315    deps = [
316        ":fake_flash",
317        ":pw_kvs",
318        "//pw_log",
319        "//pw_span",
320        "//pw_unit_test",
321    ],
322)
323
324pw_cc_test(
325    name = "entry_cache_test",
326    srcs = ["entry_cache_test.cc"],
327    deps = [
328        ":fake_flash",
329        ":pw_kvs",
330        "//pw_log",
331        "//pw_unit_test",
332    ],
333)
334
335pw_cc_test(
336    name = "flash_partition_stream_test",
337    srcs = ["flash_partition_stream_test.cc"],
338    deps = [
339        ":fake_flash",
340        ":pw_kvs",
341        "//pw_log",
342        "//pw_random",
343        "//pw_unit_test",
344    ],
345)
346
347cc_library(
348    name = "flash_partition_test_100_iterations",
349    testonly = True,
350    srcs = ["flash_partition_test.cc"],
351    defines = [
352        "PW_FLASH_TEST_ITERATIONS=100",
353        "PW_FLASH_TEST_WRITE_SIZE=1",
354    ],
355    deps = [
356        ":flash_test_partition",
357        ":pw_kvs",
358        "//pw_log",
359        "//pw_unit_test",
360    ],
361)
362
363cc_library(
364    name = "flash_partition_test_2_iterations",
365    testonly = True,
366    srcs = ["flash_partition_test.cc"],
367    defines = [
368        "PW_FLASH_TEST_ITERATIONS=2",
369        "PW_FLASH_TEST_WRITE_SIZE=1",
370    ],
371    deps = [
372        ":flash_test_partition",
373        ":pw_kvs",
374        "//pw_log",
375        "//pw_unit_test",
376    ],
377)
378
379cc_library(
380    name = "flash_partition_test_100_iterations_256_write",
381    testonly = True,
382    srcs = ["flash_partition_test.cc"],
383    defines = [
384        "PW_FLASH_TEST_ITERATIONS=100",
385        "PW_FLASH_TEST_WRITE_SIZE=256",
386    ],
387    deps = [
388        ":flash_test_partition",
389        ":pw_kvs",
390        "//pw_log",
391        "//pw_unit_test",
392    ],
393)
394
395cc_library(
396    name = "flash_partition_test_2_iterations_256_write",
397    testonly = True,
398    srcs = ["flash_partition_test.cc"],
399    defines = [
400        "PW_FLASH_TEST_ITERATIONS=2",
401        "PW_FLASH_TEST_WRITE_SIZE=256",
402    ],
403    deps = [
404        ":flash_test_partition",
405        ":pw_kvs",
406        "//pw_log",
407        "//pw_unit_test",
408    ],
409)
410
411cc_library(
412    name = "key_value_store_initialized_test",
413    testonly = True,
414    srcs = ["key_value_store_initialized_test.cc"],
415    deps = [
416        ":crc16",
417        ":flash_test_partition",
418        ":pw_kvs",
419        "//pw_bytes",
420        "//pw_checksum",
421        "//pw_log",
422        "//pw_string:builder",
423        "//pw_unit_test",
424    ],
425)
426
427pw_cc_test(
428    name = "flash_partition_1_alignment_test",
429    deps = [
430        ":fake_flash_1_aligned_partition",
431        ":flash_partition_test_100_iterations",
432        ":pw_kvs",
433        "//pw_log",
434        "//pw_unit_test",
435    ],
436)
437
438pw_cc_test(
439    name = "flash_partition_1_alignment_4_logical_test",
440    deps = [
441        ":fake_flash_1_aligned_4_logical_partition",
442        ":flash_partition_test_2_iterations",
443        ":pw_kvs",
444        "//pw_log",
445        "//pw_unit_test",
446    ],
447)
448
449pw_cc_test(
450    name = "flash_partition_16_alignment_test",
451    deps = [
452        ":fake_flash_16_aligned_partition",
453        ":flash_partition_test_100_iterations",
454        ":pw_kvs",
455        "//pw_log",
456        "//pw_unit_test",
457    ],
458)
459
460pw_cc_test(
461    name = "flash_partition_64_alignment_test",
462    deps = [
463        ":fake_flash_64_aligned_partition",
464        ":flash_partition_test_100_iterations",
465        ":pw_kvs",
466        "//pw_log",
467        "//pw_unit_test",
468    ],
469)
470
471pw_cc_test(
472    name = "flash_partition_256_alignment_test",
473    deps = [
474        ":fake_flash_256_aligned_partition",
475        ":flash_partition_test_100_iterations",
476        ":pw_kvs",
477        "//pw_log",
478        "//pw_unit_test",
479    ],
480)
481
482pw_cc_test(
483    name = "flash_partition_256_write_size_test",
484    deps = [
485        ":fake_flash_1_aligned_partition",
486        ":flash_partition_test_100_iterations_256_write",
487        ":pw_kvs",
488        "//pw_log",
489        "//pw_unit_test",
490    ],
491)
492
493pw_cc_test(
494    name = "flash_partition_4_logical_256_write_size_test",
495    deps = [
496        ":fake_flash_1_aligned_4_logical_partition",
497        ":flash_partition_test_2_iterations_256_write",
498        ":pw_kvs",
499        "//pw_log",
500        "//pw_unit_test",
501    ],
502)
503
504pw_cc_test(
505    name = "key_test",
506    srcs = [
507        "key_test.cc",
508    ],
509    deps = [
510        ":pw_kvs",
511        "//pw_status",
512        "//pw_unit_test",
513    ],
514)
515
516pw_cc_test(
517    name = "key_value_store_test",
518    srcs = ["key_value_store_test.cc"],
519    deps = [
520        ":crc16",
521        ":fake_flash",
522        ":pw_kvs",
523        "//pw_checksum",
524        "//pw_log",
525        "//pw_log:pw_log.facade",
526        "//pw_span",
527        "//pw_status",
528        "//pw_string:builder",
529        "//pw_unit_test",
530    ],
531)
532
533pw_cc_test(
534    name = "key_value_store_1_alignment_flash_test",
535    deps = [
536        ":crc16",
537        ":fake_flash_1_aligned_partition",
538        ":key_value_store_initialized_test",
539        ":pw_kvs",
540        "//pw_checksum",
541        "//pw_log",
542        "//pw_log:pw_log.facade",
543        "//pw_span",
544        "//pw_status",
545        "//pw_string:builder",
546        "//pw_unit_test",
547    ],
548)
549
550pw_cc_test(
551    name = "key_value_store_1_alignment_4_logical_flash_test",
552    deps = [
553        ":crc16",
554        ":fake_flash_1_aligned_4_logical_partition",
555        ":key_value_store_initialized_test",
556        ":pw_kvs",
557        "//pw_checksum",
558        "//pw_log",
559        "//pw_log:pw_log.facade",
560        "//pw_span",
561        "//pw_status",
562        "//pw_string:builder",
563        "//pw_unit_test",
564    ],
565)
566
567pw_cc_test(
568    name = "key_value_store_16_alignment_flash_test",
569    deps = [
570        ":crc16",
571        ":fake_flash_16_aligned_partition",
572        ":key_value_store_initialized_test",
573        ":pw_kvs",
574        "//pw_checksum",
575        "//pw_log",
576        "//pw_log:pw_log.facade",
577        "//pw_span",
578        "//pw_status",
579        "//pw_string:builder",
580        "//pw_unit_test",
581    ],
582)
583
584pw_cc_test(
585    name = "key_value_store_64_alignment_flash_test",
586    deps = [
587        ":crc16",
588        ":fake_flash_64_aligned_partition",
589        ":key_value_store_initialized_test",
590        ":pw_kvs",
591        "//pw_checksum",
592        "//pw_log",
593        "//pw_log:pw_log.facade",
594        "//pw_span",
595        "//pw_status",
596        "//pw_string:builder",
597        "//pw_unit_test",
598    ],
599)
600
601pw_cc_test(
602    name = "key_value_store_256_alignment_flash_test",
603    deps = [
604        ":crc16",
605        ":fake_flash_256_aligned_partition",
606        ":key_value_store_initialized_test",
607        ":pw_kvs",
608        "//pw_checksum",
609        "//pw_log",
610        "//pw_log:pw_log.facade",
611        "//pw_span",
612        "//pw_status",
613        "//pw_string:builder",
614        "//pw_unit_test",
615    ],
616)
617
618pw_cc_test(
619    name = "fake_flash_test_key_value_store_test",
620    srcs = ["test_key_value_store_test.cc"],
621    deps = [
622        ":crc16",
623        ":fake_flash_test_key_value_store",
624        ":pw_kvs",
625        "//pw_log",
626        "//pw_status",
627        "//pw_sync:borrow",
628        "//pw_unit_test",
629    ],
630)
631
632pw_cc_test(
633    name = "key_value_store_binary_format_test",
634    srcs = [
635        "key_value_store_binary_format_test.cc",
636    ],
637    deps = [
638        ":crc16",
639        ":fake_flash",
640        ":pw_kvs",
641        "//pw_log",
642        "//pw_unit_test",
643    ],
644)
645
646pw_cc_test(
647    name = "key_value_store_put_test",
648    srcs = ["key_value_store_put_test.cc"],
649    deps = [
650        ":crc16",
651        ":fake_flash",
652        ":pw_kvs",
653        ":test_partition",
654        "//pw_checksum",
655        "//pw_log",
656        "//pw_unit_test",
657    ],
658)
659
660pw_cc_test(
661    name = "key_value_store_map_test",
662    srcs = ["key_value_store_map_test.cc"],
663    deps = [
664        ":crc16",
665        ":fake_flash",
666        ":pw_kvs",
667        ":test_partition",
668        "//pw_checksum",
669        "//pw_log",
670        "//pw_log:pw_log.facade",
671        "//pw_span",
672        "//pw_unit_test",
673    ],
674)
675
676pw_cc_test(
677    name = "sectors_test",
678    srcs = ["sectors_test.cc"],
679    deps = [
680        ":fake_flash",
681        ":pw_kvs",
682        "//pw_log",
683        "//pw_unit_test",
684    ],
685)
686
687pw_cc_test(
688    name = "key_value_store_wear_test",
689    srcs = [
690        "key_value_store_wear_test.cc",
691    ],
692    deps = [
693        ":fake_flash",
694        ":pw_kvs",
695        ":test_partition",
696        "//pw_log",
697        "//pw_unit_test",
698    ],
699)
700