Revert "gtestify test/core/iomgr (#30209)" (#30362)

This reverts commit 5b49a1b4bd.
pull/30366/head
Craig Tiller 3 years ago committed by GitHub
parent 89a0733747
commit c7c0ba6f32
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1090
      CMakeLists.txt
  2. 351
      build_autogenerated.yaml
  3. 19
      test/core/iomgr/BUILD
  4. 50
      test/core/iomgr/buffer_list_test.cc
  5. 36
      test/core/iomgr/combiner_test.cc
  6. 11
      test/core/iomgr/endpoint_pair_test.cc
  7. 14
      test/core/iomgr/fd_conservation_posix_test.cc
  8. 71
      test/core/iomgr/fd_posix_test.cc
  9. 17
      test/core/iomgr/grpc_ipv6_loopback_available_test.cc
  10. 73
      test/core/iomgr/load_file_test.cc
  11. 46
      test/core/iomgr/resolve_address_posix_test.cc
  12. 57
      test/core/iomgr/socket_utils_test.cc
  13. 70
      test/core/iomgr/tcp_client_posix_test.cc
  14. 100
      test/core/iomgr/tcp_posix_test.cc
  15. 112
      test/core/iomgr/tcp_server_posix_test.cc
  16. 65
      test/core/iomgr/timer_heap_test.cc
  17. 68
      test/core/iomgr/timer_list_test.cc
  18. 718
      tools/run_tests/generated/tests.json

1090
CMakeLists.txt generated

File diff suppressed because it is too large Load Diff

@ -3239,6 +3239,26 @@ targets:
- linux
- posix
- mac
- name: buffer_list_test
build: test
language: c
headers: []
src:
- test/core/iomgr/buffer_list_test.cc
deps:
- grpc_test_util
- name: combiner_test
build: test
language: c
headers: []
src:
- test/core/iomgr/combiner_test.cc
deps:
- grpc_test_util
platforms:
- linux
- posix
- mac
- name: connection_refused_test
build: test
language: c
@ -3263,6 +3283,40 @@ targets:
- linux
- posix
- mac
- name: endpoint_pair_test
build: test
language: c
headers:
- test/core/iomgr/endpoint_tests.h
src:
- test/core/iomgr/endpoint_pair_test.cc
- test/core/iomgr/endpoint_tests.cc
deps:
- grpc_test_util
- name: fd_conservation_posix_test
build: test
language: c
headers: []
src:
- test/core/iomgr/fd_conservation_posix_test.cc
deps:
- grpc_test_util
platforms:
- linux
- posix
- mac
- name: fd_posix_test
build: test
language: c
headers: []
src:
- test/core/iomgr/fd_posix_test.cc
deps:
- grpc_test_util
platforms:
- linux
- posix
- mac
- name: fling_stream_test
build: test
language: c
@ -3307,6 +3361,14 @@ targets:
- test/core/end2end/goaway_server_test.cc
deps:
- grpc_test_util
- name: grpc_ipv6_loopback_available_test
build: test
language: c
headers: []
src:
- test/core/iomgr/grpc_ipv6_loopback_available_test.cc
deps:
- grpc_test_util
- name: inproc_callback_test
build: test
language: c
@ -3326,6 +3388,15 @@ targets:
- test/core/end2end/invalid_call_argument_test.cc
deps:
- grpc_test_util
- name: load_file_test
build: test
language: c
headers: []
src:
- test/core/iomgr/load_file_test.cc
deps:
- grpc_test_util
uses_polling: false
- name: minimal_stack_is_minimal_test
build: test
language: c
@ -3367,6 +3438,101 @@ targets:
- test/core/surface/public_headers_must_be_c89.c
deps:
- grpc_test_util
- name: resolve_address_using_ares_resolver_posix_test
build: test
language: c
headers: []
src:
- test/core/iomgr/resolve_address_posix_test.cc
deps:
- grpc_test_util
args:
- --resolver=ares
platforms:
- linux
- posix
- mac
- name: resolve_address_using_native_resolver_posix_test
build: test
language: c
headers: []
src:
- test/core/iomgr/resolve_address_posix_test.cc
deps:
- grpc_test_util
args:
- --resolver=native
platforms:
- linux
- posix
- mac
- name: socket_utils_test
build: test
language: c
headers: []
src:
- test/core/iomgr/socket_utils_test.cc
deps:
- grpc_test_util
platforms:
- linux
- posix
- mac
- name: tcp_client_posix_test
build: test
language: c
headers: []
src:
- test/core/iomgr/tcp_client_posix_test.cc
deps:
- grpc_test_util
platforms:
- linux
- posix
- mac
- name: tcp_posix_test
build: test
language: c
headers:
- test/core/iomgr/endpoint_tests.h
src:
- test/core/iomgr/endpoint_tests.cc
- test/core/iomgr/tcp_posix_test.cc
deps:
- grpc_test_util
platforms:
- linux
- posix
- name: tcp_server_posix_test
build: test
language: c
headers: []
src:
- test/core/iomgr/tcp_server_posix_test.cc
deps:
- grpc_test_util
platforms:
- linux
- posix
- mac
- name: test_core_iomgr_timer_heap_test
build: test
language: c
headers: []
src:
- test/core/iomgr/timer_heap_test.cc
deps:
- grpc_test_util
uses_polling: false
- name: test_core_iomgr_timer_list_test
build: test
language: c
headers: []
src:
- test/core/iomgr/timer_list_test.cc
deps:
- grpc_test_util
uses_polling: false
- name: activity_test
gtest: true
build: test
@ -4108,15 +4274,6 @@ targets:
- absl/strings:strings
- absl/types:variant
uses_polling: false
- name: buffer_list_test
gtest: true
build: test
language: c++
headers: []
src:
- test/core/iomgr/buffer_list_test.cc
deps:
- grpc_test_util
- name: byte_buffer_test
gtest: true
build: test
@ -4632,19 +4789,6 @@ targets:
- grpc++
- grpc_test_util
uses_polling: false
- name: combiner_test
gtest: true
build: test
language: c++
headers: []
src:
- test/core/iomgr/combiner_test.cc
deps:
- grpc_test_util
platforms:
- linux
- posix
- mac
- name: completion_queue_threading_test
gtest: true
build: test
@ -4988,17 +5132,6 @@ targets:
deps:
- grpc_test_util
uses_polling: false
- name: endpoint_pair_test
gtest: true
build: test
language: c++
headers:
- test/core/iomgr/endpoint_tests.h
src:
- test/core/iomgr/endpoint_pair_test.cc
- test/core/iomgr/endpoint_tests.cc
deps:
- grpc_test_util
- name: env_test
gtest: true
build: test
@ -5282,32 +5415,6 @@ targets:
- test/core/tsi/transport_security_test_lib.cc
deps:
- grpc_test_util
- name: fd_conservation_posix_test
gtest: true
build: test
language: c++
headers: []
src:
- test/core/iomgr/fd_conservation_posix_test.cc
deps:
- grpc_test_util
platforms:
- linux
- posix
- mac
- name: fd_posix_test
gtest: true
build: test
language: c++
headers: []
src:
- test/core/iomgr/fd_posix_test.cc
deps:
- grpc_test_util
platforms:
- linux
- posix
- mac
- name: file_watcher_certificate_provider_factory_test
gtest: true
build: test
@ -5762,15 +5869,6 @@ targets:
- src/compiler/csharp_plugin.cc
deps:
- grpc_plugin_support
- name: grpc_ipv6_loopback_available_test
gtest: true
build: test
language: c++
headers: []
src:
- test/core/iomgr/grpc_ipv6_loopback_available_test.cc
deps:
- grpc_test_util
- name: grpc_node_plugin
build: protoc
language: c++
@ -6451,16 +6549,6 @@ targets:
deps:
- grpc++
- grpc_test_util
- name: load_file_test
gtest: true
build: test
language: c++
headers: []
src:
- test/core/iomgr/load_file_test.cc
deps:
- grpc_test_util
uses_polling: false
- name: lock_free_event_test
gtest: true
build: test
@ -7440,23 +7528,6 @@ targets:
- linux
- posix
- mac
- name: resolve_address_using_ares_resolver_posix_test
gtest: true
build: test
language: c++
headers: []
src:
- test/core/iomgr/resolve_address_posix_test.cc
deps:
- absl/flags:flag
- absl/flags:parse
- grpc_test_util
args:
- --resolver=ares
platforms:
- linux
- posix
- mac
- name: resolve_address_using_ares_resolver_test
gtest: true
build: test
@ -7469,23 +7540,6 @@ targets:
deps:
- grpc_test_util
- grpc++_test_config
- name: resolve_address_using_native_resolver_posix_test
gtest: true
build: test
language: c++
headers: []
src:
- test/core/iomgr/resolve_address_posix_test.cc
deps:
- absl/flags:flag
- absl/flags:parse
- grpc_test_util
args:
- --resolver=native
platforms:
- linux
- posix
- mac
- name: resolve_address_using_native_resolver_test
gtest: true
build: test
@ -8060,19 +8114,6 @@ targets:
- test/core/address_utils/sockaddr_utils_test.cc
deps:
- grpc_test_util
- name: socket_utils_test
gtest: true
build: test
language: c++
headers: []
src:
- test/core/iomgr/socket_utils_test.cc
deps:
- grpc_test_util
platforms:
- linux
- posix
- mac
- name: spinlock_test
gtest: true
build: test
@ -8281,46 +8322,6 @@ targets:
- absl/types:variant
- absl/utility:utility
uses_polling: false
- name: tcp_client_posix_test
gtest: true
build: test
language: c++
headers: []
src:
- test/core/iomgr/tcp_client_posix_test.cc
deps:
- grpc_test_util
platforms:
- linux
- posix
- mac
- name: tcp_posix_test
gtest: true
build: test
language: c++
headers:
- test/core/iomgr/endpoint_tests.h
src:
- test/core/iomgr/endpoint_tests.cc
- test/core/iomgr/tcp_posix_test.cc
deps:
- grpc_test_util
platforms:
- linux
- posix
- name: tcp_server_posix_test
gtest: true
build: test
language: c++
headers: []
src:
- test/core/iomgr/tcp_server_posix_test.cc
deps:
- grpc_test_util
platforms:
- linux
- posix
- mac
- name: test_core_event_engine_iomgr_event_engine_timer_heap_test
gtest: true
build: test
@ -8638,26 +8639,6 @@ targets:
- absl/types:optional
- absl/types:variant
uses_polling: false
- name: test_core_iomgr_timer_heap_test
gtest: true
build: test
language: c++
headers: []
src:
- test/core/iomgr/timer_heap_test.cc
deps:
- grpc_test_util
uses_polling: false
- name: test_core_iomgr_timer_list_test
gtest: true
build: test
language: c++
headers: []
src:
- test/core/iomgr/timer_list_test.cc
deps:
- grpc_test_util
uses_polling: false
- name: test_core_security_credentials_test
gtest: true
build: test

@ -42,7 +42,6 @@ grpc_cc_test(
name = "combiner_test",
srcs = ["combiner_test.cc"],
exec_properties = LARGE_MACHINE,
external_deps = ["gtest"],
language = "C++",
tags = ["no_windows"], # LARGE_MACHINE is not configured for windows RBE
deps = [
@ -55,7 +54,6 @@ grpc_cc_test(
grpc_cc_test(
name = "endpoint_pair_test",
srcs = ["endpoint_pair_test.cc"],
external_deps = ["gtest"],
language = "C++",
deps = [
":endpoint_tests",
@ -85,7 +83,6 @@ grpc_cc_test(
grpc_cc_test(
name = "fd_conservation_posix_test",
srcs = ["fd_conservation_posix_test.cc"],
external_deps = ["gtest"],
language = "C++",
tags = ["no_windows"],
deps = [
@ -98,7 +95,6 @@ grpc_cc_test(
grpc_cc_test(
name = "fd_posix_test",
srcs = ["fd_posix_test.cc"],
external_deps = ["gtest"],
language = "C++",
tags = ["no_windows"],
deps = [
@ -111,7 +107,6 @@ grpc_cc_test(
grpc_cc_test(
name = "grpc_ipv6_loopback_available_test",
srcs = ["grpc_ipv6_loopback_available_test.cc"],
external_deps = ["gtest"],
language = "C++",
deps = [
"//:gpr",
@ -123,7 +118,6 @@ grpc_cc_test(
grpc_cc_test(
name = "load_file_test",
srcs = ["load_file_test.cc"],
external_deps = ["gtest"],
language = "C++",
uses_event_engine = False,
uses_polling = False,
@ -141,10 +135,7 @@ grpc_cc_test(
"--resolver=ares",
],
external_deps = [
"absl/flags:flag",
"absl/flags:parse",
"absl/strings",
"gtest",
],
language = "C++",
tags = ["no_windows"],
@ -162,10 +153,7 @@ grpc_cc_test(
"--resolver=native",
],
external_deps = [
"absl/flags:flag",
"absl/flags:parse",
"absl/strings",
"gtest",
],
language = "C++",
tags = ["no_windows"],
@ -213,7 +201,6 @@ grpc_cc_test(
grpc_cc_test(
name = "socket_utils_test",
srcs = ["socket_utils_test.cc"],
external_deps = ["gtest"],
language = "C++",
tags = ["no_windows"],
deps = [
@ -226,7 +213,6 @@ grpc_cc_test(
grpc_cc_test(
name = "tcp_client_posix_test",
srcs = ["tcp_client_posix_test.cc"],
external_deps = ["gtest"],
language = "C++",
tags = ["no_windows"],
deps = [
@ -239,7 +225,6 @@ grpc_cc_test(
grpc_cc_test(
name = "tcp_posix_test",
srcs = ["tcp_posix_test.cc"],
external_deps = ["gtest"],
language = "C++",
tags = [
"no_mac", # TODO(jtattermusch): Reenable once https://github.com/grpc/grpc/issues/21282 is fixed.
@ -256,7 +241,6 @@ grpc_cc_test(
grpc_cc_test(
name = "buffer_list_test",
srcs = ["buffer_list_test.cc"],
external_deps = ["gtest"],
language = "C++",
deps = [
"//:gpr",
@ -268,7 +252,6 @@ grpc_cc_test(
grpc_cc_test(
name = "tcp_server_posix_test",
srcs = ["tcp_server_posix_test.cc"],
external_deps = ["gtest"],
language = "C++",
tags = ["no_windows"],
deps = [
@ -281,7 +264,6 @@ grpc_cc_test(
grpc_cc_test(
name = "timer_heap_test",
srcs = ["timer_heap_test.cc"],
external_deps = ["gtest"],
language = "C++",
uses_event_engine = False,
uses_polling = False,
@ -295,7 +277,6 @@ grpc_cc_test(
grpc_cc_test(
name = "timer_list_test",
srcs = ["timer_list_test.cc"],
external_deps = ["gtest"],
language = "C++",
uses_event_engine = False,
uses_polling = False,

@ -18,8 +18,6 @@
#include "src/core/lib/iomgr/buffer_list.h"
#include <gtest/gtest.h>
#include <grpc/grpc.h>
#include "src/core/lib/iomgr/port.h"
@ -30,8 +28,8 @@
static void TestShutdownFlushesListVerifier(void* arg,
grpc_core::Timestamps* /*ts*/,
grpc_error_handle error) {
ASSERT_TRUE(GRPC_ERROR_IS_NONE(error));
ASSERT_NE(arg, nullptr);
GPR_ASSERT(GRPC_ERROR_IS_NONE(error));
GPR_ASSERT(arg != nullptr);
gpr_atm* done = reinterpret_cast<gpr_atm*>(arg);
gpr_atm_rel_store(done, static_cast<gpr_atm>(1));
}
@ -40,7 +38,7 @@ static void TestShutdownFlushesListVerifier(void* arg,
* shutdown.
* Also tests that arg is passed correctly.
*/
TEST(BufferListTest, Testshutdownflusheslist) {
static void TestShutdownFlushesList() {
grpc_core::grpc_tcp_set_write_timestamps_callback(
TestShutdownFlushesListVerifier);
grpc_core::TracedBuffer* list = nullptr;
@ -52,28 +50,29 @@ TEST(BufferListTest, Testshutdownflusheslist) {
&list, i, 0, static_cast<void*>(&verifier_called[i]));
}
grpc_core::TracedBuffer::Shutdown(&list, nullptr, GRPC_ERROR_NONE);
ASSERT_EQ(list, nullptr);
GPR_ASSERT(list == nullptr);
for (auto i = 0; i < NUM_ELEM; i++) {
ASSERT_EQ(gpr_atm_acq_load(&verifier_called[i]), static_cast<gpr_atm>(1));
GPR_ASSERT(gpr_atm_acq_load(&verifier_called[i]) ==
static_cast<gpr_atm>(1));
}
}
static void TestVerifierCalledOnAckVerifier(void* arg,
grpc_core::Timestamps* ts,
grpc_error_handle error) {
ASSERT_TRUE(GRPC_ERROR_IS_NONE(error));
ASSERT_NE(arg, nullptr);
ASSERT_EQ(ts->acked_time.time.clock_type, GPR_CLOCK_REALTIME);
ASSERT_EQ(ts->acked_time.time.tv_sec, 123);
ASSERT_EQ(ts->acked_time.time.tv_nsec, 456);
ASSERT_GT(ts->info.length, 0);
GPR_ASSERT(GRPC_ERROR_IS_NONE(error));
GPR_ASSERT(arg != nullptr);
GPR_ASSERT(ts->acked_time.time.clock_type == GPR_CLOCK_REALTIME);
GPR_ASSERT(ts->acked_time.time.tv_sec == 123);
GPR_ASSERT(ts->acked_time.time.tv_nsec == 456);
GPR_ASSERT(ts->info.length > 0);
gpr_atm* done = reinterpret_cast<gpr_atm*>(arg);
gpr_atm_rel_store(done, static_cast<gpr_atm>(1));
}
/** Tests that the timestamp verifier is called on an ACK timestamp.
*/
TEST(BufferListTest, Testverifiercalledonack) {
static void TestVerifierCalledOnAck() {
struct sock_extended_err serr;
serr.ee_data = 213;
serr.ee_info = grpc_core::SCM_TSTAMP_ACK;
@ -87,14 +86,14 @@ TEST(BufferListTest, Testverifiercalledonack) {
gpr_atm_rel_store(&verifier_called, static_cast<gpr_atm>(0));
grpc_core::TracedBuffer::AddNewEntry(&list, 213, 0, &verifier_called);
grpc_core::TracedBuffer::ProcessTimestamp(&list, &serr, nullptr, &tss);
ASSERT_EQ(gpr_atm_acq_load(&verifier_called), static_cast<gpr_atm>(1));
ASSERT_EQ(list, nullptr);
GPR_ASSERT(gpr_atm_acq_load(&verifier_called) == static_cast<gpr_atm>(1));
GPR_ASSERT(list == nullptr);
grpc_core::TracedBuffer::Shutdown(&list, nullptr, GRPC_ERROR_NONE);
}
/** Tests that shutdown can be called repeatedly.
*/
TEST(BufferListTest, Testrepeatedshutdown) {
static void TestRepeatedShutdown() {
struct sock_extended_err serr;
serr.ee_data = 213;
serr.ee_info = grpc_core::SCM_TSTAMP_ACK;
@ -108,18 +107,25 @@ TEST(BufferListTest, Testrepeatedshutdown) {
gpr_atm_rel_store(&verifier_called, static_cast<gpr_atm>(0));
grpc_core::TracedBuffer::AddNewEntry(&list, 213, 0, &verifier_called);
grpc_core::TracedBuffer::ProcessTimestamp(&list, &serr, nullptr, &tss);
ASSERT_EQ(gpr_atm_acq_load(&verifier_called), static_cast<gpr_atm>(1));
ASSERT_EQ(list, nullptr);
GPR_ASSERT(gpr_atm_acq_load(&verifier_called) == static_cast<gpr_atm>(1));
GPR_ASSERT(list == nullptr);
grpc_core::TracedBuffer::Shutdown(&list, nullptr, GRPC_ERROR_NONE);
grpc_core::TracedBuffer::Shutdown(&list, nullptr, GRPC_ERROR_NONE);
grpc_core::TracedBuffer::Shutdown(&list, nullptr, GRPC_ERROR_NONE);
}
static void TestTcpBufferList() {
TestVerifierCalledOnAck();
TestShutdownFlushesList();
TestRepeatedShutdown();
}
int main(int argc, char** argv) {
grpc::testing::TestEnvironment env(&argc, argv);
::testing::InitGoogleTest(&argc, argv);
grpc::testing::TestGrpcScope grpc_scope;
return RUN_ALL_TESTS();
grpc_init();
TestTcpBufferList();
grpc_shutdown();
return 0;
}
#else /* GRPC_LINUX_ERRQUEUE */

@ -18,8 +18,6 @@
#include "src/core/lib/iomgr/combiner.h"
#include <gtest/gtest.h>
#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
@ -28,7 +26,7 @@
#include "src/core/lib/gprpp/thd.h"
#include "test/core/util/test_config.h"
TEST(CombinerTest, TestNoOp) {
static void test_no_op(void) {
gpr_log(GPR_DEBUG, "test_no_op");
grpc_core::ExecCtx exec_ctx;
GRPC_COMBINER_UNREF(grpc_combiner_create(), "test_no_op");
@ -38,7 +36,7 @@ static void set_event_to_true(void* value, grpc_error_handle /*error*/) {
gpr_event_set(static_cast<gpr_event*>(value), reinterpret_cast<void*>(1));
}
TEST(CombinerTest, TestExecuteOne) {
static void test_execute_one(void) {
gpr_log(GPR_DEBUG, "test_execute_one");
grpc_core::Combiner* lock = grpc_combiner_create();
@ -48,8 +46,8 @@ TEST(CombinerTest, TestExecuteOne) {
lock->Run(GRPC_CLOSURE_CREATE(set_event_to_true, &done, nullptr),
GRPC_ERROR_NONE);
grpc_core::ExecCtx::Get()->Flush();
ASSERT_NE(gpr_event_wait(&done, grpc_timeout_seconds_to_deadline(5)),
nullptr);
GPR_ASSERT(gpr_event_wait(&done, grpc_timeout_seconds_to_deadline(5)) !=
nullptr);
GRPC_COMBINER_UNREF(lock, "test_execute_one");
}
@ -66,7 +64,7 @@ typedef struct {
static void check_one(void* a, grpc_error_handle /*error*/) {
ex_args* args = static_cast<ex_args*>(a);
ASSERT_EQ(*args->ctr, args->value - 1);
GPR_ASSERT(*args->ctr == args->value - 1);
*args->ctr = args->value;
gpr_free(a);
}
@ -92,7 +90,7 @@ static void execute_many_loop(void* a) {
GRPC_ERROR_NONE);
}
TEST(CombinerTest, TestExecuteMany) {
static void test_execute_many(void) {
gpr_log(GPR_DEBUG, "test_execute_many");
grpc_core::Combiner* lock = grpc_combiner_create();
@ -106,8 +104,8 @@ TEST(CombinerTest, TestExecuteMany) {
thds[i].Start();
}
for (size_t i = 0; i < GPR_ARRAY_SIZE(thds); i++) {
ASSERT_NE(gpr_event_wait(&ta[i].done, gpr_inf_future(GPR_CLOCK_REALTIME)),
nullptr);
GPR_ASSERT(gpr_event_wait(&ta[i].done,
gpr_inf_future(GPR_CLOCK_REALTIME)) != nullptr);
thds[i].Join();
}
grpc_core::ExecCtx exec_ctx;
@ -125,7 +123,7 @@ static void add_finally(void* arg, grpc_error_handle /*error*/) {
GRPC_CLOSURE_CREATE(in_finally, arg, nullptr), GRPC_ERROR_NONE);
}
TEST(CombinerTest, TestExecuteFinally) {
static void test_execute_finally(void) {
gpr_log(GPR_DEBUG, "test_execute_finally");
grpc_core::Combiner* lock = grpc_combiner_create();
@ -133,15 +131,19 @@ TEST(CombinerTest, TestExecuteFinally) {
gpr_event_init(&got_in_finally);
lock->Run(GRPC_CLOSURE_CREATE(add_finally, lock, nullptr), GRPC_ERROR_NONE);
grpc_core::ExecCtx::Get()->Flush();
ASSERT_NE(
gpr_event_wait(&got_in_finally, grpc_timeout_seconds_to_deadline(5)),
nullptr);
GPR_ASSERT(gpr_event_wait(&got_in_finally,
grpc_timeout_seconds_to_deadline(5)) != nullptr);
GRPC_COMBINER_UNREF(lock, "test_execute_finally");
}
int main(int argc, char** argv) {
grpc::testing::TestEnvironment env(&argc, argv);
::testing::InitGoogleTest(&argc, argv);
grpc::testing::TestGrpcScope grpc_scope;
return RUN_ALL_TESTS();
grpc_init();
test_no_op();
test_execute_one();
test_execute_finally();
test_execute_many();
grpc_shutdown();
return 0;
}

@ -18,8 +18,6 @@
#include "src/core/lib/iomgr/endpoint_pair.h"
#include <gtest/gtest.h>
#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
@ -60,8 +58,9 @@ static void destroy_pollset(void* p, grpc_error_handle /*error*/) {
grpc_pollset_destroy(static_cast<grpc_pollset*>(p));
}
TEST(EndpointPairTest, MainTest) {
int main(int argc, char** argv) {
grpc_closure destroyed;
grpc::testing::TestEnvironment env(&argc, argv);
grpc_init();
{
grpc_core::ExecCtx exec_ctx;
@ -74,10 +73,6 @@ TEST(EndpointPairTest, MainTest) {
}
grpc_shutdown();
gpr_free(g_pollset);
}
int main(int argc, char** argv) {
grpc::testing::TestEnvironment env(&argc, argv);
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
return 0;
}

@ -18,8 +18,6 @@
#include <sys/resource.h>
#include <gtest/gtest.h>
#include <grpc/grpc.h>
#include <grpc/support/log.h>
@ -27,11 +25,12 @@
#include "src/core/lib/iomgr/iomgr.h"
#include "test/core/util/test_config.h"
TEST(FdConservationPosixTest, MainTest) {
int main(int argc, char** argv) {
int i;
struct rlimit rlim;
grpc_endpoint_pair p;
grpc::testing::TestEnvironment env(&argc, argv);
grpc_init();
{
grpc_core::ExecCtx exec_ctx;
@ -40,7 +39,7 @@ TEST(FdConservationPosixTest, MainTest) {
verify we can create and destroy many more than this number
of descriptors */
rlim.rlim_cur = rlim.rlim_max = 10;
ASSERT_EQ(setrlimit(RLIMIT_NOFILE, &rlim), 0);
GPR_ASSERT(0 == setrlimit(RLIMIT_NOFILE, &rlim));
for (i = 0; i < 100; i++) {
p = grpc_iomgr_create_endpoint_pair("test", nullptr);
grpc_endpoint_destroy(p.client);
@ -50,10 +49,5 @@ TEST(FdConservationPosixTest, MainTest) {
}
grpc_shutdown();
}
int main(int argc, char** argv) {
grpc::testing::TestEnvironment env(&argc, argv);
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
return 0;
}

@ -16,10 +16,7 @@
*
*/
#include <gtest/gtest.h>
#include "src/core/lib/iomgr/port.h"
#include "test/core/util/test_config.h"
// This test won't work except with posix sockets enabled
#ifdef GRPC_POSIX_SOCKET_EV
@ -45,6 +42,7 @@
#include "src/core/lib/iomgr/ev_posix.h"
#include "src/core/lib/iomgr/iomgr.h"
#include "src/core/lib/iomgr/socket_utils_posix.h"
#include "test/core/util/test_config.h"
static gpr_mu* g_mu;
static grpc_pollset* g_pollset;
@ -67,18 +65,17 @@ static void create_test_socket(int port, int* socket_fd,
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one));
/* Reset the size of socket send buffer to the minimal value to facilitate
buffer filling up and triggering notify_on_write */
ASSERT_EQ(grpc_set_socket_sndbuf(fd, buffer_size_bytes), GRPC_ERROR_NONE);
ASSERT_EQ(grpc_set_socket_rcvbuf(fd, buffer_size_bytes), GRPC_ERROR_NONE);
GPR_ASSERT(grpc_set_socket_sndbuf(fd, buffer_size_bytes) == GRPC_ERROR_NONE);
GPR_ASSERT(grpc_set_socket_rcvbuf(fd, buffer_size_bytes) == GRPC_ERROR_NONE);
/* Make fd non-blocking */
flags = fcntl(fd, F_GETFL, 0);
ASSERT_EQ(fcntl(fd, F_SETFL, flags | O_NONBLOCK), 0);
GPR_ASSERT(fcntl(fd, F_SETFL, flags | O_NONBLOCK) == 0);
*socket_fd = fd;
/* Use local address for test */
sin->sin_family = AF_INET;
sin->sin_addr.s_addr = htonl(0x7f000001);
ASSERT_GE(port, 0);
ASSERT_LT(port, 65536);
GPR_ASSERT(port >= 0 && port < 65536);
sin->sin_port = htons(static_cast<uint16_t>(port));
}
@ -176,7 +173,7 @@ static void listen_shutdown_cb(void* arg /*server*/, int /*success*/) {
gpr_mu_lock(g_mu);
sv->done = 1;
ASSERT_TRUE(
GPR_ASSERT(
GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(g_pollset, nullptr)));
gpr_mu_unlock(g_mu);
}
@ -199,8 +196,8 @@ static void listen_cb(void* arg, /*=sv_arg*/
fd = accept(grpc_fd_wrapped_fd(listen_em_fd),
reinterpret_cast<struct sockaddr*>(&ss), &slen);
ASSERT_GE(fd, 0);
ASSERT_LT(fd, FD_SETSIZE);
GPR_ASSERT(fd >= 0);
GPR_ASSERT(fd < FD_SETSIZE);
flags = fcntl(fd, F_GETFL, 0);
fcntl(fd, F_SETFL, flags | O_NONBLOCK);
se = static_cast<session*>(gpr_malloc(sizeof(*se)));
@ -229,10 +226,10 @@ static int server_start(server* sv) {
create_test_socket(port, &fd, &sin);
addr_len = sizeof(sin);
EXPECT_EQ(bind(fd, (struct sockaddr*)&sin, addr_len), 0);
EXPECT_EQ(getsockname(fd, (struct sockaddr*)&sin, &addr_len), 0);
GPR_ASSERT(bind(fd, (struct sockaddr*)&sin, addr_len) == 0);
GPR_ASSERT(getsockname(fd, (struct sockaddr*)&sin, &addr_len) == 0);
port = ntohs(sin.sin_port);
EXPECT_EQ(listen(fd, MAX_NUM_FD), 0);
GPR_ASSERT(listen(fd, MAX_NUM_FD) == 0);
sv->em_fd = grpc_fd_create(fd, "server", false);
grpc_pollset_add_fd(g_pollset, sv->em_fd);
@ -250,7 +247,7 @@ static void server_wait_and_shutdown(server* sv) {
while (!sv->done) {
grpc_core::ExecCtx exec_ctx;
grpc_pollset_worker* worker = nullptr;
ASSERT_TRUE(GRPC_LOG_IF_ERROR(
GPR_ASSERT(GRPC_LOG_IF_ERROR(
"pollset_work", grpc_pollset_work(g_pollset, &worker,
grpc_core::Timestamp::InfFuture())));
gpr_mu_unlock(g_mu);
@ -292,7 +289,7 @@ static void client_session_shutdown_cb(void* arg /*client*/, int /*success*/) {
client* cl = static_cast<client*>(arg);
grpc_fd_orphan(cl->em_fd, nullptr, nullptr, "c");
cl->done = 1;
ASSERT_TRUE(
GPR_ASSERT(
GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(g_pollset, nullptr)));
}
@ -366,7 +363,7 @@ static void client_wait_and_shutdown(client* cl) {
while (!cl->done) {
grpc_pollset_worker* worker = nullptr;
grpc_core::ExecCtx exec_ctx;
ASSERT_TRUE(GRPC_LOG_IF_ERROR(
GPR_ASSERT(GRPC_LOG_IF_ERROR(
"pollset_work", grpc_pollset_work(g_pollset, &worker,
grpc_core::Timestamp::InfFuture())));
gpr_mu_unlock(g_mu);
@ -392,7 +389,7 @@ static void test_grpc_fd(void) {
client_wait_and_shutdown(&cl);
server_wait_and_shutdown(&sv);
ASSERT_EQ(sv.read_bytes_total, cl.write_bytes_total);
GPR_ASSERT(sv.read_bytes_total == cl.write_bytes_total);
gpr_log(GPR_INFO, "Total read bytes %" PRIdPTR, sv.read_bytes_total);
}
@ -410,7 +407,7 @@ static void first_read_callback(void* arg /* fd_change_data */,
gpr_mu_lock(g_mu);
fdc->cb_that_ran = first_read_callback;
ASSERT_TRUE(
GPR_ASSERT(
GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(g_pollset, nullptr)));
gpr_mu_unlock(g_mu);
}
@ -421,7 +418,7 @@ static void second_read_callback(void* arg /* fd_change_data */,
gpr_mu_lock(g_mu);
fdc->cb_that_ran = second_read_callback;
ASSERT_TRUE(
GPR_ASSERT(
GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(g_pollset, nullptr)));
gpr_mu_unlock(g_mu);
}
@ -449,11 +446,11 @@ static void test_grpc_fd_change(void) {
init_change_data(&a);
init_change_data(&b);
ASSERT_EQ(socketpair(AF_UNIX, SOCK_STREAM, 0, sv), 0);
GPR_ASSERT(socketpair(AF_UNIX, SOCK_STREAM, 0, sv) == 0);
flags = fcntl(sv[0], F_GETFL, 0);
ASSERT_EQ(fcntl(sv[0], F_SETFL, flags | O_NONBLOCK), 0);
GPR_ASSERT(fcntl(sv[0], F_SETFL, flags | O_NONBLOCK) == 0);
flags = fcntl(sv[1], F_GETFL, 0);
ASSERT_EQ(fcntl(sv[1], F_SETFL, flags | O_NONBLOCK), 0);
GPR_ASSERT(fcntl(sv[1], F_SETFL, flags | O_NONBLOCK) == 0);
em_fd = grpc_fd_create(sv[0], "test_grpc_fd_change", false);
grpc_pollset_add_fd(g_pollset, em_fd);
@ -462,37 +459,37 @@ static void test_grpc_fd_change(void) {
grpc_fd_notify_on_read(em_fd, &first_closure);
data = 0;
result = write(sv[1], &data, 1);
ASSERT_EQ(result, 1);
GPR_ASSERT(result == 1);
/* And now wait for it to run. */
gpr_mu_lock(g_mu);
while (a.cb_that_ran == nullptr) {
grpc_pollset_worker* worker = nullptr;
ASSERT_TRUE(GRPC_LOG_IF_ERROR(
GPR_ASSERT(GRPC_LOG_IF_ERROR(
"pollset_work", grpc_pollset_work(g_pollset, &worker,
grpc_core::Timestamp::InfFuture())));
gpr_mu_unlock(g_mu);
gpr_mu_lock(g_mu);
}
ASSERT_EQ(a.cb_that_ran, first_read_callback);
GPR_ASSERT(a.cb_that_ran == first_read_callback);
gpr_mu_unlock(g_mu);
/* And drain the socket so we can generate a new read edge */
result = read(sv[0], &data, 1);
ASSERT_EQ(result, 1);
GPR_ASSERT(result == 1);
/* Now register a second callback with distinct change data, and do the same
thing again. */
grpc_fd_notify_on_read(em_fd, &second_closure);
data = 0;
result = write(sv[1], &data, 1);
ASSERT_EQ(result, 1);
GPR_ASSERT(result == 1);
gpr_mu_lock(g_mu);
while (b.cb_that_ran == nullptr) {
grpc_pollset_worker* worker = nullptr;
ASSERT_TRUE(GRPC_LOG_IF_ERROR(
GPR_ASSERT(GRPC_LOG_IF_ERROR(
"pollset_work", grpc_pollset_work(g_pollset, &worker,
grpc_core::Timestamp::InfFuture())));
gpr_mu_unlock(g_mu);
@ -500,7 +497,7 @@ static void test_grpc_fd_change(void) {
gpr_mu_lock(g_mu);
}
/* Except now we verify that second_read_callback ran instead */
ASSERT_EQ(b.cb_that_ran, second_read_callback);
GPR_ASSERT(b.cb_that_ran == second_read_callback);
gpr_mu_unlock(g_mu);
grpc_fd_orphan(em_fd, nullptr, nullptr, "d");
@ -514,8 +511,9 @@ static void destroy_pollset(void* p, grpc_error_handle /*error*/) {
grpc_pollset_destroy(static_cast<grpc_pollset*>(p));
}
TEST(FdPosixTest, MainTest) {
int main(int argc, char** argv) {
grpc_closure destroyed;
grpc::testing::TestEnvironment env(&argc, argv);
grpc_init();
{
grpc_core::ExecCtx exec_ctx;
@ -530,12 +528,11 @@ TEST(FdPosixTest, MainTest) {
gpr_free(g_pollset);
}
grpc_shutdown();
return 0;
}
#endif /* GRPC_POSIX_SOCKET_EV */
#else /* GRPC_POSIX_SOCKET_EV */
int main(int argc, char** argv) {
grpc::testing::TestEnvironment env(&argc, argv);
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
int main(int argc, char** argv) { return 1; }
#endif /* GRPC_POSIX_SOCKET_EV */

@ -16,8 +16,6 @@
*
*/
#include <gtest/gtest.h>
#include <grpc/grpc.h>
#include <grpc/support/log.h>
@ -30,15 +28,12 @@
#include "src/core/lib/iomgr/socket_utils_posix.h"
#endif
TEST(GrpcIpv6LoopbackAvailableTest, MainTest) {
// This test assumes that the ipv6 loopback is available
// in all environments in which grpc tests run in.
ASSERT_TRUE(grpc_ipv6_loopback_available());
}
int main(int argc, char** argv) {
grpc::testing::TestEnvironment env(&argc, argv);
::testing::InitGoogleTest(&argc, argv);
grpc::testing::TestGrpcScope grpc_scope;
return RUN_ALL_TESTS();
grpc_init();
// This test assumes that the ipv6 loopback is available
// in all environments in which grpc tests run in.
GPR_ASSERT(grpc_ipv6_loopback_available());
grpc_shutdown();
return 0;
}

@ -21,8 +21,6 @@
#include <stdio.h>
#include <string.h>
#include <gtest/gtest.h>
#include <grpc/grpc.h>
#include <grpc/slice.h>
#include <grpc/support/alloc.h>
@ -36,7 +34,7 @@
static const char prefix[] = "file_test";
TEST(LoadFileTest, TestLoadEmptyFile) {
static void test_load_empty_file(void) {
FILE* tmp = nullptr;
grpc_slice slice;
grpc_slice slice_with_null_term;
@ -46,18 +44,18 @@ TEST(LoadFileTest, TestLoadEmptyFile) {
LOG_TEST_NAME("test_load_empty_file");
tmp = gpr_tmpfile(prefix, &tmp_name);
ASSERT_NE(tmp_name, nullptr);
ASSERT_NE(tmp, nullptr);
GPR_ASSERT(tmp_name != nullptr);
GPR_ASSERT(tmp != nullptr);
fclose(tmp);
error = grpc_load_file(tmp_name, 0, &slice);
ASSERT_TRUE(GRPC_ERROR_IS_NONE(error));
ASSERT_EQ(GRPC_SLICE_LENGTH(slice), 0);
GPR_ASSERT(GRPC_ERROR_IS_NONE(error));
GPR_ASSERT(GRPC_SLICE_LENGTH(slice) == 0);
error = grpc_load_file(tmp_name, 1, &slice_with_null_term);
ASSERT_TRUE(GRPC_ERROR_IS_NONE(error));
ASSERT_EQ(GRPC_SLICE_LENGTH(slice_with_null_term), 1);
ASSERT_EQ(GRPC_SLICE_START_PTR(slice_with_null_term)[0], 0);
GPR_ASSERT(GRPC_ERROR_IS_NONE(error));
GPR_ASSERT(GRPC_SLICE_LENGTH(slice_with_null_term) == 1);
GPR_ASSERT(GRPC_SLICE_START_PTR(slice_with_null_term)[0] == 0);
remove(tmp_name);
gpr_free(tmp_name);
@ -65,7 +63,7 @@ TEST(LoadFileTest, TestLoadEmptyFile) {
grpc_slice_unref(slice_with_null_term);
}
TEST(LoadFileTest, TestLoadFailure) {
static void test_load_failure(void) {
FILE* tmp = nullptr;
grpc_slice slice;
grpc_error_handle error;
@ -74,20 +72,20 @@ TEST(LoadFileTest, TestLoadFailure) {
LOG_TEST_NAME("test_load_failure");
tmp = gpr_tmpfile(prefix, &tmp_name);
ASSERT_NE(tmp_name, nullptr);
ASSERT_NE(tmp, nullptr);
GPR_ASSERT(tmp_name != nullptr);
GPR_ASSERT(tmp != nullptr);
fclose(tmp);
remove(tmp_name);
error = grpc_load_file(tmp_name, 0, &slice);
ASSERT_FALSE(GRPC_ERROR_IS_NONE(error));
GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
GRPC_ERROR_UNREF(error);
ASSERT_EQ(GRPC_SLICE_LENGTH(slice), 0);
GPR_ASSERT(GRPC_SLICE_LENGTH(slice) == 0);
gpr_free(tmp_name);
grpc_slice_unref(slice);
}
TEST(LoadFileTest, TestLoadSmallFile) {
static void test_load_small_file(void) {
FILE* tmp = nullptr;
grpc_slice slice;
grpc_slice slice_with_null_term;
@ -98,20 +96,21 @@ TEST(LoadFileTest, TestLoadSmallFile) {
LOG_TEST_NAME("test_load_small_file");
tmp = gpr_tmpfile(prefix, &tmp_name);
ASSERT_NE(tmp_name, nullptr);
ASSERT_NE(tmp, nullptr);
ASSERT_EQ(fwrite(blah, 1, strlen(blah), tmp), strlen(blah));
GPR_ASSERT(tmp_name != nullptr);
GPR_ASSERT(tmp != nullptr);
GPR_ASSERT(fwrite(blah, 1, strlen(blah), tmp) == strlen(blah));
fclose(tmp);
error = grpc_load_file(tmp_name, 0, &slice);
ASSERT_TRUE(GRPC_ERROR_IS_NONE(error));
ASSERT_EQ(GRPC_SLICE_LENGTH(slice), strlen(blah));
ASSERT_FALSE(memcmp(GRPC_SLICE_START_PTR(slice), blah, strlen(blah)));
GPR_ASSERT(GRPC_ERROR_IS_NONE(error));
GPR_ASSERT(GRPC_SLICE_LENGTH(slice) == strlen(blah));
GPR_ASSERT(!memcmp(GRPC_SLICE_START_PTR(slice), blah, strlen(blah)));
error = grpc_load_file(tmp_name, 1, &slice_with_null_term);
ASSERT_TRUE(GRPC_ERROR_IS_NONE(error));
ASSERT_EQ(GRPC_SLICE_LENGTH(slice_with_null_term), (strlen(blah) + 1));
ASSERT_STREQ((const char*)GRPC_SLICE_START_PTR(slice_with_null_term), blah);
GPR_ASSERT(GRPC_ERROR_IS_NONE(error));
GPR_ASSERT(GRPC_SLICE_LENGTH(slice_with_null_term) == (strlen(blah) + 1));
GPR_ASSERT(strcmp((const char*)GRPC_SLICE_START_PTR(slice_with_null_term),
blah) == 0);
remove(tmp_name);
gpr_free(tmp_name);
@ -119,7 +118,7 @@ TEST(LoadFileTest, TestLoadSmallFile) {
grpc_slice_unref(slice_with_null_term);
}
TEST(LoadFileTest, TestLoadBigFile) {
static void test_load_big_file(void) {
FILE* tmp = nullptr;
grpc_slice slice;
grpc_error_handle error;
@ -134,17 +133,17 @@ TEST(LoadFileTest, TestLoadBigFile) {
memset(buffer, 42, buffer_size);
tmp = gpr_tmpfile(prefix, &tmp_name);
ASSERT_NE(tmp, nullptr);
ASSERT_NE(tmp_name, nullptr);
ASSERT_EQ(fwrite(buffer, 1, buffer_size, tmp), buffer_size);
GPR_ASSERT(tmp != nullptr);
GPR_ASSERT(tmp_name != nullptr);
GPR_ASSERT(fwrite(buffer, 1, buffer_size, tmp) == buffer_size);
fclose(tmp);
error = grpc_load_file(tmp_name, 0, &slice);
ASSERT_TRUE(GRPC_ERROR_IS_NONE(error));
ASSERT_EQ(GRPC_SLICE_LENGTH(slice), buffer_size);
GPR_ASSERT(GRPC_ERROR_IS_NONE(error));
GPR_ASSERT(GRPC_SLICE_LENGTH(slice) == buffer_size);
current = GRPC_SLICE_START_PTR(slice);
for (i = 0; i < buffer_size; i++) {
ASSERT_EQ(current[i], 42);
GPR_ASSERT(current[i] == 42);
}
remove(tmp_name);
@ -155,7 +154,11 @@ TEST(LoadFileTest, TestLoadBigFile) {
int main(int argc, char** argv) {
grpc::testing::TestEnvironment env(&argc, argv);
::testing::InitGoogleTest(&argc, argv);
grpc::testing::TestGrpcScope grpc_scope;
return RUN_ALL_TESTS();
grpc_init();
test_load_empty_file();
test_load_failure();
test_load_small_file();
test_load_big_file();
grpc_shutdown();
return 0;
}

@ -22,10 +22,6 @@
#include <string>
#include <gtest/gtest.h>
#include "absl/flags/flag.h"
#include "absl/flags/parse.h"
#include "absl/strings/str_format.h"
#include <grpc/grpc.h>
@ -71,7 +67,7 @@ void args_init(args_struct* args) {
}
void args_finish(args_struct* args) {
ASSERT_TRUE(gpr_event_wait(&args->ev, test_deadline()));
GPR_ASSERT(gpr_event_wait(&args->ev, test_deadline()));
args->thd.Join();
// Don't need to explicitly destruct args->thd since
// args is actually going to be destructed, not just freed
@ -106,7 +102,7 @@ static void actually_poll(void* argsp) {
deadline - grpc_core::ExecCtx::Get()->Now();
gpr_log(GPR_DEBUG, "done=%d, time_left=%" PRId64, args->done,
time_left.millis());
ASSERT_GE(time_left, grpc_core::Duration::Zero());
GPR_ASSERT(time_left >= grpc_core::Duration::Zero());
grpc_pollset_worker* worker = nullptr;
GRPC_LOG_IF_ERROR(
"pollset_work",
@ -125,8 +121,8 @@ namespace {
void MustSucceed(args_struct* args,
absl::StatusOr<std::vector<grpc_resolved_address>> result) {
ASSERT_TRUE(result.ok());
ASSERT_FALSE(result->empty());
GPR_ASSERT(result.ok());
GPR_ASSERT(!result->empty());
grpc_core::MutexLockForGprMu lock(args->mu);
args->done = true;
GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(args->pollset, nullptr));
@ -165,7 +161,7 @@ static void test_named_and_numeric_scope_ids(void) {
break;
}
}
ASSERT_GT(strlen(arbitrary_interface_name), 0);
GPR_ASSERT(strlen(arbitrary_interface_name) > 0);
// Test resolution of an ipv6 address with a named scope ID
gpr_log(GPR_DEBUG, "test resolution with a named scope ID");
std::string target_with_named_scope_id =
@ -179,30 +175,34 @@ static void test_named_and_numeric_scope_ids(void) {
resolve_address_must_succeed(target_with_numeric_scope_id.c_str());
}
ABSL_FLAG(std::string, resolver, "", "Resolver type (ares or native)");
TEST(ResolveAddressUsingAresResolverPosixTest, MainTest) {
int main(int argc, char** argv) {
// First set the resolver type based off of --resolver
std::string resolver_type = absl::GetFlag(FLAGS_resolver);
const char* resolver_type = nullptr;
gpr_cmdline* cl = gpr_cmdline_create("resolve address test");
gpr_cmdline_add_string(cl, "resolver", "Resolver type (ares or native)",
&resolver_type);
// In case that there are more than one argument on the command line,
// --resolver will always be the first one, so only parse the first argument
// (other arguments may be unknown to cl)
gpr_cmdline_parse(cl, argc > 2 ? 2 : argc, argv);
grpc_core::UniquePtr<char> resolver =
GPR_GLOBAL_CONFIG_GET(grpc_dns_resolver);
if (strlen(resolver.get()) != 0) {
gpr_log(GPR_INFO, "Warning: overriding resolver setting of %s",
resolver.get());
}
if (resolver_type == "native") {
if (resolver_type != nullptr && gpr_stricmp(resolver_type, "native") == 0) {
GPR_GLOBAL_CONFIG_SET(grpc_dns_resolver, "native");
} else if (resolver_type == "ares") {
} else if (resolver_type != nullptr &&
gpr_stricmp(resolver_type, "ares") == 0) {
GPR_GLOBAL_CONFIG_SET(grpc_dns_resolver, "ares");
} else {
gpr_log(GPR_ERROR, "--resolver was not set to ares or native");
ASSERT_TRUE(false);
gpr_log(GPR_ERROR, "--resolver_type was not set to ares or native");
abort();
}
grpc::testing::TestEnvironment env(&argc, argv);
grpc_init();
{
grpc_core::ExecCtx exec_ctx;
test_named_and_numeric_scope_ids();
@ -212,12 +212,8 @@ TEST(ResolveAddressUsingAresResolverPosixTest, MainTest) {
grpc_core::UniquePtr<char> resolver =
GPR_GLOBAL_CONFIG_GET(grpc_dns_resolver);
}
grpc_shutdown();
}
gpr_cmdline_destroy(cl);
int main(int argc, char** argv) {
grpc::testing::TestEnvironment env(&argc, argv);
::testing::InitGoogleTest(&argc, argv);
absl::ParseCommandLine(argc, argv);
return RUN_ALL_TESTS();
grpc_shutdown();
return 0;
}

@ -26,8 +26,6 @@
#include <netinet/ip.h>
#include <string.h>
#include <gtest/gtest.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/sync.h>
@ -104,25 +102,25 @@ static const grpc_socket_mutator_vtable mutator_vtable2 = {
static void test_with_vtable(const grpc_socket_mutator_vtable* vtable) {
int sock = socket(PF_INET, SOCK_STREAM, 0);
ASSERT_GT(sock, 0);
GPR_ASSERT(sock > 0);
struct test_socket_mutator mutator;
grpc_socket_mutator_init(&mutator.base, vtable);
mutator.option_value = IPTOS_LOWDELAY;
ASSERT_TRUE(GRPC_LOG_IF_ERROR(
GPR_ASSERT(GRPC_LOG_IF_ERROR(
"set_socket_with_mutator",
grpc_set_socket_with_mutator(sock, GRPC_FD_CLIENT_CONNECTION_USAGE,
(grpc_socket_mutator*)&mutator)));
mutator.option_value = IPTOS_THROUGHPUT;
ASSERT_TRUE(GRPC_LOG_IF_ERROR(
GPR_ASSERT(GRPC_LOG_IF_ERROR(
"set_socket_with_mutator",
grpc_set_socket_with_mutator(sock, GRPC_FD_CLIENT_CONNECTION_USAGE,
(grpc_socket_mutator*)&mutator)));
mutator.option_value = IPTOS_RELIABILITY;
ASSERT_TRUE(GRPC_LOG_IF_ERROR(
GPR_ASSERT(GRPC_LOG_IF_ERROR(
"set_socket_with_mutator",
grpc_set_socket_with_mutator(sock, GRPC_FD_CLIENT_CONNECTION_USAGE,
(grpc_socket_mutator*)&mutator)));
@ -131,43 +129,40 @@ static void test_with_vtable(const grpc_socket_mutator_vtable* vtable) {
auto err = grpc_set_socket_with_mutator(
sock, GRPC_FD_CLIENT_CONNECTION_USAGE,
reinterpret_cast<grpc_socket_mutator*>(&mutator));
ASSERT_FALSE(GRPC_ERROR_IS_NONE(err));
GPR_ASSERT(!GRPC_ERROR_IS_NONE(err));
GRPC_ERROR_UNREF(err);
}
TEST(SocketUtilsTest, MainTest) {
int main(int argc, char** argv) {
int sock;
grpc::testing::TestEnvironment env(&argc, argv);
sock = socket(PF_INET, SOCK_STREAM, 0);
ASSERT_GT(sock, 0);
ASSERT_TRUE(GRPC_LOG_IF_ERROR("set_socket_nonblocking",
grpc_set_socket_nonblocking(sock, 1)));
ASSERT_TRUE(GRPC_LOG_IF_ERROR("set_socket_nonblocking",
grpc_set_socket_nonblocking(sock, 0)));
ASSERT_TRUE(GRPC_LOG_IF_ERROR("set_socket_cloexec",
grpc_set_socket_cloexec(sock, 1)));
ASSERT_TRUE(GRPC_LOG_IF_ERROR("set_socket_cloexec",
grpc_set_socket_cloexec(sock, 0)));
ASSERT_TRUE(GRPC_LOG_IF_ERROR("set_socket_reuse_addr",
grpc_set_socket_reuse_addr(sock, 1)));
ASSERT_TRUE(GRPC_LOG_IF_ERROR("set_socket_reuse_addr",
grpc_set_socket_reuse_addr(sock, 0)));
ASSERT_TRUE(GRPC_LOG_IF_ERROR("set_socket_low_latency",
grpc_set_socket_low_latency(sock, 1)));
ASSERT_TRUE(GRPC_LOG_IF_ERROR("set_socket_low_latency",
grpc_set_socket_low_latency(sock, 0)));
GPR_ASSERT(sock > 0);
GPR_ASSERT(GRPC_LOG_IF_ERROR("set_socket_nonblocking",
grpc_set_socket_nonblocking(sock, 1)));
GPR_ASSERT(GRPC_LOG_IF_ERROR("set_socket_nonblocking",
grpc_set_socket_nonblocking(sock, 0)));
GPR_ASSERT(GRPC_LOG_IF_ERROR("set_socket_cloexec",
grpc_set_socket_cloexec(sock, 1)));
GPR_ASSERT(GRPC_LOG_IF_ERROR("set_socket_cloexec",
grpc_set_socket_cloexec(sock, 0)));
GPR_ASSERT(GRPC_LOG_IF_ERROR("set_socket_reuse_addr",
grpc_set_socket_reuse_addr(sock, 1)));
GPR_ASSERT(GRPC_LOG_IF_ERROR("set_socket_reuse_addr",
grpc_set_socket_reuse_addr(sock, 0)));
GPR_ASSERT(GRPC_LOG_IF_ERROR("set_socket_low_latency",
grpc_set_socket_low_latency(sock, 1)));
GPR_ASSERT(GRPC_LOG_IF_ERROR("set_socket_low_latency",
grpc_set_socket_low_latency(sock, 0)));
test_with_vtable(&mutator_vtable);
test_with_vtable(&mutator_vtable2);
close(sock);
}
int main(int argc, char** argv) {
grpc::testing::TestEnvironment env(&argc, argv);
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
return 0;
}
#else /* GRPC_POSIX_SOCKET_UTILS_COMMON */

@ -16,12 +16,9 @@
*
*/
#include <gtest/gtest.h>
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/iomgr/port.h"
#include "test/core/util/test_config.h"
// This test won't work except with posix sockets enabled
#ifdef GRPC_POSIX_SOCKET_TCP_CLIENT
@ -43,6 +40,7 @@
#include "src/core/lib/iomgr/tcp_client.h"
#include "src/core/lib/iomgr/timer.h"
#include "src/core/lib/resource_quota/api.h"
#include "test/core/util/test_config.h"
static grpc_pollset_set* g_pollset_set;
static gpr_mu* g_mu;
@ -59,15 +57,15 @@ static void finish_connection() {
gpr_mu_lock(g_mu);
g_connections_complete++;
grpc_core::ExecCtx exec_ctx;
ASSERT_TRUE(
GPR_ASSERT(
GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(g_pollset, nullptr)));
gpr_mu_unlock(g_mu);
}
static void must_succeed(void* /*arg*/, grpc_error_handle error) {
ASSERT_NE(g_connecting, nullptr);
ASSERT_TRUE(GRPC_ERROR_IS_NONE(error));
GPR_ASSERT(g_connecting != nullptr);
GPR_ASSERT(GRPC_ERROR_IS_NONE(error));
grpc_endpoint_shutdown(g_connecting, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"must_succeed called"));
grpc_endpoint_destroy(g_connecting);
@ -76,8 +74,8 @@ static void must_succeed(void* /*arg*/, grpc_error_handle error) {
}
static void must_fail(void* /*arg*/, grpc_error_handle error) {
ASSERT_EQ(g_connecting, nullptr);
ASSERT_FALSE(GRPC_ERROR_IS_NONE(error));
GPR_ASSERT(g_connecting == nullptr);
GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
finish_connection();
}
@ -98,19 +96,18 @@ void test_succeeds(void) {
/* create a phony server */
svr_fd = socket(AF_INET, SOCK_STREAM, 0);
ASSERT_GE(svr_fd, 0);
ASSERT_EQ(bind(svr_fd, (struct sockaddr*)addr, (socklen_t)resolved_addr.len),
0);
ASSERT_EQ(listen(svr_fd, 1), 0);
GPR_ASSERT(svr_fd >= 0);
GPR_ASSERT(
0 == bind(svr_fd, (struct sockaddr*)addr, (socklen_t)resolved_addr.len));
GPR_ASSERT(0 == listen(svr_fd, 1));
gpr_mu_lock(g_mu);
connections_complete_before = g_connections_complete;
gpr_mu_unlock(g_mu);
/* connect to it */
ASSERT_EQ(getsockname(svr_fd, (struct sockaddr*)addr,
(socklen_t*)&resolved_addr.len),
0);
GPR_ASSERT(getsockname(svr_fd, (struct sockaddr*)addr,
(socklen_t*)&resolved_addr.len) == 0);
GRPC_CLOSURE_INIT(&done, must_succeed, nullptr, grpc_schedule_on_exec_ctx);
grpc_core::ChannelArgs args = grpc_core::CoreConfiguration::Get()
.channel_args_preconditioning()
@ -124,14 +121,14 @@ void test_succeeds(void) {
r = accept(svr_fd, reinterpret_cast<struct sockaddr*>(addr),
reinterpret_cast<socklen_t*>(&resolved_addr.len));
} while (r == -1 && errno == EINTR);
ASSERT_GE(r, 0);
GPR_ASSERT(r >= 0);
close(r);
gpr_mu_lock(g_mu);
while (g_connections_complete == connections_complete_before) {
grpc_pollset_worker* worker = nullptr;
ASSERT_TRUE(GRPC_LOG_IF_ERROR(
GPR_ASSERT(GRPC_LOG_IF_ERROR(
"pollset_work",
grpc_pollset_work(g_pollset, &worker,
grpc_core::Timestamp::FromTimespecRoundUp(
@ -144,7 +141,7 @@ void test_succeeds(void) {
gpr_mu_unlock(g_mu);
// A cancellation attempt should fail because connect already succeeded.
ASSERT_EQ(grpc_tcp_client_cancel_connect(connection_handle), false);
GPR_ASSERT(grpc_tcp_client_cancel_connect(connection_handle) == false);
gpr_log(GPR_ERROR, "---- finished test_succeeds() ----");
}
@ -184,7 +181,7 @@ void test_fails(void) {
polling_deadline = grpc_core::Timestamp::ProcessEpoch();
ABSL_FALLTHROUGH_INTENDED;
case GRPC_TIMERS_CHECKED_AND_EMPTY:
ASSERT_TRUE(GRPC_LOG_IF_ERROR(
GPR_ASSERT(GRPC_LOG_IF_ERROR(
"pollset_work",
grpc_pollset_work(g_pollset, &worker, polling_deadline)));
break;
@ -197,7 +194,7 @@ void test_fails(void) {
gpr_mu_unlock(g_mu);
// A cancellation attempt should fail because connect already failed.
ASSERT_EQ(grpc_tcp_client_cancel_connect(connection_handle), false);
GPR_ASSERT(grpc_tcp_client_cancel_connect(connection_handle) == false);
gpr_log(GPR_ERROR, "---- finished test_fails() ----");
}
@ -217,16 +214,15 @@ void test_connect_cancellation_succeeds(void) {
/* create a phony server */
svr_fd = socket(AF_INET, SOCK_STREAM, 0);
ASSERT_GE(svr_fd, 0);
ASSERT_EQ(bind(svr_fd, (struct sockaddr*)addr, (socklen_t)resolved_addr.len),
0);
ASSERT_EQ(listen(svr_fd, 1), 0);
GPR_ASSERT(svr_fd >= 0);
GPR_ASSERT(
0 == bind(svr_fd, (struct sockaddr*)addr, (socklen_t)resolved_addr.len));
GPR_ASSERT(0 == listen(svr_fd, 1));
// connect to it. accept() is not called on the bind socket. So the connection
// should appear to be stuck giving ample time to try to cancel it.
ASSERT_EQ(getsockname(svr_fd, (struct sockaddr*)addr,
(socklen_t*)&resolved_addr.len),
0);
GPR_ASSERT(getsockname(svr_fd, (struct sockaddr*)addr,
(socklen_t*)&resolved_addr.len) == 0);
GRPC_CLOSURE_INIT(&done, must_succeed, nullptr, grpc_schedule_on_exec_ctx);
grpc_core::ChannelArgs args = grpc_core::CoreConfiguration::Get()
.channel_args_preconditioning()
@ -234,8 +230,8 @@ void test_connect_cancellation_succeeds(void) {
int64_t connection_handle = grpc_tcp_client_connect(
&done, &g_connecting, g_pollset_set, args.ToC().get(), &resolved_addr,
grpc_core::Timestamp::InfFuture());
ASSERT_GT(connection_handle, 0);
ASSERT_EQ(grpc_tcp_client_cancel_connect(connection_handle), true);
GPR_ASSERT(connection_handle > 0);
GPR_ASSERT(grpc_tcp_client_cancel_connect(connection_handle) == true);
close(svr_fd);
gpr_log(GPR_ERROR, "---- finished test_connect_cancellation_succeeds() ----");
}
@ -270,7 +266,7 @@ void test_fails_bad_addr_no_leak(void) {
polling_deadline = grpc_core::Timestamp::ProcessEpoch();
ABSL_FALLTHROUGH_INTENDED;
case GRPC_TIMERS_CHECKED_AND_EMPTY:
ASSERT_TRUE(GRPC_LOG_IF_ERROR(
GPR_ASSERT(GRPC_LOG_IF_ERROR(
"pollset_work",
grpc_pollset_work(g_pollset, &worker, polling_deadline)));
break;
@ -287,8 +283,9 @@ static void destroy_pollset(void* p, grpc_error_handle /*error*/) {
grpc_pollset_destroy(static_cast<grpc_pollset*>(p));
}
TEST(TcpClientPosixTest, MainTest) {
int main(int argc, char** argv) {
grpc_closure destroyed;
grpc::testing::TestEnvironment env(&argc, argv);
grpc_init();
{
@ -310,12 +307,11 @@ TEST(TcpClientPosixTest, MainTest) {
grpc_shutdown();
gpr_free(g_pollset);
return 0;
}
#endif /* GRPC_POSIX_SOCKET_CLIENT */
#else /* GRPC_POSIX_SOCKET_TCP_CLIENT */
int main(int argc, char** argv) {
grpc::testing::TestEnvironment env(&argc, argv);
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
int main(int argc, char** argv) { return 1; }
#endif /* GRPC_POSIX_SOCKET_CLIENT */

@ -16,11 +16,8 @@
*
*/
#include <gtest/gtest.h>
#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/iomgr/port.h"
#include "test/core/util/test_config.h"
// This test won't work except with posix sockets enabled
#ifdef GRPC_POSIX_SOCKET_TCP
@ -45,6 +42,7 @@
#include "src/core/lib/iomgr/tcp_posix.h"
#include "src/core/lib/slice/slice_internal.h"
#include "test/core/iomgr/endpoint_tests.h"
#include "test/core/util/test_config.h"
static gpr_mu* g_mu;
static grpc_pollset* g_pollset;
@ -69,11 +67,11 @@ GPR_GLOBAL_CONFIG_DECLARE_BOOL(grpc_experimental_enable_tcp_frame_size_tuning);
static void create_sockets(int sv[2]) {
int flags;
ASSERT_EQ(socketpair(AF_UNIX, SOCK_STREAM, 0, sv), 0);
GPR_ASSERT(socketpair(AF_UNIX, SOCK_STREAM, 0, sv) == 0);
flags = fcntl(sv[0], F_GETFL, 0);
ASSERT_EQ(fcntl(sv[0], F_SETFL, flags | O_NONBLOCK), 0);
GPR_ASSERT(fcntl(sv[0], F_SETFL, flags | O_NONBLOCK) == 0);
flags = fcntl(sv[1], F_GETFL, 0);
ASSERT_EQ(fcntl(sv[1], F_SETFL, flags | O_NONBLOCK), 0);
GPR_ASSERT(fcntl(sv[1], F_SETFL, flags | O_NONBLOCK) == 0);
}
static void create_inet_sockets(int sv[2]) {
@ -82,16 +80,16 @@ static void create_inet_sockets(int sv[2]) {
memset(&addr, 0, sizeof(struct sockaddr_in));
addr.sin_family = AF_INET;
int sock = socket(AF_INET, SOCK_STREAM, 0);
ASSERT_TRUE(sock);
ASSERT_EQ(bind(sock, (sockaddr*)&addr, sizeof(sockaddr_in)), 0);
GPR_ASSERT(sock);
GPR_ASSERT(bind(sock, (sockaddr*)&addr, sizeof(sockaddr_in)) == 0);
listen(sock, 1);
/* Prepare client socket and connect to server */
socklen_t len = sizeof(sockaddr_in);
ASSERT_EQ(getsockname(sock, (sockaddr*)&addr, &len), 0);
GPR_ASSERT(getsockname(sock, (sockaddr*)&addr, &len) == 0);
int client = socket(AF_INET, SOCK_STREAM, 0);
ASSERT_TRUE(client);
GPR_ASSERT(client);
int ret;
do {
ret = connect(client, reinterpret_cast<sockaddr*>(&addr),
@ -104,14 +102,14 @@ static void create_inet_sockets(int sv[2]) {
do {
server = accept(sock, reinterpret_cast<sockaddr*>(&addr), &len);
} while (server == -1 && errno == EINTR);
ASSERT_NE(server, -1);
GPR_ASSERT(server != -1);
sv[0] = server;
sv[1] = client;
int flags = fcntl(sv[0], F_GETFL, 0);
ASSERT_EQ(fcntl(sv[0], F_SETFL, flags | O_NONBLOCK), 0);
GPR_ASSERT(fcntl(sv[0], F_SETFL, flags | O_NONBLOCK) == 0);
flags = fcntl(sv[1], F_GETFL, 0);
ASSERT_EQ(fcntl(sv[1], F_SETFL, flags | O_NONBLOCK), 0);
GPR_ASSERT(fcntl(sv[1], F_SETFL, flags | O_NONBLOCK) == 0);
}
static ssize_t fill_socket(int fd) {
@ -128,7 +126,7 @@ static ssize_t fill_socket(int fd) {
total_bytes += write_bytes;
}
} while (write_bytes >= 0 || errno == EINTR);
EXPECT_EQ(errno, EAGAIN);
GPR_ASSERT(errno == EAGAIN);
return total_bytes;
}
@ -170,7 +168,7 @@ static size_t count_slices(grpc_slice* slices, size_t nslices,
for (i = 0; i < nslices; ++i) {
buf = GRPC_SLICE_START_PTR(slices[i]);
for (j = 0; j < GRPC_SLICE_LENGTH(slices[i]); ++j) {
EXPECT_EQ(buf[j], *current_data);
GPR_ASSERT(buf[j] == *current_data);
*current_data = (*current_data + 1) % 256;
}
num_bytes += GRPC_SLICE_LENGTH(slices[i]);
@ -184,20 +182,20 @@ static void read_cb(void* user_data, grpc_error_handle error) {
size_t read_bytes;
int current_data;
ASSERT_TRUE(GRPC_ERROR_IS_NONE(error));
GPR_ASSERT(GRPC_ERROR_IS_NONE(error));
gpr_mu_lock(g_mu);
current_data = state->read_bytes % 256;
// The number of bytes read each time this callback is invoked must be >=
// the min_progress_size.
ASSERT_LE(state->min_progress_size, state->incoming.length);
GPR_ASSERT(state->min_progress_size <= state->incoming.length);
read_bytes = count_slices(state->incoming.slices, state->incoming.count,
&current_data);
state->read_bytes += read_bytes;
gpr_log(GPR_INFO, "Read %" PRIuPTR " bytes of %" PRIuPTR, read_bytes,
state->target_read_bytes);
if (state->read_bytes >= state->target_read_bytes) {
ASSERT_TRUE(
GPR_ASSERT(
GRPC_LOG_IF_ERROR("kick", grpc_pollset_kick(g_pollset, nullptr)));
gpr_mu_unlock(g_mu);
} else {
@ -254,13 +252,13 @@ static void read_test(size_t num_bytes, size_t slice_size,
gpr_mu_lock(g_mu);
while (state.read_bytes < state.target_read_bytes) {
grpc_pollset_worker* worker = nullptr;
ASSERT_TRUE(GRPC_LOG_IF_ERROR(
GPR_ASSERT(GRPC_LOG_IF_ERROR(
"pollset_work", grpc_pollset_work(g_pollset, &worker, deadline)));
gpr_mu_unlock(g_mu);
gpr_mu_lock(g_mu);
}
ASSERT_EQ(state.read_bytes, state.target_read_bytes);
GPR_ASSERT(state.read_bytes == state.target_read_bytes);
gpr_mu_unlock(g_mu);
grpc_slice_buffer_destroy_internal(&state.incoming);
@ -314,13 +312,13 @@ static void large_read_test(size_t slice_size, int min_progress_size) {
gpr_mu_lock(g_mu);
while (state.read_bytes < state.target_read_bytes) {
grpc_pollset_worker* worker = nullptr;
ASSERT_TRUE(GRPC_LOG_IF_ERROR(
GPR_ASSERT(GRPC_LOG_IF_ERROR(
"pollset_work", grpc_pollset_work(g_pollset, &worker, deadline)));
gpr_mu_unlock(g_mu);
gpr_mu_lock(g_mu);
}
ASSERT_EQ(state.read_bytes, state.target_read_bytes);
GPR_ASSERT(state.read_bytes == state.target_read_bytes);
gpr_mu_unlock(g_mu);
grpc_slice_buffer_destroy_internal(&state.incoming);
@ -354,18 +352,18 @@ static grpc_slice* allocate_blocks(size_t num_bytes, size_t slice_size,
(*current_data)++;
}
}
EXPECT_EQ(num_bytes_left, 0);
GPR_ASSERT(num_bytes_left == 0);
return slices;
}
static void write_done(void* user_data /* write_socket_state */,
grpc_error_handle error) {
ASSERT_TRUE(GRPC_ERROR_IS_NONE(error));
GPR_ASSERT(GRPC_ERROR_IS_NONE(error));
struct write_socket_state* state =
static_cast<struct write_socket_state*>(user_data);
gpr_mu_lock(g_mu);
state->write_done = 1;
ASSERT_TRUE(
GPR_ASSERT(
GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(g_pollset, nullptr)));
gpr_mu_unlock(g_mu);
}
@ -380,12 +378,12 @@ void drain_socket_blocking(int fd, size_t num_bytes, size_t read_size) {
grpc_core::ExecCtx exec_ctx;
flags = fcntl(fd, F_GETFL, 0);
ASSERT_EQ(fcntl(fd, F_SETFL, flags & ~O_NONBLOCK), 0);
GPR_ASSERT(fcntl(fd, F_SETFL, flags & ~O_NONBLOCK) == 0);
for (;;) {
grpc_pollset_worker* worker = nullptr;
gpr_mu_lock(g_mu);
ASSERT_TRUE(GRPC_LOG_IF_ERROR(
GPR_ASSERT(GRPC_LOG_IF_ERROR(
"pollset_work",
grpc_pollset_work(g_pollset, &worker,
grpc_core::Timestamp::FromTimespecRoundUp(
@ -396,16 +394,16 @@ void drain_socket_blocking(int fd, size_t num_bytes, size_t read_size) {
bytes_read =
read(fd, buf, bytes_left > read_size ? read_size : bytes_left);
} while (bytes_read < 0 && errno == EINTR);
ASSERT_GE(bytes_read, 0);
GPR_ASSERT(bytes_read >= 0);
for (i = 0; i < bytes_read; ++i) {
ASSERT_EQ(buf[i], current);
GPR_ASSERT(buf[i] == current);
current = (current + 1) % 256;
}
bytes_left -= static_cast<size_t>(bytes_read);
if (bytes_left == 0) break;
}
flags = fcntl(fd, F_GETFL, 0);
ASSERT_EQ(fcntl(fd, F_SETFL, flags | O_NONBLOCK), 0);
GPR_ASSERT(fcntl(fd, F_SETFL, flags | O_NONBLOCK) == 0);
gpr_free(buf);
}
@ -413,11 +411,11 @@ void drain_socket_blocking(int fd, size_t num_bytes, size_t read_size) {
/* Verifier for timestamps callback for write_test */
void timestamps_verifier(void* arg, grpc_core::Timestamps* ts,
grpc_error_handle error) {
ASSERT_TRUE(GRPC_ERROR_IS_NONE(error));
ASSERT_NE(arg, nullptr);
ASSERT_EQ(ts->sendmsg_time.time.clock_type, GPR_CLOCK_REALTIME);
ASSERT_EQ(ts->scheduled_time.time.clock_type, GPR_CLOCK_REALTIME);
ASSERT_EQ(ts->acked_time.time.clock_type, GPR_CLOCK_REALTIME);
GPR_ASSERT(GRPC_ERROR_IS_NONE(error));
GPR_ASSERT(arg != nullptr);
GPR_ASSERT(ts->sendmsg_time.time.clock_type == GPR_CLOCK_REALTIME);
GPR_ASSERT(ts->scheduled_time.time.clock_type == GPR_CLOCK_REALTIME);
GPR_ASSERT(ts->acked_time.time.clock_type == GPR_CLOCK_REALTIME);
gpr_atm* done_timestamps = static_cast<gpr_atm*>(arg);
gpr_atm_rel_store(done_timestamps, static_cast<gpr_atm>(1));
}
@ -494,7 +492,7 @@ static void write_test(size_t num_bytes, size_t slice_size,
gpr_atm_acq_load(&done_timestamps) == static_cast<gpr_atm>(1))) {
break;
}
ASSERT_TRUE(GRPC_LOG_IF_ERROR(
GPR_ASSERT(GRPC_LOG_IF_ERROR(
"pollset_work", grpc_pollset_work(g_pollset, &worker, deadline)));
gpr_mu_unlock(g_mu);
exec_ctx.Flush();
@ -512,7 +510,7 @@ static void write_test(size_t num_bytes, size_t slice_size,
void on_fd_released(void* arg, grpc_error_handle /*errors*/) {
int* done = static_cast<int*>(arg);
*done = 1;
ASSERT_TRUE(
GPR_ASSERT(
GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(g_pollset, nullptr)));
}
@ -549,8 +547,7 @@ static void release_fd_test(size_t num_bytes, size_t slice_size) {
grpc_channel_args args = {GPR_ARRAY_SIZE(a), a};
ep =
grpc_tcp_create(grpc_fd_create(sv[1], "read_test", false), &args, "test");
ASSERT_EQ(grpc_tcp_fd(ep), sv[1]);
ASSERT_GE(sv[1], 0);
GPR_ASSERT(grpc_tcp_fd(ep) == sv[1] && sv[1] >= 0);
grpc_endpoint_add_to_pollset(ep, g_pollset);
written_bytes = fill_socket_partial(sv[0], num_bytes);
@ -569,7 +566,7 @@ static void release_fd_test(size_t num_bytes, size_t slice_size) {
gpr_mu_lock(g_mu);
while (state.read_bytes < state.target_read_bytes) {
grpc_pollset_worker* worker = nullptr;
ASSERT_TRUE(GRPC_LOG_IF_ERROR(
GPR_ASSERT(GRPC_LOG_IF_ERROR(
"pollset_work", grpc_pollset_work(g_pollset, &worker, deadline)));
gpr_log(GPR_DEBUG, "wakeup: read=%" PRIdPTR " target=%" PRIdPTR,
state.read_bytes, state.target_read_bytes);
@ -577,7 +574,7 @@ static void release_fd_test(size_t num_bytes, size_t slice_size) {
grpc_core::ExecCtx::Get()->Flush();
gpr_mu_lock(g_mu);
}
ASSERT_EQ(state.read_bytes, state.target_read_bytes);
GPR_ASSERT(state.read_bytes == state.target_read_bytes);
gpr_mu_unlock(g_mu);
grpc_slice_buffer_destroy_internal(&state.incoming);
@ -586,13 +583,13 @@ static void release_fd_test(size_t num_bytes, size_t slice_size) {
gpr_mu_lock(g_mu);
while (!fd_released_done) {
grpc_pollset_worker* worker = nullptr;
ASSERT_TRUE(GRPC_LOG_IF_ERROR(
GPR_ASSERT(GRPC_LOG_IF_ERROR(
"pollset_work", grpc_pollset_work(g_pollset, &worker, deadline)));
gpr_log(GPR_DEBUG, "wakeup: fd_released_done=%d", fd_released_done);
}
gpr_mu_unlock(g_mu);
ASSERT_EQ(fd_released_done, 1);
ASSERT_EQ(fd, sv[1]);
GPR_ASSERT(fd_released_done == 1);
GPR_ASSERT(fd == sv[1]);
written_bytes = fill_socket_partial(sv[0], num_bytes);
drain_socket_blocking(fd, written_bytes, written_bytes);
@ -671,8 +668,9 @@ static void destroy_pollset(void* p, grpc_error_handle /*error*/) {
grpc_pollset_destroy(static_cast<grpc_pollset*>(p));
}
TEST(TcpPosixTest, MainTest) {
int main(int argc, char** argv) {
grpc_closure destroyed;
grpc::testing::TestEnvironment env(&argc, argv);
GPR_GLOBAL_CONFIG_SET(grpc_experimental_enable_tcp_frame_size_tuning, true);
grpc_init();
grpc_core::grpc_tcp_set_write_timestamps_callback(timestamps_verifier);
@ -690,12 +688,12 @@ TEST(TcpPosixTest, MainTest) {
}
grpc_shutdown();
gpr_free(g_pollset);
return 0;
}
#endif /* GRPC_POSIX_SOCKET_TCP */
#else /* GRPC_POSIX_SOCKET_TCP */
int main(int argc, char** argv) {
grpc::testing::TestEnvironment env(&argc, argv);
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
int main(int argc, char** argv) { return 1; }
#endif /* GRPC_POSIX_SOCKET_TCP */

@ -16,11 +16,8 @@
*
*/
#include <gtest/gtest.h>
#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/iomgr/port.h"
#include "test/core/util/test_config.h"
// This test won't work except with posix sockets enabled
#ifdef GRPC_POSIX_SOCKET_TCP_SERVER
@ -50,6 +47,7 @@
#include "src/core/lib/iomgr/tcp_server.h"
#include "src/core/lib/resource_quota/api.h"
#include "test/core/util/port.h"
#include "test/core/util/test_config.h"
#define LOG_TEST(x) gpr_log(GPR_INFO, "%s", #x)
@ -159,7 +157,7 @@ static void on_connect(void* /*arg*/, grpc_endpoint* tcp,
gpr_mu_lock(g_mu);
g_result = temp_result;
g_nconnects++;
ASSERT_TRUE(
GPR_ASSERT(
GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(g_pollset, nullptr)));
gpr_mu_unlock(g_mu);
}
@ -171,7 +169,8 @@ static void test_no_op(void) {
.channel_args_preconditioning()
.PreconditionChannelArgs(nullptr)
.ToC();
ASSERT_EQ(GRPC_ERROR_NONE, grpc_tcp_server_create(nullptr, args.get(), &s));
GPR_ASSERT(GRPC_ERROR_NONE ==
grpc_tcp_server_create(nullptr, args.get(), &s));
grpc_tcp_server_unref(s);
}
@ -182,7 +181,8 @@ static void test_no_op_with_start(void) {
.channel_args_preconditioning()
.PreconditionChannelArgs(nullptr)
.ToC();
ASSERT_EQ(GRPC_ERROR_NONE, grpc_tcp_server_create(nullptr, args.get(), &s));
GPR_ASSERT(GRPC_ERROR_NONE ==
grpc_tcp_server_create(nullptr, args.get(), &s));
LOG_TEST("test_no_op_with_start");
std::vector<grpc_pollset*> empty_pollset;
grpc_tcp_server_start(s, &empty_pollset, on_connect, nullptr);
@ -199,16 +199,17 @@ static void test_no_op_with_port(void) {
.channel_args_preconditioning()
.PreconditionChannelArgs(nullptr)
.ToC();
ASSERT_EQ(GRPC_ERROR_NONE, grpc_tcp_server_create(nullptr, args.get(), &s));
GPR_ASSERT(GRPC_ERROR_NONE ==
grpc_tcp_server_create(nullptr, args.get(), &s));
LOG_TEST("test_no_op_with_port");
memset(&resolved_addr, 0, sizeof(resolved_addr));
resolved_addr.len = static_cast<socklen_t>(sizeof(struct sockaddr_in));
addr->sin_family = AF_INET;
int port = -1;
ASSERT_EQ(grpc_tcp_server_add_port(s, &resolved_addr, &port),
GRPC_ERROR_NONE);
ASSERT_GT(port, 0);
GPR_ASSERT(grpc_tcp_server_add_port(s, &resolved_addr, &port) ==
GRPC_ERROR_NONE &&
port > 0);
grpc_tcp_server_unref(s);
}
@ -223,16 +224,17 @@ static void test_no_op_with_port_and_start(void) {
.channel_args_preconditioning()
.PreconditionChannelArgs(nullptr)
.ToC();
ASSERT_EQ(GRPC_ERROR_NONE, grpc_tcp_server_create(nullptr, args.get(), &s));
GPR_ASSERT(GRPC_ERROR_NONE ==
grpc_tcp_server_create(nullptr, args.get(), &s));
LOG_TEST("test_no_op_with_port_and_start");
int port = -1;
memset(&resolved_addr, 0, sizeof(resolved_addr));
resolved_addr.len = static_cast<socklen_t>(sizeof(struct sockaddr_in));
addr->sin_family = AF_INET;
ASSERT_EQ(grpc_tcp_server_add_port(s, &resolved_addr, &port),
GRPC_ERROR_NONE);
ASSERT_GT(port, 0);
GPR_ASSERT(grpc_tcp_server_add_port(s, &resolved_addr, &port) ==
GRPC_ERROR_NONE &&
port > 0);
std::vector<grpc_pollset*> empty_pollset;
grpc_tcp_server_start(s, &empty_pollset, on_connect, nullptr);
@ -323,8 +325,8 @@ static void test_connect(size_t num_connects,
.channel_args_preconditioning()
.PreconditionChannelArgs(channel_args)
.ToC();
ASSERT_EQ(GRPC_ERROR_NONE,
grpc_tcp_server_create(nullptr, new_channel_args.get(), &s));
GPR_ASSERT(GRPC_ERROR_NONE ==
grpc_tcp_server_create(nullptr, new_channel_args.get(), &s));
unsigned port_num;
server_weak_ref weak_ref;
server_weak_ref_init(&weak_ref);
@ -341,34 +343,34 @@ static void test_connect(size_t num_connects,
resolved_addr.len = static_cast<socklen_t>(sizeof(struct sockaddr_storage));
resolved_addr1.len = static_cast<socklen_t>(sizeof(struct sockaddr_storage));
addr->ss_family = addr1->ss_family = AF_INET;
ASSERT_TRUE(GRPC_LOG_IF_ERROR(
GPR_ASSERT(GRPC_LOG_IF_ERROR(
"grpc_tcp_server_add_port",
grpc_tcp_server_add_port(s, &resolved_addr, &svr_port)));
gpr_log(GPR_INFO, "Allocated port %d", svr_port);
ASSERT_GT(svr_port, 0);
GPR_ASSERT(svr_port > 0);
/* Cannot use wildcard (port==0), because add_port() will try to reuse the
same port as a previous add_port(). */
svr1_port = grpc_pick_unused_port_or_die();
ASSERT_GT(svr1_port, 0);
GPR_ASSERT(svr1_port > 0);
gpr_log(GPR_INFO, "Picked unused port %d", svr1_port);
grpc_sockaddr_set_port(&resolved_addr1, svr1_port);
ASSERT_EQ(grpc_tcp_server_add_port(s, &resolved_addr1, &port),
GRPC_ERROR_NONE);
ASSERT_EQ(port, svr1_port);
GPR_ASSERT(grpc_tcp_server_add_port(s, &resolved_addr1, &port) ==
GRPC_ERROR_NONE &&
port == svr1_port);
/* Bad port_index. */
ASSERT_EQ(grpc_tcp_server_port_fd_count(s, 2), 0);
ASSERT_LT(grpc_tcp_server_port_fd(s, 2, 0), 0);
GPR_ASSERT(grpc_tcp_server_port_fd_count(s, 2) == 0);
GPR_ASSERT(grpc_tcp_server_port_fd(s, 2, 0) < 0);
/* Bad fd_index. */
ASSERT_LT(grpc_tcp_server_port_fd(s, 0, 100), 0);
ASSERT_LT(grpc_tcp_server_port_fd(s, 1, 100), 0);
GPR_ASSERT(grpc_tcp_server_port_fd(s, 0, 100) < 0);
GPR_ASSERT(grpc_tcp_server_port_fd(s, 1, 100) < 0);
/* Got at least one fd per port. */
svr_fd_count = grpc_tcp_server_port_fd_count(s, 0);
ASSERT_GE(svr_fd_count, 1);
GPR_ASSERT(svr_fd_count >= 1);
svr1_fd_count = grpc_tcp_server_port_fd_count(s, 1);
ASSERT_GE(svr1_fd_count, 1);
GPR_ASSERT(svr1_fd_count >= 1);
std::vector<grpc_pollset*> test_pollset;
test_pollset.push_back(g_pollset);
@ -388,7 +390,7 @@ static void test_connect(size_t num_connects,
dst.str);
continue;
}
ASSERT_TRUE(grpc_sockaddr_set_port(&dst.addr, ports[port_num]));
GPR_ASSERT(grpc_sockaddr_set_port(&dst.addr, ports[port_num]));
test_addr_init_str(&dst);
++num_tested;
on_connect_result_init(&result);
@ -398,11 +400,11 @@ static void test_connect(size_t num_connects,
}
gpr_log(GPR_ERROR, "Failed to connect to %s: %s", dst.str,
grpc_error_std_string(err).c_str());
ASSERT_TRUE(test_dst_addrs);
GPR_ASSERT(test_dst_addrs);
dst_addrs->addrs[dst_idx].addr.len = 0;
GRPC_ERROR_UNREF(err);
}
ASSERT_GT(num_tested, 0);
GPR_ASSERT(num_tested > 0);
}
} else {
for (port_num = 0; port_num < num_ports; ++port_num) {
@ -412,47 +414,46 @@ static void test_connect(size_t num_connects,
int fd = grpc_tcp_server_port_fd(s, port_num, fd_num);
size_t connect_num;
test_addr dst;
ASSERT_GE(fd, 0);
GPR_ASSERT(fd >= 0);
dst.addr.len = static_cast<socklen_t>(sizeof(dst.addr.addr));
ASSERT_EQ(getsockname(fd, (struct sockaddr*)dst.addr.addr,
(socklen_t*)&dst.addr.len),
0);
ASSERT_LE(dst.addr.len, sizeof(dst.addr.addr));
GPR_ASSERT(getsockname(fd, (struct sockaddr*)dst.addr.addr,
(socklen_t*)&dst.addr.len) == 0);
GPR_ASSERT(dst.addr.len <= sizeof(dst.addr.addr));
test_addr_init_str(&dst);
gpr_log(GPR_INFO, "(%d, %d) fd %d family %s listening on %s", port_num,
fd_num, fd, sock_family_name(addr->ss_family), dst.str);
for (connect_num = 0; connect_num < num_connects; ++connect_num) {
on_connect_result result;
on_connect_result_init(&result);
ASSERT_TRUE(
GPR_ASSERT(
GRPC_LOG_IF_ERROR("tcp_connect", tcp_connect(&dst, &result)));
ASSERT_EQ(result.server_fd, fd);
ASSERT_EQ(result.port_index, port_num);
ASSERT_EQ(result.fd_index, fd_num);
ASSERT_EQ(result.server, s);
ASSERT_EQ(
grpc_tcp_server_port_fd(s, result.port_index, result.fd_index),
GPR_ASSERT(result.server_fd == fd);
GPR_ASSERT(result.port_index == port_num);
GPR_ASSERT(result.fd_index == fd_num);
GPR_ASSERT(result.server == s);
GPR_ASSERT(
grpc_tcp_server_port_fd(s, result.port_index, result.fd_index) ==
result.server_fd);
}
}
}
}
/* Weak ref to server valid until final unref. */
ASSERT_NE(weak_ref.server, nullptr);
ASSERT_GE(grpc_tcp_server_port_fd(s, 0, 0), 0);
GPR_ASSERT(weak_ref.server != nullptr);
GPR_ASSERT(grpc_tcp_server_port_fd(s, 0, 0) >= 0);
grpc_tcp_server_unref(s);
grpc_core::ExecCtx::Get()->Flush();
/* Weak ref lost. */
ASSERT_EQ(weak_ref.server, nullptr);
GPR_ASSERT(weak_ref.server == nullptr);
}
static void destroy_pollset(void* p, grpc_error_handle /*error*/) {
grpc_pollset_destroy(static_cast<grpc_pollset*>(p));
}
TEST(TcpServerPosixTest, MainTest) {
int main(int argc, char** argv) {
grpc_closure destroyed;
grpc_arg chan_args[1];
chan_args[0].type = GRPC_ARG_INTEGER;
@ -463,6 +464,7 @@ TEST(TcpServerPosixTest, MainTest) {
struct ifaddrs* ifa_it;
// Zalloc dst_addrs to avoid oversized frames.
test_addrs* dst_addrs = grpc_core::Zalloc<test_addrs>();
grpc::testing::TestEnvironment env(&argc, argv);
grpc_init();
// wait a few seconds to make sure IPv6 link-local addresses can be bound
// if we are running under docker container that has just started.
@ -480,7 +482,8 @@ TEST(TcpServerPosixTest, MainTest) {
test_no_op_with_port_and_start();
if (getifaddrs(&ifa) != 0 || ifa == nullptr) {
FAIL() << "getifaddrs: " << strerror(errno);
gpr_log(GPR_ERROR, "getifaddrs: %s", strerror(errno));
return EXIT_FAILURE;
}
dst_addrs->naddrs = 0;
for (ifa_it = ifa; ifa_it != nullptr && dst_addrs->naddrs < MAX_ADDRS;
@ -498,7 +501,7 @@ TEST(TcpServerPosixTest, MainTest) {
}
memcpy(dst_addrs->addrs[dst_addrs->naddrs].addr.addr, ifa_it->ifa_addr,
dst_addrs->addrs[dst_addrs->naddrs].addr.len);
ASSERT_TRUE(
GPR_ASSERT(
grpc_sockaddr_set_port(&dst_addrs->addrs[dst_addrs->naddrs].addr, 0));
test_addr_init_str(&dst_addrs->addrs[dst_addrs->naddrs]);
++dst_addrs->naddrs;
@ -526,12 +529,11 @@ TEST(TcpServerPosixTest, MainTest) {
grpc_shutdown();
gpr_free(dst_addrs);
gpr_free(g_pollset);
return EXIT_SUCCESS;
}
#endif /* GRPC_POSIX_SOCKET_SERVER */
#else /* GRPC_POSIX_SOCKET_SERVER */
int main(int argc, char** argv) {
grpc::testing::TestEnvironment env(&argc, argv);
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
int main(int argc, char** argv) { return 1; }
#endif /* GRPC_POSIX_SOCKET_SERVER */

@ -21,8 +21,6 @@
#include <stdlib.h>
#include <string.h>
#include <gtest/gtest.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
@ -56,10 +54,10 @@ static void check_valid(grpc_timer_heap* pq) {
size_t left_child = 1u + 2u * i;
size_t right_child = left_child + 1u;
if (left_child < pq->timer_count) {
ASSERT_LE(pq->timers[i]->deadline, pq->timers[left_child]->deadline);
GPR_ASSERT(pq->timers[i]->deadline <= pq->timers[left_child]->deadline);
}
if (right_child < pq->timer_count) {
ASSERT_LE(pq->timers[i]->deadline, pq->timers[right_child]->deadline);
GPR_ASSERT(pq->timers[i]->deadline <= pq->timers[right_child]->deadline);
}
}
}
@ -80,22 +78,22 @@ static void test1(void) {
grpc_timer_heap_init(&pq);
memset(inpq, 0, num_test_elements);
ASSERT_TRUE(grpc_timer_heap_is_empty(&pq));
GPR_ASSERT(grpc_timer_heap_is_empty(&pq));
check_valid(&pq);
for (i = 0; i < num_test_elements; ++i) {
ASSERT_FALSE(contains(&pq, &test_elements[i]));
GPR_ASSERT(!contains(&pq, &test_elements[i]));
grpc_timer_heap_add(&pq, &test_elements[i]);
check_valid(&pq);
ASSERT_TRUE(contains(&pq, &test_elements[i]));
GPR_ASSERT(contains(&pq, &test_elements[i]));
inpq[i] = 1;
}
for (i = 0; i < num_test_elements; ++i) {
/* Test that check still succeeds even for element that wasn't just
inserted. */
ASSERT_TRUE(contains(&pq, &test_elements[i]));
GPR_ASSERT(contains(&pq, &test_elements[i]));
}
ASSERT_EQ(pq.timer_count, num_test_elements);
GPR_ASSERT(pq.timer_count == num_test_elements);
check_valid(&pq);
@ -103,16 +101,16 @@ static void test1(void) {
size_t elem_num = static_cast<size_t>(rand()) % num_test_elements;
grpc_timer* el = &test_elements[elem_num];
if (!inpq[elem_num]) { /* not in pq */
ASSERT_FALSE(contains(&pq, el));
GPR_ASSERT(!contains(&pq, el));
el->deadline = random_deadline();
grpc_timer_heap_add(&pq, el);
ASSERT_TRUE(contains(&pq, el));
GPR_ASSERT(contains(&pq, el));
inpq[elem_num] = 1;
check_valid(&pq);
} else {
ASSERT_TRUE(contains(&pq, el));
GPR_ASSERT(contains(&pq, el));
grpc_timer_heap_remove(&pq, el);
ASSERT_FALSE(contains(&pq, el));
GPR_ASSERT(!contains(&pq, el));
inpq[elem_num] = 0;
check_valid(&pq);
}
@ -195,7 +193,7 @@ static void test2(void) {
grpc_timer_heap_pop(&pq);
for (size_t i = 0; i < elems_size; i++) {
if (top == &elems[i].elem) {
ASSERT_TRUE(elems[i].inserted);
GPR_ASSERT(elems[i].inserted);
elems[i].inserted = false;
}
}
@ -217,7 +215,7 @@ static void test2(void) {
}
}
}
ASSERT_EQ(grpc_timer_heap_top(&pq)->deadline, *min_deadline);
GPR_ASSERT(grpc_timer_heap_top(&pq)->deadline == *min_deadline);
}
}
@ -240,10 +238,10 @@ static void shrink_test(void) {
/* Create a priority queue with many elements. Make sure the Size() is
correct. */
for (i = 0; i < num_elements; ++i) {
ASSERT_EQ(i, pq.timer_count);
GPR_ASSERT(i == pq.timer_count);
grpc_timer_heap_add(&pq, create_test_elements(1));
}
ASSERT_EQ(num_elements, pq.timer_count);
GPR_ASSERT(num_elements == pq.timer_count);
/* Remove elements until the Size is 1/4 the original size. */
while (pq.timer_count > num_elements / 4) {
@ -251,12 +249,12 @@ static void shrink_test(void) {
grpc_timer_heap_remove(&pq, te);
gpr_free(te);
}
ASSERT_EQ(num_elements / 4, pq.timer_count);
GPR_ASSERT(num_elements / 4 == pq.timer_count);
/* Expect that Capacity is in the right range:
Size * 2 <= Capacity <= Size * 4 */
ASSERT_LE(pq.timer_count * 2, pq.timer_capacity);
ASSERT_LE(pq.timer_capacity, pq.timer_count * 4);
GPR_ASSERT(pq.timer_count * 2 <= pq.timer_capacity);
GPR_ASSERT(pq.timer_capacity <= pq.timer_count * 4);
check_valid(&pq);
/* Remove the rest of the elements. Check that the Capacity is not more than
@ -268,33 +266,32 @@ static void shrink_test(void) {
grpc_timer_heap_remove(&pq, te);
gpr_free(te);
expected_size--;
ASSERT_EQ(expected_size, pq.timer_count);
ASSERT_LE(pq.timer_count * 2, pq.timer_capacity);
GPR_ASSERT(expected_size == pq.timer_count);
GPR_ASSERT(pq.timer_count * 2 <= pq.timer_capacity);
if (pq.timer_count >= 8) {
ASSERT_LE(pq.timer_capacity, pq.timer_count * 4);
GPR_ASSERT(pq.timer_capacity <= pq.timer_count * 4);
} else {
ASSERT_LE(16, pq.timer_capacity);
GPR_ASSERT(16 <= pq.timer_capacity);
}
check_valid(&pq);
}
ASSERT_EQ(pq.timer_count, 0);
ASSERT_GE(pq.timer_capacity, 16);
ASSERT_LT(pq.timer_capacity, 32);
GPR_ASSERT(0 == pq.timer_count);
GPR_ASSERT(pq.timer_capacity >= 16 && pq.timer_capacity < 32);
grpc_timer_heap_destroy(&pq);
}
TEST(TimerHeapTest, MainTest) {
for (int i = 0; i < 5; i++) {
int main(int argc, char** argv) {
int i;
grpc::testing::TestEnvironment env(&argc, argv);
for (i = 0; i < 5; i++) {
test1();
test2();
shrink_test();
}
}
int main(int argc, char** argv) {
grpc::testing::TestEnvironment env(&argc, argv);
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
return 0;
}

@ -21,8 +21,6 @@
#include <cstdint>
#include <limits>
#include <gtest/gtest.h>
#include <grpc/grpc.h>
#include <grpc/support/log.h>
@ -79,38 +77,38 @@ static void add_test(void) {
/* collect timers. Only the first batch should be ready. */
grpc_core::ExecCtx::Get()->TestOnlySetNow(
start + grpc_core::Duration::Milliseconds(500));
ASSERT_EQ(grpc_timer_check(nullptr), GRPC_TIMERS_FIRED);
GPR_ASSERT(grpc_timer_check(nullptr) == GRPC_TIMERS_FIRED);
grpc_core::ExecCtx::Get()->Flush();
for (i = 0; i < 20; i++) {
ASSERT_EQ(cb_called[i][1], (i < 10));
ASSERT_EQ(cb_called[i][0], 0);
GPR_ASSERT(cb_called[i][1] == (i < 10));
GPR_ASSERT(cb_called[i][0] == 0);
}
grpc_core::ExecCtx::Get()->TestOnlySetNow(
start + grpc_core::Duration::Milliseconds(600));
ASSERT_EQ(grpc_timer_check(nullptr), GRPC_TIMERS_CHECKED_AND_EMPTY);
GPR_ASSERT(grpc_timer_check(nullptr) == GRPC_TIMERS_CHECKED_AND_EMPTY);
grpc_core::ExecCtx::Get()->Flush();
for (i = 0; i < 30; i++) {
ASSERT_EQ(cb_called[i][1], (i < 10));
ASSERT_EQ(cb_called[i][0], 0);
GPR_ASSERT(cb_called[i][1] == (i < 10));
GPR_ASSERT(cb_called[i][0] == 0);
}
/* collect the rest of the timers */
grpc_core::ExecCtx::Get()->TestOnlySetNow(
start + grpc_core::Duration::Milliseconds(1500));
ASSERT_EQ(grpc_timer_check(nullptr), GRPC_TIMERS_FIRED);
GPR_ASSERT(grpc_timer_check(nullptr) == GRPC_TIMERS_FIRED);
grpc_core::ExecCtx::Get()->Flush();
for (i = 0; i < 30; i++) {
ASSERT_EQ(cb_called[i][1], (i < 20));
ASSERT_EQ(cb_called[i][0], 0);
GPR_ASSERT(cb_called[i][1] == (i < 20));
GPR_ASSERT(cb_called[i][0] == 0);
}
grpc_core::ExecCtx::Get()->TestOnlySetNow(
start + grpc_core::Duration::Milliseconds(1600));
ASSERT_EQ(grpc_timer_check(nullptr), GRPC_TIMERS_CHECKED_AND_EMPTY);
GPR_ASSERT(grpc_timer_check(nullptr) == GRPC_TIMERS_CHECKED_AND_EMPTY);
for (i = 0; i < 30; i++) {
ASSERT_EQ(cb_called[i][1], (i < 20));
ASSERT_EQ(cb_called[i][0], 0);
GPR_ASSERT(cb_called[i][1] == (i < 20));
GPR_ASSERT(cb_called[i][0] == 0);
}
grpc_timer_list_shutdown();
@ -147,19 +145,19 @@ void destruction_test(void) {
GRPC_CLOSURE_CREATE(cb, (void*)(intptr_t)4, grpc_schedule_on_exec_ctx));
grpc_core::ExecCtx::Get()->TestOnlySetNow(
grpc_core::Timestamp::FromMillisecondsAfterProcessEpoch(2));
ASSERT_EQ(grpc_timer_check(nullptr), GRPC_TIMERS_FIRED);
GPR_ASSERT(grpc_timer_check(nullptr) == GRPC_TIMERS_FIRED);
grpc_core::ExecCtx::Get()->Flush();
ASSERT_EQ(cb_called[4][1], 1);
GPR_ASSERT(1 == cb_called[4][1]);
grpc_timer_cancel(&timers[0]);
grpc_timer_cancel(&timers[3]);
grpc_core::ExecCtx::Get()->Flush();
ASSERT_EQ(cb_called[0][0], 1);
ASSERT_EQ(cb_called[3][0], 1);
GPR_ASSERT(1 == cb_called[0][0]);
GPR_ASSERT(1 == cb_called[3][0]);
grpc_timer_list_shutdown();
grpc_core::ExecCtx::Get()->Flush();
ASSERT_EQ(cb_called[1][0], 1);
ASSERT_EQ(cb_called[2][0], 1);
GPR_ASSERT(1 == cb_called[1][0]);
GPR_ASSERT(1 == cb_called[2][0]);
}
/* Cleans up a list with pending timers that simulate long-running-services.
@ -181,7 +179,7 @@ void long_running_service_cleanup_test(void) {
gpr_log(GPR_INFO, "long_running_service_cleanup_test");
grpc_core::Timestamp now = grpc_core::ExecCtx::Get()->Now();
ASSERT_GE(now.milliseconds_after_process_epoch(), k25Days.millis());
GPR_ASSERT(now.milliseconds_after_process_epoch() >= k25Days.millis());
grpc_timer_list_init();
grpc_core::testing::grpc_tracer_enable_flag(&grpc_timer_trace);
grpc_core::testing::grpc_tracer_enable_flag(&grpc_timer_check_trace);
@ -210,31 +208,32 @@ void long_running_service_cleanup_test(void) {
grpc_core::ExecCtx::Get()->TestOnlySetNow(
now + grpc_core::Duration::Milliseconds(4));
ASSERT_EQ(grpc_timer_check(nullptr), GRPC_TIMERS_FIRED);
GPR_ASSERT(grpc_timer_check(nullptr) == GRPC_TIMERS_FIRED);
grpc_core::ExecCtx::Get()->Flush();
GPR_ASSERT(0 == cb_called[0][0]); // Timer 0 not called
ASSERT_EQ(cb_called[0][1], 0);
ASSERT_EQ(cb_called[1][0], 0);
GPR_ASSERT(0 == cb_called[0][1]);
GPR_ASSERT(0 == cb_called[1][0]);
GPR_ASSERT(1 == cb_called[1][1]); // Timer 1 fired
GPR_ASSERT(0 == cb_called[2][0]); // Timer 2 not called
ASSERT_EQ(cb_called[2][1], 0);
GPR_ASSERT(0 == cb_called[2][1]);
GPR_ASSERT(0 == cb_called[3][0]); // Timer 3 not called
ASSERT_EQ(cb_called[3][1], 0);
GPR_ASSERT(0 == cb_called[3][1]);
grpc_timer_list_shutdown();
grpc_core::ExecCtx::Get()->Flush();
/* Timers 0, 2, and 3 were fired with an error during cleanup */
ASSERT_EQ(cb_called[0][0], 1);
ASSERT_EQ(cb_called[1][0], 0);
ASSERT_EQ(cb_called[2][0], 1);
ASSERT_EQ(cb_called[3][0], 1);
GPR_ASSERT(1 == cb_called[0][0]);
GPR_ASSERT(0 == cb_called[1][0]);
GPR_ASSERT(1 == cb_called[2][0]);
GPR_ASSERT(1 == cb_called[3][0]);
}
TEST(TimerListTest, MainTest) {
int main(int argc, char** argv) {
gpr_time_init();
/* Tests with default g_start_time */
{
grpc::testing::TestEnvironment env(&argc, argv);
grpc_core::ExecCtx exec_ctx;
grpc_set_default_iomgr_platform();
grpc_iomgr_platform_init();
@ -246,6 +245,7 @@ TEST(TimerListTest, MainTest) {
/* Begin long running service tests */
{
grpc::testing::TestEnvironment env(&argc, argv);
/* Set g_start_time back 25 days. */
/* We set g_start_time here in case there are any initialization
dependencies that use g_start_time. */
@ -262,10 +262,6 @@ TEST(TimerListTest, MainTest) {
destruction_test();
grpc_iomgr_platform_shutdown();
}
}
int main(int argc, char** argv) {
grpc::testing::TestEnvironment env(&argc, argv);
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
return 0;
}

@ -69,6 +69,52 @@
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix",
"windows"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": false,
"language": "c",
"name": "buffer_list_test",
"platforms": [
"linux",
"mac",
"posix",
"windows"
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": false,
"language": "c",
"name": "combiner_test",
"platforms": [
"linux",
"mac",
"posix"
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
@ -115,6 +161,74 @@
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix",
"windows"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": false,
"language": "c",
"name": "endpoint_pair_test",
"platforms": [
"linux",
"mac",
"posix",
"windows"
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": false,
"language": "c",
"name": "fd_conservation_posix_test",
"platforms": [
"linux",
"mac",
"posix"
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": false,
"language": "c",
"name": "fd_posix_test",
"platforms": [
"linux",
"mac",
"posix"
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
@ -183,6 +297,30 @@
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix",
"windows"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": false,
"language": "c",
"name": "grpc_ipv6_loopback_available_test",
"platforms": [
"linux",
"mac",
"posix",
"windows"
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
@ -231,6 +369,30 @@
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix",
"windows"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": false,
"language": "c",
"name": "load_file_test",
"platforms": [
"linux",
"mac",
"posix",
"windows"
],
"uses_polling": false
},
{
"args": [],
"benchmark": false,
@ -327,6 +489,188 @@
],
"uses_polling": true
},
{
"args": [
"--resolver=ares"
],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": false,
"language": "c",
"name": "resolve_address_using_ares_resolver_posix_test",
"platforms": [
"linux",
"mac",
"posix"
],
"uses_polling": true
},
{
"args": [
"--resolver=native"
],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": false,
"language": "c",
"name": "resolve_address_using_native_resolver_posix_test",
"platforms": [
"linux",
"mac",
"posix"
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": false,
"language": "c",
"name": "socket_utils_test",
"platforms": [
"linux",
"mac",
"posix"
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": false,
"language": "c",
"name": "tcp_client_posix_test",
"platforms": [
"linux",
"mac",
"posix"
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"posix"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": false,
"language": "c",
"name": "tcp_posix_test",
"platforms": [
"linux",
"posix"
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": false,
"language": "c",
"name": "tcp_server_posix_test",
"platforms": [
"linux",
"mac",
"posix"
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix",
"windows"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": false,
"language": "c",
"name": "test_core_iomgr_timer_heap_test",
"platforms": [
"linux",
"mac",
"posix",
"windows"
],
"uses_polling": false
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix",
"windows"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": false,
"language": "c",
"name": "test_core_iomgr_timer_list_test",
"platforms": [
"linux",
"mac",
"posix",
"windows"
],
"uses_polling": false
},
{
"args": [],
"benchmark": false,
@ -1275,30 +1619,6 @@
],
"uses_polling": false
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix",
"windows"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": true,
"language": "c++",
"name": "buffer_list_test",
"platforms": [
"linux",
"mac",
"posix",
"windows"
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
@ -2041,28 +2361,6 @@
],
"uses_polling": false
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": true,
"language": "c++",
"name": "combiner_test",
"platforms": [
"linux",
"mac",
"posix"
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
@ -2541,30 +2839,6 @@
],
"uses_polling": false
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix",
"windows"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": true,
"language": "c++",
"name": "endpoint_pair_test",
"platforms": [
"linux",
"mac",
"posix",
"windows"
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
@ -2751,55 +3025,7 @@
"posix",
"windows"
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix",
"windows"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": true,
"language": "c++",
"name": "exec_ctx_wakeup_scheduler_test",
"platforms": [
"linux",
"mac",
"posix",
"windows"
],
"uses_polling": false
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix",
"windows"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": true,
"language": "c++",
"name": "fake_binder_test",
"platforms": [
"linux",
"mac",
"posix",
"windows"
],
"uses_polling": false
"uses_polling": true
},
{
"args": [],
@ -2816,14 +3042,14 @@
"flaky": false,
"gtest": true,
"language": "c++",
"name": "fake_resolver_test",
"name": "exec_ctx_wakeup_scheduler_test",
"platforms": [
"linux",
"mac",
"posix",
"windows"
],
"uses_polling": true
"uses_polling": false
},
{
"args": [],
@ -2840,14 +3066,14 @@
"flaky": false,
"gtest": true,
"language": "c++",
"name": "fake_transport_security_test",
"name": "fake_binder_test",
"platforms": [
"linux",
"mac",
"posix",
"windows"
],
"uses_polling": true
"uses_polling": false
},
{
"args": [],
@ -2855,7 +3081,8 @@
"ci_platforms": [
"linux",
"mac",
"posix"
"posix",
"windows"
],
"cpu_cost": 1.0,
"exclude_configs": [],
@ -2863,11 +3090,12 @@
"flaky": false,
"gtest": true,
"language": "c++",
"name": "fd_conservation_posix_test",
"name": "fake_resolver_test",
"platforms": [
"linux",
"mac",
"posix"
"posix",
"windows"
],
"uses_polling": true
},
@ -2877,7 +3105,8 @@
"ci_platforms": [
"linux",
"mac",
"posix"
"posix",
"windows"
],
"cpu_cost": 1.0,
"exclude_configs": [],
@ -2885,11 +3114,12 @@
"flaky": false,
"gtest": true,
"language": "c++",
"name": "fd_posix_test",
"name": "fake_transport_security_test",
"platforms": [
"linux",
"mac",
"posix"
"posix",
"windows"
],
"uses_polling": true
},
@ -3365,30 +3595,6 @@
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix",
"windows"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": true,
"language": "c++",
"name": "grpc_ipv6_loopback_available_test",
"platforms": [
"linux",
"mac",
"posix",
"windows"
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
@ -4267,30 +4473,6 @@
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix",
"windows"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": true,
"language": "c++",
"name": "load_file_test",
"platforms": [
"linux",
"mac",
"posix",
"windows"
],
"uses_polling": false
},
{
"args": [],
"benchmark": false,
@ -5359,30 +5541,6 @@
],
"uses_polling": true
},
{
"args": [
"--resolver=ares"
],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": true,
"language": "c++",
"name": "resolve_address_using_ares_resolver_posix_test",
"platforms": [
"linux",
"mac",
"posix"
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
@ -5407,30 +5565,6 @@
],
"uses_polling": true
},
{
"args": [
"--resolver=native"
],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": true,
"language": "c++",
"name": "resolve_address_using_native_resolver_posix_test",
"platforms": [
"linux",
"mac",
"posix"
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
@ -6191,28 +6325,6 @@
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": true,
"language": "c++",
"name": "socket_utils_test",
"platforms": [
"linux",
"mac",
"posix"
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
@ -6637,70 +6749,6 @@
],
"uses_polling": false
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": true,
"language": "c++",
"name": "tcp_client_posix_test",
"platforms": [
"linux",
"mac",
"posix"
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"posix"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": true,
"language": "c++",
"name": "tcp_posix_test",
"platforms": [
"linux",
"posix"
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": true,
"language": "c++",
"name": "tcp_server_posix_test",
"platforms": [
"linux",
"mac",
"posix"
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,
@ -6821,54 +6869,6 @@
],
"uses_polling": false
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix",
"windows"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": true,
"language": "c++",
"name": "test_core_iomgr_timer_heap_test",
"platforms": [
"linux",
"mac",
"posix",
"windows"
],
"uses_polling": false
},
{
"args": [],
"benchmark": false,
"ci_platforms": [
"linux",
"mac",
"posix",
"windows"
],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
"flaky": false,
"gtest": true,
"language": "c++",
"name": "test_core_iomgr_timer_list_test",
"platforms": [
"linux",
"mac",
"posix",
"windows"
],
"uses_polling": false
},
{
"args": [],
"benchmark": false,

Loading…
Cancel
Save