aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/core/client_channel/resolvers/dns_resolver_connectivity_test.c3
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer.c3
-rw-r--r--test/core/end2end/goaway_server_test.c8
-rw-r--r--test/core/security/credentials_test.c7
-rw-r--r--test/core/surface/alarm_test.c15
-rw-r--r--test/core/util/BUILD24
-rw-r--r--test/core/util/port.c31
-rw-r--r--test/core/util/port.h9
-rw-r--r--test/cpp/common/BUILD2
-rw-r--r--test/cpp/end2end/grpclb_end2end_test.cc10
-rw-r--r--test/cpp/microbenchmarks/BUILD4
-rw-r--r--test/cpp/qps/client_async.cc8
-rw-r--r--test/cpp/qps/server_async.cc3
-rw-r--r--test/cpp/server/BUILD8
-rw-r--r--test/cpp/util/BUILD45
-rw-r--r--test/cpp/util/slice_test.cc36
16 files changed, 172 insertions, 44 deletions
diff --git a/test/core/client_channel/resolvers/dns_resolver_connectivity_test.c b/test/core/client_channel/resolvers/dns_resolver_connectivity_test.c
index 6e3d69c265..364e180963 100644
--- a/test/core/client_channel/resolvers/dns_resolver_connectivity_test.c
+++ b/test/core/client_channel/resolvers/dns_resolver_connectivity_test.c
@@ -60,7 +60,8 @@ static void my_resolve_address(grpc_exec_ctx *exec_ctx, const char *addr,
static grpc_ares_request *my_dns_lookup_ares(
grpc_exec_ctx *exec_ctx, const char *dns_server, const char *addr,
const char *default_port, grpc_pollset_set *interested_parties,
- grpc_closure *on_done, grpc_lb_addresses **lb_addrs, bool check_grpclb) {
+ grpc_closure *on_done, grpc_lb_addresses **lb_addrs, bool check_grpclb,
+ char **service_config_json) {
gpr_mu_lock(&g_mu);
GPR_ASSERT(0 == strcmp("test", addr));
grpc_error *error = GRPC_ERROR_NONE;
diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 01fa4f748f..1228c9fe9a 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -416,7 +416,8 @@ void my_resolve_address(grpc_exec_ctx *exec_ctx, const char *addr,
grpc_ares_request *my_dns_lookup_ares(
grpc_exec_ctx *exec_ctx, const char *dns_server, const char *addr,
const char *default_port, grpc_pollset_set *interested_parties,
- grpc_closure *on_done, grpc_lb_addresses **lb_addrs, bool check_grpclb) {
+ grpc_closure *on_done, grpc_lb_addresses **lb_addrs, bool check_grpclb,
+ char **service_config_json) {
addr_req *r = gpr_malloc(sizeof(*r));
r->addr = gpr_strdup(addr);
r->on_done = on_done;
diff --git a/test/core/end2end/goaway_server_test.c b/test/core/end2end/goaway_server_test.c
index bf90e2525d..c3aca13249 100644
--- a/test/core/end2end/goaway_server_test.c
+++ b/test/core/end2end/goaway_server_test.c
@@ -48,7 +48,8 @@ static void (*iomgr_resolve_address)(grpc_exec_ctx *exec_ctx, const char *addr,
static grpc_ares_request *(*iomgr_dns_lookup_ares)(
grpc_exec_ctx *exec_ctx, const char *dns_server, const char *addr,
const char *default_port, grpc_pollset_set *interested_parties,
- grpc_closure *on_done, grpc_lb_addresses **addresses, bool check_grpclb);
+ grpc_closure *on_done, grpc_lb_addresses **addresses, bool check_grpclb,
+ char **service_config_json);
static void set_resolve_port(int port) {
gpr_mu_lock(&g_mu);
@@ -90,11 +91,12 @@ static void my_resolve_address(grpc_exec_ctx *exec_ctx, const char *addr,
static grpc_ares_request *my_dns_lookup_ares(
grpc_exec_ctx *exec_ctx, const char *dns_server, const char *addr,
const char *default_port, grpc_pollset_set *interested_parties,
- grpc_closure *on_done, grpc_lb_addresses **lb_addrs, bool check_grpclb) {
+ grpc_closure *on_done, grpc_lb_addresses **lb_addrs, bool check_grpclb,
+ char **service_config_json) {
if (0 != strcmp(addr, "test")) {
return iomgr_dns_lookup_ares(exec_ctx, dns_server, addr, default_port,
interested_parties, on_done, lb_addrs,
- check_grpclb);
+ check_grpclb, service_config_json);
}
grpc_error *error = GRPC_ERROR_NONE;
diff --git a/test/core/security/credentials_test.c b/test/core/security/credentials_test.c
index e60e398767..441c431135 100644
--- a/test/core/security/credentials_test.c
+++ b/test/core/security/credentials_test.c
@@ -311,6 +311,7 @@ typedef struct {
grpc_credentials_mdelem_array md_array;
grpc_closure on_request_metadata;
grpc_call_credentials *creds;
+ grpc_polling_entity pollent;
} request_metadata_state;
static void check_metadata(const expected_md *expected,
@@ -355,6 +356,8 @@ static void check_request_metadata(grpc_exec_ctx *exec_ctx, void *arg,
GPR_ASSERT(state->md_array.size == state->expected_size);
check_metadata(state->expected, &state->md_array);
grpc_credentials_mdelem_array_destroy(exec_ctx, &state->md_array);
+ grpc_pollset_set_destroy(exec_ctx,
+ grpc_polling_entity_pollset_set(&state->pollent));
gpr_free(state);
}
@@ -365,6 +368,8 @@ static request_metadata_state *make_request_metadata_state(
state->expected_error = expected_error;
state->expected = expected;
state->expected_size = expected_size;
+ state->pollent =
+ grpc_polling_entity_create_from_pollset_set(grpc_pollset_set_create());
GRPC_CLOSURE_INIT(&state->on_request_metadata, check_request_metadata, state,
grpc_schedule_on_exec_ctx);
return state;
@@ -376,7 +381,7 @@ static void run_request_metadata_test(grpc_exec_ctx *exec_ctx,
request_metadata_state *state) {
grpc_error *error = GRPC_ERROR_NONE;
if (grpc_call_credentials_get_request_metadata(
- exec_ctx, creds, NULL, auth_md_ctx, &state->md_array,
+ exec_ctx, creds, &state->pollent, auth_md_ctx, &state->md_array,
&state->on_request_metadata, &error)) {
// Synchronous result. Invoke the callback directly.
check_request_metadata(exec_ctx, state, error);
diff --git a/test/core/surface/alarm_test.c b/test/core/surface/alarm_test.c
index baaa05928e..6971d92074 100644
--- a/test/core/surface/alarm_test.c
+++ b/test/core/surface/alarm_test.c
@@ -73,6 +73,21 @@ static void test_alarm(void) {
GPR_ASSERT(ev.success == 0);
grpc_alarm_destroy(alarm);
}
+ {
+ /* alarm_destroy before cq_next */
+ grpc_event ev;
+ void *tag = create_test_tag();
+ grpc_alarm *alarm =
+ grpc_alarm_create(cc, grpc_timeout_seconds_to_deadline(2), tag);
+
+ grpc_alarm_destroy(alarm);
+ ev = grpc_completion_queue_next(cc, grpc_timeout_seconds_to_deadline(1),
+ NULL);
+ GPR_ASSERT(ev.type == GRPC_OP_COMPLETE);
+ GPR_ASSERT(ev.tag == tag);
+ GPR_ASSERT(ev.success == 0);
+ }
+
shutdown_and_destroy(cc);
}
diff --git a/test/core/util/BUILD b/test/core/util/BUILD
index 9d899bc7be..1268c2cd10 100644
--- a/test/core/util/BUILD
+++ b/test/core/util/BUILD
@@ -38,7 +38,7 @@ grpc_cc_library(
)
grpc_cc_library(
- name = "grpc_test_util",
+ name = "grpc_test_util_base",
srcs = [
"debugger_macros.c",
"grpc_profiler.c",
@@ -68,11 +68,33 @@ grpc_cc_library(
language = "C",
deps = [
":gpr_test_util",
+ "//:grpc_common",
+ ],
+)
+
+grpc_cc_library(
+ name = "grpc_test_util",
+ srcs = [],
+ hdrs = [],
+ language = "C",
+ deps = [
+ ":grpc_test_util_base",
"//:grpc",
],
)
grpc_cc_library(
+ name = "grpc_test_util_unsecure",
+ srcs = [],
+ hdrs = [],
+ language = "C",
+ deps = [
+ ":grpc_test_util_base",
+ "//:grpc_unsecure",
+ ],
+)
+
+grpc_cc_library(
name = "one_corpus_entry_fuzzer",
srcs = ["one_corpus_entry_fuzzer.c"],
deps = [
diff --git a/test/core/util/port.c b/test/core/util/port.c
index f430c543bd..b1fc722858 100644
--- a/test/core/util/port.c
+++ b/test/core/util/port.c
@@ -79,7 +79,7 @@ static void chose_port(int port) {
chosen_ports[num_chosen_ports - 1] = port;
}
-int grpc_pick_unused_port(void) {
+static int grpc_pick_unused_port_impl(void) {
int port = grpc_pick_port_using_server();
if (port != 0) {
chose_port(port);
@@ -88,7 +88,7 @@ int grpc_pick_unused_port(void) {
return port;
}
-int grpc_pick_unused_port_or_die(void) {
+static int grpc_pick_unused_port_or_die_impl(void) {
int port = grpc_pick_unused_port();
if (port == 0) {
fprintf(stderr,
@@ -101,6 +101,31 @@ int grpc_pick_unused_port_or_die(void) {
return port;
}
-void grpc_recycle_unused_port(int port) { GPR_ASSERT(free_chosen_port(port)); }
+static void grpc_recycle_unused_port_impl(int port) {
+ GPR_ASSERT(free_chosen_port(port));
+}
+
+static grpc_pick_port_functions g_pick_port_functions = {
+ grpc_pick_unused_port_impl, grpc_pick_unused_port_or_die_impl,
+ grpc_recycle_unused_port_impl};
+
+int grpc_pick_unused_port(void) {
+ return g_pick_port_functions.pick_unused_port_fn();
+}
+
+int grpc_pick_unused_port_or_die(void) {
+ return g_pick_port_functions.pick_unused_port_or_die_fn();
+}
+
+void grpc_recycle_unused_port(int port) {
+ g_pick_port_functions.recycle_unused_port_fn(port);
+}
+
+void grpc_set_pick_port_functions(grpc_pick_port_functions functions) {
+ GPR_ASSERT(functions.pick_unused_port_fn != NULL);
+ GPR_ASSERT(functions.pick_unused_port_or_die_fn != NULL);
+ GPR_ASSERT(functions.recycle_unused_port_fn != NULL);
+ g_pick_port_functions = functions;
+}
#endif /* GRPC_TEST_PICK_PORT */
diff --git a/test/core/util/port.h b/test/core/util/port.h
index 154e8f830c..602099dea6 100644
--- a/test/core/util/port.h
+++ b/test/core/util/port.h
@@ -23,6 +23,12 @@
extern "C" {
#endif
+typedef struct grpc_pick_port_functions {
+ int (*pick_unused_port_fn)(void);
+ int (*pick_unused_port_or_die_fn)(void);
+ void (*recycle_unused_port_fn)(int port);
+} grpc_pick_port_functions;
+
/* pick a port number that is currently unused by either tcp or udp. return
0 on failure. */
int grpc_pick_unused_port(void);
@@ -36,6 +42,9 @@ int grpc_pick_unused_port_or_die(void);
* ports back to the server if it is going to allocate a large number. */
void grpc_recycle_unused_port(int port);
+/** Request the family of pick_port functions in \a functions be used. */
+void grpc_set_pick_port_functions(grpc_pick_port_functions functions);
+
#ifdef __cplusplus
}
#endif
diff --git a/test/cpp/common/BUILD b/test/cpp/common/BUILD
index bd1173322a..be9c279f13 100644
--- a/test/cpp/common/BUILD
+++ b/test/cpp/common/BUILD
@@ -27,7 +27,7 @@ grpc_cc_test(
name = "alarm_cpp_test",
srcs = ["alarm_cpp_test.cc"],
deps = [
- "//:grpc++",
+ "//:grpc++_unsecure",
"//test/core/util:gpr_test_util",
],
external_deps = [
diff --git a/test/cpp/end2end/grpclb_end2end_test.cc b/test/cpp/end2end/grpclb_end2end_test.cc
index 4fef535506..b5cff664f6 100644
--- a/test/cpp/end2end/grpclb_end2end_test.cc
+++ b/test/cpp/end2end/grpclb_end2end_test.cc
@@ -215,7 +215,8 @@ class BalancerServiceImpl : public BalancerService {
{
std::unique_lock<std::mutex> lock(mu_);
if (shutdown_) goto done;
- serverlist_cond_.wait(lock);
+ serverlist_cond_.wait(lock, [this] { return serverlist_ready_; });
+ serverlist_ready_ = false;
}
if (client_load_reporting_interval_seconds_ > 0) {
@@ -242,6 +243,7 @@ class BalancerServiceImpl : public BalancerService {
.drop_token_counts[drop_token_count.load_balance_token()] +=
drop_token_count.num_calls();
}
+ load_report_ready_ = true;
load_report_cond_.notify_one();
}
done:
@@ -285,12 +287,14 @@ class BalancerServiceImpl : public BalancerService {
const ClientStats& WaitForLoadReport() {
std::unique_lock<std::mutex> lock(mu_);
- load_report_cond_.wait(lock);
+ load_report_cond_.wait(lock, [this] { return load_report_ready_; });
+ load_report_ready_ = false;
return client_stats_;
}
void NotifyDoneWithServerlists() {
std::lock_guard<std::mutex> lock(mu_);
+ serverlist_ready_ = true;
serverlist_cond_.notify_one();
}
@@ -313,7 +317,9 @@ class BalancerServiceImpl : public BalancerService {
std::vector<ResponseDelayPair> responses_and_delays_;
std::mutex mu_;
std::condition_variable load_report_cond_;
+ bool load_report_ready_ = false;
std::condition_variable serverlist_cond_;
+ bool serverlist_ready_ = false;
ClientStats client_stats_;
bool shutdown_;
};
diff --git a/test/cpp/microbenchmarks/BUILD b/test/cpp/microbenchmarks/BUILD
index 5e1bcee89f..442da38426 100644
--- a/test/cpp/microbenchmarks/BUILD
+++ b/test/cpp/microbenchmarks/BUILD
@@ -40,9 +40,9 @@ grpc_cc_library(
"helpers.h",
],
deps = [
- "//:grpc++",
+ "//:grpc++_unsecure",
"//src/proto/grpc/testing:echo_proto",
- "//test/core/util:grpc_test_util",
+ "//test/core/util:grpc_test_util_unsecure",
],
external_deps = [
"benchmark",
diff --git a/test/cpp/qps/client_async.cc b/test/cpp/qps/client_async.cc
index f7dda0f758..265f174cc5 100644
--- a/test/cpp/qps/client_async.cc
+++ b/test/cpp/qps/client_async.cc
@@ -120,7 +120,7 @@ class ClientRpcContextUnaryImpl : public ClientRpcContext {
BenchmarkService::Stub* stub_;
CompletionQueue* cq_;
std::unique_ptr<Alarm> alarm_;
- RequestType req_;
+ const RequestType& req_;
ResponseType response_;
enum State { INVALID, READY, RESP_DONE };
State next_state_;
@@ -415,7 +415,7 @@ class ClientRpcContextStreamingPingPongImpl : public ClientRpcContext {
BenchmarkService::Stub* stub_;
CompletionQueue* cq_;
std::unique_ptr<Alarm> alarm_;
- RequestType req_;
+ const RequestType& req_;
ResponseType response_;
enum State {
INVALID,
@@ -554,7 +554,7 @@ class ClientRpcContextStreamingFromClientImpl : public ClientRpcContext {
BenchmarkService::Stub* stub_;
CompletionQueue* cq_;
std::unique_ptr<Alarm> alarm_;
- RequestType req_;
+ const RequestType& req_;
ResponseType response_;
enum State {
INVALID,
@@ -672,7 +672,7 @@ class ClientRpcContextStreamingFromServerImpl : public ClientRpcContext {
BenchmarkService::Stub* stub_;
CompletionQueue* cq_;
std::unique_ptr<Alarm> alarm_;
- RequestType req_;
+ const RequestType& req_;
ResponseType response_;
enum State { INVALID, STREAM_IDLE, READ_DONE };
State next_state_;
diff --git a/test/cpp/qps/server_async.cc b/test/cpp/qps/server_async.cc
index 122976c397..8b00bcfeaf 100644
--- a/test/cpp/qps/server_async.cc
+++ b/test/cpp/qps/server_async.cc
@@ -550,8 +550,7 @@ static Status ProcessGenericRPC(const PayloadConfig &payload_config,
ByteBuffer *response) {
int resp_size = payload_config.bytebuf_params().resp_size();
std::unique_ptr<char[]> buf(new char[resp_size]);
- grpc_slice s = grpc_slice_from_copied_buffer(buf.get(), resp_size);
- Slice slice(s, Slice::STEAL_REF);
+ Slice slice(buf.get(), resp_size);
*response = ByteBuffer(&slice, 1);
return Status::OK;
}
diff --git a/test/cpp/server/BUILD b/test/cpp/server/BUILD
index 512241e350..3f63be2aa3 100644
--- a/test/cpp/server/BUILD
+++ b/test/cpp/server/BUILD
@@ -20,9 +20,9 @@ grpc_cc_test(
name = "server_builder_test",
srcs = ["server_builder_test.cc"],
deps = [
- "//:grpc++",
+ "//:grpc++_unsecure",
"//src/proto/grpc/testing:echo_proto",
- "//test/core/util:grpc_test_util",
+ "//test/core/util:grpc_test_util_unsecure",
],
external_deps = [
"gtest",
@@ -33,9 +33,9 @@ grpc_cc_test(
name = "server_request_call_test",
srcs = ["server_request_call_test.cc"],
deps = [
- "//:grpc++",
+ "//:grpc++_unsecure",
"//src/proto/grpc/testing:echo_proto",
- "//test/core/util:grpc_test_util",
+ "//test/core/util:grpc_test_util_unsecure",
],
external_deps = [
"gtest",
diff --git a/test/cpp/util/BUILD b/test/cpp/util/BUILD
index c9b0d6c1df..fbdec05698 100644
--- a/test/cpp/util/BUILD
+++ b/test/cpp/util/BUILD
@@ -24,16 +24,6 @@ package(
],
)
-# The following builds a shared-object to confirm that grpc++_unsecure
-# builds properly. Build-only is sufficient here
-grpc_cc_binary(
- name = "testso.so",
- srcs = [],
- linkshared = 1,
- linkopts = ['-Wl,--no-undefined'],
- deps = ["//:grpc++_unsecure"],
-)
-
grpc_cc_library(
name = "test_config",
srcs = [
@@ -64,26 +54,43 @@ grpc_cc_library(
],
)
+GRPCXX_TESTUTIL_SRCS = [
+ "byte_buffer_proto_helper.cc",
+ "string_ref_helper.cc",
+ "subprocess.cc",
+]
+
+GRPCXX_TESTUTIL_HDRS = [
+ "byte_buffer_proto_helper.h",
+ "string_ref_helper.h",
+ "subprocess.h",
+]
+
grpc_cc_library(
name = "test_util",
- srcs = [
- "byte_buffer_proto_helper.cc",
+ srcs = GRPCXX_TESTUTIL_SRCS + [
"create_test_channel.cc",
- "string_ref_helper.cc",
- "subprocess.cc",
"test_credentials_provider.cc",
],
- hdrs = [
- "byte_buffer_proto_helper.h",
+ hdrs = GRPCXX_TESTUTIL_HDRS + [
"create_test_channel.h",
- "string_ref_helper.h",
- "subprocess.h",
"test_credentials_provider.h",
],
deps = [
"//:grpc++",
"//test/core/end2end:ssl_test_data",
- "//test/core/util:gpr_test_util",
+ ],
+ external_deps = [
+ "protobuf",
+ ],
+)
+
+grpc_cc_library(
+ name = "test_util_unsecure",
+ srcs = GRPCXX_TESTUTIL_SRCS,
+ hdrs = GRPCXX_TESTUTIL_HDRS,
+ deps = [
+ "//:grpc++_unsecure",
],
external_deps = [
"protobuf",
diff --git a/test/cpp/util/slice_test.cc b/test/cpp/util/slice_test.cc
index 9e3329fab0..8a8962d7ee 100644
--- a/test/cpp/util/slice_test.cc
+++ b/test/cpp/util/slice_test.cc
@@ -63,6 +63,42 @@ TEST_F(SliceTest, StaticBuf) {
CheckSlice(spp, kContent);
}
+TEST_F(SliceTest, SliceNew) {
+ char* x = new char[strlen(kContent) + 1];
+ strcpy(x, kContent);
+ Slice spp(x, strlen(x), [](void* p) { delete[] reinterpret_cast<char*>(p); });
+ CheckSlice(spp, kContent);
+}
+
+TEST_F(SliceTest, SliceNewDoNothing) {
+ Slice spp(const_cast<char*>(kContent), strlen(kContent), [](void* p) {});
+ CheckSlice(spp, kContent);
+}
+
+TEST_F(SliceTest, SliceNewWithUserData) {
+ struct stest {
+ char* x;
+ int y;
+ };
+ auto* t = new stest;
+ t->x = new char[strlen(kContent) + 1];
+ strcpy(t->x, kContent);
+ Slice spp(t->x, strlen(t->x),
+ [](void* p) {
+ auto* t = reinterpret_cast<stest*>(p);
+ delete[] t->x;
+ delete t;
+ },
+ t);
+ CheckSlice(spp, kContent);
+}
+
+TEST_F(SliceTest, SliceNewLen) {
+ Slice spp(const_cast<char*>(kContent), strlen(kContent),
+ [](void* p, size_t l) { EXPECT_EQ(l, strlen(kContent)); });
+ CheckSlice(spp, kContent);
+}
+
TEST_F(SliceTest, Steal) {
grpc_slice s = grpc_slice_from_copied_string(kContent);
Slice spp(s, Slice::STEAL_REF);