pw_bluetooth_proxy: Multi-threaded write tests

Add multi-threaded write tests that verify delivery, ordering, and
locking under load.

Bug: 420703142
Bug: 421249712
Bug: 394900469
Test: CQ, local msan, downstream tsan in CQ
Change-Id: I7bc6d14878fbd4a763c685c53fa6721c0ce72228
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/317139
Lint: Lint 🤖 <android-build-ayeaye@system.gserviceaccount.com>
Copybara-Verified: Copybara Prod <copybara-worker-blackhole@google.com>
Reviewed-by: Ben Lawson <benlawson@google.com>
Docs-Not-Needed: David Rees <drees@google.com>
Reviewed-by: Austin Foxley <afoxley@google.com>
Commit-Queue: David Rees <drees@google.com>
6 files changed
tree: 0ba6649881192ebecddf8dc8328ee922e3ca8ea2
  1. .allstar/
  2. .gemini/
  3. .github/
  4. .vscode/
  5. build_overrides/
  6. docker/
  7. docs/
  8. kudzu/
  9. pw_alignment/
  10. pw_allocator/
  11. pw_analog/
  12. pw_android_toolchain/
  13. pw_arduino_build/
  14. pw_assert/
  15. pw_assert_basic/
  16. pw_assert_fuchsia/
  17. pw_assert_log/
  18. pw_assert_tokenized/
  19. pw_assert_trap/
  20. pw_assert_zephyr/
  21. pw_async/
  22. pw_async2/
  23. pw_async2_basic/
  24. pw_async2_epoll/
  25. pw_async_basic/
  26. pw_async_fuchsia/
  27. pw_atomic/
  28. pw_base64/
  29. pw_bloat/
  30. pw_blob_store/
  31. pw_bluetooth/
  32. pw_bluetooth_hci/
  33. pw_bluetooth_profiles/
  34. pw_bluetooth_proxy/
  35. pw_bluetooth_sapphire/
  36. pw_boot/
  37. pw_boot_cortex_m/
  38. pw_build/
  39. pw_build_android/
  40. pw_build_info/
  41. pw_build_mcuxpresso/
  42. pw_bytes/
  43. pw_change/
  44. pw_channel/
  45. pw_checksum/
  46. pw_chre/
  47. pw_chrono/
  48. pw_chrono_embos/
  49. pw_chrono_freertos/
  50. pw_chrono_rp2040/
  51. pw_chrono_stl/
  52. pw_chrono_threadx/
  53. pw_chrono_zephyr/
  54. pw_cli/
  55. pw_cli_analytics/
  56. pw_clock_tree/
  57. pw_clock_tree_mcuxpresso/
  58. pw_compilation_testing/
  59. pw_config_loader/
  60. pw_console/
  61. pw_containers/
  62. pw_cpu_exception/
  63. pw_cpu_exception_cortex_m/
  64. pw_cpu_exception_risc_v/
  65. pw_crypto/
  66. pw_digital_io/
  67. pw_digital_io_linux/
  68. pw_digital_io_mcuxpresso/
  69. pw_digital_io_rp2040/
  70. pw_digital_io_zephyr/
  71. pw_display/
  72. pw_dma_mcuxpresso/
  73. pw_docgen/
  74. pw_doctor/
  75. pw_elf/
  76. pw_emu/
  77. pw_env_setup/
  78. pw_env_setup_zephyr/
  79. pw_file/
  80. pw_flatbuffers/
  81. pw_format/
  82. pw_function/
  83. pw_fuzzer/
  84. pw_grpc/
  85. pw_hdlc/
  86. pw_hex_dump/
  87. pw_i2c/
  88. pw_i2c_linux/
  89. pw_i2c_mcuxpresso/
  90. pw_i2c_rp2040/
  91. pw_i2c_zephyr/
  92. pw_ide/
  93. pw_interrupt/
  94. pw_interrupt_cortex_m/
  95. pw_interrupt_freertos/
  96. pw_interrupt_zephyr/
  97. pw_intrusive_ptr/
  98. pw_json/
  99. pw_kernel/
  100. pw_kvs/
  101. pw_libc/
  102. pw_libcxx/
  103. pw_log/
  104. pw_log_android/
  105. pw_log_basic/
  106. pw_log_fuchsia/
  107. pw_log_null/
  108. pw_log_rpc/
  109. pw_log_string/
  110. pw_log_tokenized/
  111. pw_log_zephyr/
  112. pw_malloc/
  113. pw_malloc_freelist/
  114. pw_malloc_freertos/
  115. pw_metric/
  116. pw_minimal_cpp_stdlib/
  117. pw_module/
  118. pw_multibuf/
  119. pw_multisink/
  120. pw_numeric/
  121. pw_package/
  122. pw_perf_test/
  123. pw_persistent_ram/
  124. pw_polyfill/
  125. pw_preprocessor/
  126. pw_presubmit/
  127. pw_protobuf/
  128. pw_protobuf_compiler/
  129. pw_random/
  130. pw_random_fuchsia/
  131. pw_result/
  132. pw_ring_buffer/
  133. pw_router/
  134. pw_rpc/
  135. pw_rpc_transport/
  136. pw_rust/
  137. pw_sensor/
  138. pw_snapshot/
  139. pw_software_update/
  140. pw_span/
  141. pw_spi/
  142. pw_spi_linux/
  143. pw_spi_mcuxpresso/
  144. pw_spi_rp2040/
  145. pw_status/
  146. pw_stm32cube_build/
  147. pw_stream/
  148. pw_stream_shmem_mcuxpresso/
  149. pw_stream_uart_linux/
  150. pw_stream_uart_mcuxpresso/
  151. pw_string/
  152. pw_symbolizer/
  153. pw_sync/
  154. pw_sync_baremetal/
  155. pw_sync_embos/
  156. pw_sync_freertos/
  157. pw_sync_stl/
  158. pw_sync_threadx/
  159. pw_sync_zephyr/
  160. pw_sys_io/
  161. pw_sys_io_ambiq_sdk/
  162. pw_sys_io_arduino/
  163. pw_sys_io_baremetal_lm3s6965evb/
  164. pw_sys_io_baremetal_stm32f429/
  165. pw_sys_io_emcraft_sf2/
  166. pw_sys_io_mcuxpresso/
  167. pw_sys_io_rp2040/
  168. pw_sys_io_stdio/
  169. pw_sys_io_stm32cube/
  170. pw_sys_io_zephyr/
  171. pw_system/
  172. pw_target_runner/
  173. pw_thread/
  174. pw_thread_embos/
  175. pw_thread_freertos/
  176. pw_thread_stl/
  177. pw_thread_threadx/
  178. pw_thread_zephyr/
  179. pw_tls_client/
  180. pw_tls_client_boringssl/
  181. pw_tls_client_mbedtls/
  182. pw_tokenizer/
  183. pw_toolchain/
  184. pw_trace/
  185. pw_trace_tokenized/
  186. pw_transfer/
  187. pw_uart/
  188. pw_uart_mcuxpresso/
  189. pw_unit_test/
  190. pw_uuid/
  191. pw_varint/
  192. pw_watch/
  193. pw_web/
  194. pw_work_queue/
  195. seed/
  196. targets/
  197. third_party/
  198. ts/
  199. zephyr/
  200. .bazelignore
  201. .bazelrc
  202. .bazelversion
  203. .black.toml
  204. .clang-format
  205. .clang-tidy
  206. .eslintrc.cjs
  207. .git-blame-ignore-revs
  208. .gitattributes
  209. .gitignore
  210. .gn
  211. .mypy.ini
  212. .prettierignore
  213. .prettierrc.cjs
  214. .pw_ide.yaml
  215. .pylintrc
  216. .ruff.toml
  217. activate.bat
  218. Android.bp
  219. AUTHORS
  220. bootstrap.bat
  221. bootstrap.fish
  222. bootstrap.sh
  223. BUILD.bazel
  224. BUILD.gn
  225. BUILDCONFIG.gn
  226. CMakeLists.txt
  227. GEMINI.md
  228. go.mod
  229. go.sum
  230. jest.config.ts
  231. Kconfig.zephyr
  232. LICENSE
  233. MODULE.bazel
  234. MODULE.bazel.lock
  235. modules.gni
  236. OWNERS
  237. package-lock.json
  238. package.json
  239. pigweed.json
  240. PIGWEED_MODULES
  241. pnpm-lock.yaml
  242. pw
  243. README.md
  244. REPO.bazel
  245. rollup-protos.config.js
  246. rollup.config.js
  247. rustfmt.toml
  248. tsconfig.json
  249. workflows.json
  250. WORKSPACE
  251. WORKSPACE_OWNERS
README.md

Pigweed

Pigweed is an open source collection of embedded-targeted libraries–or as we like to call them, modules. These modules are building blocks and infrastructure that enable faster and more reliable development on small-footprint MMU-less 32-bit microcontrollers like the STMicroelectronics STM32L452 or the Nordic nRF52832.

For more information please see our website: https://pigweed.dev/.

Links