From 8dc6054c0ab669377ceffa12a5f7bc90527e8b63 Mon Sep 17 00:00:00 2001 From: Leonhard Reichenbach Date: Thu, 19 Oct 2023 13:40:45 +0200 Subject: [PATCH 1/3] add more tests --- .github/workflows/test.yml | 4 ---- test/test_CLDConfig.py | 27 ++++++++++++++++++++++++--- test/yyxyev_000.stdhep | Bin 0 -> 87636 bytes 3 files changed, 24 insertions(+), 7 deletions(-) create mode 100644 test/yyxyev_000.stdhep diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 12e9b24..035cc39 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,10 +15,6 @@ jobs: - name: Checkout uses: actions/checkout@v3 - - name: Download test inputs - run: | - wget http://lreichen.webtest.cern.ch/test.slcio - - name: Start container run: | docker run \ diff --git a/test/test_CLDConfig.py b/test/test_CLDConfig.py index 2c404ae..32af7b8 100644 --- a/test/test_CLDConfig.py +++ b/test/test_CLDConfig.py @@ -26,11 +26,32 @@ def _CLDConfig(test_fun): test_fun() os.chdir("..") +detectorModel = os.path.join(os.environ["K4GEO"], "FCCee/CLD/compact/FCCee_o1_v04/FCCee_o1_v04.xml") @_CLDConfig -def test_lcio_edm4hep(): - command = "k4run --inputFiles=../test.slcio --outputBasename=rec_test CLDReconstruction.py".split() - detectorModel = os.path.join(os.environ["K4GEO"], "FCCee/CLD/compact/FCCee_o1_v04/FCCee_o1_v04.xml") +def test_ddsim_lcio(): + command = "ddsim -S cld_steer.py -N 3 --inputFile ../test/yyxyev_000.stdhep --outputFile test.slcio".split() + command.extend(["--compactFile", detectorModel]) + res = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True) + assert res.returncode == 0, res.stdout + +@_CLDConfig +def test_ddsim_edm4hep(): + command = "ddsim -S cld_steer.py -N 3 --inputFile ../test/yyxyev_000.stdhep --outputFile test.edm4hep.root".split() + command.extend(["--compactFile", detectorModel]) + res = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True) + assert res.returncode == 0, res.stdout + +@_CLDConfig +def test_lcio_input(): + command = "k4run --inputFiles=test.slcio --outputBasename=rec_test_lcio CLDReconstruction.py".split() + command.extend(["--GeoSvc.detectors", detectorModel]) + res = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True) + assert res.returncode == 0, res.stdout + +@_CLDConfig +def test_edm4hep_input(): + command = "k4run --inputFiles=test.edm4hep.root --outputBasename=rec_test_edm4hep CLDReconstruction.py".split() command.extend(["--GeoSvc.detectors", detectorModel]) res = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True) assert res.returncode == 0, res.stdout diff --git a/test/yyxyev_000.stdhep b/test/yyxyev_000.stdhep new file mode 100644 index 0000000000000000000000000000000000000000..5b9f05b94eee65b7f929e7fc5914733683d6b9c0 GIT binary patch literal 87636 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 literal 0 HcmV?d00001 From 35ef449df222c8bf78ad42e962466f5875dbc449 Mon Sep 17 00:00:00 2001 From: Leonhard Reichenbach Date: Fri, 20 Oct 2023 09:21:54 +0200 Subject: [PATCH 2/3] add test dependencies --- test/test_CLDConfig.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/test_CLDConfig.py b/test/test_CLDConfig.py index 32af7b8..aaa709c 100644 --- a/test/test_CLDConfig.py +++ b/test/test_CLDConfig.py @@ -19,6 +19,7 @@ import os import subprocess from decorator import decorator +import pytest @decorator def _CLDConfig(test_fun): @@ -29,6 +30,7 @@ def _CLDConfig(test_fun): detectorModel = os.path.join(os.environ["K4GEO"], "FCCee/CLD/compact/FCCee_o1_v04/FCCee_o1_v04.xml") @_CLDConfig +@pytest.mark.dependency() def test_ddsim_lcio(): command = "ddsim -S cld_steer.py -N 3 --inputFile ../test/yyxyev_000.stdhep --outputFile test.slcio".split() command.extend(["--compactFile", detectorModel]) @@ -36,6 +38,7 @@ def test_ddsim_lcio(): assert res.returncode == 0, res.stdout @_CLDConfig +@pytest.mark.dependency() def test_ddsim_edm4hep(): command = "ddsim -S cld_steer.py -N 3 --inputFile ../test/yyxyev_000.stdhep --outputFile test.edm4hep.root".split() command.extend(["--compactFile", detectorModel]) @@ -43,6 +46,7 @@ def test_ddsim_edm4hep(): assert res.returncode == 0, res.stdout @_CLDConfig +@pytest.mark.dependency(depends=["test_ddsim_lcio"]) def test_lcio_input(): command = "k4run --inputFiles=test.slcio --outputBasename=rec_test_lcio CLDReconstruction.py".split() command.extend(["--GeoSvc.detectors", detectorModel]) @@ -50,6 +54,7 @@ def test_lcio_input(): assert res.returncode == 0, res.stdout @_CLDConfig +@pytest.mark.dependency(depends=["test_ddsim_edm4hep"]) def test_edm4hep_input(): command = "k4run --inputFiles=test.edm4hep.root --outputBasename=rec_test_edm4hep CLDReconstruction.py".split() command.extend(["--GeoSvc.detectors", detectorModel]) From a0d1f00ed723a3f61c897f7ddcf05cbc84b76faa Mon Sep 17 00:00:00 2001 From: Leonhard Reichenbach Date: Mon, 23 Oct 2023 10:33:34 +0200 Subject: [PATCH 3/3] move to ctest --- .github/workflows/test.yml | 3 +- CMakeLists.txt | 22 ++++++++++++++ test/.gitignore | 21 +++++++++++++ test/CMakeLists.txt | 45 +++++++++++++++++++++++++++ test/test_CLDConfig.py | 62 -------------------------------------- 5 files changed, 90 insertions(+), 63 deletions(-) create mode 100644 CMakeLists.txt create mode 100644 test/.gitignore create mode 100644 test/CMakeLists.txt delete mode 100644 test/test_CLDConfig.py diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 035cc39..5604cf7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -27,5 +27,6 @@ jobs: run: | docker exec CLDConfig_CI /bin/bash -c 'source ${{ matrix.SETUP }}; cd CLDConfig; - pytest; + cmake .; + ctest --output-on-failure; ' diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..183887a --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,22 @@ +#[[ +Copyright (c) 2014-2023 Key4hep-Project. + +This file is part of Key4hep. +See https://key4hep.github.io/key4hep-doc/ for further info. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +]] +project(CLDConfig) + +add_subdirectory(test) +enable_testing() diff --git a/test/.gitignore b/test/.gitignore new file mode 100644 index 0000000..db5ab16 --- /dev/null +++ b/test/.gitignore @@ -0,0 +1,21 @@ +### CMake ### +CMakeLists.txt.user +CMakeCache.txt +CMakeFiles +CMakeScripts +Testing +Makefile +cmake_install.cmake +install_manifest.txt +compile_commands.json +CTestTestfile.cmake +_deps + +### CMake Patch ### +# External projects +*-prefix/ + +### other ### +*.root +*.slcio +build/* diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 0000000..3bd9e04 --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,45 @@ +#[[ +Copyright (c) 2014-2023 Key4hep-Project. + +This file is part of Key4hep. +See https://key4hep.github.io/key4hep-doc/ for further info. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +]] +include(CTest) + +set(DETECTOR $ENV{K4GEO}/FCCee/CLD/compact/FCCee_o1_v04/FCCee_o1_v04.xml) +set(CLDConfig_DIR ${CMAKE_CURRENT_LIST_DIR}/../CLDConfig) + +add_test(NAME ddsim_lcio + WORKING_DIRECTORY ${CLDConfig_DIR} + COMMAND ddsim -S cld_steer.py -N 3 --inputFile ../test/yyxyev_000.stdhep --outputFile test.slcio --compactFile ${DETECTOR} +) + +# FIXME: need to call k4run from CLDConfig dir where the pandora config lives +add_test(NAME lcio_input + WORKING_DIRECTORY ${CLDConfig_DIR} + COMMAND k4run --inputFiles=test.slcio --outputBasename=rec_test_lcio CLDReconstruction.py --GeoSvc.detectors=${DETECTOR} +) +set_property(TEST lcio_input APPEND PROPERTY DEPENDS ddsim_lcio) + +add_test(NAME ddsim_edm4hep + WORKING_DIRECTORY ${CLDConfig_DIR} + COMMAND ddsim -S cld_steer.py -N 3 --inputFile ../test/yyxyev_000.stdhep --outputFile test.edm4hep.root --compactFile ${DETECTOR} +) + +add_test(NAME edm4hep_input + WORKING_DIRECTORY ${CLDConfig_DIR} + COMMAND k4run --inputFiles=test.edm4hep.root --outputBasename=rec_test_edm4hep CLDReconstruction.py --GeoSvc.detectors=${DETECTOR} +) +set_property(TEST edm4hep_input APPEND PROPERTY DEPENDS ddsim_edm4hep) diff --git a/test/test_CLDConfig.py b/test/test_CLDConfig.py deleted file mode 100644 index aaa709c..0000000 --- a/test/test_CLDConfig.py +++ /dev/null @@ -1,62 +0,0 @@ -# -# Copyright (c) 2014-2023 Key4hep-Project. -# -# This file is part of Key4hep. -# See https://key4hep.github.io/key4hep-doc/ for further info. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -import os -import subprocess -from decorator import decorator -import pytest - -@decorator -def _CLDConfig(test_fun): - os.chdir("CLDConfig") - test_fun() - os.chdir("..") - -detectorModel = os.path.join(os.environ["K4GEO"], "FCCee/CLD/compact/FCCee_o1_v04/FCCee_o1_v04.xml") - -@_CLDConfig -@pytest.mark.dependency() -def test_ddsim_lcio(): - command = "ddsim -S cld_steer.py -N 3 --inputFile ../test/yyxyev_000.stdhep --outputFile test.slcio".split() - command.extend(["--compactFile", detectorModel]) - res = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True) - assert res.returncode == 0, res.stdout - -@_CLDConfig -@pytest.mark.dependency() -def test_ddsim_edm4hep(): - command = "ddsim -S cld_steer.py -N 3 --inputFile ../test/yyxyev_000.stdhep --outputFile test.edm4hep.root".split() - command.extend(["--compactFile", detectorModel]) - res = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True) - assert res.returncode == 0, res.stdout - -@_CLDConfig -@pytest.mark.dependency(depends=["test_ddsim_lcio"]) -def test_lcio_input(): - command = "k4run --inputFiles=test.slcio --outputBasename=rec_test_lcio CLDReconstruction.py".split() - command.extend(["--GeoSvc.detectors", detectorModel]) - res = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True) - assert res.returncode == 0, res.stdout - -@_CLDConfig -@pytest.mark.dependency(depends=["test_ddsim_edm4hep"]) -def test_edm4hep_input(): - command = "k4run --inputFiles=test.edm4hep.root --outputBasename=rec_test_edm4hep CLDReconstruction.py".split() - command.extend(["--GeoSvc.detectors", detectorModel]) - res = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True) - assert res.returncode == 0, res.stdout