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