Skip to content

Commit df3ce20

Browse files
authored
Added basic tests for GetErrorGetStatus (grpc#29918)
* Add test * Fix ASAN errors * Fix log string
1 parent 7a63bd5 commit df3ce20

File tree

2 files changed

+43
-2
lines changed

2 files changed

+43
-2
lines changed

src/core/lib/transport/transport_op_string.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,8 @@ std::string grpc_transport_op_string(grpc_transport_op* op) {
113113
}
114114

115115
if (op->goaway_error != GRPC_ERROR_NONE) {
116-
out.push_back(absl::StrCat(" SEND_GOAWAY:%s",
117-
grpc_error_std_string(op->goaway_error)));
116+
out.push_back(
117+
absl::StrCat(" SEND_GOAWAY:", grpc_error_std_string(op->goaway_error)));
118118
}
119119

120120
if (op->set_accept_stream) {

test/core/transport/error_utils_test.cc

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,52 @@
2020

2121
#include "absl/status/status.h"
2222

23+
#include "src/core/lib/iomgr/error.h"
2324
#include "src/core/lib/slice/slice_internal.h"
2425
#include "test/core/util/test_config.h"
2526

2627
namespace {
2728

29+
TEST(ErrorUtilsTest, GetErrorGetStatusNone) {
30+
grpc_error_handle error = GRPC_ERROR_NONE;
31+
grpc_status_code code;
32+
std::string message;
33+
grpc_error_get_status(error, grpc_core::Timestamp(), &code, &message, nullptr,
34+
nullptr);
35+
ASSERT_EQ(code, GRPC_STATUS_OK);
36+
ASSERT_EQ(message, "");
37+
}
38+
39+
TEST(ErrorUtilsTest, GetErrorGetStatusFlat) {
40+
grpc_error_handle error =
41+
grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING("Msg"),
42+
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_CANCELLED);
43+
grpc_status_code code;
44+
std::string message;
45+
grpc_error_get_status(error, grpc_core::Timestamp(), &code, &message, nullptr,
46+
nullptr);
47+
ASSERT_EQ(code, GRPC_STATUS_CANCELLED);
48+
ASSERT_EQ(message, "Msg");
49+
GRPC_ERROR_UNREF(error);
50+
}
51+
52+
TEST(ErrorUtilsTest, GetErrorGetStatusChild) {
53+
std::vector<grpc_error_handle> children = {
54+
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Child1"),
55+
grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING("Child2"),
56+
GRPC_ERROR_INT_GRPC_STATUS,
57+
GRPC_STATUS_RESOURCE_EXHAUSTED),
58+
};
59+
grpc_error_handle error = GRPC_ERROR_CREATE_FROM_VECTOR("Parent", &children);
60+
grpc_status_code code;
61+
std::string message;
62+
grpc_error_get_status(error, grpc_core::Timestamp(), &code, &message, nullptr,
63+
nullptr);
64+
ASSERT_EQ(code, GRPC_STATUS_RESOURCE_EXHAUSTED);
65+
ASSERT_EQ(message, "Child2");
66+
GRPC_ERROR_UNREF(error);
67+
}
68+
2869
// ---- Ok Status ----
2970
TEST(ErrorUtilsTest, AbslOkToGrpcError) {
3071
grpc_error_handle error = absl_status_to_grpc_error(absl::OkStatus());

0 commit comments

Comments
 (0)