Skip to content

Commit

Permalink
feat: install mocks for spanner, sql, pubsublite (#13548)
Browse files Browse the repository at this point in the history
  • Loading branch information
dbolduc committed Feb 2, 2024
1 parent 73698cf commit 48644a7
Show file tree
Hide file tree
Showing 10 changed files with 54 additions and 36 deletions.
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

0 comments on commit 48644a7

Please sign in to comment.