1# Copyright 2021 gRPC authors. 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://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, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15load("//bazel:grpc_build_system.bzl", "grpc_cc_library", "grpc_cc_test", "grpc_package") 16load("//test/core/util:grpc_fuzzer.bzl", "grpc_proto_fuzzer") 17 18licenses(["notice"]) 19 20grpc_package(name = "test/core/promise") 21 22grpc_cc_library( 23 name = "test_wakeup_schedulers", 24 testonly = True, 25 hdrs = ["test_wakeup_schedulers.h"], 26 external_deps = ["gtest"], 27 visibility = ["//test/core:__subpackages__"], 28) 29 30grpc_cc_library( 31 name = "test_context", 32 testonly = True, 33 hdrs = ["test_context.h"], 34 visibility = ["//test/core:__subpackages__"], 35 deps = ["//src/core:context"], 36) 37 38grpc_cc_test( 39 name = "poll_test", 40 srcs = ["poll_test.cc"], 41 external_deps = ["gtest"], 42 language = "c++", 43 uses_event_engine = False, 44 uses_polling = False, 45 deps = ["//src/core:poll"], 46) 47 48grpc_cc_test( 49 name = "interceptor_list_test", 50 srcs = ["interceptor_list_test.cc"], 51 external_deps = ["gtest"], 52 language = "c++", 53 uses_event_engine = False, 54 uses_polling = False, 55 deps = [ 56 "test_context", 57 "//:ref_counted_ptr", 58 "//src/core:arena", 59 "//src/core:event_engine_memory_allocator", 60 "//src/core:interceptor_list", 61 "//src/core:memory_quota", 62 "//src/core:resource_quota", 63 ], 64) 65 66grpc_cc_test( 67 name = "context_test", 68 srcs = ["context_test.cc"], 69 external_deps = ["gtest"], 70 language = "c++", 71 uses_event_engine = False, 72 uses_polling = False, 73 deps = ["//src/core:context"], 74) 75 76grpc_cc_test( 77 name = "cancel_callback_test", 78 srcs = ["cancel_callback_test.cc"], 79 external_deps = ["gtest"], 80 language = "c++", 81 uses_event_engine = False, 82 uses_polling = False, 83 deps = [ 84 "//src/core:cancel_callback", 85 "//src/core:poll", 86 ], 87) 88 89grpc_cc_test( 90 name = "promise_test", 91 srcs = ["promise_test.cc"], 92 external_deps = ["gtest"], 93 language = "c++", 94 uses_event_engine = False, 95 uses_polling = False, 96 deps = ["//:promise"], 97) 98 99grpc_cc_test( 100 name = "arena_promise_test", 101 srcs = ["arena_promise_test.cc"], 102 external_deps = ["gtest"], 103 language = "c++", 104 tags = [ 105 "promise_test", 106 "resource_quota_test", 107 ], 108 uses_event_engine = False, 109 uses_polling = False, 110 deps = [ 111 "test_context", 112 "//:exec_ctx", 113 "//:ref_counted_ptr", 114 "//src/core:arena_promise", 115 "//src/core:event_engine_memory_allocator", 116 "//src/core:memory_quota", 117 "//src/core:resource_quota", 118 "//test/core/util:grpc_test_util_unsecure", 119 ], 120) 121 122grpc_cc_test( 123 # Why promise_map_test and not map_test? 124 # third_party/benchmark defines a map_test in its cmakefile, and we depend 125 # on that from our cmakefile, and cmake wants to have a flat namespace to 126 # deal with xcode/visual studio limitations... sooo... promise_map_test it 127 # is. 128 name = "promise_map_test", 129 srcs = ["map_test.cc"], 130 external_deps = [ 131 "absl/functional:any_invocable", 132 "gtest", 133 ], 134 language = "c++", 135 tags = ["promise_test"], 136 uses_event_engine = False, 137 uses_polling = False, 138 deps = [ 139 "//:promise", 140 "//src/core:map", 141 ], 142) 143 144grpc_cc_test( 145 name = "race_test", 146 srcs = ["race_test.cc"], 147 external_deps = ["gtest"], 148 language = "c++", 149 tags = ["promise_test"], 150 uses_event_engine = False, 151 uses_polling = False, 152 deps = [ 153 "//src/core:poll", 154 "//src/core:race", 155 ], 156) 157 158grpc_cc_test( 159 name = "prioritized_race_test", 160 srcs = ["prioritized_race_test.cc"], 161 external_deps = ["gtest"], 162 language = "c++", 163 tags = ["promise_test"], 164 uses_event_engine = False, 165 uses_polling = False, 166 deps = [ 167 "//src/core:poll", 168 "//src/core:prioritized_race", 169 ], 170) 171 172grpc_cc_test( 173 name = "promise_factory_test", 174 srcs = ["promise_factory_test.cc"], 175 external_deps = [ 176 "absl/functional:bind_front", 177 "gtest", 178 ], 179 language = "c++", 180 tags = ["promise_test"], 181 uses_event_engine = False, 182 uses_polling = False, 183 deps = [ 184 "//src/core:poll", 185 "//src/core:promise_factory", 186 ], 187) 188 189grpc_cc_test( 190 name = "if_test", 191 srcs = ["if_test.cc"], 192 external_deps = ["gtest"], 193 language = "c++", 194 tags = ["promise_test"], 195 uses_event_engine = False, 196 uses_polling = False, 197 deps = ["//src/core:if"], 198) 199 200grpc_cc_test( 201 name = "switch_test", 202 srcs = ["switch_test.cc"], 203 external_deps = ["gtest"], 204 language = "c++", 205 tags = ["promise_test"], 206 uses_event_engine = False, 207 uses_polling = False, 208 deps = ["//src/core:switch"], 209) 210 211grpc_cc_test( 212 name = "loop_test", 213 srcs = ["loop_test.cc"], 214 external_deps = ["gtest"], 215 language = "c++", 216 tags = ["promise_test"], 217 uses_event_engine = False, 218 uses_polling = False, 219 deps = [ 220 "//src/core:loop", 221 "//src/core:seq", 222 ], 223) 224 225grpc_cc_test( 226 name = "join_test", 227 srcs = ["join_test.cc"], 228 external_deps = ["gtest"], 229 language = "c++", 230 tags = ["promise_test"], 231 uses_event_engine = False, 232 uses_polling = False, 233 deps = [ 234 "//src/core:join", 235 "//src/core:poll", 236 ], 237) 238 239grpc_cc_test( 240 name = "try_join_test", 241 srcs = ["try_join_test.cc"], 242 external_deps = [ 243 "absl/utility", 244 "gtest", 245 ], 246 language = "c++", 247 tags = ["promise_test"], 248 uses_event_engine = False, 249 uses_polling = False, 250 deps = ["//src/core:try_join"], 251) 252 253grpc_cc_test( 254 name = "all_ok_test", 255 srcs = ["all_ok_test.cc"], 256 external_deps = [ 257 "absl/utility", 258 "gtest", 259 ], 260 language = "c++", 261 tags = ["promise_test"], 262 uses_event_engine = False, 263 uses_polling = False, 264 deps = ["//src/core:all_ok"], 265) 266 267grpc_cc_test( 268 name = "seq_test", 269 srcs = ["seq_test.cc"], 270 external_deps = ["gtest"], 271 language = "c++", 272 tags = ["promise_test"], 273 uses_event_engine = False, 274 uses_polling = False, 275 deps = ["//src/core:seq"], 276) 277 278grpc_cc_test( 279 name = "try_seq_test", 280 srcs = ["try_seq_test.cc"], 281 external_deps = ["gtest"], 282 language = "c++", 283 tags = ["promise_test"], 284 uses_event_engine = False, 285 uses_polling = False, 286 deps = ["//src/core:try_seq"], 287) 288 289grpc_cc_test( 290 name = "try_seq_metadata_test", 291 srcs = ["try_seq_metadata_test.cc"], 292 external_deps = ["gtest"], 293 language = "c++", 294 tags = ["promise_test"], 295 uses_event_engine = False, 296 uses_polling = False, 297 deps = [ 298 "//:grpc", 299 "//:grpc_public_hdrs", 300 "//:ref_counted_ptr", 301 "//src/core:arena", 302 "//src/core:memory_quota", 303 "//src/core:poll", 304 "//src/core:resource_quota", 305 "//src/core:try_seq", 306 ], 307) 308 309grpc_cc_test( 310 name = "activity_test", 311 srcs = ["activity_test.cc"], 312 external_deps = ["gtest"], 313 flaky = True, 314 language = "c++", 315 tags = ["promise_test"], 316 uses_event_engine = False, 317 uses_polling = False, 318 deps = [ 319 "test_wakeup_schedulers", 320 "//:promise", 321 "//src/core:activity", 322 "//src/core:join", 323 "//src/core:poll", 324 "//src/core:seq", 325 "//src/core:wait_set", 326 ], 327) 328 329grpc_cc_test( 330 name = "latch_test", 331 srcs = ["latch_test.cc"], 332 external_deps = [ 333 "absl/status", 334 "gtest", 335 ], 336 language = "c++", 337 tags = ["promise_test"], 338 uses_event_engine = False, 339 uses_polling = False, 340 deps = [ 341 "test_wakeup_schedulers", 342 "//src/core:activity", 343 "//src/core:join", 344 "//src/core:latch", 345 "//src/core:seq", 346 ], 347) 348 349grpc_cc_test( 350 name = "for_each_test", 351 srcs = ["for_each_test.cc"], 352 external_deps = ["gtest"], 353 language = "c++", 354 tags = ["promise_test"], 355 uses_event_engine = False, 356 uses_polling = False, 357 deps = [ 358 "test_wakeup_schedulers", 359 "//:ref_counted_ptr", 360 "//src/core:activity", 361 "//src/core:arena", 362 "//src/core:event_engine_memory_allocator", 363 "//src/core:for_each", 364 "//src/core:inter_activity_pipe", 365 "//src/core:join", 366 "//src/core:map", 367 "//src/core:memory_quota", 368 "//src/core:pipe", 369 "//src/core:resource_quota", 370 "//src/core:seq", 371 "//src/core:try_seq", 372 ], 373) 374 375grpc_cc_test( 376 name = "map_pipe_test", 377 srcs = ["map_pipe_test.cc"], 378 external_deps = ["gtest"], 379 language = "c++", 380 tags = ["promise_test"], 381 uses_event_engine = False, 382 uses_polling = False, 383 deps = [ 384 "test_wakeup_schedulers", 385 "//:ref_counted_ptr", 386 "//src/core:activity", 387 "//src/core:arena", 388 "//src/core:event_engine_memory_allocator", 389 "//src/core:for_each", 390 "//src/core:join", 391 "//src/core:map", 392 "//src/core:map_pipe", 393 "//src/core:memory_quota", 394 "//src/core:pipe", 395 "//src/core:poll", 396 "//src/core:resource_quota", 397 "//src/core:seq", 398 ], 399) 400 401grpc_cc_test( 402 name = "pipe_test", 403 srcs = ["pipe_test.cc"], 404 external_deps = [ 405 "absl/functional:function_ref", 406 "absl/status", 407 "gtest", 408 ], 409 language = "c++", 410 tags = ["promise_test"], 411 uses_event_engine = False, 412 uses_polling = False, 413 deps = [ 414 "test_wakeup_schedulers", 415 "//:gpr", 416 "//:grpc", 417 "//:ref_counted_ptr", 418 "//src/core:activity", 419 "//src/core:event_engine_memory_allocator", 420 "//src/core:join", 421 "//src/core:map", 422 "//src/core:memory_quota", 423 "//src/core:pipe", 424 "//src/core:resource_quota", 425 "//src/core:seq", 426 ], 427) 428 429grpc_cc_test( 430 name = "inter_activity_pipe_test", 431 srcs = ["inter_activity_pipe_test.cc"], 432 external_deps = [ 433 "absl/status", 434 "gtest", 435 ], 436 language = "c++", 437 tags = ["promise_test"], 438 uses_event_engine = False, 439 uses_polling = False, 440 deps = [ 441 "test_wakeup_schedulers", 442 "//src/core:inter_activity_pipe", 443 "//src/core:seq", 444 ], 445) 446 447grpc_cc_test( 448 name = "inter_activity_latch_test", 449 srcs = ["inter_activity_latch_test.cc"], 450 external_deps = [ 451 "absl/status", 452 "gtest", 453 ], 454 language = "c++", 455 tags = ["promise_test"], 456 uses_event_engine = False, 457 uses_polling = False, 458 deps = [ 459 "//:grpc", 460 "//src/core:default_event_engine", 461 "//src/core:event_engine_wakeup_scheduler", 462 "//src/core:inter_activity_latch", 463 "//src/core:notification", 464 "//src/core:seq", 465 ], 466) 467 468grpc_cc_test( 469 name = "mpsc_test", 470 srcs = ["mpsc_test.cc"], 471 external_deps = [ 472 "absl/types:optional", 473 "gtest", 474 ], 475 language = "c++", 476 tags = ["promise_test"], 477 uses_event_engine = False, 478 uses_polling = False, 479 deps = [ 480 "//:gpr", 481 "//:promise", 482 "//src/core:activity", 483 "//src/core:mpsc", 484 ], 485) 486 487grpc_cc_test( 488 name = "observable_test", 489 srcs = ["observable_test.cc"], 490 external_deps = [ 491 "absl/strings", 492 "gtest", 493 ], 494 language = "c++", 495 tags = ["promise_test"], 496 uses_event_engine = False, 497 uses_polling = False, 498 deps = [ 499 "//src/core:loop", 500 "//src/core:map", 501 "//src/core:notification", 502 "//src/core:observable", 503 ], 504) 505 506grpc_proto_fuzzer( 507 name = "promise_fuzzer", 508 srcs = ["promise_fuzzer.cc"], 509 corpus = "promise_fuzzer_corpus", 510 external_deps = [ 511 "absl/functional:any_invocable", 512 "absl/status", 513 "absl/types:optional", 514 ], 515 language = "C++", 516 proto = "promise_fuzzer.proto", 517 tags = ["no_windows"], 518 uses_polling = False, 519 deps = [ 520 "//:gpr", 521 "//:promise", 522 "//src/core:activity", 523 "//src/core:join", 524 "//src/core:map", 525 "//src/core:poll", 526 "//src/core:race", 527 "//src/core:seq", 528 ], 529) 530 531grpc_cc_test( 532 name = "exec_ctx_wakeup_scheduler_test", 533 srcs = ["exec_ctx_wakeup_scheduler_test.cc"], 534 external_deps = [ 535 "absl/status", 536 "gtest", 537 ], 538 language = "c++", 539 tags = ["promise_test"], 540 uses_event_engine = False, 541 uses_polling = False, 542 deps = [ 543 "//src/core:activity", 544 "//src/core:exec_ctx_wakeup_scheduler", 545 "//src/core:poll", 546 ], 547) 548 549grpc_cc_test( 550 name = "wait_for_callback_test", 551 srcs = ["wait_for_callback_test.cc"], 552 external_deps = [ 553 "absl/status", 554 "gtest", 555 ], 556 language = "c++", 557 tags = ["promise_test"], 558 uses_event_engine = False, 559 uses_polling = False, 560 deps = [ 561 "test_wakeup_schedulers", 562 "//src/core:map", 563 "//src/core:notification", 564 "//src/core:wait_for_callback", 565 ], 566) 567 568grpc_cc_test( 569 name = "event_engine_wakeup_scheduler_test", 570 srcs = ["event_engine_wakeup_scheduler_test.cc"], 571 external_deps = [ 572 "absl/status", 573 "gtest", 574 ], 575 language = "c++", 576 tags = ["promise_test"], 577 uses_event_engine = False, 578 uses_polling = False, 579 deps = [ 580 "//:grpc", 581 "//src/core:activity", 582 "//src/core:event_engine_wakeup_scheduler", 583 "//src/core:notification", 584 "//src/core:poll", 585 ], 586) 587 588grpc_cc_test( 589 name = "sleep_test", 590 srcs = ["sleep_test.cc"], 591 external_deps = ["gtest"], 592 language = "c++", 593 tags = ["promise_test"], 594 uses_event_engine = False, 595 uses_polling = False, 596 deps = [ 597 "test_wakeup_schedulers", 598 "//:exec_ctx", 599 "//:gpr", 600 "//:grpc", 601 "//:orphanable", 602 "//src/core:default_event_engine", 603 "//src/core:exec_ctx_wakeup_scheduler", 604 "//src/core:notification", 605 "//src/core:race", 606 "//src/core:sleep", 607 "//test/core/event_engine:mock_event_engine", 608 ], 609) 610 611grpc_cc_test( 612 name = "status_flag_test", 613 srcs = ["status_flag_test.cc"], 614 external_deps = ["gtest"], 615 language = "c++", 616 tags = ["promise_test"], 617 uses_event_engine = False, 618 uses_polling = False, 619 deps = ["//src/core:status_flag"], 620) 621 622grpc_cc_test( 623 name = "promise_mutex_test", 624 srcs = ["promise_mutex_test.cc"], 625 external_deps = [ 626 "absl/status", 627 "gtest", 628 ], 629 deps = [ 630 "test_wakeup_schedulers", 631 "//:promise", 632 "//src/core:activity", 633 "//src/core:join", 634 "//src/core:promise_mutex", 635 "//src/core:seq", 636 ], 637) 638 639grpc_cc_test( 640 name = "party_test", 641 srcs = ["party_test.cc"], 642 external_deps = [ 643 "absl/base:core_headers", 644 "gtest", 645 ], 646 language = "c++", 647 tags = ["promise_test"], 648 uses_event_engine = False, 649 uses_polling = False, 650 deps = [ 651 "//:exec_ctx", 652 "//:gpr", 653 "//:grpc_unsecure", 654 "//:ref_counted_ptr", 655 "//src/core:1999", 656 "//src/core:context", 657 "//src/core:default_event_engine", 658 "//src/core:event_engine_memory_allocator", 659 "//src/core:inter_activity_latch", 660 "//src/core:memory_quota", 661 "//src/core:notification", 662 "//src/core:poll", 663 "//src/core:resource_quota", 664 "//src/core:seq", 665 "//src/core:sleep", 666 "//src/core:time", 667 ], 668) 669