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_library", 18 "pw_cc_test", 19) 20load( 21 "//pw_build:selects.bzl", 22 "TARGET_COMPATIBLE_WITH_HOST_SELECT", 23) 24 25package(default_visibility = ["//visibility:public"]) 26 27licenses(["notice"]) 28 29pw_cc_library( 30 name = "server_api", 31 srcs = [ 32 "server_reader_writer.cc", 33 ], 34 hdrs = [ 35 "public/pw_rpc/pwpb/internal/method.h", 36 "public/pw_rpc/pwpb/internal/method_union.h", 37 "public/pw_rpc/pwpb/server_reader_writer.h", 38 ], 39 includes = ["public"], 40 deps = [ 41 ":common", 42 "//pw_rpc/raw:server_api", 43 ], 44) 45 46pw_cc_library( 47 name = "client_api", 48 hdrs = [ 49 "public/pw_rpc/pwpb/client_reader_writer.h", 50 ], 51 includes = ["public"], 52 deps = [ 53 ":common", 54 ], 55) 56 57pw_cc_library( 58 name = "common", 59 hdrs = [ 60 "public/pw_rpc/pwpb/internal/common.h", 61 "public/pw_rpc/pwpb/serde.h", 62 "public/pw_rpc/pwpb/server_reader_writer.h", 63 ], 64 includes = ["public"], 65 deps = [ 66 "//pw_rpc", 67 ], 68) 69 70pw_cc_library( 71 name = "test_method_context", 72 hdrs = [ 73 "public/pw_rpc/pwpb/fake_channel_output.h", 74 "public/pw_rpc/pwpb/test_method_context.h", 75 ], 76 includes = ["public"], 77 deps = [ 78 ":common", 79 ":server_api", 80 "//pw_assert", 81 "//pw_containers", 82 "//pw_rpc:internal_test_utils", 83 "//pw_span", 84 ], 85) 86 87pw_cc_library( 88 name = "client_testing", 89 hdrs = [ 90 "public/pw_rpc/pwpb/client_testing.h", 91 ], 92 includes = ["public"], 93 deps = [ 94 ":test_method_context", 95 "//pw_rpc", 96 "//pw_rpc/raw:client_testing", 97 ], 98) 99 100pw_cc_library( 101 name = "client_server_testing", 102 hdrs = [ 103 "public/pw_rpc/pwpb/client_server_testing.h", 104 ], 105 includes = ["public"], 106 deps = [ 107 ":test_method_context", 108 "//pw_rpc:client_server_testing", 109 ], 110) 111 112pw_cc_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 124pw_cc_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 130pw_cc_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 ], 186) 187 188pw_cc_test( 189 name = "client_server_context_threaded_test", 190 srcs = [ 191 "client_server_context_threaded_test.cc", 192 ], 193 target_compatible_with = select(TARGET_COMPATIBLE_WITH_HOST_SELECT), 194 deps = [ 195 ":client_api", 196 ":client_server_testing_threaded", 197 "//pw_rpc:pw_rpc_test_cc.pwpb_rpc", 198 "//pw_sync:binary_semaphore", 199 "//pw_thread:test_threads_header", 200 "//pw_thread_stl:test_threads", 201 ], 202) 203 204pw_cc_test( 205 name = "codegen_test", 206 srcs = [ 207 "codegen_test.cc", 208 ], 209 deps = [ 210 ":internal_test_utils", 211 ":test_method_context", 212 "//pw_preprocessor", 213 "//pw_rpc:internal_test_utils", 214 "//pw_rpc:pw_rpc_test_cc.pwpb_rpc", 215 ], 216) 217 218pw_cc_test( 219 name = "fake_channel_output_test", 220 srcs = ["fake_channel_output_test.cc"], 221 deps = [ 222 ":common", 223 ":server_api", 224 ":test_method_context", 225 "//pw_rpc:internal_test_utils", 226 "//pw_rpc:pw_rpc_test_cc.pwpb_rpc", 227 ], 228) 229 230pw_cc_test( 231 name = "method_test", 232 srcs = ["method_test.cc"], 233 deps = [ 234 ":internal_test_utils", 235 ":server_api", 236 "//pw_containers", 237 "//pw_rpc", 238 "//pw_rpc:internal_test_utils", 239 "//pw_rpc:pw_rpc_test_cc.pwpb", 240 ], 241) 242 243pw_cc_test( 244 name = "method_info_test", 245 srcs = ["method_info_test.cc"], 246 deps = [ 247 "//pw_rpc", 248 "//pw_rpc:internal_test_utils", 249 "//pw_rpc:pw_rpc_test_cc.pwpb_rpc", 250 ], 251) 252 253pw_cc_test( 254 name = "method_lookup_test", 255 srcs = ["method_lookup_test.cc"], 256 deps = [ 257 ":test_method_context", 258 "//pw_rpc:pw_rpc_test_cc.pwpb_rpc", 259 "//pw_rpc/raw:test_method_context", 260 ], 261) 262 263pw_cc_test( 264 name = "method_union_test", 265 srcs = ["method_union_test.cc"], 266 deps = [ 267 ":internal_test_utils", 268 ":server_api", 269 "//pw_rpc:internal_test_utils", 270 "//pw_rpc:pw_rpc_test_cc.pwpb", 271 ], 272) 273 274# TODO(b/234874064): Requires pwpb options file support to compile. 275filegroup( 276 name = "echo_service_test", 277 srcs = ["echo_service_test.cc"], 278 # deps = [ 279 # ":echo_service", 280 # ":test_method_context", 281 # ], 282) 283 284pw_cc_test( 285 name = "server_reader_writer_test", 286 srcs = ["server_reader_writer_test.cc"], 287 deps = [ 288 ":server_api", 289 ":test_method_context", 290 "//pw_rpc", 291 "//pw_rpc:pw_rpc_test_cc.pwpb_rpc", 292 ], 293) 294 295pw_cc_test( 296 name = "serde_test", 297 srcs = ["serde_test.cc"], 298 deps = [ 299 ":common", 300 "//pw_rpc:pw_rpc_test_cc.pwpb", 301 ], 302) 303 304pw_cc_test( 305 name = "server_callback_test", 306 srcs = ["server_callback_test.cc"], 307 deps = [ 308 ":test_method_context", 309 "//pw_rpc", 310 "//pw_rpc:pw_rpc_test_cc.pwpb_rpc", 311 ], 312) 313 314pw_cc_test( 315 name = "stub_generation_test", 316 srcs = ["stub_generation_test.cc"], 317 deps = [ 318 "//pw_rpc:pw_rpc_test_cc.pwpb_rpc", 319 ], 320) 321 322pw_cc_test( 323 name = "synchronous_call_test", 324 srcs = ["synchronous_call_test.cc"], 325 deps = [ 326 ":test_method_context", 327 "//pw_rpc:pw_rpc_test_cc.pwpb_rpc", 328 "//pw_rpc:synchronous_client_api", 329 "//pw_work_queue", 330 "//pw_work_queue:stl_test_thread", 331 "//pw_work_queue:test_thread_header", 332 ], 333) 334