mirror of https://github.com/grpc/grpc.git
This reverts commit e107ff5e99
.
<!--
If you know who should review your pull request, please assign it to
that
person, otherwise the pull request would get assigned randomly.
If your pull request is for a specific language, please add the
appropriate
lang label.
-->
revert-33512-Revert33428
parent
441ff0e757
commit
ba878c804d
7 changed files with 115 additions and 371 deletions
@ -1,174 +0,0 @@ |
||||
// Copyright 2023 gRPC authors.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "gtest/gtest.h" |
||||
|
||||
#include <grpc/grpc.h> |
||||
#include <grpc/slice.h> |
||||
|
||||
#include "src/core/ext/transport/chttp2/transport/chttp2_transport.h" |
||||
#include "src/core/ext/transport/chttp2/transport/frame.h" |
||||
#include "src/core/ext/transport/chttp2/transport/internal.h" |
||||
#include "src/core/lib/channel/channel_args.h" |
||||
#include "src/core/lib/event_engine/default_event_engine.h" |
||||
#include "src/core/lib/gprpp/time.h" |
||||
#include "src/core/lib/iomgr/endpoint.h" |
||||
#include "src/core/lib/iomgr/exec_ctx.h" |
||||
#include "src/core/lib/resource_quota/resource_quota.h" |
||||
#include "src/core/lib/transport/transport.h" |
||||
#include "test/core/util/mock_endpoint.h" |
||||
#include "test/core/util/test_config.h" |
||||
|
||||
namespace grpc_core { |
||||
namespace { |
||||
|
||||
class ConfigurationTest : public ::testing::Test { |
||||
protected: |
||||
ConfigurationTest() { |
||||
mock_endpoint_ = grpc_mock_endpoint_create(DiscardWrite); |
||||
args_ = args_.SetObject(ResourceQuota::Default()); |
||||
args_ = args_.SetObject( |
||||
grpc_event_engine::experimental::GetDefaultEventEngine()); |
||||
} |
||||
|
||||
grpc_endpoint* mock_endpoint_ = nullptr; |
||||
ChannelArgs args_; |
||||
|
||||
private: |
||||
static void DiscardWrite(grpc_slice /*slice*/) {} |
||||
}; |
||||
|
||||
TEST_F(ConfigurationTest, ClientKeepaliveDefaults) { |
||||
ExecCtx exec_ctx; |
||||
grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>( |
||||
grpc_create_chttp2_transport(args_, mock_endpoint_, /*is_client=*/true)); |
||||
EXPECT_EQ(t->keepalive_time, Duration::Infinity()); |
||||
EXPECT_EQ(t->keepalive_timeout, Duration::Seconds(20)); |
||||
EXPECT_EQ(t->keepalive_permit_without_calls, false); |
||||
EXPECT_EQ(t->ping_policy.max_pings_without_data, 2); |
||||
grpc_transport_destroy(&t->base); |
||||
} |
||||
|
||||
TEST_F(ConfigurationTest, ClientKeepaliveExplicitArgs) { |
||||
ExecCtx exec_ctx; |
||||
args_ = args_.Set(GRPC_ARG_KEEPALIVE_TIME_MS, 20000); |
||||
args_ = args_.Set(GRPC_ARG_KEEPALIVE_TIMEOUT_MS, 10000); |
||||
args_ = args_.Set(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS, true); |
||||
args_ = args_.Set(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA, 3); |
||||
grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>( |
||||
grpc_create_chttp2_transport(args_, mock_endpoint_, /*is_client=*/true)); |
||||
EXPECT_EQ(t->keepalive_time, Duration::Seconds(20)); |
||||
EXPECT_EQ(t->keepalive_timeout, Duration::Seconds(10)); |
||||
EXPECT_EQ(t->keepalive_permit_without_calls, true); |
||||
EXPECT_EQ(t->ping_policy.max_pings_without_data, 3); |
||||
grpc_transport_destroy(&t->base); |
||||
} |
||||
|
||||
TEST_F(ConfigurationTest, ServerKeepaliveDefaults) { |
||||
ExecCtx exec_ctx; |
||||
grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>( |
||||
grpc_create_chttp2_transport(args_, mock_endpoint_, /*is_client=*/false)); |
||||
EXPECT_EQ(t->keepalive_time, Duration::Hours(2)); |
||||
EXPECT_EQ(t->keepalive_timeout, Duration::Seconds(20)); |
||||
EXPECT_EQ(t->keepalive_permit_without_calls, false); |
||||
EXPECT_EQ(t->ping_policy.max_pings_without_data, 2); |
||||
EXPECT_EQ(t->ping_policy.min_recv_ping_interval_without_data, |
||||
Duration::Minutes(5)); |
||||
EXPECT_EQ(t->ping_policy.max_ping_strikes, 2); |
||||
grpc_transport_destroy(&t->base); |
||||
} |
||||
|
||||
TEST_F(ConfigurationTest, ServerKeepaliveExplicitArgs) { |
||||
ExecCtx exec_ctx; |
||||
args_ = args_.Set(GRPC_ARG_KEEPALIVE_TIME_MS, 20000); |
||||
args_ = args_.Set(GRPC_ARG_KEEPALIVE_TIMEOUT_MS, 10000); |
||||
args_ = args_.Set(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS, true); |
||||
args_ = args_.Set(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA, 3); |
||||
args_ = |
||||
args_.Set(GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS, 20000); |
||||
args_ = args_.Set(GRPC_ARG_HTTP2_MAX_PING_STRIKES, 0); |
||||
grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>( |
||||
grpc_create_chttp2_transport(args_, mock_endpoint_, /*is_client=*/false)); |
||||
EXPECT_EQ(t->keepalive_time, Duration::Seconds(20)); |
||||
EXPECT_EQ(t->keepalive_timeout, Duration::Seconds(10)); |
||||
EXPECT_EQ(t->keepalive_permit_without_calls, true); |
||||
EXPECT_EQ(t->ping_policy.max_pings_without_data, 3); |
||||
EXPECT_EQ(t->ping_policy.min_recv_ping_interval_without_data, |
||||
Duration::Seconds(20)); |
||||
EXPECT_EQ(t->ping_policy.max_ping_strikes, 0); |
||||
grpc_transport_destroy(&t->base); |
||||
} |
||||
|
||||
// This test modifies the defaults of the client side settings, so it would
|
||||
// affect any test that is run after this.
|
||||
// TODO(yashykt): If adding more client side tests after this, add a reset to
|
||||
// defaults function.
|
||||
TEST_F(ConfigurationTest, ModifyClientDefaults) { |
||||
ExecCtx exec_ctx; |
||||
// Note that we are creating a new args object to override the defaults.
|
||||
ChannelArgs args = args_.Set(GRPC_ARG_KEEPALIVE_TIME_MS, 20000); |
||||
args = args.Set(GRPC_ARG_KEEPALIVE_TIMEOUT_MS, 10000); |
||||
args = args.Set(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS, true); |
||||
args = args.Set(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA, 3); |
||||
grpc_chttp2_config_default_keepalive_args(args, /*is_client=*/true); |
||||
// Note that we are using the original args_ object for creating the transport
|
||||
// which does not override the defaults.
|
||||
grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>( |
||||
grpc_create_chttp2_transport(args_, mock_endpoint_, /*is_client=*/true)); |
||||
EXPECT_EQ(t->keepalive_time, Duration::Seconds(20)); |
||||
EXPECT_EQ(t->keepalive_timeout, Duration::Seconds(10)); |
||||
EXPECT_EQ(t->keepalive_permit_without_calls, true); |
||||
EXPECT_EQ(t->ping_policy.max_pings_without_data, 3); |
||||
grpc_transport_destroy(&t->base); |
||||
} |
||||
|
||||
// This test modifies the defaults of the client side settings, so it would
|
||||
// affect any test that is run after this.
|
||||
// TODO(yashykt): If adding more server side tests after this, add a reset to
|
||||
// defaults function.
|
||||
TEST_F(ConfigurationTest, ModifyServerDefaults) { |
||||
ExecCtx exec_ctx; |
||||
// Note that we are creating a new args object to override the defaults.
|
||||
ChannelArgs args = args_.Set(GRPC_ARG_KEEPALIVE_TIME_MS, 20000); |
||||
args = args.Set(GRPC_ARG_KEEPALIVE_TIMEOUT_MS, 10000); |
||||
args = args.Set(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS, true); |
||||
args = args.Set(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA, 3); |
||||
args = args.Set(GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS, 20000); |
||||
args = args.Set(GRPC_ARG_HTTP2_MAX_PING_STRIKES, 0); |
||||
grpc_chttp2_config_default_keepalive_args(args, /*is_client=*/false); |
||||
// Note that we are using the original args_ object for creating the transport
|
||||
// which does not override the defaults.
|
||||
grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>( |
||||
grpc_create_chttp2_transport(args_, mock_endpoint_, /*is_client=*/false)); |
||||
EXPECT_EQ(t->keepalive_time, Duration::Seconds(20)); |
||||
EXPECT_EQ(t->keepalive_timeout, Duration::Seconds(10)); |
||||
EXPECT_EQ(t->keepalive_permit_without_calls, true); |
||||
EXPECT_EQ(t->ping_policy.max_pings_without_data, 3); |
||||
EXPECT_EQ(t->ping_policy.min_recv_ping_interval_without_data, |
||||
Duration::Seconds(20)); |
||||
EXPECT_EQ(t->ping_policy.max_ping_strikes, 0); |
||||
grpc_transport_destroy(&t->base); |
||||
} |
||||
|
||||
} // namespace
|
||||
} // namespace grpc_core
|
||||
|
||||
int main(int argc, char** argv) { |
||||
::testing::InitGoogleTest(&argc, argv); |
||||
grpc::testing::TestEnvironment env(&argc, argv); |
||||
grpc_init(); |
||||
auto ret = RUN_ALL_TESTS(); |
||||
grpc_shutdown(); |
||||
return ret; |
||||
} |
Loading…
Reference in new issue