Skip to content

Commit a9df2cd

Browse files
committed
Convert all tests to use googletest
This change systematically removes the dependency to Boost.Test throughout the tests in libs/network/test/*. Most of the changes are mechanical, and functionally equivalent. We can actually start simplifying the test structure after this change gets pulled into the main repository.
1 parent fedcc09 commit a9df2cd

30 files changed

+937
-1300
lines changed

CMakeLists.txt

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# (See accompanying file LICENSE_1_0.txt or copy at
44
# http://www.boost.org/LICENSE_1_0.txt)
55

6-
cmake_minimum_required(VERSION 2.8)
6+
cmake_minimum_required(VERSION 3.0)
77
project(CPP-NETLIB)
88

99
option( CPP-NETLIB_BUILD_SHARED_LIBS "Build cpp-netlib as shared libraries." OFF )
@@ -45,9 +45,9 @@ add_definitions(-DBOOST_TEST_DYN_LINK)
4545
# Always use multi-threaded Boost libraries.
4646
set(Boost_USE_MULTI_THREADED ON)
4747

48-
find_package( Boost 1.57.0
49-
REQUIRED unit_test_framework system regex date_time thread filesystem
50-
program_options chrono atomic )
48+
find_package(Boost 1.57.0
49+
REQUIRED system regex date_time thread filesystem program_options chrono
50+
atomic)
5151

5252
if (CPP-NETLIB_ENABLE_HTTPS)
5353
find_package( OpenSSL )

libs/network/test/CMakeLists.txt

+2-7
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,7 @@ add_subdirectory(uri)
1010
add_subdirectory(http)
1111

1212
if (Boost_FOUND)
13-
set(
14-
TESTS
15-
message_test
16-
message_transform_test
17-
utils_thread_pool
13+
set(TESTS message_test message_transform_test utils_thread_pool
1814
# utils_base64_test -- turn on when ready.
1915
)
2016
foreach (test ${TESTS})
@@ -23,7 +19,7 @@ if (Boost_FOUND)
2319
PROPERTIES COMPILE_FLAGS "-Wall")
2420
endif()
2521
add_executable(cpp-netlib-${test} ${test}.cpp)
26-
add_dependencies(cpp-netlib-${test} cppnetlib-uri)
22+
add_dependencies(cpp-netlib-${test} cppnetlib-uri gtest_main)
2723
target_link_libraries(cpp-netlib-${test}
2824
${Boost_THREAD_LIBRARY} ${Boost_SYSTEM_LIBRARY}
2925
${CMAKE_THREAD_LIBS_INIT} cppnetlib-uri gtest_main)
@@ -44,6 +40,5 @@ if (Boost_FOUND)
4440

4541
# Also copy the server directory to the root of the build directory.
4642
file(COPY server DESTINATION ${CPP-NETLIB_BINARY_DIR}/libs/network/test/)
47-
4843
endif()
4944

libs/network/test/http/CMakeLists.txt

+51-40
Original file line numberDiff line numberDiff line change
@@ -12,82 +12,93 @@ if (OPENSSL_FOUND)
1212
endif()
1313

1414
if (Boost_FOUND)
15-
set ( TESTS
16-
response_incremental_parser_test
17-
request_incremental_parser_test
18-
request_linearize_test
19-
)
15+
set(TESTS response_incremental_parser_test request_incremental_parser_test
16+
request_linearize_test)
2017
foreach ( test ${TESTS} )
2118
add_executable(cpp-netlib-http-${test} ${test}.cpp)
22-
add_dependencies(cpp-netlib-http-${test}
19+
add_dependencies(cpp-netlib-http-${test} gtest_main
2320
cppnetlib-uri)
2421
target_link_libraries(cpp-netlib-http-${test}
25-
${Boost_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}
22+
${Boost_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} gtest_main
2623
cppnetlib-uri)
27-
if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU AND ${CMAKE_SYSTEM_NAME} MATCHES "Windows")
24+
if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU AND ${CMAKE_SYSTEM_NAME} MATCHES "Windows")
2825
target_link_libraries(cpp-netlib-http-${test} ws2_32)
2926
endif()
30-
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
31-
target_link_libraries(cpp-netlib-http-${test} rt)
32-
endif()
27+
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
28+
target_link_libraries(cpp-netlib-http-${test} rt)
29+
endif()
3330
set_target_properties(cpp-netlib-http-${test}
3431
PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CPP-NETLIB_BINARY_DIR}/tests)
3532
add_test(cpp-netlib-http-${test}
3633
${CPP-NETLIB_BINARY_DIR}/tests/cpp-netlib-http-${test})
3734
endforeach (test)
38-
set ( TESTS
39-
client_constructor_test
40-
client_get_test
41-
client_get_different_port_test
42-
client_get_timeout_test
43-
client_get_streaming_test
44-
)
35+
set(TESTS client_constructor_test client_get_test
36+
client_get_different_port_test client_get_timeout_test
37+
client_get_streaming_test)
4538
foreach ( test ${TESTS} )
4639
add_executable(cpp-netlib-http-${test} ${test}.cpp)
47-
add_dependencies(cpp-netlib-http-${test}
48-
cppnetlib-uri
49-
cppnetlib-client-connections)
50-
target_link_libraries(cpp-netlib-http-${test}
51-
${Boost_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}
52-
cppnetlib-uri
53-
cppnetlib-client-connections)
40+
add_dependencies(cpp-netlib-http-${test} cppnetlib-uri
41+
cppnetlib-client-connections gtest_main)
42+
target_link_libraries(cpp-netlib-http-${test} ${Boost_LIBRARIES}
43+
${CMAKE_THREAD_LIBS_INIT} cppnetlib-uri gtest_main cppnetlib-client-connections)
5444
if (OPENSSL_FOUND)
5545
target_link_libraries(cpp-netlib-http-${test} ${OPENSSL_LIBRARIES})
5646
endif()
57-
if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU AND ${CMAKE_SYSTEM_NAME} MATCHES "Windows")
47+
if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU AND ${CMAKE_SYSTEM_NAME} MATCHES "Windows")
5848
target_link_libraries(cpp-netlib-http-${test} ws2_32)
5949
endif()
60-
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
61-
target_link_libraries(cpp-netlib-http-${test} rt)
62-
endif()
50+
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
51+
target_link_libraries(cpp-netlib-http-${test} rt)
52+
endif()
6353
set_target_properties(cpp-netlib-http-${test}
6454
PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CPP-NETLIB_BINARY_DIR}/tests)
6555
add_test(cpp-netlib-http-${test}
6656
${CPP-NETLIB_BINARY_DIR}/tests/cpp-netlib-http-${test})
6757
endforeach (test)
6858

69-
set ( SERVER_API_TESTS
70-
server_constructor_test
71-
server_async_run_stop_concurrency
72-
server_header_parser_test
73-
)
74-
foreach ( test ${SERVER_API_TESTS} )
59+
set(SERVER_API_TESTS server_constructor_test
60+
server_header_parser_test)
61+
foreach (test ${SERVER_API_TESTS})
7562
add_executable(cpp-netlib-http-${test} ${test}.cpp)
7663
add_dependencies(cpp-netlib-http-${test} cppnetlib-server-parsers)
77-
target_link_libraries(cpp-netlib-http-${test} ${Boost_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} cppnetlib-server-parsers)
64+
target_link_libraries(cpp-netlib-http-${test} ${Boost_LIBRARIES}
65+
${CMAKE_THREAD_LIBS_INIT} cppnetlib-server-parsers gtest_main)
7866
if (OPENSSL_FOUND)
7967
target_link_libraries(cpp-netlib-http-${test} ${OPENSSL_LIBRARIES})
8068
endif()
81-
if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU AND ${CMAKE_SYSTEM_NAME} MATCHES "Windows")
69+
if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU AND ${CMAKE_SYSTEM_NAME} MATCHES "Windows")
8270
target_link_libraries(cpp-netlib-http-${test} ws2_32 wsock32)
8371
endif()
84-
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
85-
target_link_libraries(cpp-netlib-http-${test} rt)
86-
endif()
72+
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
73+
target_link_libraries(cpp-netlib-http-${test} rt)
74+
endif()
8775
set_target_properties(cpp-netlib-http-${test}
8876
PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CPP-NETLIB_BINARY_DIR}/tests)
8977
add_test(cpp-netlib-http-${test}
9078
${CPP-NETLIB_BINARY_DIR}/tests/cpp-netlib-http-${test})
9179
endforeach (test)
9280

81+
# Add the server start/stop concurrency test
82+
add_executable(cpp-netlib-http-server_async_run_stop_concurrency
83+
server_async_run_stop_concurrency.cpp)
84+
add_dependencies(cpp-netlib-http-server_async_run_stop_concurrency
85+
cppnetlib-server-parsers)
86+
target_link_libraries(cpp-netlib-http-server_async_run_stop_concurrency
87+
${Boost_LIBRARIES} cppnetlib-server-parsers)
88+
if (OPENSSL_FOUND)
89+
target_link_libraries(cpp-netlib-http-server_async_run_stop_concurrency
90+
${OPENSSL_LIBRARIES})
91+
endif()
92+
if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU
93+
AND ${CMAKE_SYSTEM_NAME} MATCHES "Windows")
94+
target_link_libraries(cpp-netlib-http-server_async_run_stop_concurrency
95+
ws2_32 wsock32)
96+
endif()
97+
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
98+
target_link_libraries(cpp-netlib-http-server_async_run_stop_concurrency rt)
99+
endif()
100+
set_target_properties(cpp-netlib-http-server_async_run_stop_concurrency
101+
PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CPP-NETLIB_BINARY_DIR}/tests)
102+
add_test(cpp-netlib-http-server_async_run_stop_concurrency
103+
${CPP-NETLIB_BINARY_DIR}/tests/cpp-netlib-http-server_async_run_stop_concurrency)
93104
endif()

libs/network/test/http/client_constructor_test.cpp

+16-14
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,35 @@
11

22
// Copyright 2010 Dean Michael Berris.
3+
// Copyright 2015 Google, Inc.
34
// Distributed under the Boost Software License, Version 1.0.
45
// (See accompanying file LICENSE_1_0.txt or copy at
56
// http://www.boost.org/LICENSE_1_0.txt)
67

7-
#define BOOST_TEST_MODULE HTTP 1.0 Client Constructor Test
8+
// Migrated from using Boost.Test to using googletest intead.
9+
#include <gtest/gtest.h>
10+
811
#include <boost/network/include/http/client.hpp>
9-
#include <boost/test/unit_test.hpp>
1012
#include "client_types.hpp"
1113

1214
namespace http = boost::network::http;
1315

14-
BOOST_AUTO_TEST_CASE_TEMPLATE(http_client_constructor_test, client,
15-
client_types) {
16-
typename client::options options;
17-
client instance;
18-
client instance2(
16+
TYPED_TEST_CASE(HTTPClientTest, ClientTypes);
17+
18+
TYPED_TEST(HTTPClientTest, Constructors) {
19+
typename TypeParam::options options;
20+
TypeParam instance;
21+
TypeParam instance2(
1922
options.io_service(boost::make_shared<boost::asio::io_service>()));
2023
}
2124

22-
BOOST_AUTO_TEST_CASE_TEMPLATE(http_cient_constructor_params_test, client,
23-
client_types) {
24-
typename client::options options;
25-
client instance(options.follow_redirects(true).cache_resolved(true));
26-
client instance2(
25+
TYPED_TEST(HTTPClientTest, ConstructorsWithOptions) {
26+
typename TypeParam::options options;
27+
TypeParam instance(options.follow_redirects(true).cache_resolved(true));
28+
TypeParam instance2(
2729
options.openssl_certificate("foo").openssl_verify_path("bar"));
28-
client instance3(
30+
TypeParam instance3(
2931
options.openssl_certificate_file("foo").openssl_private_key_file("bar"));
30-
client instance4(
32+
TypeParam instance4(
3133
options.follow_redirects(true)
3234
.io_service(boost::make_shared<boost::asio::io_service>())
3335
.cache_resolved(true));
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,24 @@
11

22
// Copyright 2010 Dean Michael Berris.
3+
// Copyright 2016 Google, Inc.
34
// Distributed under the Boost Software License, Version 1.0.
45
// (See accompanying file LICENSE_1_0.txt or copy at
56
// http://www.boost.org/LICENSE_1_0.txt)
67

7-
#define BOOST_TEST_MODULE HTTP Client Get Different Port Test
8+
#include <gtest/gtest.h>
89
#include <boost/network/include/http/client.hpp>
9-
#include <boost/test/unit_test.hpp>
1010
#include "client_types.hpp"
1111

1212
namespace net = boost::network;
1313
namespace http = boost::network::http;
1414

15-
BOOST_AUTO_TEST_CASE_TEMPLATE(http_get_test_different_port, client,
16-
client_types) {
17-
typename client::request request("http://www.boost.org:80/");
18-
client client_;
19-
typename client::response response_ = client_.get(request);
15+
TYPED_TEST_CASE(HTTPClientTest, ClientTypes);
16+
17+
TYPED_TEST(HTTPClientTest, GetDifferentPort) {
18+
TypeParam client;
19+
typename TypeParam::request r("http://www.boost.org:80/");
20+
auto response_ = client.get(r);
2021
auto range = headers(response_)["Content-Type"];
21-
BOOST_CHECK(boost::begin(range) != boost::end(range));
22-
BOOST_CHECK(body(response_).size() != 0);
22+
EXPECT_TRUE(boost::begin(range) != boost::end(range));
23+
EXPECT_NE(0, body(response_).size());
2324
}
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,46 @@
11
// Copyright 2011 Dean Michael Berris &lt;[email protected]&gt;.
2+
// Copyright 2016 Google, Inc.
23
// Distributed under the Boost Software License, Version 1.0.
34
// (See accompanying file LICENSE_1_0.txt or copy at
45
// http://www.boost.org/LICENSE_1_0.txt)
56

6-
#define BOOST_TEST_MODULE HTTP 1.1 Get Streaming Test
7+
#include <gtest/gtest.h>
78
#include <boost/network/include/http/client.hpp>
8-
#include <boost/test/unit_test.hpp>
99
#include <iostream>
1010
#include "client_types.hpp"
1111

1212
namespace net = boost::network;
1313
namespace http = boost::network::http;
1414

1515
struct body_handler {
16-
1716
explicit body_handler(std::string& body) : body(body) {}
1817

1918
BOOST_NETWORK_HTTP_BODY_CALLBACK(operator(), range, error) {
19+
(void)error;
2020
body.append(boost::begin(range), boost::end(range));
2121
}
2222

2323
std::string& body;
2424
};
2525

26-
BOOST_AUTO_TEST_CASE_TEMPLATE(http_client_get_streaming_test, client,
27-
async_only_client_types) {
28-
typename client::request request("http://www.boost.org");
29-
typename client::response response;
30-
typename client::string_type body_string;
31-
typename client::string_type dummy_body;
26+
TYPED_TEST_CASE(HTTPClientTest, ClientTypes);
27+
28+
TYPED_TEST(HTTPClientTest, GetStreamingTest) {
29+
typename TypeParam::request request("http://www.boost.org");
30+
typename TypeParam::response response;
31+
typename TypeParam::string_type body_string;
32+
typename TypeParam::string_type dummy_body;
3233
body_handler handler_instance(body_string);
3334
{
34-
client client_;
35-
BOOST_CHECK_NO_THROW(response = client_.get(request, handler_instance));
35+
TypeParam client_;
36+
ASSERT_NO_THROW(response = client_.get(request, handler_instance));
3637
auto range = headers(response)["Content-Type"];
37-
BOOST_CHECK(!boost::empty(range));
38-
BOOST_CHECK_EQUAL(body(response).size(), 0u);
39-
BOOST_CHECK_EQUAL(response.version().substr(0, 7), std::string("HTTP/1."));
40-
BOOST_CHECK_EQUAL(response.status(), 200u);
41-
BOOST_CHECK_EQUAL(response.status_message(), std::string("OK"));
38+
ASSERT_TRUE(!boost::empty(range));
39+
EXPECT_EQ(0u, body(response).size());
40+
EXPECT_EQ("HTTP/1.", response.version().substr(0, 7));
41+
EXPECT_EQ(200u, response.status());
42+
EXPECT_EQ("OK", response.status_message());
4243
dummy_body = body(response);
4344
}
44-
BOOST_CHECK(dummy_body == typename client::string_type());
45+
EXPECT_EQ(dummy_body, typename TypeParam::string_type());
4546
}

0 commit comments

Comments
 (0)