1# Copyright 2022 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) 19load( 20 "//pw_build:selects.bzl", 21 "TARGET_COMPATIBLE_WITH_HOST_SELECT", 22) 23 24package(default_visibility = ["//visibility:public"]) 25 26licenses(["notice"]) 27 28cc_library( 29 name = "server_api", 30 srcs = [ 31 "server_reader_writer.cc", 32 ], 33 hdrs = [ 34 "public/pw_rpc/pwpb/internal/method.h", 35 "public/pw_rpc/pwpb/internal/method_union.h", 36 "public/pw_rpc/pwpb/server_reader_writer.h", 37 ], 38 includes = ["public"], 39 deps = [ 40 ":common", 41 "//pw_rpc/raw:server_api", 42 ], 43) 44 45cc_library( 46 name = "client_api", 47 hdrs = [ 48 "public/pw_rpc/pwpb/client_reader_writer.h", 49 ], 50 includes = ["public"], 51 deps = [ 52 ":common", 53 ], 54) 55 56cc_library( 57 name = "common", 58 hdrs = [ 59 "public/pw_rpc/pwpb/internal/common.h", 60 "public/pw_rpc/pwpb/serde.h", 61 "public/pw_rpc/pwpb/server_reader_writer.h", 62 ], 63 includes = ["public"], 64 deps = [ 65 "//pw_rpc", 66 ], 67) 68 69cc_library( 70 name = "test_method_context", 71 hdrs = [ 72 "public/pw_rpc/pwpb/fake_channel_output.h", 73 "public/pw_rpc/pwpb/test_method_context.h", 74 ], 75 includes = ["public"], 76 deps = [ 77 ":common", 78 ":server_api", 79 "//pw_assert", 80 "//pw_containers", 81 "//pw_rpc:internal_test_utils", 82 "//pw_span", 83 ], 84) 85 86cc_library( 87 name = "client_testing", 88 hdrs = [ 89 "public/pw_rpc/pwpb/client_testing.h", 90 ], 91 includes = ["public"], 92 deps = [ 93 ":test_method_context", 94 "//pw_rpc", 95 "//pw_rpc/raw:client_testing", 96 ], 97) 98 99cc_library( 100 name = "client_server_testing", 101 hdrs = [ 102 "public/pw_rpc/pwpb/client_server_testing.h", 103 ], 104 includes = ["public"], 105 deps = [ 106 ":test_method_context", 107 "//pw_assert", 108 "//pw_rpc:client_server_testing", 109 ], 110) 111 112cc_library( 113 name = "client_server_testing_threaded", 114 hdrs = [ 115 "public/pw_rpc/pwpb/client_server_testing_threaded.h", 116 ], 117 includes = ["public"], 118 deps = [ 119 ":test_method_context", 120 "//pw_rpc:client_server_testing_threaded", 121 ], 122) 123 124cc_library( 125 name = "internal_test_utils", 126 hdrs = ["pw_rpc_pwpb_private/internal_test_utils.h"], 127 deps = ["//pw_rpc:internal_test_utils"], 128) 129 130cc_library( 131 name = "echo_service", 132 hdrs = ["public/pw_rpc/echo_service_pwpb.h"], 133 deps = [ 134 "//pw_rpc:echo_cc.pwpb_rpc", 135 ], 136) 137 138# TODO: b/242059613 - Enable this library when logging_event_handler can be used. 139filegroup( 140 name = "client_integration_test", 141 srcs = [ 142 "client_integration_test.cc", 143 ], 144 #deps = [ 145 # "//pw_rpc:integration_testing", 146 # "//pw_sync:binary_semaphore", 147 # "//pw_rpc:benchmark_cc.pwpb_rpc", 148 #] 149) 150 151pw_cc_test( 152 name = "client_call_test", 153 srcs = [ 154 "client_call_test.cc", 155 ], 156 deps = [ 157 ":client_api", 158 ":internal_test_utils", 159 "//pw_rpc", 160 "//pw_rpc:pw_rpc_test_cc.pwpb", 161 ], 162) 163 164pw_cc_test( 165 name = "client_reader_writer_test", 166 srcs = [ 167 "client_reader_writer_test.cc", 168 ], 169 deps = [ 170 ":client_api", 171 ":client_testing", 172 "//pw_rpc:pw_rpc_test_cc.pwpb_rpc", 173 ], 174) 175 176pw_cc_test( 177 name = "client_server_context_test", 178 srcs = [ 179 "client_server_context_test.cc", 180 ], 181 deps = [ 182 ":client_api", 183 ":client_server_testing", 184 "//pw_rpc:pw_rpc_test_cc.pwpb_rpc", 185 "//pw_sync:mutex", 186 ], 187) 188 189pw_cc_test( 190 name = "client_server_context_threaded_test", 191 srcs = [ 192 "client_server_context_threaded_test.cc", 193 ], 194 target_compatible_with = select(TARGET_COMPATIBLE_WITH_HOST_SELECT), 195 deps = [ 196 ":client_api", 197 ":client_server_testing_threaded", 198 "//pw_rpc:pw_rpc_test_cc.pwpb_rpc", 199 "//pw_sync:binary_semaphore", 200 "//pw_sync:mutex", 201 "//pw_thread:non_portable_test_thread_options", 202 "//pw_thread_stl:non_portable_test_thread_options", 203 ], 204) 205 206pw_cc_test( 207 name = "codegen_test", 208 srcs = [ 209 "codegen_test.cc", 210 ], 211 deps = [ 212 ":internal_test_utils", 213 ":test_method_context", 214 "//pw_preprocessor", 215 "//pw_rpc:internal_test_utils", 216 "//pw_rpc:pw_rpc_test_cc.pwpb_rpc", 217 ], 218) 219 220pw_cc_test( 221 name = "fake_channel_output_test", 222 srcs = ["fake_channel_output_test.cc"], 223 deps = [ 224 ":common", 225 ":server_api", 226 ":test_method_context", 227 "//pw_rpc:internal_test_utils", 228 "//pw_rpc:pw_rpc_test_cc.pwpb_rpc", 229 ], 230) 231 232pw_cc_test( 233 name = "method_test", 234 srcs = ["method_test.cc"], 235 deps = [ 236 ":internal_test_utils", 237 ":server_api", 238 "//pw_containers", 239 "//pw_rpc", 240 "//pw_rpc:internal_test_utils", 241 "//pw_rpc:pw_rpc_test_cc.pwpb", 242 ], 243) 244 245pw_cc_test( 246 name = "method_info_test", 247 srcs = ["method_info_test.cc"], 248 deps = [ 249 "//pw_rpc", 250 "//pw_rpc:internal_test_utils", 251 "//pw_rpc:pw_rpc_test_cc.pwpb_rpc", 252 ], 253) 254 255pw_cc_test( 256 name = "method_lookup_test", 257 srcs = ["method_lookup_test.cc"], 258 deps = [ 259 ":test_method_context", 260 "//pw_rpc:pw_rpc_test_cc.pwpb_rpc", 261 "//pw_rpc/raw:test_method_context", 262 ], 263) 264 265pw_cc_test( 266 name = "method_union_test", 267 srcs = ["method_union_test.cc"], 268 deps = [ 269 ":internal_test_utils", 270 ":server_api", 271 "//pw_rpc:internal_test_utils", 272 "//pw_rpc:pw_rpc_test_cc.pwpb", 273 ], 274) 275 276pw_cc_test( 277 name = "echo_service_test", 278 srcs = ["echo_service_test.cc"], 279 deps = [ 280 ":echo_service", 281 ":test_method_context", 282 ], 283) 284 285pw_cc_test( 286 name = "server_reader_writer_test", 287 srcs = ["server_reader_writer_test.cc"], 288 deps = [ 289 ":server_api", 290 ":test_method_context", 291 "//pw_rpc", 292 "//pw_rpc:pw_rpc_test_cc.pwpb_rpc", 293 ], 294) 295 296pw_cc_test( 297 name = "serde_test", 298 srcs = ["serde_test.cc"], 299 deps = [ 300 ":common", 301 "//pw_rpc:pw_rpc_test_cc.pwpb", 302 ], 303) 304 305pw_cc_test( 306 name = "server_callback_test", 307 srcs = ["server_callback_test.cc"], 308 deps = [ 309 ":test_method_context", 310 "//pw_rpc", 311 "//pw_rpc:pw_rpc_test_cc.pwpb_rpc", 312 ], 313) 314 315pw_cc_test( 316 name = "stub_generation_test", 317 srcs = ["stub_generation_test.cc"], 318 deps = [ 319 "//pw_rpc:pw_rpc_test_cc.pwpb_rpc", 320 ], 321) 322 323pw_cc_test( 324 name = "synchronous_call_test", 325 srcs = ["synchronous_call_test.cc"], 326 deps = [ 327 ":test_method_context", 328 "//pw_rpc:pw_rpc_test_cc.pwpb_rpc", 329 "//pw_rpc:synchronous_client_api", 330 "//pw_rpc_transport:test_loopback_service_registry", 331 "//pw_work_queue", 332 "//pw_work_queue:stl_test_thread", 333 "//pw_work_queue:test_thread_header", 334 ], 335) 336