Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: install mocks for spanner, sql, pubsublite #13548

Merged
merged 5 commits into from
Feb 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions ci/etc/expected_install_directories
Original file line number Diff line number Diff line change
Expand Up @@ -1354,6 +1354,7 @@
./lib64/cmake/google_cloud_cpp_pubsub
./lib64/cmake/google_cloud_cpp_pubsub_mocks
./lib64/cmake/google_cloud_cpp_pubsublite
./lib64/cmake/google_cloud_cpp_pubsublite_mocks
./lib64/cmake/google_cloud_cpp_rapidmigrationassessment
./lib64/cmake/google_cloud_cpp_rapidmigrationassessment_mocks
./lib64/cmake/google_cloud_cpp_recaptchaenterprise
Expand Down Expand Up @@ -1391,9 +1392,11 @@
./lib64/cmake/google_cloud_cpp_shell
./lib64/cmake/google_cloud_cpp_shell_mocks
./lib64/cmake/google_cloud_cpp_spanner
./lib64/cmake/google_cloud_cpp_spanner_mocks
./lib64/cmake/google_cloud_cpp_speech
./lib64/cmake/google_cloud_cpp_speech_mocks
./lib64/cmake/google_cloud_cpp_sql
./lib64/cmake/google_cloud_cpp_sql_mocks
./lib64/cmake/google_cloud_cpp_storage
./lib64/cmake/google_cloud_cpp_storagecontrol
./lib64/cmake/google_cloud_cpp_storagecontrol_mocks
Expand Down
1 change: 1 addition & 0 deletions ci/verify_current_targets/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ set(ga_libraries
pubsub
pubsub_mocks
spanner
spanner_mocks
storage)

