Skip to content

Commit d758a81

Browse files
authored
[tests] Setting up non-regression tests on GitHub actions (#87)
* [scene] Adjusted NeedleInsertion scene parameters to reduce number of time steps for regression * [scene] Modified NeedleInsertionCycles scenes * [scene] Removed the InsertionHaptics_Box.py * [scene] Renamed InsertionHaptics_Liver scene to NeedleInsertionHaptics * [tests] Added a .regression-tests file * [tests] Added regression files for NeedleInsertion scene * [tests] Added regression files for NeedleInsertionCycles scene * [tests] Added regression files for NeedleInsertionHaptics scene * [ci] Setting up non-regression workflow steps: Checkout and build ConstraintGeometry * [ci] Removed debug step * [ci] Added fetching and installing regression test plugin * [ci] Correct path to regression scenes * [ci] Change regression references directory to mimic BeamAdapter * [ci] Switch to installing ConstraintGeometry and export library paths for macos and ubuntu * [ci] Add paths to SOFA_PLUGIN * [scenes] Make RequiredPlugin loading for Geomagic conditional to avoid troubles with CI
1 parent 34151a2 commit d758a81

File tree

35 files changed

+2184
-26499
lines changed

35 files changed

+2184
-26499
lines changed

.github/workflows/ci.yml

Lines changed: 76 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,13 @@ jobs:
2121
sofa_root: ${{ github.workspace }}/sofa
2222
sofa_version: ${{ matrix.sofa_branch }}
2323
sofa_scope: 'standard'
24-
- name: Checkout source code
24+
25+
- name: Checkout CollisionAlgorithm
2526
uses: actions/checkout@v2
2627
with:
2728
path: ${{ env.WORKSPACE_SRC_PATH }}
2829

29-
- name: Build and install
30+
- name: Build and install CollisionAlgorithm
3031
id: build-install
3132
shell: bash
3233
run: |
@@ -55,6 +56,37 @@ jobs:
5556
echo ${CCACHE_BASEDIR}
5657
ccache -s
5758
fi
59+
60+
- name: Checkout ConstraintGeometry
61+
uses: actions/checkout@v2
62+
with:
63+
repository: InfinyTech3D/ConstraintGeometry
64+
path: downstream/ConstraintGeometry
65+
66+
- name: Build ConstraintGeometry
67+
shell: bash
68+
run: |
69+
mkdir -p downstream/ConstraintGeometry/build
70+
if [[ "$RUNNER_OS" == "Windows" ]]; then
71+
cmd //c "${{ steps.sofa.outputs.vs_vsdevcmd }} \
72+
&& cd /d %GITHUB_WORKSPACE%/downstream/ConstraintGeometry/build \
73+
&& cmake \
74+
-GNinja \
75+
-DCMAKE_PREFIX_PATH=$SOFA_ROOT/lib/cmake;%WORKSPACE_INSTALL_PATH%/lib/cmake \
76+
-DCMAKE_BUILD_TYPE=Release \
77+
-DCMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%/downstream/ConstraintGeometry/install \
78+
.. \
79+
&& ninja install"
80+
else
81+
cd downstream/ConstraintGeometry/build
82+
cmake \
83+
-GNinja \
84+
-DCMAKE_PREFIX_PATH="$SOFA_ROOT/lib/cmake;$WORKSPACE_INSTALL_PATH/lib/cmake" \
85+
-DCMAKE_BUILD_TYPE=Release \
86+
-DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/downstream/ConstraintGeometry/install \
87+
..
88+
ninja install
89+
fi
5890
5991
- name: Sanitize artifact name
6092
id: sanitize
@@ -81,7 +113,7 @@ jobs:
81113
with:
82114
name: ${{ steps.sanitize.outputs.artifact_name }}
83115
path: ${{ env.WORKSPACE_ARTIFACT_PATH }}
84-
116+
85117
- name: Set env vars for tests
86118
shell: bash
87119
run: |
@@ -90,17 +122,54 @@ jobs:
90122
echo "$WORKSPACE_ARTIFACT_PATH/lib" >> $GITHUB_PATH
91123
echo "$WORKSPACE_ARTIFACT_PATH/bin" >> $GITHUB_PATH
92124
echo "$SOFA_ROOT/plugins/SofaPython3/bin" >> $GITHUB_PATH
93-
echo "SOFA_PLUGIN_PATH=$WORKSPACE_ARTIFACT_PATH/bin" | tee -a $GITHUB_ENV
125+
echo "SOFA_PLUGIN_PATH=$WORKSPACE_ARTIFACT_PATH/bin;$GITHUB_WORKSPACE/downstream/ConstraintGeometry/install/bin" | tee -a $GITHUB_ENV
94126
else
95-
echo "SOFA_PLUGIN_PATH=$WORKSPACE_ARTIFACT_PATH/lib" | tee -a $GITHUB_ENV
127+
echo "SOFA_PLUGIN_PATH=$WORKSPACE_ARTIFACT_PATH/lib:$GITHUB_WORKSPACE/downstream/ConstraintGeometry/install/lib" | tee -a $GITHUB_ENV
96128
fi
97129
98130
if [[ "$RUNNER_OS" == "macOS" ]]; then
99-
echo "DYLD_LIBRARY_PATH=$WORKSPACE_ARTIFACT_PATH/lib:$SOFA_ROOT/lib:$SOFA_ROOT/plugins/SofaPython3/lib:$DYLD_LIBRARY_PATH" | tee -a $GITHUB_ENV
131+
echo "DYLD_LIBRARY_PATH=$WORKSPACE_ARTIFACT_PATH/lib:$SOFA_ROOT/lib:$GITHUB_WORKSPACE/downstream/ConstraintGeometry/install/lib:$SOFA_ROOT/plugins/SofaPython3/lib:$DYLD_LIBRARY_PATH" | tee -a $GITHUB_ENV
100132
fi
101133
102134
if [[ "$RUNNER_OS" == "Linux" ]]; then
103-
echo "LD_LIBRARY_PATH=$WORKSPACE_ARTIFACT_PATH/lib:$SOFA_ROOT/lib:$SOFA_ROOT/plugins/SofaPython3/lib:$LD_LIBRARY_PATH" | tee -a $GITHUB_ENV
135+
echo "LD_LIBRARY_PATH=$WORKSPACE_ARTIFACT_PATH/lib:$SOFA_ROOT/lib:$GITHUB_WORKSPACE/downstream/ConstraintGeometry/install/lib:$SOFA_ROOT/plugins/SofaPython3/lib:$LD_LIBRARY_PATH" | tee -a $GITHUB_ENV
136+
fi
137+
138+
# - name: Check environment for tests
139+
# shell: bash
140+
# run: |
141+
# echo '------ ls -la "$WORKSPACE_SRC_PATH" ------'
142+
# ls -la "$WORKSPACE_SRC_PATH"
143+
# echo '------ ls -la "$WORKSPACE_BUILD_PATH" ------'
144+
# ls -la "$WORKSPACE_BUILD_PATH"
145+
# echo '------ ls -la "$WORKSPACE_INSTALL_PATH" ------'
146+
# ls -la "$WORKSPACE_INSTALL_PATH"
147+
# echo '------ ls -la "$WORKSPACE_ARTIFACT_PATH" ------'
148+
# ls -la "$WORKSPACE_ARTIFACT_PATH"
149+
# echo '----------------------'
150+
# echo "SOFA_ROOT = $SOFA_ROOT"
151+
152+
- name: Fetch, install and run Regression_test
153+
id: regression-test
154+
if: always()
155+
shell: bash
156+
run: |
157+
if [[ "$RUNNER_OS" != "macOS" ]]; then
158+
# Get regression from github releases
159+
mkdir -p "${{ runner.temp }}/regression_tmp/install"
160+
curl --output "${{ runner.temp }}/regression_tmp/${RUNNER_OS}.zip" -L https://github.com/sofa-framework/regression/releases/download/release-master/Regression_test_master_for-SOFA-${{ steps.sofa.outputs.sofa_version }}_${RUNNER_OS}.zip
161+
unzip -qq "${{ runner.temp }}/regression_tmp/${RUNNER_OS}.zip" -d "${{ runner.temp }}/regression_tmp/install"
162+
# Install it in the SOFA bin directory
163+
$SUDO mv "${{ runner.temp }}"/regression_tmp/install/Regression_*/bin/* "${SOFA_ROOT}/bin"
164+
chmod +x ${SOFA_ROOT}/bin/Regression_test${{ steps.sofa.outputs.exe }}
165+
# Setup mandatory env vars
166+
export REGRESSION_SCENES_DIR="${WORKSPACE_SRC_PATH}/scenes"
167+
export REGRESSION_REFERENCES_DIR="${WORKSPACE_SRC_PATH}/regression/references"
168+
export PYTHONPATH=$SOFA_ROOT/plugins/SofaPython3/lib/python3/site-packages
169+
# Run regression test bench
170+
${SOFA_ROOT}/bin/Regression_test${{ steps.sofa.outputs.exe }}
171+
else
172+
echo "Regression tests are not supported on the CI for macOS yet (TODO)"
104173
fi
105174
106175
deploy:

regression/references/NeedleInsertion.py.reference

Whitespace-only changes.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

regression/references/NeedleInsertionCycles.py.reference

Whitespace-only changes.

0 commit comments

Comments
 (0)