Skip to content
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
12 changes: 7 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.13)

set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules" ${CMAKE_MODULE_PATH} )
project(arbiter)

set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(Curl)

find_package(CURL)
if (CURL_FOUND)
message("Found curl")
find_package(Threads REQUIRED)
Expand All @@ -30,7 +33,6 @@ MESSAGE(${CMAKE_CXX_COMPILER_ID})
if (${CMAKE_CXX_COMPILER_ID} STREQUAL GNU OR
${CMAKE_CXX_COMPILER_ID} STREQUAL Clang)
add_definitions("-DUNIX")
add_definitions(${CMAKE_CXX_FLAGS} "-std=c++11")
add_definitions(${CMAKE_CXX_FLAGS} "-Wno-deprecated-declarations")
add_definitions(${CMAKE_CXX_FLAGS} "-Wall")
add_definitions(${CMAKE_CXX_FLAGS} "-pedantic")
Expand Down Expand Up @@ -73,8 +75,8 @@ endif()

target_link_libraries(arbiter PUBLIC ${SHLWAPI})

add_subdirectory(third/gtest-1.7.0)
include_directories(src third/gtest-1.7.0/include third/gtest-1.7.0)
include (${CMAKE_SOURCE_DIR}/cmake/gtest.cmake)

add_subdirectory(test)

install(TARGETS arbiter DESTINATION lib)
Expand Down
13 changes: 9 additions & 4 deletions arbiter/drivers/http.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include <algorithm>
#include <cstring>
#include <iostream>
#include <sstream>

#ifdef ARBITER_CUSTOM_NAMESPACE
namespace ARBITER_CUSTOM_NAMESPACE
Expand Down Expand Up @@ -110,7 +111,12 @@ std::vector<char> Http::getBinary(
std::vector<char> data;
if (!get(path, data, headers, query))
{
throw ArbiterError("Could not read from " + path);
std::stringstream oss;
oss << "Could not read from '" << path << "'.";

if (data.size())
oss << " Response message returned '" << std::string(data.data()) << "'";
throw ArbiterError(oss.str());
}
return data;
}
Expand Down Expand Up @@ -149,11 +155,10 @@ bool Http::get(
auto http(m_pool.acquire());
Response res(http.get(typedPath(path), headers, query));


data = res.data();
if (res.ok())
{
data = res.data();
good = true;
}

return good;
}
Expand Down
7 changes: 4 additions & 3 deletions arbiter/drivers/s3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -443,15 +443,15 @@ std::string S3::Config::extractBaseUrl(
for (const auto& partition : ep["partitions"])
{
if (
!partition.count("regions") ||
!partition.count("regions") ||
!partition.at("regions").count(region))
{
continue;
}

// Look for an explicit hostname for this region/service.
if (
partition.count("services") &&
partition.count("services") &&
partition["services"].count("s3") &&
partition["services"]["s3"].count("endpoints"))
{
Expand Down Expand Up @@ -661,9 +661,10 @@ bool S3::get(
apiV4.query(),
size ? *size : 0));

data = res.data();

if (res.ok())
{
data = res.data();
return true;
}

Expand Down
86 changes: 86 additions & 0 deletions cmake/gtest.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# CMake configuration stolen from PROJ unit tests
# External GTest provided by (e.g.) libgtest-dev

set(MIN_GTest_VERSION "1.15.0")

if(NOT CMAKE_REQUIRED_QUIET)
# CMake 3.17+ use CHECK_START/CHECK_PASS/CHECK_FAIL
message(STATUS "Looking for GTest")
endif()
find_package(GTest QUIET CONFIG)
set(USE_EXTERNAL_GTEST_DEFAULT OFF)
if(GTest_FOUND)
if(NOT CMAKE_REQUIRED_QUIET)
message(STATUS "Looking for GTest - found (${GTest_VERSION})")
endif()
if(GTest_VERSION VERSION_LESS MIN_GTest_VERSION)
message(WARNING "External GTest version is too old")
else()
set(USE_EXTERNAL_GTEST_DEFAULT ON)
endif()
else()
if(NOT CMAKE_REQUIRED_QUIET)
message(STATUS "Looking for GTest - not found")
endif()
endif()

option(USE_EXTERNAL_GTEST
"Compile against external GTest"
${USE_EXTERNAL_GTEST_DEFAULT}
)

if(USE_EXTERNAL_GTEST)

if(NOT GTest_FOUND)
message(SEND_ERROR "External GTest >= ${MIN_GTest_VERSION} not found, \
skipping some tests")
# exit the remainder of this file
return()
endif()
message(STATUS "Using external GTest from build environment")

# CMake < 3.20.0 uses GTest::GTest
# CMake >= 3.20 uses GTest::gtest, and deprecates GTest::GTest
# so for older CMake, create an alias from GTest::GTest to GTest::gtest
if(NOT TARGET GTest::gtest)
add_library(GTest::gtest INTERFACE IMPORTED)
set_target_properties(GTest::gtest PROPERTIES
INTERFACE_LINK_LIBRARIES "GTest::GTest")
endif()

else()

message(STATUS "Fetching GTest from GitHub ...")

# Add Google Test
#
# See https://github.com/google/googletest/blob/main/googletest/README.md

if(POLICY CMP0135)
cmake_policy(SET CMP0135 NEW) # for DOWNLOAD_EXTRACT_TIMESTAMP option
endif()

set(GTEST_VERSION "1.15.2")

include(FetchContent)
FetchContent_Declare(
googletest
URL https://github.com/google/googletest/archive/refs/tags/v${GTEST_VERSION}.zip
EXCLUDE_FROM_ALL # ignored before CMake 3.28
)

# For Windows: Prevent overriding the parent project's compiler/linker settings
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)

if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.28.0")
FetchContent_MakeAvailable(googletest)
else()
# Pre CMake 3.28 workaround to prevent installing files
FetchContent_GetProperties(googletest)
if(NOT googletest_POPULATED)
FetchContent_Populate(googletest)
add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR} EXCLUDE_FROM_ALL)
endif()
endif()
endif()

2 changes: 1 addition & 1 deletion test/unit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ INSTANTIATE_TEST_CASE_P(
ConfiguredTests,
DriverTest,
::testing::ValuesIn(tests));

GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(DriverTest);
int main(int argc, char** argv)
{
::testing::InitGoogleTest(&argc, argv);
Expand Down
157 changes: 0 additions & 157 deletions third/gtest-1.7.0/CHANGES

This file was deleted.

Loading
Loading