Unverified Commit e8096ed1 authored by Yossi Gottlieb's avatar Yossi Gottlieb Committed by GitHub
Browse files

Adapt CMake for coverage changes. (#72)



* Build libraft_shared.so to support tests.
* CMake target to create raft_cffi module.
* CMake changes to handle LD_LIBRARY_PATH for libraft.so to be found.
* raft_cffi_builder changes to support arbitrary include and library
  paths.
Co-authored-by: default avatartezc <ozantezcan@gmail.com>
parent ada3d6a0
......@@ -63,27 +63,36 @@ add_custom_command(
COMMAND lcov --list coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
)
add_dependencies(lib_coverage check)
add_dependencies(lib_coverage check test_fuzzer test_virtraft)
# ---------------------------- Code Coverage End ----------------------------- #
# ------------------------------ Python Tests ---------------------------------#
set(LIBPATH PYTHONPATH=${CMAKE_BINARY_DIR}/tests LD_LIBRARY_PATH=${CMAKE_BINARY_DIR})
add_custom_target(test_fuzzer)
add_custom_command(TARGET test_fuzzer
COMMAND python ${CMAKE_SOURCE_DIR}/tests/log_fuzzer.py
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
COMMAND ${LIBPATH} python ${CMAKE_SOURCE_DIR}/tests/log_fuzzer.py
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
add_dependencies(test_fuzzer raft_cffi)
add_custom_target(test_virtraft)
add_custom_command(TARGET test_virtraft
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMAND python3 tests/virtraft2.py --servers 5 -i 20000 --compaction_rate 50 --drop_rate 5 -P 10 --seed 1 -m 3 $(VIRTRAFT_OPTS)
COMMAND python3 tests/virtraft2.py --servers 7 -i 20000 --compaction_rate 50 --drop_rate 5 -P 10 --seed 1 -m 3 $(VIRTRAFT_OPTS)
COMMAND python3 tests/virtraft2.py --servers 5 -i 20000 --compaction_rate 50 --drop_rate 5 -P 10 --seed 2 -m 3 $(VIRTRAFT_OPTS)
COMMAND python3 tests/virtraft2.py --servers 5 -i 20000 --compaction_rate 50 --drop_rate 5 -P 10 --seed 3 -m 3 $(VIRTRAFT_OPTS)
COMMAND python3 tests/virtraft2.py --servers 5 -i 20000 --compaction_rate 50 --drop_rate 5 -P 10 --seed 4 -m 3 $(VIRTRAFT_OPTS)
COMMAND python3 tests/virtraft2.py --servers 5 -i 20000 --compaction_rate 50 --drop_rate 5 -P 10 --seed 5 -m 3 $(VIRTRAFT_OPTS)
COMMAND python3 tests/virtraft2.py --servers 5 -i 20000 --compaction_rate 50 --drop_rate 5 -P 10 --seed 6 -m 3 $(VIRTRAFT_OPTS))
COMMAND ${LIBPATH} python3 ${CMAKE_SOURCE_DIR}/tests/virtraft2.py --servers 5 -i 20000 --compaction_rate 50 --drop_rate 5 -P 10 --seed 1 -m 3 $(VIRTRAFT_OPTS)
COMMAND ${LIBPATH} python3 ${CMAKE_SOURCE_DIR}/tests/virtraft2.py --servers 7 -i 20000 --compaction_rate 50 --drop_rate 5 -P 10 --seed 1 -m 3 $(VIRTRAFT_OPTS)
COMMAND ${LIBPATH} python3 ${CMAKE_SOURCE_DIR}/tests/virtraft2.py --servers 5 -i 20000 --compaction_rate 50 --drop_rate 5 -P 10 --seed 2 -m 3 $(VIRTRAFT_OPTS)
COMMAND ${LIBPATH} python3 ${CMAKE_SOURCE_DIR}/tests/virtraft2.py --servers 5 -i 20000 --compaction_rate 50 --drop_rate 5 -P 10 --seed 3 -m 3 $(VIRTRAFT_OPTS)
COMMAND ${LIBPATH} python3 ${CMAKE_SOURCE_DIR}/tests/virtraft2.py --servers 5 -i 20000 --compaction_rate 50 --drop_rate 5 -P 10 --seed 4 -m 3 $(VIRTRAFT_OPTS)
COMMAND ${LIBPATH} python3 ${CMAKE_SOURCE_DIR}/tests/virtraft2.py --servers 5 -i 20000 --compaction_rate 50 --drop_rate 5 -P 10 --seed 5 -m 3 $(VIRTRAFT_OPTS)
COMMAND ${LIBPATH} python3 ${CMAKE_SOURCE_DIR}/tests/virtraft2.py --servers 5 -i 20000 --compaction_rate 50 --drop_rate 5 -P 10 --seed 6 -m 3 $(VIRTRAFT_OPTS))
add_dependencies(test_virtraft raft_cffi)
add_custom_target(raft_cffi)
add_custom_command(TARGET raft_cffi
COMMAND python3 ${CMAKE_SOURCE_DIR}/tests/raft_cffi_builder.py --libname raft_shared --libdir ${CMAKE_BINARY_DIR} --includedir ${CMAKE_SOURCE_DIR}/include --tmpdir ${CMAKE_BINARY_DIR}/
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
# ----------------------------- Python Tests End ----------------------------- #
......@@ -91,15 +100,21 @@ add_custom_command(TARGET test_virtraft
add_custom_target(tests_full)
add_dependencies(tests_full check test_fuzzer test_virtraft)
add_library(raft STATIC
set(RAFT_SOURCE_FILES
src/raft_log.c
src/raft_server.c
src/raft_node.c
src/raft_server_properties.c)
target_compile_options(raft PRIVATE -fPIC -g)
add_library(raft STATIC ${RAFT_SOURCE_FILES})
target_compile_options(raft PRIVATE -g)
target_include_directories(raft PRIVATE include)
add_library(raft_shared SHARED ${RAFT_SOURCE_FILES})
target_include_directories(raft_shared PRIVATE include)
set_property(TARGET raft_shared PROPERTY POSITION_INDEPENDENT_CODE ON)
target_compile_options(raft PRIVATE -g)
define_test(test_log)
define_test(test_log_impl)
define_test(test_node)
......
import cffi
import argparse
import subprocess
import cffi
def load(fname):
return '\n'.join(
......@@ -8,6 +9,13 @@ def load(fname):
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--libdir', type=str, default='.')
parser.add_argument('--libname', type=str, default='raft')
parser.add_argument('--includedir', type=str, default='include')
parser.add_argument('--tmpdir', type=str, default='.')
args = parser.parse_args()
ffibuilder = cffi.FFI()
ffibuilder.set_source(
"tests.raft_cffi",
......@@ -36,10 +44,10 @@ if __name__ == '__main__':
return t;
}
""",
libraries=["raft"],
include_dirs=["include"],
libraries=[args.libname],
include_dirs=[args.includedir],
extra_compile_args=["-UNDEBUG"],
extra_link_args=["-L."]
extra_link_args=["-L{}".format(args.libdir)]
)
......@@ -52,4 +60,4 @@ if __name__ == '__main__':
ffibuilder.cdef('void *raft_entry_getdata(raft_entry_t *);')
ffibuilder.cdef('raft_entry_t **raft_entry_array_deepcopy(raft_entry_t **src, int len);')
ffibuilder.compile(verbose=True)
ffibuilder.compile(tmpdir=args.tmpdir, verbose=True)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment