This is an automated email from the ASF dual-hosted git repository.

fgerlits pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git

commit eb899598ac0c5705c9762a2cd89b2a6498a2fa2f
Author: Gabor Gyimesi <[email protected]>
AuthorDate: Wed Jun 18 14:54:35 2025 +0200

    MINIFICPP-2580 Upgrade GCP and googletest libraries
    
    - Upgrade GCP library to v2.38.0
    - Upgrade googletest library to v1.17.0
    
    Signed-off-by: Ferenc Gerlits <[email protected]>
    Closes #1981
---
 cmake/GoogleCloudCpp.cmake                         |  33 ++---
 extensions/gcp/tests/CMakeLists.txt                |   3 +-
 .../tests/GCPCredentialsControllerServiceTests.cpp |  19 +--
 .../mock-client-without-decorators.patch           | 153 ---------------------
 .../google-cloud-cpp/mock_client_target.patch      |  26 ----
 .../google-cloud-cpp/remove-find_package.patch     |  15 +-
 6 files changed, 32 insertions(+), 217 deletions(-)

diff --git a/cmake/GoogleCloudCpp.cmake b/cmake/GoogleCloudCpp.cmake
index 855130a02..c02804455 100644
--- a/cmake/GoogleCloudCpp.cmake
+++ b/cmake/GoogleCloudCpp.cmake
@@ -22,27 +22,23 @@ include(Crc32c)
 
 set(PATCH_FILE_1 
"${CMAKE_SOURCE_DIR}/thirdparty/google-cloud-cpp/remove-find_package.patch")
 set(PATCH_FILE_2 
"${CMAKE_SOURCE_DIR}/thirdparty/google-cloud-cpp/nlohmann_lib_as_interface.patch")
-set(PATCH_FILE_3 
"${CMAKE_SOURCE_DIR}/thirdparty/google-cloud-cpp/mock-client-without-decorators.patch")
-set(PATCH_FILE_4 
"${CMAKE_SOURCE_DIR}/thirdparty/google-cloud-cpp/mock_client_target.patch")
-if (SKIP_TESTS)
-    set(PC ${Bash_EXECUTABLE}  -c "set -x &&\
-            (\\\"${Patch_EXECUTABLE}\\\" -p1 -R -s -f --dry-run -i 
\\\"${PATCH_FILE_1}\\\" || \\\"${Patch_EXECUTABLE}\\\" -p1 -N -i 
\\\"${PATCH_FILE_1}\\\") &&\
-            (\\\"${Patch_EXECUTABLE}\\\" -p1 -R -s -f --dry-run -i 
\\\"${PATCH_FILE_2}\\\" || \\\"${Patch_EXECUTABLE}\\\" -p1 -N -i 
\\\"${PATCH_FILE_2}\\\")")
-else()
+set(PC ${Bash_EXECUTABLE}  -c "set -x &&\
+        (\\\"${Patch_EXECUTABLE}\\\" -p1 -R -s -f --dry-run -i 
\\\"${PATCH_FILE_1}\\\" || \\\"${Patch_EXECUTABLE}\\\" -p1 -N -i 
\\\"${PATCH_FILE_1}\\\") &&\
+        (\\\"${Patch_EXECUTABLE}\\\" -p1 -R -s -f --dry-run -i 
\\\"${PATCH_FILE_2}\\\" || \\\"${Patch_EXECUTABLE}\\\" -p1 -N -i 
\\\"${PATCH_FILE_2}\\\")")
+
+set(GOOGLE_CLOUD_CPP_WITH_MOCKS OFF CACHE BOOL "" FORCE)
+if (NOT SKIP_TESTS)
     include(GoogleTest)
     include(FetchContent)
     FetchContent_Declare(
             googletest
-            URL            
https://github.com/google/googletest/archive/refs/tags/release-1.11.0.tar.gz
-            URL_HASH       
SHA256=b4870bf121ff7795ba20d20bcdd8627b8e088f2d1dab299a031c1034eddc93d5
+            URL            
https://github.com/google/googletest/releases/download/v1.17.0/googletest-1.17.0.tar.gz
+            URL_HASH       
SHA256=65fab701d9829d38cb77c14acdc431d2108bfdbf8979e40eb8ae567edf10b27c
     )
     set(BUILD_GMOCK ON CACHE BOOL "" FORCE)
     FetchContent_MakeAvailable(googletest)
