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 
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 
28 
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()));
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  },
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