Skip to content
dbarbier edited this page Nov 19, 2014 · 2 revisions

The OCE testing suite is powered by CMake/CTest/CDash.

Running the testsuite

From the cmake-gui frontend, check OCE_TESTING, then

$make
as usual to build the project.

To run the tests, just enter:

$make test

You should get the following output:

$ make test
Running tests...
Test project /Users/thomas/Devel/oce/cmake-build
      Start  1: BRepAlgoAPITestSuite.testCutBox
 1/17 Test  #1: BRepAlgoAPITestSuite.testCutBox ..............   Passed    0.05 sec
      Start  2: BRepAlgoAPITestSuite.testCutCylSphere
 2/17 Test  #2: BRepAlgoAPITestSuite.testCutCylSphere ........   Passed    0.04 sec
      Start  3: BRepGPropTestSuite.testComputeBoxVolume
 3/17 Test  #3: BRepGPropTestSuite.testComputeBoxVolume ......   Passed    0.02 sec
      Start  4: BRepGPropTestSuite.testComputeBoxSurface
 4/17 Test  #4: BRepGPropTestSuite.testComputeBoxSurface .....   Passed    0.02 sec
      Start  5: BRepGPropTestSuite.testComputeSphereVolume
 5/17 Test  #5: BRepGPropTestSuite.testComputeSphereVolume ...   Passed    0.02 sec
      Start  6: BRepOffsetAPITestSuite.testEvolvedShape
 6/17 Test  #6: BRepOffsetAPITestSuite.testEvolvedShape ......   Passed    0.04 sec
      Start  7: BRepPrimAPITestSuite.testCreateBox
 7/17 Test  #7: BRepPrimAPITestSuite.testCreateBox ...........   Passed    0.02 sec
      Start  8: BRepPrimAPITestSuite.testCreateFlatBox
 8/17 Test  #8: BRepPrimAPITestSuite.testCreateFlatBox .......   Passed    0.02 sec
      Start  9: BRepPrimAPITestSuite.testCreateSmallestBox
 9/17 Test  #9: BRepPrimAPITestSuite.testCreateSmallestBox ...   Passed    0.02 sec
      Start 10: gpTestSuite.testgp_PntConstruct
10/17 Test #10: gpTestSuite.testgp_PntConstruct ..............   Passed    0.01 sec
      Start 11: gpTestSuite.testgp_PntDistance
11/17 Test #11: gpTestSuite.testgp_PntDistance ...............   Passed    0.01 sec
      Start 12: gpTestSuite.testBuildThousandsPoints
12/17 Test #12: gpTestSuite.testBuildThousandsPoints .........   Passed    0.01 sec
      Start 13: TestSuite.testNullPointer
13/17 Test #13: TestSuite.testNullPointer ....................   Passed    0.00 sec
      Start 14: TestSuite.testFloatEq
14/17 Test #14: TestSuite.testFloatEq ........................   Passed    0.00 sec
      Start 15: TestSuite.testFloatNeq
15/17 Test #15: TestSuite.testFloatNeq .......................   Passed    0.01 sec
      Start 16: TestSuite.testBoolean
16/17 Test #16: TestSuite.testBoolean ........................   Passed    0.00 sec
      Start 17: TestSuite.testIntegerLighter
17/17 Test #17: TestSuite.testIntegerLighter .................   Passed    0.00 sec

100% tests passed, 0 tests failed out of 17

Total Test time (real) =   0.68 sec

You can then check that all tests pass, or if any of the test fails. In such a case, it may be handy to set CTEST_OUTPUT_ON_FAILURE=1 to display error messages:

$ CTEST_OUTPUT_ON_FAILURE=1 make test
Running tests...

Code coverage

CTest provides a nice feature called 'code coverage'. It tells which lines or the OCE library were executed by the testing suite. It can then allows to figure out 'holes' in the testing suite, and new tests to develop in order to fill in blanks. For that:

$make ExperimentalCoverage

Dynamic Analysis