-    set(PC ${Bash_EXECUTABLE}  -c "set -x &&\
-            (\\\"${Patch_EXECUTABLE}\\\" -p1 -R -s -f --dry-run -i 
\\\"${PATCH_FILE_1}\\\" || \\\"${Patch_EXECUTABLE}\\\" -p1 -N -i 
\\\"${PATCH_FILE_1}\\\") &&\
-            (\\\"${Patch_EXECUTABLE}\\\" -p1 -R -s -f --dry-run -i 
\\\"${PATCH_FILE_2}\\\" || \\\"${Patch_EXECUTABLE}\\\" -p1 -N -i 
\\\"${PATCH_FILE_2}\\\") &&\
-            (\\\"${Patch_EXECUTABLE}\\\" -p1 -R -s -f --dry-run -i 
\\\"${PATCH_FILE_3}\\\" || \\\"${Patch_EXECUTABLE}\\\" -p1 -N -i 
\\\"${PATCH_FILE_3}\\\") &&\
-            (\\\"${Patch_EXECUTABLE}\\\" -p1 -R -s -f --dry-run -i 
\\\"${PATCH_FILE_4}\\\" || \\\"${Patch_EXECUTABLE}\\\" -p1 -N -i 
\\\"${PATCH_FILE_4}\\\")")
+
+    set(GOOGLE_CLOUD_CPP_WITH_MOCKS ON CACHE BOOL "" FORCE)
 endif()
 
 set(GOOGLE_CLOUD_CPP_ENABLE storage CACHE INTERNAL storage-api)
