grpc
test
core
promise
latch_test.cc
Go to the documentation of this file.
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
15
#include "
src/core/lib/promise/latch.h
"
16
17
#include <tuple>
18
#include <utility>
19
20
#include "absl/status/status.h"
21
#include "gmock/gmock.h"
22
#include "gtest/gtest.h"
23
24
#include "
src/core/lib/promise/activity.h
"
25
#include "
src/core/lib/promise/join.h
"
26
#include "
src/core/lib/promise/seq.h
"
27
#include "
test/core/promise/test_wakeup_schedulers.h
"
28
29
using
testing::MockFunction
;
30
using
testing::StrictMock
;
31
32
namespace
grpc_core
{
33
34
TEST
(LatchTest, Works) {
35
Latch<int>
latch;
36
StrictMock
<
MockFunction
<void(
absl::Status
)>> on_done;
37
EXPECT_CALL
(on_done,
Call
(
absl::OkStatus
()));
38
MakeActivity
(
39
[&latch] {
40
return
Seq
(
Join
(latch.
Wait
(),
41
[&latch]() {
42
latch.Set(42);
43
return true;
44
}),
45
[](std::tuple<int*, bool>
result
) {
46
EXPECT_EQ(*std::get<0>(result), 42);
47
return absl::OkStatus();
48
});
49
},
50
NoWakeupScheduler
(),
51
[&on_done](
absl::Status
status
) { on_done.Call(
std::move
(
status
)); });
52
}
53
54
}
// namespace grpc_core
55
56
int
main
(
int
argc,
char
** argv) {
57
::testing::InitGoogleTest
(&argc, argv);
58
return
RUN_ALL_TESTS
();
59
}
testing::StrictMock
Definition:
bloaty/third_party/googletest/googlemock/include/gmock/gmock-nice-strict.h:148
_gevent_test_main.result
result
Definition:
_gevent_test_main.py:96
grpc_core
Definition:
call_metric_recorder.h:31
latch.h
absl::OkStatus
Status OkStatus()
Definition:
third_party/abseil-cpp/absl/status/status.h:882
grpc_core::TEST
TEST(AvlTest, NoOp)
Definition:
avl_test.cc:21
status
absl::Status status
Definition:
rls.cc:251
seq.h
grpc_core::Latch::Wait
WaitPromise Wait()
Definition:
latch.h:70
grpc_core::MakeActivity
ActivityPtr MakeActivity(Factory promise_factory, WakeupScheduler wakeup_scheduler, OnDone on_done, Contexts &&... contexts)
Definition:
activity.h:522
absl::move
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
Definition:
abseil-cpp/absl/utility/utility.h:221
RUN_ALL_TESTS
int RUN_ALL_TESTS() GTEST_MUST_USE_RESULT_
Definition:
bloaty/third_party/googletest/googletest/include/gtest/gtest.h:2471
EXPECT_CALL
#define EXPECT_CALL(obj, call)
test_wakeup_schedulers.h
join.h
testing::InitGoogleTest
GTEST_API_ void InitGoogleTest(int *argc, char **argv)
Definition:
bloaty/third_party/googletest/googletest/src/gtest.cc:6106
tests.unit._server_ssl_cert_config_test.Call
Call
Definition:
_server_ssl_cert_config_test.py:70
absl::Status
Definition:
third_party/abseil-cpp/absl/status/status.h:424
testing::MockFunction
Definition:
cares/cares/test/gmock-1.8.0/gmock/gmock.h:11854
main
int main(int argc, char **argv)
Definition:
latch_test.cc:56
grpc_core::NoWakeupScheduler
Definition:
test_wakeup_schedulers.h:28
grpc_core::Seq
promise_detail::Seq< Functors... > Seq(Functors... functors)
Definition:
seq.h:62
activity.h
grpc_core::Latch
Definition:
latch.h:32
grpc_core::Join
promise_detail::Join< Promise... > Join(Promise... promises)
Definition:
join.h:49
grpc
Author(s):
autogenerated on Fri May 16 2025 02:59:14