aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/core/transport/bdp_estimator_test.cc
diff options
context:
space:
mode:
authorGravatar Yash Tibrewal <yashkt@google.com>2017-10-13 16:07:13 -0700
committerGravatar Yash Tibrewal <yashkt@google.com>2017-10-18 17:12:19 -0700
commit0ee7574732a06e8cace4e099a678f4bd5dbff679 (patch)
treee43d5de442fdcc3d39cd5af687f319fa39612d3f /test/core/transport/bdp_estimator_test.cc
parent6bf5f833efe2cb9e2ecc14358dd9699cd5d05263 (diff)
Removing instances of exec_ctx being passed around in functions in
src/core. exec_ctx is now a thread_local pointer of type ExecCtx instead of grpc_exec_ctx which is initialized whenever ExecCtx is instantiated. ExecCtx also keeps track of the previous exec_ctx so that nesting of exec_ctx is allowed. This means that there is only one exec_ctx being used at any time. Also, grpc_exec_ctx_finish is called in the destructor of the object, and the previous exec_ctx is restored to avoid breaking current functionality. The code still explicitly calls grpc_exec_ctx_finish because removing all such instances causes the code to break.
Diffstat (limited to 'test/core/transport/bdp_estimator_test.cc')
-rw-r--r--test/core/transport/bdp_estimator_test.cc149
1 files changed, 77 insertions, 72 deletions
diff --git a/test/core/transport/bdp_estimator_test.cc b/test/core/transport/bdp_estimator_test.cc
index 7ac35016c0..cf1b422043 100644
--- a/test/core/transport/bdp_estimator_test.cc
+++ b/test/core/transport/bdp_estimator_test.cc
@@ -23,92 +23,97 @@
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
#include <grpc/support/useful.h>
-#include <gtest/gtest.h>
#include <limits.h>
#include "src/core/lib/iomgr/timer_manager.h"
#include "src/core/lib/support/string.h"
#include "test/core/util/test_config.h"
-extern "C" gpr_timespec (*gpr_now_impl)(gpr_clock_type clock_type);
+extern gpr_timespec (*gpr_now_impl)(gpr_clock_type clock_type);
-namespace grpc_core {
-namespace testing {
-namespace {
-int g_clock = 0;
+static int g_clock = 0;
-gpr_timespec fake_gpr_now(gpr_clock_type clock_type) {
- gpr_timespec ts;
- ts.tv_sec = g_clock;
- ts.tv_nsec = 0;
- ts.clock_type = clock_type;
- return ts;
+static gpr_timespec fake_gpr_now(gpr_clock_type clock_type) {
+ return (gpr_timespec){
+ .tv_sec = g_clock, .tv_nsec = 0, .clock_type = clock_type,
+ };
}
-void inc_time(void) { g_clock += 30; }
-} // namespace
+static void inc_time(void) { g_clock += 30; }
-TEST(BdpEstimatorTest, NoOp) { BdpEstimator est("test"); }
+static void test_noop(void) {
+ gpr_log(GPR_INFO, "test_noop");
+ grpc_bdp_estimator est;
+ grpc_bdp_estimator_init(&est, "test");
+}
-TEST(BdpEstimatorTest, EstimateBdpNoSamples) {
- BdpEstimator est("test");
+static void test_get_estimate_no_samples(void) {
+ gpr_log(GPR_INFO, "test_get_estimate_no_samples");
+ grpc_bdp_estimator est;
+ grpc_bdp_estimator_init(&est, "test");
int64_t estimate;
- est.EstimateBdp(&estimate);
+ grpc_bdp_estimator_get_estimate(&est, &estimate);
}
-namespace {
-void AddSamples(BdpEstimator *estimator, int64_t *samples, size_t n) {
- estimator->AddIncomingBytes(1234567);
+static void add_samples(grpc_bdp_estimator *estimator, int64_t *samples,
+ size_t n) {
+ grpc_bdp_estimator_add_incoming_bytes(estimator, 1234567);
inc_time();
- grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
- estimator->SchedulePing();
- estimator->StartPing();
+
+ GPR_ASSERT(grpc_bdp_estimator_need_ping(estimator) == true);
+ grpc_bdp_estimator_schedule_ping(estimator);
+ grpc_bdp_estimator_start_ping(estimator);
+
for (size_t i = 0; i < n; i++) {
- estimator->AddIncomingBytes(samples[i]);
+ grpc_bdp_estimator_add_incoming_bytes(estimator, samples[i]);
+ GPR_ASSERT(grpc_bdp_estimator_need_ping(estimator) == false);
}
gpr_sleep_until(gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
gpr_time_from_millis(1, GPR_TIMESPAN)));
- grpc_exec_ctx_invalidate_now(&exec_ctx);
- estimator->CompletePing(&exec_ctx);
- grpc_exec_ctx_finish(&exec_ctx);
+ grpc_bdp_estimator_complete_ping(estimator);
+ grpc_exec_ctx_finish();
}
-void AddSample(BdpEstimator *estimator, int64_t sample) {
- AddSamples(estimator, &sample, 1);
+static void add_sample(grpc_bdp_estimator *estimator, int64_t sample) {
+ add_samples(estimator, &sample, 1);
}
-} // namespace
-TEST(BdpEstimatorTest, GetEstimate1Sample) {
- BdpEstimator est("test");
- AddSample(&est, 100);
+static void test_get_estimate_1_sample(void) {
+ gpr_log(GPR_INFO, "test_get_estimate_1_sample");
+ grpc_bdp_estimator est;
+ grpc_bdp_estimator_init(&est, "test");
+ add_sample(&est, 100);
int64_t estimate;
- est.EstimateBdp(&estimate);
+ grpc_bdp_estimator_get_estimate(&est, &estimate);
}
-TEST(BdpEstimatorTest, GetEstimate2Samples) {
- BdpEstimator est("test");
- AddSample(&est, 100);
- AddSample(&est, 100);
+static void test_get_estimate_2_samples(void) {
+ gpr_log(GPR_INFO, "test_get_estimate_2_samples");
+ grpc_bdp_estimator est;
+ grpc_bdp_estimator_init(&est, "test");
+ add_sample(&est, 100);
+ add_sample(&est, 100);
int64_t estimate;
- est.EstimateBdp(&estimate);
+ grpc_bdp_estimator_get_estimate(&est, &estimate);
}
-TEST(BdpEstimatorTest, GetEstimate3Samples) {
- BdpEstimator est("test");
- AddSample(&est, 100);
- AddSample(&est, 100);
- AddSample(&est, 100);
- int64_t estimate;
- est.EstimateBdp(&estimate);
-}
-
-namespace {
-static int64_t GetEstimate(const BdpEstimator &estimator) {
+static int64_t get_estimate(grpc_bdp_estimator *estimator) {
int64_t out;
- EXPECT_TRUE(estimator.EstimateBdp(&out));
+ GPR_ASSERT(grpc_bdp_estimator_get_estimate(estimator, &out));
return out;
}
-int64_t NextPow2(int64_t v) {
+static void test_get_estimate_3_samples(void) {
+ gpr_log(GPR_INFO, "test_get_estimate_3_samples");
+ grpc_bdp_estimator est;
+ grpc_bdp_estimator_init(&est, "test");
+ add_sample(&est, 100);
+ add_sample(&est, 100);
+ add_sample(&est, 100);
+ int64_t estimate;
+ grpc_bdp_estimator_get_estimate(&est, &estimate);
+}
+
+static int64_t next_pow_2(int64_t v) {
v--;
v |= v >> 1;
v |= v >> 2;
@@ -119,40 +124,40 @@ int64_t NextPow2(int64_t v) {
v++;
return v;
}
-} // namespace
-
-class BdpEstimatorRandomTest : public ::testing::TestWithParam<size_t> {};
-TEST_P(BdpEstimatorRandomTest, GetEstimateRandomValues) {
- BdpEstimator est("test");
+static void test_get_estimate_random_values(size_t n) {
+ gpr_log(GPR_INFO, "test_get_estimate_random_values(%" PRIdPTR ")", n);
+ grpc_bdp_estimator est;
+ grpc_bdp_estimator_init(&est, "test");
const int kMaxSample = 65535;
int min = kMaxSample;
int max = 0;
- for (size_t i = 0; i < GetParam(); i++) {
+ for (size_t i = 0; i < n; i++) {
int sample = rand() % (kMaxSample + 1);
if (sample < min) min = sample;
if (sample > max) max = sample;
- AddSample(&est, sample);
+ add_sample(&est, sample);
if (i >= 3) {
- EXPECT_LE(GetEstimate(est), GPR_MAX(65536, 2 * NextPow2(max)))
- << " min:" << min << " max:" << max << " sample:" << sample;
+ gpr_log(GPR_DEBUG, "est:%" PRId64 " min:%d max:%d", get_estimate(&est),
+ min, max);
+ GPR_ASSERT(get_estimate(&est) <= GPR_MAX(65536, 2 * next_pow_2(max)));
}
}
}
-INSTANTIATE_TEST_CASE_P(TooManyNames, BdpEstimatorRandomTest,
- ::testing::Values(3, 4, 6, 9, 13, 19, 28, 42, 63, 94,
- 141, 211, 316, 474, 711));
-} // namespace testing
-} // namespace grpc_core
-
int main(int argc, char **argv) {
grpc_test_init(argc, argv);
- gpr_now_impl = grpc_core::testing::fake_gpr_now;
+ gpr_now_impl = fake_gpr_now;
grpc_init();
grpc_timer_manager_set_threading(false);
- ::testing::InitGoogleTest(&argc, argv);
- int ret = RUN_ALL_TESTS();
+ test_noop();
+ test_get_estimate_no_samples();
+ test_get_estimate_1_sample();
+ test_get_estimate_2_samples();
+ test_get_estimate_3_samples();
+ for (size_t i = 3; i < 1000; i = i * 3 / 2) {
+ test_get_estimate_random_values(i);
+ }
grpc_shutdown();
- return ret;
+ return 0;
}