• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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