move segfault test to cpp

pull/35247/head
Gregory Cooke 1 year ago
parent 9247cae710
commit 25f3dc7f27
  1. 34
      CMakeLists.txt
  2. 10
      build_autogenerated.yaml
  3. 2
      src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc
  4. 18
      test/core/security/BUILD
  5. 58
      test/core/security/grpc_tls_directory_reloader_crl_provider_test.cc
  6. 14
      test/cpp/end2end/crl_provider_test.cc
  7. 24
      tools/run_tests/generated/tests.json

34
CMakeLists.txt generated

@ -1069,7 +1069,6 @@ if(gRPC_BUILD_TESTS)
add_dependencies(buildtests_cxx grpc_tls_credentials_options_comparator_test)
add_dependencies(buildtests_cxx grpc_tls_credentials_options_test)
add_dependencies(buildtests_cxx grpc_tls_crl_provider_test)
add_dependencies(buildtests_cxx grpc_tls_directory_reloader_crl_provider_test)
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX)
add_dependencies(buildtests_cxx grpc_tool_test)
endif()
@ -13730,39 +13729,6 @@ target_link_libraries(grpc_tls_crl_provider_test
)
endif()
if(gRPC_BUILD_TESTS)
add_executable(grpc_tls_directory_reloader_crl_provider_test
test/core/security/grpc_tls_directory_reloader_crl_provider_test.cc
)
target_compile_features(grpc_tls_directory_reloader_crl_provider_test PUBLIC cxx_std_14)
target_include_directories(grpc_tls_directory_reloader_crl_provider_test
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/include
${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
${_gRPC_RE2_INCLUDE_DIR}
${_gRPC_SSL_INCLUDE_DIR}
${_gRPC_UPB_GENERATED_DIR}
${_gRPC_UPB_GRPC_GENERATED_DIR}
${_gRPC_UPB_INCLUDE_DIR}
${_gRPC_XXHASH_INCLUDE_DIR}
${_gRPC_ZLIB_INCLUDE_DIR}
third_party/googletest/googletest/include
third_party/googletest/googletest
third_party/googletest/googlemock/include
third_party/googletest/googlemock
${_gRPC_PROTO_GENS_DIR}
)
target_link_libraries(grpc_tls_directory_reloader_crl_provider_test
${_gRPC_ALLTARGETS_LIBRARIES}
gtest
grpc_test_util
)
endif()
if(gRPC_BUILD_TESTS)
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX)

@ -10221,16 +10221,6 @@ targets:
- gtest
- protobuf
- grpc_test_util
- name: grpc_tls_directory_reloader_crl_provider_test
gtest: true
build: test
language: c++
headers: []
src:
- test/core/security/grpc_tls_directory_reloader_crl_provider_test.cc
deps:
- gtest
- grpc_test_util
- name: grpc_tool_test
gtest: true
build: test

@ -165,7 +165,7 @@ DirectoryReloaderCrlProvider::DirectoryReloaderCrlProvider(
crl_directory_(std::move(directory_impl)) {
// Must be called before `GetDefaultEventEngine`
grpc_init();
if (event_engine_ == nullptr) {
if (event_engine == nullptr) {
event_engine_ = grpc_event_engine::experimental::GetDefaultEventEngine();
} else {
event_engine_ = std::move(event_engine);

@ -586,21 +586,3 @@ grpc_cc_test(
"//test/core/util:grpc_test_util",
],
)
grpc_cc_test(
name = "grpc_tls_directory_reloader_crl_provider_test",
srcs = ["grpc_tls_directory_reloader_crl_provider_test.cc"],
data = [
"//test/core/tsi/test_creds/crl_data:ca.pem",
"//test/core/tsi/test_creds/crl_data/crls:ab06acdd.r0",
"//test/core/tsi/test_creds/crl_data/crls:b9322cac.r0",
"//test/core/tsi/test_creds/crl_data/crls:current.crl",
"//test/core/tsi/test_creds/crl_data/crls:intermediate.crl",
],
external_deps = ["gtest"],
language = "C++",
deps = [
"//src/core:grpc_crl_provider",
"//test/core/util:grpc_test_util",
],
)

@ -1,58 +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 <chrono>
#include <gtest/gtest.h>
#include "absl/status/statusor.h"
#include "absl/strings/string_view.h"
#include <grpc/grpc.h>
#include <grpc/grpc_crl_provider.h>
#include "src/core/lib/security/credentials/tls/grpc_tls_crl_provider.h"
#include "test/core/util/test_config.h"
static constexpr absl::string_view kCrlDirectory =
"test/core/tsi/test_creds/crl_data/crls";
namespace grpc_core {
namespace testing {
// This test is needed separately from the tests in grpc_tls_crl_provider_test
// because the DirectoryReloaderCrlProvider gets the default event engine on
// construction. To get the default event engine, grpc_init must have been
// called, otherwise a segfault occurs. This test checks that no segfault occurs
// while getting the default event engine during the construction of a
// DirectoryReloaderCrlProvider.
TEST(DirectoryReloaderCrlProviderTestNoFixture, Construction) {
auto provider = experimental::CreateDirectoryReloaderCrlProvider(
kCrlDirectory, std::chrono::seconds(60), nullptr);
ASSERT_TRUE(provider.ok()) << provider.status();
}
} // namespace testing
} // namespace grpc_core
int main(int argc, char** argv) {
grpc::testing::TestEnvironment env(&argc, argv);
::testing::InitGoogleTest(&argc, argv);
int ret = RUN_ALL_TESTS();
return ret;
}

@ -62,6 +62,20 @@ const char* kRootCrlPath = "test/core/tsi/test_creds/crl_data/crls/current.crl";
const char* kCrlDirectoryPath = "test/core/tsi/test_creds/crl_data/crls/";
constexpr char kMessage[] = "Hello";
// This test must be at the top of the file because the
// DirectoryReloaderCrlProvider gets the default event engine on construction.
// To get the default event engine, grpc_init must have been called, otherwise a
// segfault occurs. This test checks that no segfault occurs while getting the
// default event engine during the construction of a
// DirectoryReloaderCrlProvider. `grpc_init` is global state, so if another test
// runs first, then this test could pass because of another test modifying the
// global state
TEST(DirectoryReloaderCrlProviderTestNoFixture, Construction) {
auto provider = grpc_core::experimental::CreateDirectoryReloaderCrlProvider(
kCrlDirectoryPath, std::chrono::seconds(60), nullptr);
ASSERT_TRUE(provider.ok()) << provider.status();
}
class CrlProviderTest : public ::testing::Test {
protected:
void RunServer(absl::Notification* notification, absl::string_view server_key,

@ -4325,30 +4325,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_tls_directory_reloader_crl_provider_test",
"platforms": [
"linux",
"mac",
"posix",
"windows"
],
"uses_polling": true
},
{
"args": [],
"benchmark": false,

Loading…
Cancel
Save