The use of CTest with a dynamic code analyzer enables going deeper into the test results, and study memory usage: potential memory leaks, confirmed memory leaks etc. In order to use this feature, you must have either Valgrind (http://valgrind.org/) or (TODO: which other software?) installed. Then:

$make ExperimentalMemCheck

You should get an output like this:

$ make ExperimentalMemCheck
   Site: macbook-pro-de-thomas-paviot.local
   Build name: Darwin-clang++
Memory check project /Users/thomas/Devel/oce/cmake-build
      Start  1: BRepAlgoAPITestSuite.testCutBox
 1/17 MemCheck  #1: BRepAlgoAPITestSuite.testCutBox ..............   Passed    9.69 sec
      Start  2: BRepAlgoAPITestSuite.testCutCylSphere
 2/17 MemCheck  #2: BRepAlgoAPITestSuite.testCutCylSphere ........   Passed    9.39 sec
      Start  3: BRepGPropTestSuite.testComputeBoxVolume
 3/17 MemCheck  #3: BRepGPropTestSuite.testComputeBoxVolume ......   Passed    5.02 sec
      Start  4: BRepGPropTestSuite.testComputeBoxSurface
 4/17 MemCheck  #4: BRepGPropTestSuite.testComputeBoxSurface .....   Passed    5.01 sec
      Start  5: BRepGPropTestSuite.testComputeSphereVolume
 5/17 MemCheck  #5: BRepGPropTestSuite.testComputeSphereVolume ...   Passed    5.00 sec
      Start  6: BRepOffsetAPITestSuite.testEvolvedShape
 6/17 MemCheck  #6: BRepOffsetAPITestSuite.testEvolvedShape ......   Passed    9.51 sec
      Start  7: BRepPrimAPITestSuite.testCreateBox
 7/17 MemCheck  #7: BRepPrimAPITestSuite.testCreateBox ...........   Passed    4.92 sec
      Start  8: BRepPrimAPITestSuite.testCreateFlatBox
 8/17 MemCheck  #8: BRepPrimAPITestSuite.testCreateFlatBox .......   Passed    4.68 sec
      Start  9: BRepPrimAPITestSuite.testCreateSmallestBox
 9/17 MemCheck  #9: BRepPrimAPITestSuite.testCreateSmallestBox ...   Passed    4.90 sec
      Start 10: gpTestSuite.testgp_PntConstruct
10/17 MemCheck #10: gpTestSuite.testgp_PntConstruct ..............   Passed    2.82 sec
      Start 11: gpTestSuite.testgp_PntDistance
11/17 MemCheck #11: gpTestSuite.testgp_PntDistance ...............   Passed    2.82 sec
      Start 12: gpTestSuite.testBuildThousandsPoints
12/17 MemCheck #12: gpTestSuite.testBuildThousandsPoints .........   Passed    2.83 sec
      Start 13: TestSuite.testNullPointer
13/17 MemCheck #13: TestSuite.testNullPointer ....................   Passed    1.07 sec
      Start 14: TestSuite.testFloatEq
14/17 MemCheck #14: TestSuite.testFloatEq ........................   Passed    1.07 sec
      Start 15: TestSuite.testFloatNeq
15/17 MemCheck #15: TestSuite.testFloatNeq .......................   Passed    1.08 sec
      Start 16: TestSuite.testBoolean
16/17 MemCheck #16: TestSuite.testBoolean ........................   Passed    1.09 sec
      Start 17: TestSuite.testIntegerLighter
17/17 MemCheck #17: TestSuite.testIntegerLighter .................   Passed    1.07 sec

100% tests passed, 0 tests failed out of 17

Total Test time (real) =  72.34 sec
-- Processing memory checking output: ################
Memory checking results:
Mismatched deallocation - 2
Memory Leak - 1
Potential Memory Leak - 1749
Built target ExperimentalMemCheck

Sharing reports

One of another useful CTest feature is that you can share your test results with other developers. This dashboard is managed by CDash. CDash is reponsible for gathering the tests/coverage/dynamic analysis results, formatting them, and upload them to a webserver so that they can be browsed. The OCE team registered an free account at myCDash.org: http://my.cdash.org/index.php?project=OCE. To upload your results to this webpage, nothing easier:

$ make ExperimentalSubmit

References

Official CMake/CTest wiki : http://www.vtk.org/Wiki/CMake_Testing_With_CTest

Clone this wiki locally