abseil-cpp/absl/status/status_test.cc
Go to the documentation of this file.
1 // Copyright 2019 The Abseil 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 // https://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 "absl/status/status.h"
16 
17 #include <errno.h>
18 
19 #include "gmock/gmock.h"
20 #include "gtest/gtest.h"
21 #include "absl/strings/str_cat.h"
22 
23 namespace {
24 
29 
30 TEST(StatusCode, InsertionOperator) {
32  std::ostringstream oss;
33  oss << code;
35 }
36 
37 // This structure holds the details for testing a single error code,
38 // its creator, and its classifier.
39 struct ErrorTest {
41  using Creator = absl::Status (*)(
43  );
44  using Classifier = bool (*)(const absl::Status&);
45  Creator creator;
46  Classifier classifier;
47 };
48 
49 constexpr ErrorTest kErrorTests[]{
75 };
76 
77 TEST(Status, CreateAndClassify) {
78  for (const auto& test : kErrorTests) {
80 
81  // Ensure that the creator does, in fact, create status objects with the
82  // expected error code and message.
84  absl::StrCat("error code ", test.code, " test message");
85  absl::Status status = test.creator(
86  message
87  );
88  EXPECT_EQ(test.code, status.code());
90 
91  // Ensure that the classifier returns true for a status produced by the
92  // creator.
93  EXPECT_TRUE(test.classifier(status));
94 
95  // Ensure that the classifier returns false for status with a different
96  // code.
97  for (const auto& other : kErrorTests) {
98  if (other.code != test.code) {
99  EXPECT_FALSE(test.classifier(absl::Status(other.code, "")))
100  << " other.code = " << other.code;
101  }
102  }
103  }
104 }
105 
106 TEST(Status, DefaultConstructor) {
108  EXPECT_TRUE(status.ok());
110  EXPECT_EQ("", status.message());
111 }
112 
113 TEST(Status, OkStatus) {
115  EXPECT_TRUE(status.ok());
117  EXPECT_EQ("", status.message());
118 }
119 
120 TEST(Status, ConstructorWithCodeMessage) {
121  {
125  EXPECT_EQ("", status.message());
126  }
127  {
131  EXPECT_EQ("message", status.message());
132  }
133 }
134 
135 TEST(Status, ConstructOutOfRangeCode) {
136  const int kRawCode = 9999;
137  absl::Status status(static_cast<absl::StatusCode>(kRawCode), "");
139  EXPECT_EQ(kRawCode, status.raw_code());
140 }
141 
142 constexpr char kUrl1[] = "url.payload.1";
143 constexpr char kUrl2[] = "url.payload.2";
144 constexpr char kUrl3[] = "url.payload.3";
145 constexpr char kUrl4[] = "url.payload.xx";
146 
147 constexpr char kPayload1[] = "aaaaa";
148 constexpr char kPayload2[] = "bbbbb";
149 constexpr char kPayload3[] = "ccccc";
150 
151 using PayloadsVec = std::vector<std::pair<std::string, absl::Cord>>;
152 
153 TEST(Status, TestGetSetPayload) {
154  absl::Status ok_status = absl::OkStatus();
155  ok_status.SetPayload(kUrl1, absl::Cord(kPayload1));
156  ok_status.SetPayload(kUrl2, absl::Cord(kPayload2));
157 
158  EXPECT_FALSE(ok_status.GetPayload(kUrl1));
159  EXPECT_FALSE(ok_status.GetPayload(kUrl2));
160 
161  absl::Status bad_status(absl::StatusCode::kInternal, "fail");
162  bad_status.SetPayload(kUrl1, absl::Cord(kPayload1));
163  bad_status.SetPayload(kUrl2, absl::Cord(kPayload2));
164 
165  EXPECT_THAT(bad_status.GetPayload(kUrl1), Optional(Eq(kPayload1)));
166  EXPECT_THAT(bad_status.GetPayload(kUrl2), Optional(Eq(kPayload2)));
167 
168  EXPECT_FALSE(bad_status.GetPayload(kUrl3));
169 
170  bad_status.SetPayload(kUrl1, absl::Cord(kPayload3));
171  EXPECT_THAT(bad_status.GetPayload(kUrl1), Optional(Eq(kPayload3)));
172 
173  // Testing dynamically generated type_url
174  bad_status.SetPayload(absl::StrCat(kUrl1, ".1"), absl::Cord(kPayload1));
175  EXPECT_THAT(bad_status.GetPayload(absl::StrCat(kUrl1, ".1")),
176  Optional(Eq(kPayload1)));
177 }
178 
179 TEST(Status, TestErasePayload) {
180  absl::Status bad_status(absl::StatusCode::kInternal, "fail");
181  bad_status.SetPayload(kUrl1, absl::Cord(kPayload1));
182  bad_status.SetPayload(kUrl2, absl::Cord(kPayload2));
183  bad_status.SetPayload(kUrl3, absl::Cord(kPayload3));
184 
185  EXPECT_FALSE(bad_status.ErasePayload(kUrl4));
186 
187  EXPECT_TRUE(bad_status.GetPayload(kUrl2));
188  EXPECT_TRUE(bad_status.ErasePayload(kUrl2));
189  EXPECT_FALSE(bad_status.GetPayload(kUrl2));
190  EXPECT_FALSE(bad_status.ErasePayload(kUrl2));
191 
192  EXPECT_TRUE(bad_status.ErasePayload(kUrl1));
193  EXPECT_TRUE(bad_status.ErasePayload(kUrl3));
194 
195  bad_status.SetPayload(kUrl1, absl::Cord(kPayload1));
196  EXPECT_TRUE(bad_status.ErasePayload(kUrl1));
197 }
198 
199 TEST(Status, TestComparePayloads) {
200  absl::Status bad_status1(absl::StatusCode::kInternal, "fail");
201  bad_status1.SetPayload(kUrl1, absl::Cord(kPayload1));
202  bad_status1.SetPayload(kUrl2, absl::Cord(kPayload2));
203  bad_status1.SetPayload(kUrl3, absl::Cord(kPayload3));
204 
205  absl::Status bad_status2(absl::StatusCode::kInternal, "fail");
206  bad_status2.SetPayload(kUrl2, absl::Cord(kPayload2));
207  bad_status2.SetPayload(kUrl3, absl::Cord(kPayload3));
208  bad_status2.SetPayload(kUrl1, absl::Cord(kPayload1));
209 
210  EXPECT_EQ(bad_status1, bad_status2);
211 }
212 
213 TEST(Status, TestComparePayloadsAfterErase) {
214  absl::Status payload_status(absl::StatusCode::kInternal, "");
215  payload_status.SetPayload(kUrl1, absl::Cord(kPayload1));
216  payload_status.SetPayload(kUrl2, absl::Cord(kPayload2));
217 
218  absl::Status empty_status(absl::StatusCode::kInternal, "");
219 
220  // Different payloads, not equal
221  EXPECT_NE(payload_status, empty_status);
222  EXPECT_TRUE(payload_status.ErasePayload(kUrl1));
223 
224  // Still Different payloads, still not equal.
225  EXPECT_NE(payload_status, empty_status);
226  EXPECT_TRUE(payload_status.ErasePayload(kUrl2));
227 
228  // Both empty payloads, should be equal
229  EXPECT_EQ(payload_status, empty_status);
230 }
231 
232 PayloadsVec AllVisitedPayloads(const absl::Status& s) {
233  PayloadsVec result;
234 
235  s.ForEachPayload([&](absl::string_view type_url, const absl::Cord& payload) {
236  result.push_back(std::make_pair(std::string(type_url), payload));
237  });
238 
239  return result;
240 }
241 
242 TEST(Status, TestForEachPayload) {
243  absl::Status bad_status(absl::StatusCode::kInternal, "fail");
244  bad_status.SetPayload(kUrl1, absl::Cord(kPayload1));
245  bad_status.SetPayload(kUrl2, absl::Cord(kPayload2));
246  bad_status.SetPayload(kUrl3, absl::Cord(kPayload3));
247 
248  int count = 0;
249 
250  bad_status.ForEachPayload(
251  [&count](absl::string_view, const absl::Cord&) { ++count; });
252 
253  EXPECT_EQ(count, 3);
254 
255  PayloadsVec expected_payloads = {{kUrl1, absl::Cord(kPayload1)},
256  {kUrl2, absl::Cord(kPayload2)},
257  {kUrl3, absl::Cord(kPayload3)}};
258 
259  // Test that we visit all the payloads in the status.
260  PayloadsVec visited_payloads = AllVisitedPayloads(bad_status);
261  EXPECT_THAT(visited_payloads, UnorderedElementsAreArray(expected_payloads));
262 
263  // Test that visitation order is not consistent between run.
264  std::vector<absl::Status> scratch;
265  while (true) {
266  scratch.emplace_back(absl::StatusCode::kInternal, "fail");
267 
268  scratch.back().SetPayload(kUrl1, absl::Cord(kPayload1));
269  scratch.back().SetPayload(kUrl2, absl::Cord(kPayload2));
270  scratch.back().SetPayload(kUrl3, absl::Cord(kPayload3));
271 
272  if (AllVisitedPayloads(scratch.back()) != visited_payloads) {
273  break;
274  }
275  }
276 }
277 
278 TEST(Status, ToString) {
280  EXPECT_EQ("INTERNAL: fail", s.ToString());
281  s.SetPayload("foo", absl::Cord("bar"));
282  EXPECT_EQ("INTERNAL: fail [foo='bar']", s.ToString());
283  s.SetPayload("bar", absl::Cord("\377"));
284  EXPECT_THAT(s.ToString(),
285  AllOf(HasSubstr("INTERNAL: fail"), HasSubstr("[foo='bar']"),
286  HasSubstr("[bar='\\xff']")));
287 }
288 
289 TEST(Status, ToStringMode) {
291  s.SetPayload("foo", absl::Cord("bar"));
292  s.SetPayload("bar", absl::Cord("\377"));
293 
294  EXPECT_EQ("INTERNAL: fail",
296 
298  AllOf(HasSubstr("INTERNAL: fail"), HasSubstr("[foo='bar']"),
299  HasSubstr("[bar='\\xff']")));
300 
302  AllOf(HasSubstr("INTERNAL: fail"), HasSubstr("[foo='bar']"),
303  HasSubstr("[bar='\\xff']")));
304 
306  AllOf(HasSubstr("INTERNAL: fail"), Not(HasSubstr("[foo='bar']")),
307  Not(HasSubstr("[bar='\\xff']"))));
308 }
309 
310 absl::Status EraseAndReturn(const absl::Status& base) {
312  EXPECT_TRUE(copy.ErasePayload(kUrl1));
313  return copy;
314 }
315 
316 TEST(Status, CopyOnWriteForErasePayload) {
317  {
319  base.SetPayload(kUrl1, absl::Cord(kPayload1));
320  EXPECT_TRUE(base.GetPayload(kUrl1).has_value());
321  absl::Status copy = EraseAndReturn(base);
322  EXPECT_TRUE(base.GetPayload(kUrl1).has_value());
323  EXPECT_FALSE(copy.GetPayload(kUrl1).has_value());
324  }
325  {
327  base.SetPayload(kUrl1, absl::Cord(kPayload1));
329 
330  EXPECT_TRUE(base.GetPayload(kUrl1).has_value());
331  EXPECT_TRUE(copy.GetPayload(kUrl1).has_value());
332 
333  EXPECT_TRUE(base.ErasePayload(kUrl1));
334 
335  EXPECT_FALSE(base.GetPayload(kUrl1).has_value());
336  EXPECT_TRUE(copy.GetPayload(kUrl1).has_value());
337  }
338 }
339 
340 TEST(Status, CopyConstructor) {
341  {
345  }
346  {
350  }
351  {
353  status.SetPayload(kUrl1, absl::Cord(kPayload1));
356  }
357 }
358 
359 TEST(Status, CopyAssignment) {
360  absl::Status assignee;
361  {
363  assignee = status;
364  EXPECT_EQ(assignee, status);
365  }
366  {
368  assignee = status;
369  EXPECT_EQ(assignee, status);
370  }
371  {
373  status.SetPayload(kUrl1, absl::Cord(kPayload1));
374  assignee = status;
375  EXPECT_EQ(assignee, status);
376  }
377 }
378 
379 TEST(Status, CopyAssignmentIsNotRef) {
380  const absl::Status status_orig(absl::StatusCode::kInvalidArgument, "message");
381  absl::Status status_copy = status_orig;
382  EXPECT_EQ(status_orig, status_copy);
383  status_copy.SetPayload(kUrl1, absl::Cord(kPayload1));
384  EXPECT_NE(status_orig, status_copy);
385 }
386 
387 TEST(Status, MoveConstructor) {
388  {
392  }
393  {
398  }
399  {
401  status.SetPayload(kUrl1, absl::Cord(kPayload1));
402  absl::Status copy1(status);
403  absl::Status copy2(std::move(status));
404  EXPECT_EQ(copy1, copy2);
405  }
406 }
407 
408 TEST(Status, MoveAssignment) {
409  absl::Status assignee;
410  {
412  assignee = absl::Status();
413  EXPECT_EQ(assignee, status);
414  }
415  {
417  assignee = absl::Status(absl::StatusCode::kInvalidArgument, "message");
418  EXPECT_EQ(assignee, status);
419  }
420  {
422  status.SetPayload(kUrl1, absl::Cord(kPayload1));
424  assignee = std::move(status);
425  EXPECT_EQ(assignee, copy);
426  }
427  {
430  status = static_cast<absl::Status&&>(status);
432  }
433 }
434 
435 TEST(Status, Update) {
436  absl::Status s;
437  s.Update(absl::OkStatus());
438  EXPECT_TRUE(s.ok());
439  const absl::Status a(absl::StatusCode::kCancelled, "message");
440  s.Update(a);
441  EXPECT_EQ(s, a);
442  const absl::Status b(absl::StatusCode::kInternal, "other message");
443  s.Update(b);
444  EXPECT_EQ(s, a);
445  s.Update(absl::OkStatus());
446  EXPECT_EQ(s, a);
447  EXPECT_FALSE(s.ok());
448 }
449 
450 TEST(Status, Equality) {
452  absl::Status no_payload = absl::CancelledError("no payload");
453  absl::Status one_payload = absl::InvalidArgumentError("one payload");
454  one_payload.SetPayload(kUrl1, absl::Cord(kPayload1));
455  absl::Status two_payloads = one_payload;
456  two_payloads.SetPayload(kUrl2, absl::Cord(kPayload2));
457  const std::array<absl::Status, 4> status_arr = {ok, no_payload, one_payload,
458  two_payloads};
459  for (int i = 0; i < status_arr.size(); i++) {
460  for (int j = 0; j < status_arr.size(); j++) {
461  if (i == j) {
462  EXPECT_TRUE(status_arr[i] == status_arr[j]);
463  EXPECT_FALSE(status_arr[i] != status_arr[j]);
464  } else {
465  EXPECT_TRUE(status_arr[i] != status_arr[j]);
466  EXPECT_FALSE(status_arr[i] == status_arr[j]);
467  }
468  }
469  }
470 }
471 
472 TEST(Status, Swap) {
473  auto test_swap = [](const absl::Status& s1, const absl::Status& s2) {
474  absl::Status copy1 = s1, copy2 = s2;
475  swap(copy1, copy2);
476  EXPECT_EQ(copy1, s2);
477  EXPECT_EQ(copy2, s1);
478  };
479  const absl::Status ok;
480  const absl::Status no_payload(absl::StatusCode::kAlreadyExists, "no payload");
481  absl::Status with_payload(absl::StatusCode::kInternal, "with payload");
482  with_payload.SetPayload(kUrl1, absl::Cord(kPayload1));
483  test_swap(ok, no_payload);
484  test_swap(no_payload, ok);
485  test_swap(ok, with_payload);
486  test_swap(with_payload, ok);
487  test_swap(no_payload, with_payload);
488  test_swap(with_payload, no_payload);
489 }
490 
491 TEST(StatusErrno, ErrnoToStatusCode) {
493 
494  // Spot-check a few errno values.
498 
499  // We'll pick a very large number so it hopefully doesn't collide to errno.
501 }
502 
503 TEST(StatusErrno, ErrnoToStatus) {
504  absl::Status status = absl::ErrnoToStatus(ENOENT, "Cannot open 'path'");
506  EXPECT_EQ(status.message(), "Cannot open 'path': No such file or directory");
507 }
508 } // namespace
absl::StatusCode::kDeadlineExceeded
@ kDeadlineExceeded
EXPECT_FALSE
#define EXPECT_FALSE(condition)
Definition: bloaty/third_party/googletest/googletest/include/gtest/gtest.h:1970
absl::InvalidArgumentError
Status InvalidArgumentError(absl::string_view message)
Definition: third_party/abseil-cpp/absl/status/status.cc:351
_gevent_test_main.result
result
Definition: _gevent_test_main.py:96
absl::Cord
Definition: abseil-cpp/absl/strings/cord.h:150
absl::StatusCode::kResourceExhausted
@ kResourceExhausted
absl::debugging_internal::Optional
static bool Optional(bool)
Definition: abseil-cpp/absl/debugging/internal/demangle.cc:333
absl::swap_internal::Swap
void Swap(T &lhs, T &rhs) noexcept(IsNothrowSwappable< T >::value)
Definition: abseil-cpp/absl/meta/type_traits.h:772
absl::str_format_internal::LengthMod::j
@ j
testing::Not
internal::NotMatcher< InnerMatcher > Not(InnerMatcher m)
Definition: cares/cares/test/gmock-1.8.0/gmock/gmock.h:8926
bool
bool
Definition: setup_once.h:312
absl::AbortedError
Status AbortedError(absl::string_view message)
Definition: third_party/abseil-cpp/absl/status/status.cc:323
absl::StrCat
std::string StrCat(const AlphaNum &a, const AlphaNum &b)
Definition: abseil-cpp/absl/strings/str_cat.cc:98
absl::StatusCode::kFailedPrecondition
@ kFailedPrecondition
absl::IsDeadlineExceeded
bool IsDeadlineExceeded(const Status &status)
Definition: third_party/abseil-cpp/absl/status/status.cc:403
absl::Status::raw_code
int raw_code() const
Definition: third_party/abseil-cpp/absl/status/status.cc:225
absl::IsUnavailable
bool IsUnavailable(const Status &status)
Definition: third_party/abseil-cpp/absl/status/status.cc:439
absl::ErrnoToStatus
Status ErrnoToStatus(int error_number, absl::string_view message)
Definition: third_party/abseil-cpp/absl/status/status.cc:599
EXPECT_THAT
#define EXPECT_THAT(value, matcher)
test
Definition: spinlock_test.cc:36
absl::IsInternal
bool IsInternal(const Status &status)
Definition: third_party/abseil-cpp/absl/status/status.cc:411
absl::CancelledError
Status CancelledError(absl::string_view message)
Definition: third_party/abseil-cpp/absl/status/status.cc:331
absl::IsOutOfRange
bool IsOutOfRange(const Status &status)
Definition: third_party/abseil-cpp/absl/status/status.cc:423
absl::StatusCodeToString
ABSL_NAMESPACE_BEGIN std::string StatusCodeToString(StatusCode code)
Definition: third_party/abseil-cpp/absl/status/status.cc:33
copy
static int copy(grpc_slice_buffer *input, grpc_slice_buffer *output)
Definition: message_compress.cc:145
absl::StatusCode::kUnimplemented
@ kUnimplemented
absl::string_view
Definition: abseil-cpp/absl/strings/string_view.h:167
absl::str_format_internal::AllOf
constexpr bool AllOf()
Definition: abseil-cpp/absl/strings/internal/str_format/checker.h:39
testing::internal::string
::std::string string
Definition: bloaty/third_party/protobuf/third_party/googletest/googletest/include/gtest/internal/gtest-port.h:881
vs_toolchain.Update
def Update(version)
Definition: vs_toolchain.py:76
absl::OkStatus
Status OkStatus()
Definition: third_party/abseil-cpp/absl/status/status.h:882
absl::StatusCode::kAborted
@ kAborted
status
absl::Status status
Definition: rls.cc:251
absl::FormatConversionChar::s
@ s
a
int a
Definition: abseil-cpp/absl/container/internal/hash_policy_traits_test.cc:88
absl::InternalError
Status InternalError(absl::string_view message)
Definition: third_party/abseil-cpp/absl/status/status.cc:347
absl::IsDataLoss
bool IsDataLoss(const Status &status)
Definition: third_party/abseil-cpp/absl/status/status.cc:399
message
char * message
Definition: libuv/docs/code/tty-gravity/main.c:12
absl::StatusCode::kPermissionDenied
@ kPermissionDenied
absl::StatusCode::kDataLoss
@ kDataLoss
grpc_status._async.code
code
Definition: grpcio_status/grpc_status/_async.py:34
absl::PermissionDeniedError
Status PermissionDeniedError(absl::string_view message)
Definition: third_party/abseil-cpp/absl/status/status.cc:363
EXPECT_EQ
#define EXPECT_EQ(a, b)
Definition: iomgr/time_averaged_stats_test.cc:27
absl::StatusCode::kInternal
@ kInternal
absl::UnauthenticatedError
Status UnauthenticatedError(absl::string_view message)
Definition: third_party/abseil-cpp/absl/status/status.cc:371
SCOPED_TRACE
#define SCOPED_TRACE(message)
Definition: bloaty/third_party/googletest/googletest/include/gtest/gtest.h:2264
absl::StatusCode::kOutOfRange
@ kOutOfRange
absl::move
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
Definition: abseil-cpp/absl/utility/utility.h:221
absl::IsUnknown
bool IsUnknown(const Status &status)
Definition: third_party/abseil-cpp/absl/status/status.cc:447
swap
#define swap(a, b)
Definition: qsort.h:111
ToString
std::string ToString(const grpc::string_ref &r)
Definition: string_ref_helper.cc:24
TEST
#define TEST(name, init_size,...)
Definition: arena_test.cc:75
absl::FailedPreconditionError
Status FailedPreconditionError(absl::string_view message)
Definition: third_party/abseil-cpp/absl/status/status.cc:343
EXPECT_NE
#define EXPECT_NE(val1, val2)
Definition: bloaty/third_party/googletest/googletest/include/gtest/gtest.h:2028
absl::IsCancelled
bool IsCancelled(const Status &status)
Definition: third_party/abseil-cpp/absl/status/status.cc:395
absl::IsUnauthenticated
bool IsUnauthenticated(const Status &status)
Definition: third_party/abseil-cpp/absl/status/status.cc:435
absl::UnknownError
Status UnknownError(absl::string_view message)
Definition: third_party/abseil-cpp/absl/status/status.cc:383
absl::Status::SetPayload
void SetPayload(absl::string_view type_url, absl::Cord payload)
Definition: third_party/abseil-cpp/absl/status/status.cc:128
testing::Eq
internal::EqMatcher< T > Eq(T x)
Definition: cares/cares/test/gmock-1.8.0/gmock/gmock.h:8561
absl::Status::message
absl::string_view message() const
Definition: third_party/abseil-cpp/absl/status/status.h:806
absl::IsNotFound
bool IsNotFound(const Status &status)
Definition: third_party/abseil-cpp/absl/status/status.cc:419
absl::DataLossError
Status DataLossError(absl::string_view message)
Definition: third_party/abseil-cpp/absl/status/status.cc:335
gen_synthetic_protos.base
base
Definition: gen_synthetic_protos.py:31
absl::IsInvalidArgument
bool IsInvalidArgument(const Status &status)
Definition: third_party/abseil-cpp/absl/status/status.cc:415
grpc::StatusCode
StatusCode
Definition: grpcpp/impl/codegen/status_code_enum.h:26
absl::OutOfRangeError
Status OutOfRangeError(absl::string_view message)
Definition: third_party/abseil-cpp/absl/status/status.cc:359
absl::StatusCode::kUnauthenticated
@ kUnauthenticated
absl::StatusToStringMode::kWithEverything
@ kWithEverything
b
uint64_t b
Definition: abseil-cpp/absl/container/internal/layout_test.cc:53
absl::StatusCode::kInvalidArgument
@ kInvalidArgument
absl::Status
ABSL_NAMESPACE_BEGIN class ABSL_MUST_USE_RESULT Status
Definition: abseil-cpp/absl/status/internal/status_internal.h:36
absl::StatusCode::kOk
@ kOk
absl::StatusCode::kCancelled
@ kCancelled
absl::ResourceExhaustedError
Status ResourceExhaustedError(absl::string_view message)
Definition: third_party/abseil-cpp/absl/status/status.cc:367
absl::StatusCode::kAlreadyExists
@ kAlreadyExists
scratch
static char scratch[256]
Definition: test-random.c:27
absl::StatusCode
StatusCode
Definition: third_party/abseil-cpp/absl/status/status.h:92
absl::StatusToStringMode::kWithPayload
@ kWithPayload
absl::IsFailedPrecondition
bool IsFailedPrecondition(const Status &status)
Definition: third_party/abseil-cpp/absl/status/status.cc:407
count
int * count
Definition: bloaty/third_party/googletest/googlemock/test/gmock_stress_test.cc:96
absl::Status
Definition: third_party/abseil-cpp/absl/status/status.h:424
absl::StatusCode::kUnknown
@ kUnknown
absl::IsResourceExhausted
bool IsResourceExhausted(const Status &status)
Definition: third_party/abseil-cpp/absl/status/status.cc:431
string_view
absl::string_view string_view
Definition: attr.cc:22
absl::DeadlineExceededError
Status DeadlineExceededError(absl::string_view message)
Definition: third_party/abseil-cpp/absl/status/status.cc:339
grpc::protobuf::util::Status
GRPC_CUSTOM_UTIL_STATUS Status
Definition: include/grpcpp/impl/codegen/config_protobuf.h:93
type_url
string * type_url
Definition: bloaty/third_party/protobuf/conformance/conformance_cpp.cc:72
ok
bool ok
Definition: async_end2end_test.cc:197
absl::IsUnimplemented
bool IsUnimplemented(const Status &status)
Definition: third_party/abseil-cpp/absl/status/status.cc:443
absl::NotFoundError
Status NotFoundError(absl::string_view message)
Definition: third_party/abseil-cpp/absl/status/status.cc:355
absl::Status::ok
ABSL_MUST_USE_RESULT bool ok() const
Definition: third_party/abseil-cpp/absl/status/status.h:802
absl::UnavailableError
Status UnavailableError(absl::string_view message)
Definition: third_party/abseil-cpp/absl/status/status.cc:375
absl::Status::GetPayload
absl::optional< absl::Cord > GetPayload(absl::string_view type_url) const
Definition: third_party/abseil-cpp/absl/status/status.cc:119
EXPECT_TRUE
#define EXPECT_TRUE(condition)
Definition: bloaty/third_party/googletest/googletest/include/gtest/gtest.h:1967
absl::UnimplementedError
Status UnimplementedError(absl::string_view message)
Definition: third_party/abseil-cpp/absl/status/status.cc:379
absl::IsPermissionDenied
bool IsPermissionDenied(const Status &status)
Definition: third_party/abseil-cpp/absl/status/status.cc:427
testing::UnorderedElementsAreArray
internal::UnorderedElementsAreArrayMatcher< typename ::std::iterator_traits< Iter >::value_type > UnorderedElementsAreArray(Iter first, Iter last)
Definition: cares/cares/test/gmock-1.8.0/gmock/gmock.h:8507
absl::IsAborted
bool IsAborted(const Status &status)
Definition: third_party/abseil-cpp/absl/status/status.cc:387
code
Definition: bloaty/third_party/zlib/contrib/infback9/inftree9.h:24
absl::StatusCode::kUnavailable
@ kUnavailable
absl::StatusToStringMode::kWithNoExtraData
@ kWithNoExtraData
absl::Status::code
absl::StatusCode code() const
Definition: third_party/abseil-cpp/absl/status/status.cc:233
gen_server_registered_method_bad_client_test_body.payload
list payload
Definition: gen_server_registered_method_bad_client_test_body.py:40
testing::HasSubstr
PolymorphicMatcher< internal::HasSubstrMatcher< internal::string > > HasSubstr(const internal::string &substring)
Definition: cares/cares/test/gmock-1.8.0/gmock/gmock.h:8803
absl::IsAlreadyExists
bool IsAlreadyExists(const Status &status)
Definition: third_party/abseil-cpp/absl/status/status.cc:391
errno.h
i
uint64_t i
Definition: abseil-cpp/absl/container/btree_benchmark.cc:230
absl::AlreadyExistsError
Status AlreadyExistsError(absl::string_view message)
Definition: third_party/abseil-cpp/absl/status/status.cc:327
absl::ErrnoToStatusCode
StatusCode ErrnoToStatusCode(int error_number)
Definition: third_party/abseil-cpp/absl/status/status.cc:451
absl::StatusCode::kNotFound
@ kNotFound


grpc
Author(s):
autogenerated on Fri May 16 2025 03:00:17