summaryrefslogtreecommitdiff
path: root/storage/tokudb/PerconaFT/ft/tests/CMakeLists.txt
blob: 270ec97660ac5fe8857b37a4b34f610f573bbba6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS _GNU_SOURCE DONT_DEPRECATE_ERRNO)

if(BUILD_TESTING OR BUILD_FT_TESTS)
  function(add_ft_test bin)
    add_toku_test(ft ${bin} ${ARGN})
  endfunction(add_ft_test)
  function(add_ft_test_aux name bin)
    add_toku_test_aux(ft ${name} ${bin} ${ARGN})
  endfunction(add_ft_test_aux)

  ## get a list of the sources in this directory
  file(GLOB srcs RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" *.cc)
  set(tests)
  foreach(src ${srcs})
    get_filename_component(base ${src} NAME_WE)
    list(APPEND tests ${base})
  endforeach(src)

  ## this macro will remove the test from the list of source files so it
  ## doesn't end up getting the default test rule applied to it
  macro(declare_custom_tests)
    foreach(test ${ARGN})
      list(REMOVE_ITEM tests ${test})
    endforeach(test)
  endmacro(declare_custom_tests)

  declare_custom_tests(logcursor-fw logcursor-bw)
  add_test(ft/logcursor-fw echo "logcursor-fw must be run manually (needs logs to iterate over).")
  add_test(ft/logcursor-bw echo "logcursor-bw must be run manually (needs logs to iterate over).")

  foreach(test ${tests})
    add_executable(${test} ${test}.cc)
    target_link_libraries(${test} ft ${LIBTOKUPORTABILITY})
    set_target_properties(${test} PROPERTIES POSITION_INDEPENDENT_CODE ON)
    add_space_separated_property(TARGET ${test} COMPILE_FLAGS -fvisibility=hidden)
  endforeach(test)

  ## declare some tests that should be run with specific options

  declare_custom_tests(test-assert)
  add_ft_test_aux(test-assertA test-assert)
  add_ft_test_aux(test-assertB test-assert notok)
  set_tests_properties(ft/test-assertA ft/test-assertB PROPERTIES WILL_FAIL TRUE)
  add_ft_test_aux(test-assertC test-assert ok)
  setup_toku_test_properties(ft/test-assertC test-assertC)

  declare_custom_tests(benchmark-test)
  add_ft_test(benchmark-test -q 1)
  add_ft_test_aux(benchmark-test_256 benchmark-test --valsize 256 --periter 131072 --verify --verify_period 4096 1)

  declare_custom_tests(ftloader-test-merge-files-dbufio)
  add_ft_test(ftloader-test-merge-files-dbufio -r 8000 -s)

  declare_custom_tests(ftloader-test-extractor)
  add_ft_test_aux(ftloader-test-extractor-1 ftloader-test-extractor -s -r 1000 --rowsets 1000 --asc)
  add_ft_test_aux(ftloader-test-extractor-2 ftloader-test-extractor -s -r 1000 --rowsets 1000 --dsc)
  add_ft_test_aux(ftloader-test-extractor-3 ftloader-test-extractor -s -r 1000 --rowsets 1000 --random)
  add_ft_test_aux(ftloader-test-extractor-1a ftloader-test-extractor -s -r 1000 --rowsets 1000 --asc)
  add_ft_test_aux(ftloader-test-extractor-2a ftloader-test-extractor -s -r 1000 --rowsets 1000 --dsc)
  add_ft_test_aux(ftloader-test-extractor-3a ftloader-test-extractor -s -r 1000 --rowsets 1000 --random)
  add_ft_test_aux(ftloader-test-extractor-4a ftloader-test-extractor -s -r 1000 --rowsets 3 --asc)
  add_ft_test_aux(ftloader-test-extractor-5a ftloader-test-extractor -s -r 1000 --rowsets 3 --asc --asc-poison)

  declare_custom_tests(ftloader-test-extractor-errors)
  add_ft_test_aux(ftloader-test-extractor-errors-1 ftloader-test-extractor-errors -w -m -u -r 1)
  add_ft_test_aux(ftloader-test-extractor-errors-2 ftloader-test-extractor-errors -m -r 10000)

  declare_custom_tests(ftloader-test-writer)
  add_ft_test_aux(ftloader-test-writer-1 ftloader-test-writer -r 1 -s)
  add_ft_test_aux(ftloader-test-writer-1000 ftloader-test-writer -r 1000 -s)
  add_ft_test_aux(ftloader-test-writer-100000 ftloader-test-writer -r 100000 -s)
  add_ft_test_aux(ftloader-test-writer-1000000 ftloader-test-writer -r 1000000 -s)
  add_ft_test_aux(ftloader-test-writer-1-x ftloader-test-writer -r 1 -s -x 42)
  add_ft_test_aux(ftloader-test-writer-1000-x ftloader-test-writer -r 1000 -s -x 42)
  add_ft_test_aux(ftloader-test-writer-100000-x ftloader-test-writer -r 100000 -s -x 42)
  add_ft_test_aux(ftloader-test-writer-1000000-x ftloader-test-writer -r 1000000 -s -x 42)

  declare_custom_tests(ftloader-test-writer-errors)
  add_ft_test_aux(ftloader-test-writer-errors-1 ftloader-test-writer-errors -w -m -u -r 100000)
  add_ft_test_aux(ftloader-test-writer-errors-2 ftloader-test-writer-errors -s -w -m -u -r 10000)
  add_ft_test_aux(ftloader-test-writer-errors-3 ftloader-test-writer-errors -s -r 20000 --malloc_limit 0 --realloc_errors)
  add_ft_test_aux(ftloader-test-writer-errors-4 ftloader-test-writer-errors -s -m --malloc_limit 0 -r 10000)

  declare_custom_tests(ft-serialize-benchmark)
  add_ft_test(ft-serialize-benchmark 92 200000)
  declare_custom_tests(bnc-insert-benchmark)
  add_ft_test(bnc-insert-benchmark 100 4096000 1000)

  declare_custom_tests(cachetable-5097)
  add_ft_test_aux(cachetable-5097-enabled cachetable-5097 enable_pe)
  add_ft_test_aux(cachetable-5097-disabled cachetable-5097 disable_pe)

  add_ft_test_aux(ftdump-test-generate ft-test)
  add_test(NAME ft/ftdump-test
    COMMAND $<TARGET_FILE:tokuftdump> "ftdump-test-generate.ctest-data"
    )
  set_tests_properties(ft/ftdump-test PROPERTIES
    DEPENDS ft/ftdump-test-generate
    REQUIRED_FILES "ftdump-test-generate.ctest-data"
    )

  ## keyrange has some inequality assumptions that were broken by
  ## promotion, they seem benign but are complicated, so for now, skip
  ## this test, when we get some time, we should fix it and re-enable it.
  list(REMOVE_ITEM tests keyrange)

  foreach(test ${tests})
    add_ft_test(${test})
  endforeach(test)

  set_property(TEST ft/upgrade_test_simple APPEND PROPERTY ENVIRONMENT "TOKUDB_DATA=${TOKUDB_DATA}")

  declare_custom_tests(test-upgrade-recovery-logs)
  file(GLOB upgrade_tests "${TOKUDB_DATA}/upgrade-recovery-logs-??-clean")
  file(GLOB upgrade_tests "${CMAKE_CURRENT_SOURCE_DIR}/upgrade.data/upgrade-recovery-logs-??-clean")
  foreach(test ${upgrade_tests})
    get_filename_component(test_basename "${test}" NAME)
    add_ft_test_aux(test-${test_basename} test-upgrade-recovery-logs ${test})
  endforeach(test)
  file(GLOB upgrade_tests "${TOKUDB_DATA}/upgrade-recovery-logs-??-dirty")
  file(GLOB upgrade_tests "${CMAKE_CURRENT_SOURCE_DIR}/upgrade.data/upgrade-recovery-logs-??-dirty")
  foreach(test ${upgrade_tests})
    get_filename_component(test_basename "${test}" NAME)
    add_ft_test_aux(test-${test_basename} test-upgrade-recovery-logs ${test})
  endforeach(test)

  ## give some tests, that time out normally, 1 hour to complete
  set(long_tests
    ft/ftloader-test-extractor-3a
    ft/log-test7
    ft/recovery-bad-last-entry
    ft/subblock-test-compression
    ft/upgrade_test_simple
    )
  set_tests_properties(${long_tests} PROPERTIES TIMEOUT 3600)
  ## some take even longer, with valgrind
  set(extra_long_tests
    ft/benchmark-test
    ft/benchmark-test_256
    ft/is_empty
    ft/subblock-test-checksum
    )
  set_tests_properties(${extra_long_tests} PROPERTIES TIMEOUT 7200)
endif(BUILD_TESTING OR BUILD_FT_TESTS)