# Define experimental libraries. The only difference is the name of the CMake
Expand Down
7 changes: 5 additions & 2 deletions generator/standalone_main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -168,8 +168,11 @@ int WriteInstallDirectories(
auto const lib = LibraryName(product_path);
install_directories.push_back("./lib64/cmake/google_cloud_cpp_" + lib);
// TODO(#5782) - install mocks in libs with handwritten CMakeLists.txt
auto const handwritten_cmake = std::set<std::string>{
{"bigtable", "compute", "pubsublite", "spanner", "sql", "storage"}};
auto const handwritten_cmake = std::set<std::string>{{
"bigtable",
"compute",
"storage",
}};
if (!google::cloud::internal::Contains(handwritten_cmake, lib)) {
install_directories.push_back("./lib64/cmake/google_cloud_cpp_" + lib +
"_mocks");
Expand Down
4 changes: 2 additions & 2 deletions google/cloud/pubsublite/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ package(default_visibility = ["//visibility:private"])
licenses(["notice"]) # Apache 2.0

load(":google_cloud_cpp_pubsublite.bzl", "google_cloud_cpp_pubsublite_hdrs", "google_cloud_cpp_pubsublite_srcs")
load(":google_cloud_cpp_pubsublite_mocks.bzl", "google_cloud_cpp_pubsublite_mocks_hdrs", "google_cloud_cpp_pubsublite_mocks_srcs")
load(":google_cloud_cpp_pubsublite_mocks.bzl", "google_cloud_cpp_pubsublite_mocks_hdrs")
load(":pubsublite_testing.bzl", "pubsublite_testing_hdrs", "pubsublite_testing_srcs")
load(":pubsublite_unit_tests.bzl", "pubsublite_unit_tests")

Expand Down Expand Up @@ -49,7 +49,7 @@ filegroup(
cc_library(
name = "google_cloud_cpp_pubsublite_mocks",
testonly = True,
srcs = google_cloud_cpp_pubsublite_mocks_srcs,
srcs = [],
hdrs = google_cloud_cpp_pubsublite_mocks_hdrs,
visibility = ["//:__pkg__"],
deps = [
Expand Down
21 changes: 14 additions & 7 deletions google/cloud/pubsublite/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -203,18 +203,25 @@ create_bazel_config(google_cloud_cpp_pubsublite YEAR "2021")
# at least one .o file). Unfortunately INTERFACE libraries are a bit weird in
# that they need absolute paths for their sources.
add_library(google_cloud_cpp_pubsublite_mocks INTERFACE)
target_sources(
google_cloud_cpp_pubsublite_mocks
INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/mocks/mock_admin_connection.h
${CMAKE_CURRENT_SOURCE_DIR}/mocks/mock_topic_stats_connection.h)
set(google_cloud_cpp_pubsublite_mocks_hdrs
# cmake-format: sort
mocks/mock_admin_connection.h mocks/mock_topic_stats_connection.h)
export_list_to_bazel("google_cloud_cpp_pubsublite_mocks.bzl"
google_cloud_cpp_pubsublite_mocks_hdrs YEAR "2021")
foreach (file IN LISTS google_cloud_cpp_pubsublite_mocks_hdrs)
# We use a generator expression per the recommendation in:
# https://stackoverflow.com/a/62465051
list(APPEND mock_files
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/${file}>")
endforeach ()
target_sources(google_cloud_cpp_pubsublite_mocks INTERFACE ${mock_files})
target_link_libraries(
google_cloud_cpp_pubsublite_mocks
INTERFACE google-cloud-cpp::experimental-pubsublite GTest::gmock_main
GTest::gmock GTest::gtest)
set_target_properties(
google_cloud_cpp_pubsublite_mocks
PROPERTIES EXPORT_NAME google-cloud-cpp::experimental-pubsublite_mocks)
create_bazel_config(google_cloud_cpp_pubsublite_mocks YEAR "2021")
target_include_directories(
google_cloud_cpp_pubsublite_mocks
INTERFACE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
Expand Down Expand Up @@ -340,8 +347,6 @@ install(

google_cloud_cpp_install_headers("google_cloud_cpp_pubsublite"
"include/google/cloud/pubsublite")
google_cloud_cpp_install_headers("google_cloud_cpp_pubsublite_mocks"
"include/google/cloud/pubsublite")

google_cloud_cpp_add_pkgconfig(
pubsublite
Expand All @@ -366,3 +371,5 @@ install(
"${CMAKE_CURRENT_BINARY_DIR}/google_cloud_cpp_pubsublite-config-version.cmake"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/google_cloud_cpp_pubsublite"
COMPONENT google_cloud_cpp_development)

google_cloud_cpp_install_mocks(pubsublite "Pub/Sub Lite API")
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,9 @@
#
# DO NOT EDIT -- GENERATED BY CMake -- Change the CMakeLists.txt file if needed

"""Automatically generated source lists for google_cloud_cpp_pubsublite_mocks - DO NOT EDIT."""
"""Automatically generated unit tests list - DO NOT EDIT."""

google_cloud_cpp_pubsublite_mocks_hdrs = [
"mocks/mock_admin_connection.h",
"mocks/mock_topic_stats_connection.h",
]

google_cloud_cpp_pubsublite_mocks_srcs = [
]
4 changes: 2 additions & 2 deletions google/cloud/spanner/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ licenses(["notice"]) # Apache 2.0

load(":google_cloud_cpp_spanner.bzl", "google_cloud_cpp_spanner_hdrs", "google_cloud_cpp_spanner_srcs")
load(":google_cloud_cpp_spanner_rest.bzl", "google_cloud_cpp_spanner_rest_hdrs", "google_cloud_cpp_spanner_rest_srcs")
load(":google_cloud_cpp_spanner_mocks.bzl", "google_cloud_cpp_spanner_mocks_hdrs", "google_cloud_cpp_spanner_mocks_srcs")
load(":google_cloud_cpp_spanner_mocks.bzl", "google_cloud_cpp_spanner_mocks_hdrs")
load(":spanner_client_unit_tests.bzl", "spanner_client_unit_tests")
load(":spanner_client_benchmarks.bzl", "spanner_client_benchmarks")

Expand Down Expand Up @@ -76,7 +76,7 @@ filegroup(
cc_library(
name = "google_cloud_cpp_spanner_mocks",
testonly = True,
srcs = google_cloud_cpp_spanner_mocks_srcs,
srcs = [],
hdrs = google_cloud_cpp_spanner_mocks_hdrs,
visibility = [
":__subpackages__",
Expand Down
31 changes: 19 additions & 12 deletions google/cloud/spanner/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -299,22 +299,29 @@ endif ()
# at least one .o file). Unfortunately INTERFACE libraries are a bit weird in
# that they need absolute paths for their sources.
add_library(google_cloud_cpp_spanner_mocks INTERFACE)
target_sources(
google_cloud_cpp_spanner_mocks
INTERFACE
${CMAKE_CURRENT_SOURCE_DIR}/admin/mocks/mock_database_admin_connection.h
${CMAKE_CURRENT_SOURCE_DIR}/admin/mocks/mock_instance_admin_connection.h
${CMAKE_CURRENT_SOURCE_DIR}/mocks/mock_database_admin_connection.h
${CMAKE_CURRENT_SOURCE_DIR}/mocks/mock_instance_admin_connection.h
${CMAKE_CURRENT_SOURCE_DIR}/mocks/mock_spanner_connection.h
${CMAKE_CURRENT_SOURCE_DIR}/mocks/row.h)
set(google_cloud_cpp_spanner_mocks_hdrs
# cmake-format: sort
admin/mocks/mock_database_admin_connection.h
admin/mocks/mock_instance_admin_connection.h
mocks/mock_database_admin_connection.h
mocks/mock_instance_admin_connection.h
mocks/mock_spanner_connection.h
mocks/row.h)
export_list_to_bazel("google_cloud_cpp_spanner_mocks.bzl"
google_cloud_cpp_spanner_mocks_hdrs YEAR "2019")
foreach (file IN LISTS google_cloud_cpp_spanner_mocks_hdrs)
# We use a generator expression per the recommendation in:
# https://stackoverflow.com/a/62465051
list(APPEND mock_files
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/${file}>")
endforeach ()
target_sources(google_cloud_cpp_spanner_mocks INTERFACE ${mock_files})
target_link_libraries(
google_cloud_cpp_spanner_mocks
INTERFACE google-cloud-cpp::spanner GTest::gmock_main GTest::gmock
GTest::gtest)
set_target_properties(google_cloud_cpp_spanner_mocks
PROPERTIES EXPORT_NAME google-cloud-cpp::spanner_mocks)
create_bazel_config(google_cloud_cpp_spanner_mocks YEAR "2019")
target_include_directories(
google_cloud_cpp_spanner_mocks
INTERFACE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
Expand Down Expand Up @@ -540,8 +547,6 @@ install(

google_cloud_cpp_install_headers("google_cloud_cpp_spanner"
"include/google/cloud/spanner")
google_cloud_cpp_install_headers("google_cloud_cpp_spanner_mocks"
"include/google/cloud/spanner")

google_cloud_cpp_add_pkgconfig(
spanner
Expand Down Expand Up @@ -570,3 +575,5 @@ install(
"${CMAKE_CURRENT_BINARY_DIR}/google_cloud_cpp_spanner-config-version.cmake"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/google_cloud_cpp_spanner"
COMPONENT google_cloud_cpp_development)

google_cloud_cpp_install_mocks(spanner "Google Cloud Spanner")
5 changes: 1 addition & 4 deletions google/cloud/spanner/google_cloud_cpp_spanner_mocks.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
#
# DO NOT EDIT -- GENERATED BY CMake -- Change the CMakeLists.txt file if needed

"""Automatically generated source lists for google_cloud_cpp_spanner_mocks - DO NOT EDIT."""
"""Automatically generated unit tests list - DO NOT EDIT."""

google_cloud_cpp_spanner_mocks_hdrs = [
"admin/mocks/mock_database_admin_connection.h",
Expand All @@ -24,6 +24,3 @@ google_cloud_cpp_spanner_mocks_hdrs = [
"mocks/mock_spanner_connection.h",
"mocks/row.h",
]

google_cloud_cpp_spanner_mocks_srcs = [
]
9 changes: 6 additions & 3 deletions google/cloud/sql/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,10 @@ file(
list(SORT relative_mock_files)
set(mock_files)
foreach (file IN LISTS relative_mock_files)
list(APPEND mock_files "${CMAKE_CURRENT_SOURCE_DIR}/${file}")
# We use a generator expression per the recommendation in:
# https://stackoverflow.com/a/62465051
list(APPEND mock_files
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/${file}>")
endforeach ()
add_library(google_cloud_cpp_sql_mocks INTERFACE)
target_sources(google_cloud_cpp_sql_mocks INTERFACE ${mock_files})
Expand Down Expand Up @@ -149,8 +152,6 @@ google_cloud_cpp_install_proto_library_protos("google_cloud_cpp_sql_protos"
google_cloud_cpp_install_proto_library_headers("google_cloud_cpp_sql_protos")
google_cloud_cpp_install_headers("google_cloud_cpp_sql"
"include/google/cloud/sql")
google_cloud_cpp_install_headers("google_cloud_cpp_sql_mocks"
"include/google/cloud/sql")

google_cloud_cpp_add_pkgconfig(
sql
Expand Down Expand Up @@ -179,6 +180,8 @@ install(

external_googleapis_install_pc("google_cloud_cpp_sql_protos")

google_cloud_cpp_install_mocks(sql "Cloud SQL Admin API")

# google-cloud-cpp::sql must be defined before we can add the samples.
foreach (dir IN LISTS service_dirs)
if (BUILD_TESTING AND GOOGLE_CLOUD_CPP_ENABLE_CXX_EXCEPTIONS)
Expand Down
Loading