@@ -50,13 +46,8 @@ set(GOOGLE_CLOUD_CPP_ENABLE_MACOS_OPENSSL_CHECK OFF CACHE 
INTERNAL macos-openssl
 set(BUILD_TESTING OFF CACHE INTERNAL testing-off)
 set(GOOGLE_CLOUD_CPP_ENABLE_WERROR OFF CACHE INTERNAL warnings-off)
 FetchContent_Declare(google-cloud-cpp
-        URL      
https://github.com/googleapis/google-cloud-cpp/archive/refs/tags/v2.10.1.tar.gz
-        URL_HASH 
SHA256=dbd8ff9cdda8b991049094c41d9125438098422658c77dc1afab524c589efeda
+        URL      
https://github.com/googleapis/google-cloud-cpp/archive/refs/tags/v2.38.0.tar.gz
+        URL_HASH 
SHA256=f1493b2dce9b379714342f2be7ccb483d70d13aac09d4a90ae3b4756693b72fc
         PATCH_COMMAND "${PC}")
 add_compile_definitions(_SILENCE_CXX20_REL_OPS_DEPRECATION_WARNING 
_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING CURL_STATICLIB)
 FetchContent_MakeAvailable(google-cloud-cpp)
-
-if (NOT SKIP_TESTS)
-    get_target_property(GMOCK_INC_DIR mock_google_cloud_client 
INTERFACE_INCLUDE_DIRECTORIES)
-    set_target_properties(mock_google_cloud_client PROPERTIES 
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${GMOCK_INC_DIR}")
-endif()
diff --git a/extensions/gcp/tests/CMakeLists.txt 
b/extensions/gcp/tests/CMakeLists.txt
index 9f77a7a3a..ed119eb1d 100644
--- a/extensions/gcp/tests/CMakeLists.txt
+++ b/extensions/gcp/tests/CMakeLists.txt
@@ -20,6 +20,7 @@ file(GLOB GCS_TESTS  "*.cpp")
 FOREACH(testfile ${GCS_TESTS})
     get_filename_component(testfilename "${testfile}" NAME_WE)
     add_minifi_executable("${testfilename}" "${testfile}")
+    target_compile_definitions(${testfilename} PRIVATE 
_SILENCE_CXX20_REL_OPS_DEPRECATION_WARNING)
     target_include_directories(${testfilename} PRIVATE BEFORE 
"${CMAKE_SOURCE_DIR}/extensions/standard-processors")
     target_include_directories(${testfilename} PRIVATE BEFORE 
"${CMAKE_SOURCE_DIR}/extensions/expression-language")
     target_include_directories(${testfilename} PRIVATE BEFORE 
"${CMAKE_SOURCE_DIR}/extensions/gcp")
@@ -32,7 +33,7 @@ FOREACH(testfile ${GCS_TESTS})
     target_link_libraries(${testfilename} minifi-gcp)
     target_link_libraries(${testfilename} minifi-standard-processors)
     target_link_libraries(${testfilename} 
minifi-expression-language-extensions)
-    target_link_libraries(${testfilename} gtest_main gmock 
mock_google_cloud_client)
+    target_link_libraries(${testfilename} gtest_main gmock)
 
     gtest_add_tests(TARGET "${testfilename}")
 ENDFOREACH()
diff --git a/extensions/gcp/tests/GCPCredentialsControllerServiceTests.cpp 
b/extensions/gcp/tests/GCPCredentialsControllerServiceTests.cpp
index dccddba08..eb71f1d28 100644
--- a/extensions/gcp/tests/GCPCredentialsControllerServiceTests.cpp
+++ b/extensions/gcp/tests/GCPCredentialsControllerServiceTests.cpp
@@ -38,15 +38,16 @@ std::string create_mock_service_json() {
   root.AddMember("type", "service_account", root.GetAllocator());
   root.AddMember("project_id", "mock_project_id", root.GetAllocator());
   root.AddMember("private_key_id", "my_private_key_id", root.GetAllocator());
-  root.AddMember("private_key", "-----BEGIN RSA PRIVATE KEY-----\n"
-                                
"MIIBOgIBAAJBAKNhMsOin3GDkg9A9e3MN/jP0JL+cV8GscR5QGZPgbHI5Jtkt+4k\n"
-                                
"MJvO5i54cq+55wFF2Ux7Eekg6wYY+/cbzNUCAwEAAQJAdUUyS+xxp+f5sgs9uyeH\n"
-                                
"0YdRPgF23O+QL+ecixNsk2/qsH195ngMNHWQCEUPGbl8O7Lu9W1tmMgeN0cFzpxl\n"
-                                
"rQIhANM6NG7uofCzwCvcuuc8PCjbhQPkYn+fuytdrr9V4AlrAiEAxgKkh+iU6CO8\n"
-                                
"hzrqeO1zNQijJ4wQ3uuxMST7gx9x0r8CIACPkQASZh+reoEjTuO6RzacjpfaDWDl\n"
-                                
"XavZzdL4OWYNAiEAxA41zoPRfJB1yQfixV2Gpsooka2zvqVrypctmUT3NI0CIH2c\n"
-                                "h9CRoySmUy6INeKMMgAPiVJB04exJvKPXr/DHi6D\n"
-                                "-----END RSA PRIVATE KEY-----", 
root.GetAllocator());
+  root.AddMember("private_key", "-----BEGIN PRIVATE KEY-----\n"
+                                
"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAo2Eyw6KfcYOSD0D1\n"
+                                
"7cw3+M/Qkv5xXwaxxHlAZk+Bscjkm2S37iQwm87mLnhyr7nnAUXZTHsR6SDrBhj7\n"
+                                
"9xvM1QIDAQABAkB1RTJL7HGn5/myCz27J4fRh1E+AXbc75Av55yLE2yTb+qwfX3m\n"
+                                
"eAw0dZAIRQ8ZuXw7su71bW2YyB43RwXOnGWtAiEA0zo0bu6h8LPAK9y65zw8KNuF\n"
+                                
"A+Rif5+7K12uv1XgCWsCIQDGAqSH6JToI7yHOup47XM1CKMnjBDe67ExJPuDH3HS\n"
+                                
"vwIgAI+RABJmH6t6gSNO47pHNpyOl9oNYOVdq9nN0vg5Zg0CIQDEDjXOg9F8kHXJ\n"
+                                
"B+LFXYamyiiRrbO+pWvKly2ZRPc0jQIgfZyH0JGjJKZTLog14owyAA+JUkHTh7Em\n"
+                                "8o9ev8MeLoM=\n"
+                                "-----END PRIVATE KEY-----", 
root.GetAllocator());
   root.AddMember("client_email", "my_client_email", root.GetAllocator());
   root.AddMember("client_id", "my_client_id", root.GetAllocator());
   rapidjson::StringBuffer buffer;
diff --git a/thirdparty/google-cloud-cpp/mock-client-without-decorators.patch 
b/thirdparty/google-cloud-cpp/mock-client-without-decorators.patch
deleted file mode 100644
index 5b5822a64..000000000
--- a/thirdparty/google-cloud-cpp/mock-client-without-decorators.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-diff --git a/google/cloud/storage/examples/storage_client_mock_samples.cc 
b/google/cloud/storage/examples/storage_client_mock_samples.cc
-index c34002cad1..cee48946a6 100644
---- a/google/cloud/storage/examples/storage_client_mock_samples.cc
-+++ b/google/cloud/storage/examples/storage_client_mock_samples.cc
-@@ -29,7 +29,7 @@ TEST(StorageMockingSamples, MockReadObject) {
- 
-   std::shared_ptr<gcs::testing::MockClient> mock =
-       std::make_shared<gcs::testing::MockClient>();
--  auto client = gcs::testing::ClientFromMock(mock);
-+  auto client = gcs::testing::UndecoratedClientFromMock(mock);
- 
-   std::string const text = "this is a mock http response";
-   std::size_t offset = 0;
-@@ -72,7 +72,7 @@ TEST(StorageMockingSamples, MockWriteObject) {
- 
-   std::shared_ptr<gcs::testing::MockClient> mock =
-       std::make_shared<gcs::testing::MockClient>();
--  auto client = gcs::testing::ClientFromMock(mock);
-+  auto client = gcs::testing::UndecoratedClientFromMock(mock);
- 
-   gcs::ObjectMetadata expected_metadata;
- 
-@@ -97,7 +97,7 @@ TEST(StorageMockingSamples, MockReadObjectFailure) {
- 
-   std::shared_ptr<gcs::testing::MockClient> mock =
-       std::make_shared<gcs::testing::MockClient>();
--  auto client = gcs::testing::ClientFromMock(mock);
-+  auto client = gcs::testing::UndecoratedClientFromMock(mock);
- 
-   std::string text = "this is a mock http response";
-   EXPECT_CALL(*mock, ReadObject)
-@@ -130,7 +130,7 @@ TEST(StorageMockingSamples, MockWriteObjectFailure) {
- 
-   std::shared_ptr<gcs::testing::MockClient> mock =
-       std::make_shared<gcs::testing::MockClient>();
--  auto client = gcs::testing::ClientFromMock(mock);
-+  auto client = gcs::testing::UndecoratedClientFromMock(mock);
- 
-   using gcs::internal::CreateResumableUploadResponse;
-   using gcs::internal::QueryResumableUploadResponse;
-diff --git a/google/cloud/storage/google_cloud_cpp_storage.cmake 
b/google/cloud/storage/google_cloud_cpp_storage.cmake
-index d475554d45..5e53e972a9 100644
---- a/google/cloud/storage/google_cloud_cpp_storage.cmake
-+++ b/google/cloud/storage/google_cloud_cpp_storage.cmake
-@@ -406,6 +406,7 @@ if (BUILD_TESTING)
-         testing/client_unit_test.cc
-         testing/client_unit_test.h
-         testing/constants.h
-+        testing/mock_client.cc
-         testing/mock_client.h
-         testing/mock_http_request.cc
-         testing/mock_http_request.h
-diff --git a/google/cloud/storage/storage_client_testing.bzl 
b/google/cloud/storage/storage_client_testing.bzl
-index e060351a27..5727e9f9a9 100644
---- a/google/cloud/storage/storage_client_testing.bzl
-+++ b/google/cloud/storage/storage_client_testing.bzl
-@@ -35,6 +35,7 @@ storage_client_testing_hdrs = [
- 
- storage_client_testing_srcs = [
-     "testing/client_unit_test.cc",
-+    "testing/mock_client.cc",
-     "testing/mock_http_request.cc",
-     "testing/object_integration_test.cc",
-     "testing/random_names.cc",
-diff --git a/google/cloud/storage/testing/mock_client.cc 
b/google/cloud/storage/testing/mock_client.cc
-new file mode 100644
-index 0000000000..88cd26aba3
---- /dev/null
-+++ b/google/cloud/storage/testing/mock_client.cc
-@@ -0,0 +1,29 @@
-+// Copyright 2023 Google LLC
-+//
-+// 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
-+//
-+//     https://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 "google/cloud/storage/testing/mock_client.h"
-+
-+namespace google {
-+namespace cloud {
-+namespace storage {
-+namespace testing {
-+
-+Client UndecoratedClientFromMock(std::shared_ptr<MockClient> mock) {
-+  return 
internal::ClientImplDetails::CreateWithoutDecorations(std::move(mock));
-+}
-+
-+}  // namespace testing
-+}  // namespace storage
-+}  // namespace cloud
-+}  // namespace google
-diff --git a/google/cloud/storage/testing/mock_client.h 
b/google/cloud/storage/testing/mock_client.h
-index 9d71ac94b9..6a763d82c6 100644
---- a/google/cloud/storage/testing/mock_client.h
-+++ b/google/cloud/storage/testing/mock_client.h
-@@ -185,7 +185,12 @@ class MockStreambuf : public 
internal::ObjectWriteStreambuf {
-   MOCK_METHOD(std::uint64_t, next_expected_byte, (), (const, override));
- };
- 
--/// Create a client configured to use the given mock.
-+/**
-+ * Create a client configured to use the given mock.
-+ *
-+ * Unless you specifically need to mock the behavior of retries, prefer
-+ * `UndecoratedClientFromMock()`.
-+ */
- template <typename... Policies>
- Client ClientFromMock(std::shared_ptr<MockClient> const& mock,
-                       Policies&&... p) {
-@@ -193,6 +198,13 @@ Client ClientFromMock(std::shared_ptr<MockClient> const& 
mock,
-       mock, std::forward<Policies>(p)...);
- }
- 
-+/**
-+ * Create a client configured to use the given mock.
-+ *
-+ * This client does not retry on transient errors.
-+ */
-+Client UndecoratedClientFromMock(std::shared_ptr<MockClient> mock);
-+
- }  // namespace testing
- }  // namespace storage
- }  // namespace cloud
-diff --git a/google/cloud/storage/testing/remove_stale_buckets_test.cc 
b/google/cloud/storage/testing/remove_stale_buckets_test.cc
-index 23c1962fcc..afc5e85c03 100644
---- a/google/cloud/storage/testing/remove_stale_buckets_test.cc
-+++ b/google/cloud/storage/testing/remove_stale_buckets_test.cc
-@@ -72,7 +72,7 @@ TEST(CleanupStaleBucketsTest, RemoveBucketContents) {
-   EXPECT_CALL(*mock, GetBucketMetadata)
-       .WillOnce(
-           Return(make_status_or(BucketMetadata{}.set_name("fake-bucket"))));
--  auto client = internal::ClientImplDetails::CreateWithoutDecorations(mock);
-+  auto client = UndecoratedClientFromMock(mock);
-   auto const actual = RemoveBucketAndContents(client, "fake-bucket");
-   EXPECT_STATUS_OK(actual);
- }
-@@ -114,7 +114,7 @@ TEST(CleanupStaleBucketsTest, RemoveStaleBuckets) {
-         return response;
-       });
- 
--  auto client = internal::ClientImplDetails::CreateWithoutDecorations(mock);
-+  auto client = UndecoratedClientFromMock(mock);
-   auto const actual = RemoveStaleBuckets(client, "matching", 
create_time_limit);
-   EXPECT_STATUS_OK(actual);
- }
diff --git a/thirdparty/google-cloud-cpp/mock_client_target.patch 
b/thirdparty/google-cloud-cpp/mock_client_target.patch
deleted file mode 100644
index 70b3af164..000000000
--- a/thirdparty/google-cloud-cpp/mock_client_target.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-diff --git a/google/cloud/storage/google_cloud_cpp_storage.cmake 
b/google/cloud/storage/google_cloud_cpp_storage.cmake
-index 5e53e972a9..7c1f1b6542 100644
---- a/google/cloud/storage/google_cloud_cpp_storage.cmake
-+++ b/google/cloud/storage/google_cloud_cpp_storage.cmake
-@@ -399,6 +399,21 @@ install(
-     DESTINATION include/google/cloud/storage/testing
-     COMPONENT google_cloud_cpp_development)
- 
-+add_library(
-+    mock_google_cloud_client # cmake-format: sort
-+    testing/mock_client.cc
-+    testing/mock_client.h)
-+target_link_libraries(
-+    mock_google_cloud_client
-+    PUBLIC  google-cloud-cpp::storage
-+            GTest::gmock)
-+google_cloud_cpp_add_common_options(mock_google_cloud_client)
-+target_include_directories(
-+    mock_google_cloud_client PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
-+                                    $<INSTALL_INTERFACE:include>)
-+target_compile_options(mock_google_cloud_client
-+                        PUBLIC ${GOOGLE_CLOUD_CPP_EXCEPTIONS_FLAG})
-+
- if (BUILD_TESTING)
-     add_library(
-         storage_client_testing # cmake-format: sort
diff --git a/thirdparty/google-cloud-cpp/remove-find_package.patch 
b/thirdparty/google-cloud-cpp/remove-find_package.patch
index 74c16ee98..100873ada 100644
--- a/thirdparty/google-cloud-cpp/remove-find_package.patch
+++ b/thirdparty/google-cloud-cpp/remove-find_package.patch
@@ -1,11 +1,12 @@
 diff --git a/CMakeLists.txt b/CMakeLists.txt
---- a/CMakeLists.txt   (revision 334e481f49c78c9e22aa48e59d044f6051ce99a7)
-+++ b/CMakeLists.txt   (date 1646227181483)
-@@ -251,7 +251,6 @@
- # Each subproject adds dependencies to this target to have their docs 
generated.
+index 257f1807e4..2fcb543167 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -218,7 +218,6 @@ add_custom_target(google-cloud-cpp-protos)
  add_custom_target(doxygen-docs)
-
+ add_custom_target(all-docfx)
+ 
 -find_package(absl CONFIG REQUIRED)
- if (${GOOGLE_CLOUD_CPP_ENABLE_GRPC})
+ if (GOOGLE_CLOUD_CPP_ENABLE_GRPC)
      find_package(gRPC REQUIRED QUIET)
-     find_package(ProtobufWithTargets REQUIRED QUIET)
+     # `Protobuf_PROTOC_EXECUTABLE` is pretty standard. It has been in use by

Reply via email to