]> git.proxmox.com Git - ceph.git/blob - ceph/src/seastar/tests/unit/CMakeLists.txt
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / seastar / tests / unit / CMakeLists.txt
1 #
2 # This file is open source software, licensed to you under the terms
3 # of the Apache License, Version 2.0 (the "License"). See the NOTICE file
4 # distributed with this work for additional information regarding copyright
5 # ownership. You may not use this file except in compliance with the License.
6 #
7 # You may obtain a copy of the License at
8 #
9 # http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing,
12 # software distributed under the License is distributed on an
13 # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 # KIND, either express or implied. See the License for the
15 # specific language governing permissions and limitations
16 # under the License.
17 #
18
19 #
20 # Copyright (C) 2018 Scylladb, Ltd.
21 #
22
23 # Logical target for all unit tests.
24 add_custom_target (unit_tests)
25
26 set (Seastar_UNIT_TEST_SMP
27 2
28 CACHE
29 STRING
30 "Run unit tests with this many cores.")
31
32 #
33 # Define a new unit test with the given name.
34 #
35 # seastar_add_test (name
36 # [KIND {SEASTAR,BOOST,CUSTOM}]
37 # [SOURCES source1 source2 ... sourcen]
38 # [WORKING_DIRECTORY dir]
39 # [LIBRARIES library1 library2 ... libraryn]
40 # [RUN_ARGS arg1 arg2 ... argn])
41 #
42 # There are three kinds of test we support (the KIND parameter):
43 #
44 # - SEASTAR: Unit tests which use macros like `SEASTAR_TEST_CASE`
45 # - BOOST: Unit tests which use macros like `BOOST_AUTO_TEST_CASE`
46 # - CUSTOM: Custom tests which need to be specified
47 #
48 # SEASTAR and BOOST tests will have their output saved for interpretation by the Jenkins continuous integration service
49 # if this is configured for the build.
50 #
51 # KIND can be omitted, in which case it is assumed to be SEASTAR.
52 #
53 # If SOURCES is provided, then the test files are first compiled into an executable which has the same name as the test
54 # but with a suffix ("_test").
55 #
56 # WORKING_DIRECTORY can be optionally provided to choose where the test is executed.
57 #
58 # If LIBRARIES is provided along with SOURCES, then the executable is additionally linked with these libraries.
59 #
60 # RUN_ARGS are optional additional arguments to pass to the executable. For SEASTAR tests, these come after `--`. For
61 # CUSTOM tests with no SOURCES, this parameter can be used to specify the executable name as well as its arguments since
62 # no executable is compiled.
63 #
64 function (seastar_add_test name)
65 set (test_kinds
66 SEASTAR
67 BOOST
68 CUSTOM)
69
70 cmake_parse_arguments (parsed_args
71 ""
72 "WORKING_DIRECTORY;KIND"
73 "RUN_ARGS;SOURCES;LIBRARIES;DEPENDS"
74 ${ARGN})
75
76 if (NOT parsed_args_KIND)
77 set (parsed_args_KIND SEASTAR)
78 elseif (NOT (parsed_args_KIND IN_LIST test_kinds))
79 message (FATAL_ERROR "Invalid test kind. KIND must be one of ${test_kinds}")
80 endif ()
81
82 if (parsed_args_SOURCES)
83 # These may be unused.
84 seastar_jenkins_arguments (${name} jenkins_args)
85
86 #
87 # Each kind of test must populate the `args` and `libraries` lists.
88 #
89
90 set (libraries "${parsed_args_LIBRARIES}")
91
92 set (args "")
93 if (parsed_args_KIND STREQUAL "SEASTAR")
94 list (APPEND libraries
95 seastar_testing
96 seastar_private)
97
98 if (NOT (Seastar_JENKINS STREQUAL ""))
99 list (APPEND args ${jenkins_args})
100 endif ()
101
102 list (APPEND args -- -c ${Seastar_UNIT_TEST_SMP})
103 elseif (parsed_args_KIND STREQUAL "BOOST")
104 list (APPEND libraries
105 Boost::unit_test_framework
106 seastar_private)
107
108 if (NOT (Seastar_JENKINS STREQUAL ""))
109 list (APPEND args ${jenkins_args})
110 endif ()
111 endif ()
112
113 list (APPEND args ${parsed_args_RUN_ARGS})
114
115 set (executable_target test_unit_${name})
116 add_executable (${executable_target} ${parsed_args_SOURCES})
117
118 target_link_libraries (${executable_target}
119 PRIVATE ${libraries})
120
121 target_compile_definitions (${executable_target}
122 PRIVATE
123 SEASTAR_TESTING_MAIN
124 SEASTAR_TESTING_WITH_NETWORKING=$<BOOL:${Seastar_ENABLE_TESTS_ACCESSING_INTERNET}>)
125
126 if ((Seastar_STACK_GUARDS STREQUAL "ON") OR
127 ((Seastar_STACK_GUARDS STREQUAL "DEFAULT") AND
128 (CMAKE_BUILD_TYPE IN_LIST Seastar_STACK_GUARD_MODES)))
129 target_compile_definitions (${executable_target}
130 PRIVATE
131 SEASTAR_THREAD_STACK_GUARDS)
132 endif ()
133
134 target_include_directories (${executable_target}
135 PRIVATE
136 ${CMAKE_CURRENT_SOURCE_DIR}
137 ${Seastar_SOURCE_DIR}/src)
138
139 set_target_properties (${executable_target}
140 PROPERTIES
141 OUTPUT_NAME ${name}_test)
142
143 add_dependencies (unit_tests ${executable_target})
144 set (forwarded_args COMMAND ${executable_target} ${args})
145 else ()
146 if (NOT (parsed_args_KIND STREQUAL "CUSTOM"))
147 message (FATAL_ERROR "SOURCES are required for ${parsed_args_KIND} tests")
148 endif ()
149
150 set (forwarded_args COMMAND ${parsed_args_RUN_ARGS})
151 endif ()
152
153 #
154 # We expect `forwarded_args` to be populated correctly at this point.
155 #
156
157 set (target test_unit_${name}_run)
158
159 if (parsed_args_WORKING_DIRECTORY)
160 list (APPEND forwarded_args WORKING_DIRECTORY ${parsed_args_WORKING_DIRECTORY})
161 endif ()
162
163 if (parsed_args_DEPENDS)
164 add_dependencies(${executable_target} ${parsed_args_DEPENDS})
165 endif()
166
167 add_custom_target (${target}
168 ${forwarded_args}
169 USES_TERMINAL)
170
171 add_test (
172 NAME Seastar.unit.${name}
173 COMMAND ${CMAKE_COMMAND} --build ${Seastar_BINARY_DIR} --target ${target})
174
175 set_tests_properties (Seastar.unit.${name}
176 PROPERTIES
177 TIMEOUT ${Seastar_TEST_TIMEOUT}
178 ENVIRONMENT "${Seastar_TEST_ENVIRONMENT}")
179 endfunction ()
180
181 #
182 # Define a new custom unit test whose entry point is a Seastar application.
183 #
184 # seastar_add_app_test (name
185 # [SOURCES source1 source2 ... sourcen]
186 # [LIBRARIES library1 library2 ... libraryn]
187 # [RUN_ARGS arg1 arg2 ... argn])
188 #
189 # These kinds of tests are structured like Seastar applications.
190 #
191 # These tests always link against `seastar_private` and are always invoked with
192 # `-c ${Seastar_UNIT_TEST_SMP}`.
193 #
194 function (seastar_add_app_test name)
195 cmake_parse_arguments (parsed_args
196 ""
197 ""
198 "RUN_ARGS;SOURCES;LIBRARIES"
199 ${ARGN})
200
201 seastar_add_test (${name}
202 KIND CUSTOM
203 SOURCES ${parsed_args_SOURCES}
204 LIBRARIES
205 seastar_private
206 ${parsed_args_LIBRARIES}
207 RUN_ARGS
208 -c ${Seastar_UNIT_TEST_SMP}
209 ${parsed_args_RUN_ARGS})
210 endfunction ()
211
212 function (prepend_each var prefix)
213 set (result "")
214
215 foreach (x ${ARGN})
216 list (APPEND result ${prefix}/${x})
217 endforeach ()
218
219 set (${var} ${result} PARENT_SCOPE)
220 endfunction ()
221
222 add_custom_target (test_unit
223 COMMAND ctest --verbose -R Seastar.unit
224 USES_TERMINAL)
225
226 seastar_add_test (abort_source
227 SOURCES abort_source_test.cc)
228
229 seastar_add_test (alloc
230 SOURCES alloc_test.cc)
231
232 if (NOT Seastar_EXECUTE_ONLY_FAST_TESTS)
233 set (allocator_test_args "")
234 else ()
235 if (CMAKE_BUILD_TYPE STREQUAL "Debug")
236 set (allocator_test_args --iterations 5)
237 else ()
238 set (allocator_test_args --time 0.1)
239 endif ()
240 endif ()
241
242 seastar_add_test (allocator
243 SOURCES allocator_test.cc
244 RUN_ARGS ${allocator_test_args})
245
246 seastar_add_app_test (alien
247 SOURCES alien_test.cc)
248
249 seastar_add_test (checked_ptr
250 SOURCES checked_ptr_test.cc)
251
252 seastar_add_test (chunked_fifo
253 SOURCES chunked_fifo_test.cc)
254
255 seastar_add_test (chunk_parsers
256 SOURCES chunk_parsers_test.cc)
257
258 seastar_add_test (circular_buffer
259 SOURCES circular_buffer_test.cc)
260
261 seastar_add_test (circular_buffer_fixed_capacity
262 SOURCES circular_buffer_fixed_capacity_test.cc)
263
264 seastar_add_test (condition_variable
265 SOURCES condition_variable_test.cc)
266
267 seastar_add_test (connect
268 SOURCES connect_test.cc)
269
270 seastar_add_test (content_source
271 SOURCES content_source_test.cc)
272
273 seastar_add_test (coroutines
274 SOURCES coroutines_test.cc)
275
276 seastar_add_test (defer
277 SOURCES defer_test.cc)
278
279 seastar_add_test (deleter
280 SOURCES deleter_test.cc)
281
282 seastar_add_app_test (directory
283 SOURCES directory_test.cc)
284
285 seastar_add_test (distributed
286 SOURCES distributed_test.cc)
287
288 seastar_add_test (dns
289 SOURCES dns_test.cc)
290
291 seastar_add_test (execution_stage
292 SOURCES execution_stage_test.cc)
293
294 seastar_add_test (expiring_fifo
295 SOURCES expiring_fifo_test.cc)
296
297 seastar_add_test (abortable_fifo
298 SOURCES abortable_fifo_test.cc)
299
300 seastar_add_test (io_queue
301 SOURCES io_queue_test.cc)
302
303 seastar_add_test (fair_queue
304 SOURCES fair_queue_test.cc)
305
306 seastar_add_test (file_io
307 SOURCES file_io_test.cc)
308
309 seastar_add_test (file_utils
310 SOURCES file_utils_test.cc)
311
312 seastar_add_test (foreign_ptr
313 SOURCES foreign_ptr_test.cc)
314
315 seastar_add_test (fsnotifier
316 SOURCES fsnotifier_test.cc)
317
318 seastar_add_test (fstream
319 SOURCES
320 fstream_test.cc
321 mock_file.hh)
322
323 seastar_add_test (futures
324 SOURCES futures_test.cc)
325
326 seastar_add_test (sharded
327 SOURCES sharded_test.cc)
328
329 seastar_add_test (httpd
330 SOURCES
331 httpd_test.cc
332 loopback_socket.hh)
333
334 seastar_add_test (websocket
335 SOURCES websocket_test.cc)
336
337 seastar_add_test (ipv6
338 SOURCES ipv6_test.cc)
339
340 seastar_add_test (network_interface
341 SOURCES network_interface_test.cc)
342
343 seastar_add_test (json_formatter
344 SOURCES json_formatter_test.cc)
345
346 seastar_add_test (locking
347 SOURCES locking_test.cc)
348
349 seastar_add_test (lowres_clock
350 SOURCES lowres_clock_test.cc)
351
352 seastar_add_test (metrics
353 SOURCES metrics_test.cc)
354
355 seastar_add_test (net_config
356 KIND BOOST
357 SOURCES net_config_test.cc)
358
359 seastar_add_test (noncopyable_function
360 KIND BOOST
361 SOURCES noncopyable_function_test.cc)
362
363 seastar_add_test (output_stream
364 SOURCES output_stream_test.cc)
365
366 seastar_add_test (packet
367 KIND BOOST
368 SOURCES packet_test.cc)
369
370 seastar_add_test (program_options
371 KIND BOOST
372 SOURCES program_options_test.cc)
373
374 seastar_add_test (queue
375 SOURCES queue_test.cc)
376
377 seastar_add_test (request_parser
378 SOURCES request_parser_test.cc)
379
380 seastar_add_test (rpc
381 SOURCES
382 loopback_socket.hh
383 rpc_test.cc)
384
385 seastar_add_test (semaphore
386 SOURCES semaphore_test.cc)
387
388 seastar_add_test (shared_ptr
389 KIND BOOST
390 SOURCES shared_ptr_test.cc)
391
392 seastar_add_test (signal
393 SOURCES signal_test.cc)
394
395 seastar_add_test (simple_stream
396 KIND BOOST
397 SOURCES simple_stream_test.cc)
398
399 # TODO: Disabled for now. See GH-520.
400 # seastar_add_test (slab
401 # SOURCES slab_test.cc
402 # NO_SEASTAR_TESTING_LIBRARY)
403
404 seastar_add_app_test (smp
405 SOURCES smp_test.cc)
406
407 seastar_add_test (socket
408 SOURCES socket_test.cc)
409
410 seastar_add_test (sstring
411 KIND BOOST
412 SOURCES sstring_test.cc)
413
414 seastar_add_test (stall_detector
415 SOURCES stall_detector_test.cc)
416
417 seastar_add_test (stream_reader
418 SOURCES stream_reader_test.cc)
419
420 seastar_add_test (thread
421 SOURCES thread_test.cc
422 LIBRARIES Valgrind::valgrind)
423
424 seastar_add_test (scheduling_group
425 SOURCES scheduling_group_test.cc)
426
427 seastar_add_app_test (thread_context_switch
428 SOURCES thread_context_switch_test.cc)
429
430 seastar_add_app_test (timer
431 SOURCES timer_test.cc)
432
433 seastar_add_test (uname
434 KIND BOOST
435 SOURCES uname_test.cc)
436
437 seastar_add_test (source_location
438 KIND BOOST
439 SOURCES source_location_test.cc)
440
441 seastar_add_test (shared_token_bucket
442 SOURCES shared_token_bucket_test.cc)
443
444 function(seastar_add_certgen name)
445 cmake_parse_arguments(CERT
446 ""
447 "SUBJECT;SERVER;NAME;DOMAIN;COMMON;LOCALITY;ORG;WIDTH;STATE;COUNTRY;UNIT;EMAIL;DAYS;ALG"
448 "ALG_OPTS"
449 ${ARGN}
450 )
451
452 if (NOT CERT_SERVER)
453 execute_process(COMMAND hostname
454 RESULT_VARIABLE CERT_SERVER
455 )
456 endif()
457 if (NOT CERT_DOMAIN)
458 execute_process(COMMAND dnsdomainname
459 RESULT_VARIABLE CERT_DOMAIN
460 )
461 endif()
462 if (NOT CERT_NAME)
463 set(CERT_NAME ${CERT_SERVER})
464 endif()
465 if (NOT CERT_COUNTRY)
466 set(CERT_COUNTRY SE)
467 endif()
468 if (NOT CERT_STATE)
469 set(CERT_STATE Stockholm)
470 endif()
471 if (NOT CERT_LOCALITY)
472 set(CERT_LOCALITY ${CERT_STATE})
473 endif()
474 if (NOT CERT_ORG)
475 set(CERT_ORG ${CERT_DOMAIN})
476 endif()
477 if (NOT CERT_UNIT)
478 set(CERT_UNIT ${CERT_DOMAIN})
479 endif()
480 if (NOT CERT_COMMON)
481 set(CERT_COMMON ${CERT_SERVER}.${CERT_DOMAIN})
482 endif()
483 if (NOT CERT_EMAIL)
484 set(CERT_EMAIL postmaster@${CERT_DOMAIN})
485 endif()
486 if (NOT CERT_WIDTH)
487 set(CERT_WIDTH 4096)
488 endif()
489 if (NOT CERT_DAYS)
490 set(CERT_DAYS 3650)
491 endif()
492 if ((NOT CERT_ALG) AND (NOT CERT_ALG_OPTS))
493 set(CERT_ALG_OPTS -pkeyopt rsa_keygen_bits:${CERT_WIDTH})
494 endif()
495 if (NOT CERT_ALG)
496 set(CERT_ALG RSA)
497 endif()
498
499 set(CERT_PRIVKEY ${CERT_NAME}.key)
500 set(CERT_REQ ${CERT_NAME}.csr)
501 set(CERT_CERT ${CERT_NAME}.crt)
502
503 set(CERT_CAPRIVKEY ca${CERT_NAME}.key)
504 set(CERT_CAROOT ca${CERT_NAME}.pem)
505
506 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cert.cfg.in"
507 "${CMAKE_CURRENT_BINARY_DIR}/${CERT_NAME}.cfg"
508 )
509
510 find_program(OPENSSL openssl)
511
512 add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${CERT_PRIVKEY}"
513 COMMAND ${OPENSSL} genpkey -quiet -out ${CERT_PRIVKEY} -algorithm ${CERT_ALG} ${CERT_ALG_OPTS}
514 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
515 )
516 add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${CERT_REQ}"
517 COMMAND ${OPENSSL} req -new -key ${CERT_PRIVKEY} -out ${CERT_REQ} -config ${CERT_NAME}.cfg
518 DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${CERT_PRIVKEY}"
519 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
520 )
521
522 add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${CERT_CAPRIVKEY}"
523 COMMAND ${OPENSSL} genpkey -quiet -out ${CERT_CAPRIVKEY} -algorithm ${CERT_ALG} ${CERT_ALG_OPTS}
524 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
525 )
526 add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${CERT_CAROOT}"
527 COMMAND ${OPENSSL} req -x509 -new -nodes -key ${CERT_CAPRIVKEY} -days ${CERT_DAYS} -config ${CERT_NAME}.cfg -out ${CERT_CAROOT}
528 DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${CERT_CAPRIVKEY}"
529 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
530 )
531
532 add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${CERT_CERT}"
533 COMMAND ${OPENSSL} x509 -req -in ${CERT_REQ} -CA ${CERT_CAROOT} -CAkey ${CERT_CAPRIVKEY} -CAcreateserial -out ${CERT_CERT} -days ${CERT_DAYS}
534 DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${CERT_REQ}" "${CMAKE_CURRENT_BINARY_DIR}/${CERT_CAROOT}"
535 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
536 )
537
538 add_custom_target(${name}
539 DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${CERT_CERT}"
540 )
541 endfunction()
542
543 function(seastar_gen_mtls_certs)
544 find_program(OPENSSL openssl)
545
546 set(SUBJECT "/C=GB/ST=London/L=London/O=Redpanda Data/OU=Core/CN=redpanda.com")
547 set(EXTENSION "subjectAltName = IP:127.0.0.1")
548 set(CLIENT1_SUBJECT "/C=GB/ST=London/L=London/O=Redpanda Data/OU=Core/CN=client1.org")
549 set(CLIENT2_SUBJECT "/C=GB/ST=London/L=London/O=Redpanda Data/OU=Core/CN=client2.org")
550
551 add_custom_command(OUTPUT mtls_ca.key
552 COMMAND ${OPENSSL} ecparam -name prime256v1 -genkey -noout -out mtls_ca.key
553 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
554 )
555 add_custom_command(OUTPUT mtls_ca.crt
556 COMMAND ${OPENSSL} req -new -x509 -sha256 -key mtls_ca.key -out mtls_ca.crt -subj ${SUBJECT} -addext ${EXTENSION}
557 DEPENDS mtls_ca.key
558 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
559 )
560 # server certificates
561 add_custom_command(OUTPUT mtls_server.key
562 COMMAND ${OPENSSL} ecparam -name prime256v1 -genkey -noout -out mtls_server.key
563 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
564 )
565 add_custom_command(OUTPUT mtls_server.csr
566 COMMAND ${OPENSSL} req -new -sha256 -key mtls_server.key -out mtls_server.csr -subj ${SUBJECT}
567 DEPENDS mtls_server.key
568 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
569 )
570 add_custom_command(OUTPUT mtls_server.crt
571 COMMAND ${OPENSSL} x509 -req -in mtls_server.csr -CA mtls_ca.crt -CAkey mtls_ca.key -CAcreateserial -out mtls_server.crt -days 1000 -sha256
572 DEPENDS mtls_server.csr mtls_ca.crt mtls_ca.key
573 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
574 )
575 # client1 certificates
576 add_custom_command(OUTPUT mtls_client1.key
577 COMMAND ${OPENSSL} ecparam -name prime256v1 -genkey -noout -out mtls_client1.key
578 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
579 )
580 add_custom_command(OUTPUT mtls_client1.csr
581 COMMAND ${OPENSSL} req -new -sha256 -key mtls_client1.key -out mtls_client1.csr -subj ${CLIENT1_SUBJECT}
582 DEPENDS mtls_client1.key
583 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
584 )
585 add_custom_command(OUTPUT mtls_client1.crt
586 COMMAND ${OPENSSL} x509 -req -in mtls_client1.csr -CA mtls_ca.crt -CAkey mtls_ca.key -CAcreateserial -out mtls_client1.crt -days 1000 -sha256
587 DEPENDS mtls_client1.csr mtls_ca.crt mtls_ca.key
588 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
589 )
590 # client2 certificates
591 add_custom_command(OUTPUT mtls_client2.key
592 COMMAND ${OPENSSL} ecparam -name prime256v1 -genkey -noout -out mtls_client2.key
593 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
594 )
595 add_custom_command(OUTPUT mtls_client2.csr
596 COMMAND ${OPENSSL} req -new -sha256 -key mtls_client2.key -out mtls_client2.csr -subj ${CLIENT2_SUBJECT}
597 DEPENDS mtls_client2.key
598 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
599 )
600 add_custom_command(OUTPUT mtls_client2.crt
601 COMMAND ${OPENSSL} x509 -req -in mtls_client2.csr -CA mtls_ca.crt -CAkey mtls_ca.key -CAcreateserial -out mtls_client2.crt -days 1000 -sha256
602 DEPENDS mtls_client2.csr mtls_ca.crt mtls_ca.key
603 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
604 )
605
606 add_custom_target(mtls_certs
607 DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/mtls_client1.crt" "${CMAKE_CURRENT_BINARY_DIR}/mtls_client2.crt" "${CMAKE_CURRENT_BINARY_DIR}/mtls_server.crt"
608 )
609 endfunction()
610
611 seastar_add_certgen(testcrt DOMAIN scylladb.org SERVER test)
612 seastar_add_certgen(othercrt DOMAIN apa.org SERVER other)
613 seastar_gen_mtls_certs()
614
615 set (tls_certificate_files
616 tls-ca-bundle.pem
617 )
618
619 prepend_each (
620 in_tls_certificate_files
621 ${CMAKE_CURRENT_SOURCE_DIR}/
622 ${tls_certificate_files})
623
624 prepend_each (
625 out_tls_certificate_files
626 ${CMAKE_CURRENT_BINARY_DIR}/
627 ${tls_certificate_files})
628
629 add_custom_command (
630 DEPENDS ${in_tls_certificate_files}
631 OUTPUT ${out_tls_certificate_files}
632 COMMAND ${CMAKE_COMMAND} -E copy ${in_tls_certificate_files} ${CMAKE_CURRENT_BINARY_DIR})
633
634 add_custom_target(tls_files
635 DEPENDS ${out_tls_certificate_files}
636 )
637
638 add_custom_command (
639 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/https-server.py
640 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/https-server.py
641 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/https-server.py ${CMAKE_CURRENT_BINARY_DIR})
642
643 add_custom_target (https_server
644 DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/https-server.py)
645
646 seastar_add_test (tls
647 DEPENDS tls_files testcrt othercrt mtls_certs https_server
648 SOURCES tls_test.cc
649 LIBRARIES Boost::filesystem
650 WORKING_DIRECTORY ${Seastar_BINARY_DIR})
651
652 seastar_add_test (tuple_utils
653 KIND BOOST
654 SOURCES tuple_utils_test.cc)
655
656 seastar_add_test (unix_domain
657 SOURCES unix_domain_test.cc)
658
659 seastar_add_test (unwind
660 KIND BOOST
661 SOURCES unwind_test.cc)
662
663 seastar_add_test (weak_ptr
664 KIND BOOST
665 SOURCES weak_ptr_test.cc)
666
667 seastar_add_test (log_buf
668 SOURCES log_buf_test.cc)
669
670 seastar_add_test (exception_logging
671 KIND BOOST
672 SOURCES exception_logging_test.cc)
673
674 seastar_add_test (closeable
675 SOURCES closeable_test.cc)
676
677 seastar_add_test (pipe
678 SOURCES pipe_test.cc)
679
680 seastar_add_test (spawn
681 SOURCES spawn_test.cc)