ParaViewTesting.cmake
Go to the documentation of this file.
2  set(_vtk_testing_python_exe "$<TARGET_FILE:ParaView::pvpython>")
3  set(_vtk_test_python_args -dr ${paraview_python_args})
4  vtk_add_test_python(${ARGN})
5 endfunction ()
6 
8  set(_vtk_testing_python_exe "$<TARGET_FILE:ParaView::pvbatch>")
9  set(_vtk_test_python_args -dr ${paraview_pvbatch_args})
10  set(vtk_test_prefix "Batch-${vtk_test_prefix}")
11  vtk_add_test_python(${ARGN})
12 endfunction ()
13 
15  set(_vtk_testing_python_exe "$<TARGET_FILE:ParaView::pvbatch>")
16  set(_vtk_test_python_args -dr ${paraview_pvbatch_args})
17  set(vtk_test_prefix "Batch-${vtk_test_prefix}")
19 endfunction ()
20 
22  if (NOT (TARGET pvserver AND TARGET pvpython))
23  return()
24  endif ()
25  set(_vtk_testing_python_exe "$<TARGET_FILE:ParaView::smTestDriver>")
26  set(_vtk_test_python_args
27  --server $<TARGET_FILE:ParaView::pvserver>
28  --client $<TARGET_FILE:ParaView::pvpython> -dr)
29  vtk_add_test_python(${ARGN})
30 endfunction ()
31 
32 function (_paraview_add_tests function)
33  cmake_parse_arguments(_paraview_add_tests
34  "FORCE_SERIAL;FORCE_LOCK"
35  "LOAD_PLUGIN;PLUGIN_PATH;CLIENT;TEST_DIRECTORY;TEST_DATA_TARGET;PREFIX;SUFFIX;_ENABLE_SUFFIX;_DISABLE_SUFFIX;BASELINE_DIR;DATA_DIRECTORY;NUMPROCS"
36  "_COMMAND_PATTERN;LOAD_PLUGINS;PLUGIN_PATHS;TEST_SCRIPTS;ENVIRONMENT;ARGS;CLIENT_ARGS"
37  ${ARGN})
38 
39  if (_paraview_add_tests_UNPARSED_ARGUMENTS)
40  message(FATAL_ERROR
41  "Unparsed arguments for ${function}: "
42  "${_paraview_add_tests_UNPARSED_ARGUMENTS}")
43  endif ()
44 
45  if (NOT DEFINED _paraview_add_tests__COMMAND_PATTERN)
46  message(FATAL_ERROR
47  "The `_COMMAND_PATTERN` argument is required.")
48  endif ()
49 
50  if (NOT DEFINED _paraview_add_tests_CLIENT)
51  set(_paraview_add_tests_CLIENT
52  "$<TARGET_FILE:ParaView::paraview>")
53  endif ()
54 
55  if (NOT DEFINED _paraview_add_tests_PREFIX)
56  set(_paraview_add_tests_PREFIX "pv")
57  endif ()
58 
59  if (NOT DEFINED _paraview_add_tests_TEST_DIRECTORY)
60  set(_paraview_add_tests_TEST_DIRECTORY
61  "${CMAKE_BINARY_DIR}/Testing/Temporary")
62  endif ()
63 
64  if (NOT DEFINED _paraview_add_tests_DATA_DIRECTORY AND DEFINED _paraview_add_tests_default_data_directory)
65  set(_paraview_add_tests_DATA_DIRECTORY
66  "${_paraview_add_tests_default_data_directory}")
67  endif ()
68 
69  set(_paraview_add_tests_args
70  ${_paraview_add_tests_ARGS})
71 
72  if (DEFINED _paraview_add_tests_PLUGIN_PATH)
73  if (DEFINED _paraview_add_tests_PLUGIN_PATHS)
74  message(FATAL_ERROR
75  "The `PLUGIN_PATH` argument is incompatible "
76  "with `PLUGIN_PATHS`.")
77  endif ()
78  list(APPEND _paraview_add_tests_args
79  "--test-plugin-path=${_paraview_add_tests_PLUGIN_PATH}")
80  endif ()
81 
82  if (DEFINED _paraview_add_tests_PLUGIN_PATHS)
83  string(REPLACE ";" "," _plugin_paths "${_paraview_add_tests_PLUGIN_PATHS}")
84  list(APPEND _paraview_add_tests_args
85  "--test-plugin-paths=${_plugin_paths}")
86  endif ()
87 
88  if (DEFINED _paraview_add_tests_LOAD_PLUGIN)
89  if (DEFINED _paraview_add_tests_LOAD_PLUGINS)
90  message(FATAL_ERROR
91  "The `LOAD_PLUGIN` argument is incompatible "
92  "with `LOAD_PLUGINS`.")
93  endif ()
94  list(APPEND _paraview_add_tests_args
95  "--test-plugin=${_paraview_add_tests_LOAD_PLUGIN}")
96  endif ()
97 
98  if (DEFINED _paraview_add_tests_LOAD_PLUGINS)
99  string(REPLACE ";" "," _load_plugins "${_paraview_add_tests_LOAD_PLUGINS}")
100  list(APPEND _paraview_add_tests_args
101  "--test-plugins=${_load_plugins}")
102  endif ()
103 
104  string(REPLACE "__paraview_args__" "${_paraview_add_tests_args}"
105  _paraview_add_tests__COMMAND_PATTERN
106  "${_paraview_add_tests__COMMAND_PATTERN}")
107  string(REPLACE "__paraview_client__" "${_paraview_add_tests_CLIENT}"
108  _paraview_add_tests__COMMAND_PATTERN
109  "${_paraview_add_tests__COMMAND_PATTERN}")
110 
111  foreach (_paraview_add_tests_script IN LISTS _paraview_add_tests_TEST_SCRIPTS)
112  if (NOT IS_ABSOLUTE "${_paraview_add_tests_script}")
113  set(_paraview_add_tests_script
114  "${CMAKE_CURRENT_SOURCE_DIR}/${_paraview_add_tests_script}")
115  endif ()
116  get_filename_component(_paraview_add_tests_name "${_paraview_add_tests_script}" NAME_WE)
117  set(_paraview_add_tests_name_base "${_paraview_add_tests_name}")
118  string(APPEND _paraview_add_tests_name "${_paraview_add_tests_SUFFIX}")
119 
120  if (DEFINED _paraview_add_tests__DISABLE_SUFFIX AND ${_paraview_add_tests_name}${_paraview_add_tests__DISABLE_SUFFIX})
121  continue ()
122  endif ()
123 
124  if (DEFINED _paraview_add_tests__ENABLE_SUFFIX AND NOT ${_paraview_add_tests_name}${_paraview_add_tests__ENABLE_SUFFIX})
125  continue ()
126  endif ()
127 
128  if (NOT DEFINED _paraview_add_tests_TEST_DATA_TARGET)
129  if (DEFINED _paraview_add_tests_default_test_data_target)
130  set(_paraview_add_tests_TEST_DATA_TARGET
131  "${_paraview_add_tests_default_test_data_target}")
132  else()
133  if (NOT DEFINED "${_paraview_add_tests_name}_USES_DIRECT_DATA")
134  message(FATAL_ERROR "The `TEST_DATA_TARGET` argument is required.")
135  endif()
136  endif ()
137  endif ()
138 
139  # Build arguments to pass to the clients.
140  set(_paraview_add_tests_client_args
141  "--test-directory=${_paraview_add_tests_TEST_DIRECTORY}"
142  ${_paraview_add_tests_CLIENT_ARGS})
143  if (DEFINED _paraview_add_tests_BASELINE_DIR)
144  if (DEFINED "${_paraview_add_tests_name}_BASELINE")
145  if (DEFINED "${_paraview_add_tests_name}_USES_DIRECT_DATA")
146  list(APPEND _paraview_add_tests_client_args
147  "--test-baseline=${_paraview_add_tests_BASELINE_DIR}/${${_paraview_add_tests_name_base}_BASELINE}")
148  else()
149  list(APPEND _paraview_add_tests_client_args
150  "--test-baseline=DATA{${_paraview_add_tests_BASELINE_DIR}/${${_paraview_add_tests_name_base}_BASELINE}}")
151  endif ()
152  else ()
153  if (DEFINED "${_paraview_add_tests_name}_USES_DIRECT_DATA")
154  list(APPEND _paraview_add_tests_client_args
155  "--test-baseline=${_paraview_add_tests_BASELINE_DIR}/${_paraview_add_tests_name_base}.png")
156  else()
157  list(APPEND _paraview_add_tests_client_args
158  "--test-baseline=DATA{${_paraview_add_tests_BASELINE_DIR}/${_paraview_add_tests_name_base}.png}")
159  endif ()
160  endif ()
161  if (NOT DEFINED "${_paraview_add_tests_name}_USES_DIRECT_DATA")
162  ExternalData_Expand_Arguments("${_paraview_add_tests_TEST_DATA_TARGET}" _
163  "DATA{${_paraview_add_tests_BASELINE_DIR}/,REGEX:${_paraview_add_tests_name_base}(-.*)?(_[0-9]+)?.png}")
164  endif()
165  endif ()
166  if (DEFINED "${_paraview_add_tests_name}_THRESHOLD")
167  list(APPEND _paraview_add_tests_client_args
168  "--test-threshold=${${_paraview_add_tests_name}_THRESHOLD}")
169  endif ()
170  if (DEFINED _paraview_add_tests_DATA_DIRECTORY)
171  list(APPEND _paraview_add_tests_client_args
172  "--data-directory=${_paraview_add_tests_DATA_DIRECTORY}")
173  endif ()
174 
175  string(REPLACE "__paraview_script__" "--test-script=${_paraview_add_tests_script}"
176  _paraview_add_tests_script_args
177  "${_paraview_add_tests__COMMAND_PATTERN}")
178  string(REPLACE "__paraview_scriptpath__" "${_paraview_add_tests_script}"
179  _paraview_add_tests_script_args
180  "${_paraview_add_tests_script_args}")
181  string(REPLACE "__paraview_client_args__" "${_paraview_add_tests_client_args}"
182  _paraview_add_tests_script_args
183  "${_paraview_add_tests_script_args}")
184  string(REPLACE "__paraview_test_name__" "${_paraview_add_tests_name_base}"
185  _paraview_add_tests_script_args
186  "${_paraview_add_tests_script_args}")
187 
188  set(testArgs
189  NAME "${_paraview_add_tests_PREFIX}.${_paraview_add_tests_name}"
190  COMMAND ParaView::smTestDriver
191  --enable-bt
192  ${_paraview_add_tests_script_args})
193  if (DEFINED "${_paraview_add_tests_name}_USES_DIRECT_DATA")
194  add_test(${testArgs})
195  else()
196  ExternalData_add_test("${_paraview_add_tests_TEST_DATA_TARGET}" ${testArgs})
197  endif()
198 
199  set_property(TEST "${_paraview_add_tests_PREFIX}.${_paraview_add_tests_name}"
200  PROPERTY
201  LABELS ParaView)
202  set_property(TEST "${_paraview_add_tests_PREFIX}.${_paraview_add_tests_name}"
203  PROPERTY
204  ENVIRONMENT "${_paraview_add_tests_ENVIRONMENT}")
205  if (DEFINED _paraview_add_tests_NUMPROCS)
206  set_property(TEST "${_paraview_add_tests_PREFIX}.${_paraview_add_tests_name}"
207  PROPERTY
208  PROCESSORS "${_paraview_add_tests_NUMPROCS}")
209  endif ()
210  if (${_paraview_add_tests_name}_FORCE_SERIAL OR _paraview_add_tests_FORCE_SERIAL)
211  set_property(TEST "${_paraview_add_tests_PREFIX}.${_paraview_add_tests_name}"
212  PROPERTY
213  RUN_SERIAL ON)
214  elseif (EXISTS "${_paraview_add_tests_script}")
215  # if the XML test contains PARAVIEW_TEST_ROOT we assume that we may be writing
216  # to that file and reading it back in so we add a resource lock on the XML
217  # file so that the pv.X, pvcx.X and pvcrs.X tests don't run simultaneously.
218  # we only need to do this if the test isn't forced to be serial already.
219  if (NOT IS_DIRECTORY "${_paraview_add_tests_script}" AND NOT ${_paraview_add_tests_name}_FORCE_LOCK)
220  file(STRINGS "${_paraview_add_tests_script}" _paraview_add_tests_paraview_test_root REGEX PARAVIEW_TEST_ROOT)
221  endif ()
222  if (${_paraview_add_tests_name}_FORCE_LOCK OR _paraview_add_tests_paraview_test_root)
223  set_property(TEST "${_paraview_add_tests_PREFIX}.${_paraview_add_tests_name}"
224  PROPERTY
225  RESOURCE_LOCK "${_paraview_add_tests_script}")
226  endif ()
227  endif ()
228  endforeach ()
229 endfunction ()
230 
231 function(_get_prefix varname default)
232  cmake_parse_arguments(_get_prefix
233  ""
234  "PREFIX"
235  ""
236  ${ARGN})
237  if (_get_prefix_PREFIX)
238  set(${varname} "${_get_prefix_PREFIX}" PARENT_SCOPE)
239  else()
240  set(${varname} "${default}" PARENT_SCOPE)
241  endif()
242 endfunction()
243 
245  _get_prefix(chosen_prefix "pv" ${ARGN})
246  _paraview_add_tests("paraview_add_client_tests"
247  PREFIX "${chosen_prefix}"
248  _DISABLE_SUFFIX "_DISABLE_C"
249  _COMMAND_PATTERN
250  --client __paraview_client__
251  --enable-bt
252  __paraview_args__
253  __paraview_script__
254  __paraview_client_args__
255  -dr
256  --exit
257  ${ARGN})
258 endfunction ()
259 
261  _get_prefix(chosen_prefix "pvcs" ${ARGN})
262  _paraview_add_tests("paraview_add_client_server_tests"
263  PREFIX "${chosen_prefix}"
264  _DISABLE_SUFFIX "_DISABLE_CS"
265  _COMMAND_PATTERN
266  --server "$<TARGET_FILE:ParaView::pvserver>"
267  --enable-bt
268  __paraview_args__
269  --client __paraview_client__
270  --enable-bt
271  __paraview_args__
272  __paraview_script__
273  __paraview_client_args__
274  -dr
275  --exit
276  ${ARGN})
277 endfunction ()
278 
280  _get_prefix(chosen_prefix "pvcrs" ${ARGN})
281  _paraview_add_tests("paraview_add_client_server_render_tests"
282  PREFIX "${chosen_prefix}"
283  _DISABLE_SUFFIX "_DISABLE_CRS"
284  _COMMAND_PATTERN
285  --data-server "$<TARGET_FILE:ParaView::pvdataserver>"
286  --enable-bt
287  __paraview_args__
288  --render-server "$<TARGET_FILE:ParaView::pvrenderserver>"
289  --enable-bt
290  __paraview_args__
291  --client __paraview_client__
292  --enable-bt
293  __paraview_args__
294  __paraview_script__
295  __paraview_client_args__
296  -dr
297  --exit
298  ${ARGN})
299 endfunction ()
300 
302  _get_prefix(chosen_prefix "pvcs-multi-clients" ${ARGN})
303  _paraview_add_tests("paraview_add_multi_client_tests"
304  PREFIX "${chosen_prefix}"
305  _ENABLE_SUFFIX "_ENABLE_MULTI_CLIENT"
306  FORCE_SERIAL
307  _COMMAND_PATTERN
308  --test-multi-clients
309  --server "$<TARGET_FILE:ParaView::pvserver>"
310  --enable-bt
311  __paraview_args__
312  --client __paraview_client__
313  --enable-bt
314  __paraview_args__
315  __paraview_script__
316  __paraview_client_args__
317  --test-master
318  -dr
319  --exit
320  --client __paraview_client__
321  --enable-bt
322  __paraview_args__
323  __paraview_client_args__
324  --test-slave
325  -dr
326  --exit
327  ${ARGN})
328 endfunction ()
329 
331  _get_prefix(chosen_prefix "pvcs-multi-servers" ${ARGN})
332  _paraview_add_tests("paraview_add_multi_server_tests"
333  PREFIX "${chosen_prefix}"
334  SUFFIX "-${count}"
335  _COMMAND_PATTERN
336  --test-multi-servers "${count}"
337  --server "$<TARGET_FILE:ParaView::pvserver>"
338  --enable-bt
339  --client __paraview_client__
340  --enable-bt
341  __paraview_args__
342  __paraview_script__
343  __paraview_client_args__
344  -dr
345  --exit
346  ${ARGN})
347 endfunction ()
348 
350  math(EXPR _paraview_add_tile_display_cpu_count "${width} * ${height}")
351 
352  if (_paraview_add_tile_display_cpu_count GREATER 1 AND NOT PARAVIEW_USE_MPI)
353  # we can run 1x1 tile display tests on non MPI builds.
354  return ()
355  endif ()
356 
357  _get_prefix(chosen_prefix "pvcs-tile-display" ${ARGN})
358  _paraview_add_tests("paraview_add_tile_display_tests"
359  PREFIX "${chosen_prefix}"
360  SUFFIX "-${width}x${height}"
361  ENVIRONMENT
362  PV_SHARED_WINDOW_SIZE=800x600
363  SMTESTDRIVER_MPI_NUMPROCS=${_paraview_add_tile_display_cpu_count}
364  NUMPROCS "${_paraview_add_tile_display_cpu_count}"
365  _COMMAND_PATTERN
366  --server "$<TARGET_FILE:ParaView::pvserver>"
367  --enable-bt
368  -tdx=${width}
369  -tdy=${height}
370  # using offscreen to avoid clobbering display (although should not be
371  # necessary) when running tests in parallel.
372  --force-offscreen-rendering
373  --client __paraview_client__
374  --enable-bt
375  __paraview_args__
376  __paraview_script__
377  __paraview_client_args__
378  -dr
379  --exit
380  ${ARGN})
381 endfunction ()
382 
383 function (paraview_add_cave_tests num_ranks config)
384  if (num_ranks GREATER 1 AND NOT PARAVIEW_USE_MPI)
385  return ()
386  endif ()
387 
388  get_filename_component(_config_name "${config}" NAME_WE)
389 
390  _get_prefix(chosen_prefix "pvcs-cave-${_config_name}" ${ARGN})
391  _paraview_add_tests("paraview_add_cave_tests"
392  PREFIX "${chosen_prefix}"
393  SUFFIX "-${num_ranks}"
394  ENVIRONMENT
395  PV_SHARED_WINDOW_SIZE=400x300
396  SMTESTDRIVER_MPI_NUMPROCS=${num_ranks}
397  NUMPROCS "${num_ranks}"
398  _COMMAND_PATTERN
399  --server "$<TARGET_FILE:ParaView::pvserver>"
400  --enable-bt
401  # using offscreen to avoid clobbering display (although should not be
402  # necessary) when running tests in parallel.
403  --force-offscreen-rendering
404  ${config}
405  --client __paraview_client__
406  --enable-bt
407  __paraview_args__
408  __paraview_script__
409  __paraview_client_args__
410  -dr
411  --exit
412  ${ARGN})
413 endfunction ()
414 
415 # This is a catch-all function to run any custom command as the "client"
416 # using th smTestDriver. Note, the command must print "Process started" for
417 # smTestDriver to treat it as started otherwise the test will fail.
418 # The command to execute is passed as {ARGN} and is suffixed by each of the
419 # TEST_SCRIPTS provided, one at at time.
420 function (paraview_add_test)
421  _get_prefix(chosen_prefix "paraview" ${ARGN})
422  _paraview_add_tests("paraview_add_test"
423  PREFIX "${chosen_prefix}"
424  _COMMAND_PATTERN
425  --client
426  __paraview_args__
427  __paraview_scriptpath__
428  ${ARGN})
429 endfunction ()
430 
431 # Same as `paraview_add_test` except makes smTestDriver run the command using
432 # mpi. If `PARAVIEW_USE_MPI` if not defined, this does not add any test.
433 function (paraview_add_test_mpi)
434  if (PARAVIEW_USE_MPI)
435  _get_prefix(chosen_prefix "paraview-mpi" ${ARGN})
436  _paraview_add_tests("paraview_add_test"
437  PREFIX "${chosen_prefix}"
438  NUMPROCS 2 # See Utilities/TestDriver/CMakeLists.txt (PARAVIEW_MPI_MAX_NUMPROCS)
439  _COMMAND_PATTERN
440  --client-mpi
441  __paraview_args__
442  __paraview_scriptpath__
443  ${ARGN})
444  endif ()
445 endfunction ()
446 
447 
448 # if PARAVIEW_USE_MPI, calls paraview_add_test_mpi(), else calls
449 # paraview_add_test()
450 function (paraview_add_test_mpi_optional)
451  if (PARAVIEW_USE_MPI)
452  paraview_add_test_mpi(${ARGN})
453  else()
454  paraview_add_test(${ARGN})
455  endif()
456 endfunction()
data
function paraview_add_client_server_tests()
function paraview_add_test()
function paraview_add_multi_server_tests(count)
function paraview_add_test_pvbatch()
function paraview_add_tile_display_tests(width, height)
string
function paraview_add_test_pvbatch_mpi()
function paraview_add_test_python()
function vtk_add_test_python_mpi()
.md MPI tests
function vtk_add_test_python()
.md Python tests
function paraview_add_multi_client_tests()
function paraview_add_test_driven()
height
function paraview_add_client_tests()
function _get_prefix(varname, default)
function paraview_add_client_server_render_tests()
function _paraview_add_tests(function)
function paraview_add_cave_tests(num_ranks, config)