blob: 5de9fc4a18bd50f32250f2dc83b588ec1484ceb3 [file] [log] [blame]
Pascal Bachd5f87e12014-12-12 15:59:17 +01001#
2# Licensed to the Apache Software Foundation (ASF) under one
3# or more contributor license agreements. See the NOTICE file
4# distributed with this work for additional information
5# regarding copyright ownership. The ASF licenses this file
6# to you under the Apache License, Version 2.0 (the
7# "License"); you may not use this file except in compliance
8# with the License. You may obtain a copy of the License at
9#
10# http://www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing,
13# software distributed under the License is distributed on an
14# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15# KIND, either express or implied. See the License for the
16# specific language governing permissions and limitations
17# under the License.
18#
19
Pascal Bachd5f87e12014-12-12 15:59:17 +010020# Find required packages
21set(Boost_USE_STATIC_LIBS ON) # Force the use of static boost test framework
Jim Kingb0b710a2015-07-28 13:31:27 -040022find_package(Boost 1.53.0 REQUIRED COMPONENTS chrono filesystem system thread unit_test_framework)
Nobuaki Sukegawac444fb52015-01-02 23:16:55 +090023include_directories(SYSTEM "${Boost_INCLUDE_DIRS}")
Pascal Bachd5f87e12014-12-12 15:59:17 +010024
25#Make sure gen-cpp files can be included
26include_directories("${CMAKE_CURRENT_BINARY_DIR}")
27
28# Create the thrift C++ test library
29set(testgencpp_SOURCES
30 gen-cpp/DebugProtoTest_types.cpp
31 gen-cpp/DebugProtoTest_types.h
32 gen-cpp/EnumTest_types.cpp
33 gen-cpp/EnumTest_types.h
34 gen-cpp/OptionalRequiredTest_types.cpp
35 gen-cpp/OptionalRequiredTest_types.h
36 gen-cpp/Recursive_types.cpp
37 gen-cpp/Recursive_types.h
38 gen-cpp/ThriftTest_types.cpp
39 gen-cpp/ThriftTest_types.h
40 gen-cpp/TypedefTest_types.cpp
41 gen-cpp/TypedefTest_types.h
42 ThriftTest_extras.cpp
43 DebugProtoTest_extras.cpp
44)
45
46add_library(testgencpp STATIC ${testgencpp_SOURCES})
Pascal Bachd5f87e12014-12-12 15:59:17 +010047
Nobuaki Sukegawa6304a532014-12-18 01:30:58 +090048set(testgencpp_cob_SOURCES
Pascal Bachd5f87e12014-12-12 15:59:17 +010049 gen-cpp/ChildService.cpp
50 gen-cpp/ChildService.h
Ben Craig1684c422015-04-24 08:52:44 -050051 gen-cpp/EmptyService.cpp
52 gen-cpp/EmptyService.h
Pascal Bachd5f87e12014-12-12 15:59:17 +010053 gen-cpp/ParentService.cpp
54 gen-cpp/ParentService.h
55 gen-cpp/proc_types.cpp
56 gen-cpp/proc_types.h
57)
Nobuaki Sukegawa6304a532014-12-18 01:30:58 +090058add_library(testgencpp_cob STATIC ${testgencpp_cob_SOURCES})
Pascal Bachd5f87e12014-12-12 15:59:17 +010059
60
61add_executable(Benchmark Benchmark.cpp)
62target_link_libraries(Benchmark testgencpp)
Jim King9de9b1f2015-04-30 16:03:34 -040063LINK_AGAINST_THRIFT_LIBRARY(Benchmark thrift)
Pascal Bachd5f87e12014-12-12 15:59:17 +010064add_test(NAME Benchmark COMMAND Benchmark)
65
66set(UnitTest_SOURCES
67 UnitTestMain.cpp
68 TMemoryBufferTest.cpp
69 TBufferBaseTest.cpp
70 Base64Test.cpp
71 ToStringTest.cpp
72 TypedefTest.cpp
Roger Meier3815e0b2015-04-04 16:26:30 +020073 TServerSocketTest.cpp
Ben Craig1684c422015-04-24 08:52:44 -050074 TServerTransportTest.cpp
Pascal Bachd5f87e12014-12-12 15:59:17 +010075)
76
Roger Meiera6b66332015-05-15 15:21:50 +020077if(NOT WITH_BOOSTTHREADS AND NOT WITH_STDTHREADS AND NOT MSVC)
Pascal Bachd5f87e12014-12-12 15:59:17 +010078 list(APPEND UnitTest_SOURCES RWMutexStarveTest.cpp)
79endif()
80
81add_executable(UnitTests ${UnitTest_SOURCES})
Jim King9de9b1f2015-04-30 16:03:34 -040082target_link_libraries(UnitTests testgencpp ${Boost_LIBRARIES})
83LINK_AGAINST_THRIFT_LIBRARY(UnitTests thrift)
Pascal Bachd5f87e12014-12-12 15:59:17 +010084add_test(NAME UnitTests COMMAND UnitTests)
ben-craigfae08e72015-07-15 11:34:47 -050085if ( MSVC )
86 # Disable C4503: decorated name length exceeded, name was truncated
87 # 'insanity' results in very long decorated names
88 set_property( TARGET UnitTests APPEND_STRING PROPERTY COMPILE_FLAGS /wd4503 )
89endif ( MSVC )
Pascal Bachd5f87e12014-12-12 15:59:17 +010090
ben-craigaf2d9c82015-07-16 08:11:21 -050091
92set( TInterruptTest_SOURCES TSocketInterruptTest.cpp )
93if (WIN32)
94 list(APPEND TInterruptTest_SOURCES
95 TPipeInterruptTest.cpp
96 )
97endif()
98add_executable(TInterruptTest ${TInterruptTest_SOURCES})
99target_link_libraries(TInterruptTest
Ben Craig1684c422015-04-24 08:52:44 -0500100 testgencpp
101 ${Boost_LIBRARIES}
Ben Craig1684c422015-04-24 08:52:44 -0500102)
ben-craigaf2d9c82015-07-16 08:11:21 -0500103LINK_AGAINST_THRIFT_LIBRARY(TInterruptTest thrift)
Thomas Bartelmess9e78ed82015-05-01 13:57:44 -0400104if (NOT MSVC AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
ben-craigaf2d9c82015-07-16 08:11:21 -0500105target_link_libraries(TInterruptTest -lrt)
Ben Craig1684c422015-04-24 08:52:44 -0500106endif ()
ben-craigaf2d9c82015-07-16 08:11:21 -0500107add_test(NAME TInterruptTest COMMAND TInterruptTest)
Ben Craig1684c422015-04-24 08:52:44 -0500108
109add_executable(TServerIntegrationTest TServerIntegrationTest.cpp)
110target_link_libraries(TServerIntegrationTest
111 testgencpp_cob
112 ${Boost_LIBRARIES}
113)
Jim King9de9b1f2015-04-30 16:03:34 -0400114LINK_AGAINST_THRIFT_LIBRARY(TServerIntegrationTest thrift)
Thomas Bartelmess9e78ed82015-05-01 13:57:44 -0400115if (NOT MSVC AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
Ben Craig1684c422015-04-24 08:52:44 -0500116target_link_libraries(TServerIntegrationTest -lrt)
117endif ()
118add_test(NAME TServerIntegrationTest COMMAND TServerIntegrationTest)
Pascal Bachd5f87e12014-12-12 15:59:17 +0100119
120if(WITH_ZLIB)
121add_executable(TransportTest TransportTest.cpp)
122target_link_libraries(TransportTest
123 testgencpp
Pascal Bachd5f87e12014-12-12 15:59:17 +0100124 ${Boost_LIBRARIES}
125 ${ZLIB_LIBRARIES}
126)
Jim King9de9b1f2015-04-30 16:03:34 -0400127LINK_AGAINST_THRIFT_LIBRARY(TransportTest thrift)
128LINK_AGAINST_THRIFT_LIBRARY(TransportTest thriftz)
Pascal Bachd5f87e12014-12-12 15:59:17 +0100129add_test(NAME TransportTest COMMAND TransportTest)
130
131add_executable(ZlibTest ZlibTest.cpp)
132target_link_libraries(ZlibTest
133 testgencpp
Pascal Bachd5f87e12014-12-12 15:59:17 +0100134 ${Boost_LIBRARIES}
135 ${ZLIB_LIBRARIES}
136)
Jim King9de9b1f2015-04-30 16:03:34 -0400137LINK_AGAINST_THRIFT_LIBRARY(ZlibTest thrift)
138LINK_AGAINST_THRIFT_LIBRARY(ZlibTest thriftz)
Pascal Bachd5f87e12014-12-12 15:59:17 +0100139add_test(NAME ZlibTest COMMAND ZlibTest)
140endif(WITH_ZLIB)
141
142
143add_executable(EnumTest EnumTest.cpp)
144target_link_libraries(EnumTest
145 testgencpp
146 ${Boost_LIBRARIES}
147)
Jim King9de9b1f2015-04-30 16:03:34 -0400148LINK_AGAINST_THRIFT_LIBRARY(EnumTest thrift)
Pascal Bachd5f87e12014-12-12 15:59:17 +0100149add_test(NAME EnumTest COMMAND EnumTest)
150
Jim King9de9b1f2015-04-30 16:03:34 -0400151if(HAVE_GETOPT_H)
Pascal Bachd5f87e12014-12-12 15:59:17 +0100152add_executable(TFileTransportTest TFileTransportTest.cpp)
153target_link_libraries(TFileTransportTest
154 testgencpp
155 ${Boost_LIBRARIES}
156)
Jim King9de9b1f2015-04-30 16:03:34 -0400157LINK_AGAINST_THRIFT_LIBRARY(TFileTransportTest thrift)
Pascal Bachd5f87e12014-12-12 15:59:17 +0100158add_test(NAME TFileTransportTest COMMAND TFileTransportTest)
Jim King9de9b1f2015-04-30 16:03:34 -0400159endif()
Pascal Bachd5f87e12014-12-12 15:59:17 +0100160
161add_executable(TFDTransportTest TFDTransportTest.cpp)
Claudius Heine5ef662b2015-06-24 10:03:50 +0200162target_link_libraries(TFDTransportTest
163 ${Boost_LIBRARIES}
164)
Jim King9de9b1f2015-04-30 16:03:34 -0400165LINK_AGAINST_THRIFT_LIBRARY(TFDTransportTest thrift)
Pascal Bachd5f87e12014-12-12 15:59:17 +0100166add_test(NAME TFDTransportTest COMMAND TFDTransportTest)
167
168add_executable(TPipedTransportTest TPipedTransportTest.cpp)
Claudius Heine5ef662b2015-06-24 10:03:50 +0200169target_link_libraries(TPipedTransportTest
170 ${Boost_LIBRARIES}
171)
Jim King9de9b1f2015-04-30 16:03:34 -0400172LINK_AGAINST_THRIFT_LIBRARY(TPipedTransportTest thrift)
Pascal Bachd5f87e12014-12-12 15:59:17 +0100173add_test(NAME TPipedTransportTest COMMAND TPipedTransportTest)
174
175set(AllProtocolsTest_SOURCES
176 AllProtocolTests.cpp
177 AllProtocolTests.tcc
178 GenericHelpers
179 )
180
181add_executable(AllProtocolsTest ${AllProtocolsTest_SOURCES})
Claudius Heine5ef662b2015-06-24 10:03:50 +0200182target_link_libraries(AllProtocolsTest
183 testgencpp
184 ${Boost_LIBRARIES}
185)
Jim King9de9b1f2015-04-30 16:03:34 -0400186LINK_AGAINST_THRIFT_LIBRARY(AllProtocolsTest thrift)
Pascal Bachd5f87e12014-12-12 15:59:17 +0100187add_test(NAME AllProtocolsTest COMMAND AllProtocolsTest)
188
Jim King9de9b1f2015-04-30 16:03:34 -0400189# The debug run-time in Windows asserts on isprint() with negative inputs
190if (NOT MSVC OR (MSVC AND CMAKE_BUILD_TYPE EQUAL "DEBUG"))
Pascal Bachd5f87e12014-12-12 15:59:17 +0100191add_executable(DebugProtoTest DebugProtoTest.cpp)
Claudius Heine5ef662b2015-06-24 10:03:50 +0200192target_link_libraries(DebugProtoTest
193 testgencpp
194 ${Boost_LIBRARIES}
195)
Jim King9de9b1f2015-04-30 16:03:34 -0400196LINK_AGAINST_THRIFT_LIBRARY(DebugProtoTest thrift)
Pascal Bachd5f87e12014-12-12 15:59:17 +0100197add_test(NAME DebugProtoTest COMMAND DebugProtoTest)
Jim King9de9b1f2015-04-30 16:03:34 -0400198endif()
Pascal Bachd5f87e12014-12-12 15:59:17 +0100199
200add_executable(JSONProtoTest JSONProtoTest.cpp)
Claudius Heine5ef662b2015-06-24 10:03:50 +0200201target_link_libraries(JSONProtoTest
202 testgencpp
203 ${Boost_LIBRARIES}
204)
Jim King9de9b1f2015-04-30 16:03:34 -0400205LINK_AGAINST_THRIFT_LIBRARY(JSONProtoTest thrift)
Pascal Bachd5f87e12014-12-12 15:59:17 +0100206add_test(NAME JSONProtoTest COMMAND JSONProtoTest)
207
208add_executable(OptionalRequiredTest OptionalRequiredTest.cpp)
Claudius Heine5ef662b2015-06-24 10:03:50 +0200209target_link_libraries(OptionalRequiredTest
210 testgencpp
211 ${Boost_LIBRARIES}
212)
Jim King9de9b1f2015-04-30 16:03:34 -0400213LINK_AGAINST_THRIFT_LIBRARY(OptionalRequiredTest thrift)
Pascal Bachd5f87e12014-12-12 15:59:17 +0100214add_test(NAME OptionalRequiredTest COMMAND OptionalRequiredTest)
215
216add_executable(RecursiveTest RecursiveTest.cpp)
Claudius Heine5ef662b2015-06-24 10:03:50 +0200217target_link_libraries(RecursiveTest
218 testgencpp
219 ${Boost_LIBRARIES}
220)
Jim King9de9b1f2015-04-30 16:03:34 -0400221LINK_AGAINST_THRIFT_LIBRARY(RecursiveTest thrift)
Pascal Bachd5f87e12014-12-12 15:59:17 +0100222add_test(NAME RecursiveTest COMMAND RecursiveTest)
223
224add_executable(SpecializationTest SpecializationTest.cpp)
Claudius Heine5ef662b2015-06-24 10:03:50 +0200225target_link_libraries(SpecializationTest
226 testgencpp
227 ${Boost_LIBRARIES}
228)
Jim King9de9b1f2015-04-30 16:03:34 -0400229LINK_AGAINST_THRIFT_LIBRARY(SpecializationTest thrift)
Pascal Bachd5f87e12014-12-12 15:59:17 +0100230add_test(NAME SpecializationTest COMMAND SpecializationTest)
231
232set(concurrency_test_SOURCES
233 concurrency/Tests.cpp
234 concurrency/ThreadFactoryTests.h
235 concurrency/ThreadManagerTests.h
236 concurrency/TimerManagerTests.h
237)
238add_executable(concurrency_test ${concurrency_test_SOURCES})
Jim King9de9b1f2015-04-30 16:03:34 -0400239LINK_AGAINST_THRIFT_LIBRARY(concurrency_test thrift)
Pascal Bachd5f87e12014-12-12 15:59:17 +0100240add_test(NAME concurrency_test COMMAND concurrency_test)
241
242set(link_test_SOURCES
243 link/LinkTest.cpp
Nobuaki Sukegawa6304a532014-12-18 01:30:58 +0900244 gen-cpp/ParentService.h
Pascal Bachd5f87e12014-12-12 15:59:17 +0100245 link/TemplatedService1.cpp
246 link/TemplatedService2.cpp
Pascal Bachd5f87e12014-12-12 15:59:17 +0100247)
Nobuaki Sukegawa6304a532014-12-18 01:30:58 +0900248
Pascal Bachd5f87e12014-12-12 15:59:17 +0100249add_executable(link_test ${link_test_SOURCES})
Jim King9de9b1f2015-04-30 16:03:34 -0400250target_link_libraries(link_test testgencpp_cob)
251LINK_AGAINST_THRIFT_LIBRARY(link_test thrift)
Pascal Bachd5f87e12014-12-12 15:59:17 +0100252add_test(NAME link_test COMMAND link_test)
253
254if(WITH_LIBEVENT)
255set(processor_test_SOURCES
256 processor/ProcessorTest.cpp
257 processor/EventLog.cpp
258 processor/ServerThread.cpp
259 processor/EventLog.h
260 processor/Handlers.h
261 processor/ServerThread.h
262)
263add_executable(processor_test ${processor_test_SOURCES})
264target_link_libraries(processor_test
Nobuaki Sukegawa6304a532014-12-18 01:30:58 +0900265 testgencpp_cob
Pascal Bachd5f87e12014-12-12 15:59:17 +0100266 ${Boost_LIBRARIES}
267)
Jim King9de9b1f2015-04-30 16:03:34 -0400268LINK_AGAINST_THRIFT_LIBRARY(processor_test thrift)
269LINK_AGAINST_THRIFT_LIBRARY(processor_test thriftnb)
Pascal Bachd5f87e12014-12-12 15:59:17 +0100270add_test(NAME processor_test COMMAND processor_test)
Nobuaki Sukegawa8016af82015-01-02 23:14:22 +0900271
272set(TNonblockingServerTest_SOURCES TNonblockingServerTest.cpp)
273add_executable(TNonblockingServerTest ${TNonblockingServerTest_SOURCES})
274include_directories(${LIBEVENT_INCLUDE_DIRS})
275target_link_libraries(TNonblockingServerTest
276 testgencpp_cob
Nobuaki Sukegawa8016af82015-01-02 23:14:22 +0900277 ${LIBEVENT_LIBRARIES}
278 ${Boost_LIBRARIES}
279)
Jim King9de9b1f2015-04-30 16:03:34 -0400280LINK_AGAINST_THRIFT_LIBRARY(TNonblockingServerTest thrift)
281LINK_AGAINST_THRIFT_LIBRARY(TNonblockingServerTest thriftnb)
Nobuaki Sukegawa8016af82015-01-02 23:14:22 +0900282add_test(NAME TNonblockingServerTest COMMAND TNonblockingServerTest)
Pascal Bachd5f87e12014-12-12 15:59:17 +0100283endif()
284
285if(OPENSSL_FOUND AND WITH_OPENSSL)
286add_executable(OpenSSLManualInitTest OpenSSLManualInitTest.cpp)
287target_link_libraries(OpenSSLManualInitTest
Pascal Bachd5f87e12014-12-12 15:59:17 +0100288 ${OPENSSL_LIBRARIES}
289 ${Boost_LIBRARIES}
290)
Jim King9de9b1f2015-04-30 16:03:34 -0400291LINK_AGAINST_THRIFT_LIBRARY(OpenSSLManualInitTest thrift)
Pascal Bachd5f87e12014-12-12 15:59:17 +0100292add_test(NAME OpenSSLManualInitTest COMMAND OpenSSLManualInitTest)
Sergei Nikulov34e0bb62015-09-02 13:06:22 +0300293
294add_executable(SecurityTest SecurityTest.cpp)
295target_link_libraries(SecurityTest
296 testgencpp
297 ${Boost_LIBRARIES}
298)
299LINK_AGAINST_THRIFT_LIBRARY(SecurityTest thrift)
300if (NOT MSVC AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
301target_link_libraries(SecurityTest -lrt)
302endif ()
303add_test(NAME SecurityTest COMMAND SecurityTest "${CMAKE_CURRENT_SOURCE_DIR}/../../../test/keys")
304
Pascal Bachd5f87e12014-12-12 15:59:17 +0100305endif()
306
Nobuaki Sukegawa6304a532014-12-18 01:30:58 +0900307if(WITH_QT4)
Nobuaki Sukegawa6304a532014-12-18 01:30:58 +0900308set(CMAKE_AUTOMOC ON)
309find_package(Qt4 REQUIRED COMPONENTS QtTest)
310set(TQTcpServerTest_SOURCES
311 qt/TQTcpServerTest.cpp
312)
313add_executable(TQTcpServerTest ${TQTcpServerTest_SOURCES})
Jim King9de9b1f2015-04-30 16:03:34 -0400314target_link_libraries(TQTcpServerTest testgencpp_cob thriftqt Qt4::QtTest)
315LINK_AGAINST_THRIFT_LIBRARY(TQTcpServerTest thrift)
Nobuaki Sukegawa6304a532014-12-18 01:30:58 +0900316add_test(NAME TQTcpServerTest COMMAND TQTcpServerTest)
317endif()
318
Nobuaki Sukegawa66228772014-12-07 21:45:33 +0900319if(WITH_QT5)
320add_subdirectory(qt)
321endif()
322
Pascal Bachd5f87e12014-12-12 15:59:17 +0100323#
324# Common thrift code generation rules
325#
326
327
Ben Craig1684c422015-04-24 08:52:44 -0500328add_custom_command(OUTPUT gen-cpp/DebugProtoTest_types.cpp gen-cpp/DebugProtoTest_types.h gen-cpp/EmptyService.cpp gen-cpp/EmptyService.h
Randy Abernethy8dbe5f62015-08-01 22:57:02 -0700329 COMMAND thrift-compiler --gen cpp ${PROJECT_SOURCE_DIR}/test/DebugProtoTest.thrift
Pascal Bachd5f87e12014-12-12 15:59:17 +0100330)
331
332add_custom_command(OUTPUT gen-cpp/EnumTest_types.cpp gen-cpp/EnumTest_types.h
333 COMMAND thrift-compiler --gen cpp ${PROJECT_SOURCE_DIR}/test/EnumTest.thrift
334)
335
336add_custom_command(OUTPUT gen-cpp/TypedefTest_types.cpp gen-cpp/TypedefTest_types.h
337 COMMAND thrift-compiler --gen cpp ${PROJECT_SOURCE_DIR}/test/TypedefTest.thrift
338)
339
340add_custom_command(OUTPUT gen-cpp/OptionalRequiredTest_types.cpp gen-cpp/OptionalRequiredTest_types.h
Randy Abernethy8dbe5f62015-08-01 22:57:02 -0700341 COMMAND thrift-compiler --gen cpp ${PROJECT_SOURCE_DIR}/test/OptionalRequiredTest.thrift
Pascal Bachd5f87e12014-12-12 15:59:17 +0100342)
343
344add_custom_command(OUTPUT gen-cpp/Recursive_types.cpp gen-cpp/Recursive_types.h
345 COMMAND thrift-compiler --gen cpp ${PROJECT_SOURCE_DIR}/test/Recursive.thrift
346)
347
348add_custom_command(OUTPUT gen-cpp/Service.cpp gen-cpp/StressTest_types.cpp
Randy Abernethy8dbe5f62015-08-01 22:57:02 -0700349 COMMAND thrift-compiler --gen cpp ${PROJECT_SOURCE_DIR}/test/StressTest.thrift
Pascal Bachd5f87e12014-12-12 15:59:17 +0100350)
351
352add_custom_command(OUTPUT gen-cpp/SecondService.cpp gen-cpp/ThriftTest_constants.cpp gen-cpp/ThriftTest.cpp gen-cpp/ThriftTest_types.cpp gen-cpp/ThriftTest_types.h
Randy Abernethy8dbe5f62015-08-01 22:57:02 -0700353 COMMAND thrift-compiler --gen cpp ${PROJECT_SOURCE_DIR}/test/ThriftTest.thrift
Pascal Bachd5f87e12014-12-12 15:59:17 +0100354)
355
356add_custom_command(OUTPUT gen-cpp/ChildService.cpp gen-cpp/ChildService.h gen-cpp/ParentService.cpp gen-cpp/ParentService.h gen-cpp/proc_types.cpp gen-cpp/proc_types.h
357 COMMAND thrift-compiler --gen cpp:templates,cob_style ${CMAKE_CURRENT_SOURCE_DIR}/processor/proc.thrift
358)