diff --git a/.CI/Jenkinsfile b/.CI/Jenkinsfile index 9bb89e2..af5d9ed 100644 --- a/.CI/Jenkinsfile +++ b/.CI/Jenkinsfile @@ -3,47 +3,24 @@ pipeline { parameters { booleanParam(name: 'OLDLIBS', defaultValue: false, description: 'Also test some outdated libraries') - /* - booleanParam(name: 'v1_12', defaultValue: false, description: 'maintenance/v1.12 branch (ryzen-5950x-1)') - booleanParam(name: 'v1_13', defaultValue: false, description: 'maintenance/v1.13 branch (ryzen-5950x-1)') - booleanParam(name: 'v1_14', defaultValue: false, description: 'maintenance/v1.14 branch (ryzen-5950x-1)') - booleanParam(name: 'v1_16', defaultValue: false, description: 'maintenance/v1.16 branch (ryzen-5950x-1)') - booleanParam(name: 'v1_17', defaultValue: false, description: 'maintenance/v1.17 branch (ryzen-5950x-1)') - booleanParam(name: 'v1_18', defaultValue: false, description: 'maintenance/v1.18 branch (ryzen-5950x-1)') - */ - booleanParam(name: 'v1_19', defaultValue: false, description: 'maintenance/v1.19 branch (ryzen-5950x-1)') - booleanParam(name: 'v1_20', defaultValue: false, description: 'maintenance/v1.20 branch (ryzen-5950x-1)') - booleanParam(name: 'v1_21', defaultValue: false, description: 'maintenance/v1.21 branch (ryzen-5950x-1)') - booleanParam(name: 'v1_22', defaultValue: false, description: 'maintenance/v1.22 branch (ryzen-5950x-1)') booleanParam(name: 'v1_23', defaultValue: false, description: 'maintenance/v1.23 branch (ryzen-5950x-1)') + booleanParam(name: 'v1_24', defaultValue: false, description: 'maintenance/v1.24 branch (ryzen-5950x-1)') booleanParam(name: 'master', defaultValue: false, description: 'master branch (ryzen-5950x-1)') - /* - booleanParam(name: 'fmi_v1_12', defaultValue: false, description: 'maintenance/v1.12 branch with FMI (ryzen-5950x-2)') - booleanParam(name: 'fmi_v1_13', defaultValue: false, description: 'maintenance/v1.13 branch with FMI (ryzen-5950x-2)') - booleanParam(name: 'fmi_v1_14', defaultValue: false, description: 'maintenance/v1.14 branch with FMI (ryzen-5950x-2)') - booleanParam(name: 'fmi_v1_16', defaultValue: false, description: 'maintenance/v1.16 branch with FMI (ryzen-5950x-2)') - booleanParam(name: 'fmi_v1_17', defaultValue: false, description: 'maintenance/v1.17 branch with FMI (ryzen-5950x-2)') - booleanParam(name: 'fmi_v1_18', defaultValue: false, description: 'maintenance/v1.18 branch with FMI (ryzen-5950x-2)') - */ - booleanParam(name: 'fmi_v1_19', defaultValue: false, description: 'maintenance/v1.19 branch with FMI (ryzen-5950x-2)') - booleanParam(name: 'fmi_v1_20', defaultValue: false, description: 'maintenance/v1.20 branch with FMI (ryzen-5950x-2)') - booleanParam(name: 'fmi_v1_21', defaultValue: false, description: 'maintenance/v1.21 branch with FMI (ryzen-5950x-2)') - booleanParam(name: 'fmi_v1_22', defaultValue: false, description: 'maintenance/v1.22 branch with FMI (ryzen-5950x-2)') booleanParam(name: 'fmi_v1_23', defaultValue: false, description: 'maintenance/v1.23 branch with FMI (ryzen-5950x-2)') + booleanParam(name: 'fmi_v1_24', defaultValue: false, description: 'maintenance/v1.24 branch with FMI (ryzen-5950x-2)') booleanParam(name: 'fmi_master', defaultValue: false, description: 'master branch with FMI running OMSimulator (ryzen-5950x-2)') - booleanParam(name: 'fmpy_fmi_v1_22', defaultValue: false, description: 'maintenance/v1.22 branch with FMI (ryzen-5950x-2)') + booleanParam(name: 'fmpy_fmi_v1_23', defaultValue: false, description: 'maintenance/v1.23 branch with FMI (ryzen-5950x-2)') + booleanParam(name: 'fmpy_fmi_v1_24', defaultValue: false, description: 'maintenance/v1.24 branch with FMI (ryzen-5950x-2)') booleanParam(name: 'fmpy_fmi_master', defaultValue: false, description: 'master branch with FMI running FMPy (ryzen-5950x-2)') + booleanParam(name: 'newInst_daeMode', defaultValue: false, description: 'master branch, --daeMode with -d=newInst (ryzen-5950x-2)') booleanParam(name: 'newInst_newBackend', defaultValue: false, description: 'master branch, -d=newInst --newBackend, (ryzen-5950x-1)') booleanParam(name: 'oldInst', defaultValue: false, description: 'master branch, with -d=nonewInst (ryzen-5950x-2)') - booleanParam(name: 'cpp_v1_18', defaultValue: false, description: 'maintenance/v1.18 branch, with --simCodeTarget=Cpp (ryzen-5950x-2).') - booleanParam(name: 'cpp_v1_19', defaultValue: false, description: 'maintenance/v1.19 branch, with --simCodeTarget=Cpp (ryzen-5950x-2).') - booleanParam(name: 'cpp_v1_20', defaultValue: false, description: 'maintenance/v1.20 branch, with --simCodeTarget=Cpp (ryzen-5950x-2).') - booleanParam(name: 'cpp_v1_21', defaultValue: false, description: 'maintenance/v1.21 branch, with --simCodeTarget=Cpp (ryzen-5950x-2).') - booleanParam(name: 'cpp_v1_22', defaultValue: false, description: 'maintenance/v1.22 branch, with --simCodeTarget=Cpp (ryzen-5950x-2).') + booleanParam(name: 'cpp_v1_23', defaultValue: false, description: 'maintenance/v1.23 branch, with --simCodeTarget=Cpp (ryzen-5950x-2).') + booleanParam(name: 'cpp_v1_24', defaultValue: false, description: 'maintenance/v1.24 branch, with --simCodeTarget=Cpp (ryzen-5950x-2).') booleanParam(name: 'cpp', defaultValue: false, description: 'master branch, with --simCodeTarget=Cpp (ryzen-5950x-2).') booleanParam(name: 'report_ryzen_5950x_1', defaultValue: false, description: 'Generate a report for ryzen-5950x-1 without running the tests') booleanParam(name: 'report_ryzen_5950x_2', defaultValue: false, description: 'Generate a report for ryzen-5950x-2 without running the tests') @@ -60,162 +37,7 @@ pipeline { stages { stage('test') { parallel { - /* - stage('v1.12') { - agent { - node { - label 'ryzen-5950x-1' - customWorkspace 'ws/OpenModelicaLibraryTestingWork' - } - } - options { skipDefaultCheckout() } - when { - beforeAgent true - expression { params.v1_12 } - } - steps { - runRegressiontest('maintenance/v1.12', 'v1.12', '', '', 'ripper1', 'LibraryTestingRipper1DB', true, '', true, false) - } - } - - stage('v1.13') { - agent { - node { - label 'ryzen-5950x-1' - customWorkspace 'ws/OpenModelicaLibraryTestingWork' - } - } - options { skipDefaultCheckout() } - when { - beforeAgent true - expression { params.v1_13 } - } - steps { - runRegressiontest('maintenance/v1.13', 'v1.13', '', '', 'ripper1', 'LibraryTestingRipper1DB', true, '', true, false) - } - } - - stage('v1.14') { - agent { - node { - label 'ryzen-5950x-1' - customWorkspace 'ws/OpenModelicaLibraryTestingWork' - } - } - options { skipDefaultCheckout() } - when { - beforeAgent true - expression { params.v1_14 } - } - steps { - runRegressiontest('maintenance/v1.14', 'v1.14', '', '', 'ripper1', 'LibraryTestingRipper1DB', false, '', true, false) - } - } - - stage('v1.16') { - agent { - node { - label 'ryzen-5950x-1' - customWorkspace 'ws/OpenModelicaLibraryTestingWork' - } - } - options { skipDefaultCheckout() } - when { - beforeAgent true - expression { params.v1_16 } - } - steps { - runRegressiontest('maintenance/v1.16', 'v1.16', '', '', 'ripper1', 'LibraryTestingRipper1DB', false, '', false, false) - } - } - - stage('v1.17') { - agent { - node { - label 'ryzen-5950x-1' - customWorkspace 'ws/OpenModelicaLibraryTestingWork' - } - } - options { skipDefaultCheckout() } - when { - beforeAgent true - expression { params.v1_17 } - } - steps { - runRegressiontest('maintenance/v1.17', 'v1.17', '', '', 'ripper1', 'LibraryTestingRipper1DB', false, '', false, false) - } - } - - stage('v1.18') { - agent { - node { - label 'ryzen-5950x-1' - customWorkspace 'ws/OpenModelicaLibraryTestingWork' - } - } - options { skipDefaultCheckout() } - when { - beforeAgent true - expression { params.v1_18 } - } - steps { - runRegressiontest('maintenance/v1.18', 'v1.18', '', '', 'ripper1', 'LibraryTestingRipper1DB', false, '', false, false) - } - } - */ - - stage('v1.19') { - agent { - node { - label 'ryzen-5950x-1' - customWorkspace 'ws/OpenModelicaLibraryTestingWork' - } - } - options { skipDefaultCheckout() } - when { - beforeAgent true - expression { params.v1_19 } - } - steps { - runRegressiontest('maintenance/v1.19', 'v1.19', '', '', 'ripper1', 'LibraryTestingRipper1DB', false, '', false, false) - } - } - - stage('v1.20') { - agent { - node { - label 'ryzen-5950x-1' - customWorkspace 'ws/OpenModelicaLibraryTestingWork' - } - } - options { skipDefaultCheckout() } - when { - beforeAgent true - expression { params.v1_20 } - } - steps { - runRegressiontest('maintenance/v1.20', 'v1.20', '', '', 'ripper1', 'LibraryTestingRipper1DB', false, '', false, false) - } - } - - stage('v1.21') { - agent { - node { - label 'ryzen-5950x-1' - customWorkspace 'ws/OpenModelicaLibraryTestingWork' - } - } - options { skipDefaultCheckout() } - when { - beforeAgent true - expression { params.v1_21 } - } - steps { - runRegressiontest('maintenance/v1.21', 'v1.21', '', '', 'ripper1', 'LibraryTestingRipper1DB', false, '', false, false) - } - } - - stage('v1.22') { + stage('v1.23') { agent { node { label 'ryzen-5950x-1' @@ -225,14 +47,14 @@ pipeline { options { skipDefaultCheckout() } when { beforeAgent true - expression { params.v1_22 } + expression { params.v1_23 } } steps { - runRegressiontest('maintenance/v1.22', 'v1.22', '', '', 'ripper1', 'LibraryTestingRipper1DB', false, '', false, false) + runRegressiontest('maintenance/v1.23', 'v1.23', '', '', 'ripper1', 'LibraryTestingRipper1DB', false, '', false, false) } } - stage('v1.23') { + stage('v1.24') { agent { node { label 'ryzen-5950x-1' @@ -242,10 +64,10 @@ pipeline { options { skipDefaultCheckout() } when { beforeAgent true - expression { params.v1_23 } + expression { params.v1_24 } } steps { - runRegressiontest('maintenance/v1.23', 'v1.23', '', '', 'ripper1', 'LibraryTestingRipper1DB', false, '', false, false) + runRegressiontest('maintenance/v1.24', 'v1.24', '', '', 'ripper1', 'LibraryTestingRipper1DB', false, '', false, false) } } @@ -300,153 +122,7 @@ pipeline { } } - /* - stage('v1.12 FMI with OMSimulator') { - agent { - node { - label 'ryzen-5950x-2-1' - customWorkspace 'ws/OpenModelicaLibraryTestingWork' - } - } - options { skipDefaultCheckout() } - when { - beforeAgent true - expression { params.fmi_v1_12 } - } - steps { - runRegressiontest('maintenance/v1.12', 'v1.12-fmi', '', omsimulatorHash(), 'ripper2', 'LibraryTestingRipper2DB', true, '', true, false) - } - } - stage('v1.13 FMI with OMSimulator') { - agent { - node { - label 'ryzen-5950x-2-1' - customWorkspace 'ws/OpenModelicaLibraryTestingWork' - } - } - options { skipDefaultCheckout() } - when { - beforeAgent true - expression { params.fmi_v1_13 } - } - steps { - runRegressiontest('maintenance/v1.13', 'v1.13-fmi', '', omsimulatorHash(), 'ripper2', 'LibraryTestingRipper2DB', true, '', true, false) - } - } - stage('v1.14 FMI with OMSimulator') { - agent { - node { - label 'ryzen-5950x-2-1' - customWorkspace 'ws/OpenModelicaLibraryTestingWork' - } - } - options { skipDefaultCheckout() } - when { - beforeAgent true - expression { params.fmi_v1_14 } - } - steps { - runRegressiontest('maintenance/v1.14', 'v1.14-fmi', '', omsimulatorHash(), 'ripper2', 'LibraryTestingRipper2DB', false, '', true, false) - } - } - stage('v1.16 FMI with OMSimulator') { - agent { - node { - label 'ryzen-5950x-2-1' - customWorkspace 'ws/OpenModelicaLibraryTestingWork' - } - } - options { skipDefaultCheckout() } - when { - beforeAgent true - expression { params.fmi_v1_16 } - } - steps { - runRegressiontest('maintenance/v1.16', 'v1.16-fmi', '', omsimulatorHash(), 'ripper2', 'LibraryTestingRipper2DB', false, '', false, false) - } - } - stage('v1.17 FMI with OMSimulator') { - agent { - node { - label 'ryzen-5950x-2-1' - customWorkspace 'ws/OpenModelicaLibraryTestingWork' - } - } - options { skipDefaultCheckout() } - when { - beforeAgent true - expression { params.fmi_v1_17 } - } - steps { - runRegressiontest('maintenance/v1.17', 'v1.17-fmi', '', omsimulatorHash(), 'ripper2', 'LibraryTestingRipper2DB', false, '', false, false) - } - } - stage('v1.18 FMI with OMSimulator') { - agent { - node { - label 'ryzen-5950x-2-1' - customWorkspace 'ws/OpenModelicaLibraryTestingWork' - } - } - options { skipDefaultCheckout() } - when { - beforeAgent true - expression { params.fmi_v1_18 } - } - steps { - runRegressiontest('maintenance/v1.18', 'v1.18-fmi', '', omsimulatorHash(), 'ripper2', 'LibraryTestingRipper2DB', false, '', false, false) - } - } - */ - stage('v1.19 FMI with OMSimulator') { - agent { - node { - label 'ryzen-5950x-2-1' - customWorkspace 'ws/OpenModelicaLibraryTestingWork' - } - } - options { skipDefaultCheckout() } - when { - beforeAgent true - expression { params.fmi_v1_19 } - } - steps { - runRegressiontest('maintenance/v1.19', 'v1.19-fmi', '', omsimulatorHash(), 'ripper2', 'LibraryTestingRipper2DB', false, '', false, false) - } - } - stage('v1.20 FMI with OMSimulator') { - agent { - node { - label 'ryzen-5950x-2-1' - customWorkspace 'ws/OpenModelicaLibraryTestingWork' - } - } - options { skipDefaultCheckout() } - when { - beforeAgent true - expression { params.fmi_v1_20 } - } - steps { - runRegressiontest('maintenance/v1.20', 'v1.20-fmi', '', omsimulatorHash(), 'ripper2', 'LibraryTestingRipper2DB', false, '', false, false) - } - } - stage('v1.21 FMI with OMSimulator') { - agent { - node { - label 'ryzen-5950x-2-1' - customWorkspace 'ws/OpenModelicaLibraryTestingWork' - } - } - options { skipDefaultCheckout() } - when { - beforeAgent true - expression { params.fmi_v1_21 } - } - steps { - runRegressiontest('maintenance/v1.21', 'v1.21-fmi', '', omsimulatorHash(), 'ripper2', 'LibraryTestingRipper2DB', false, '', false, false) - } - } - stage('v1.22 FMI with OMSimulator') { + stage('v1.23 FMI with OMSimulator') { agent { node { label 'ryzen-5950x-2-1' @@ -456,13 +132,13 @@ pipeline { options { skipDefaultCheckout() } when { beforeAgent true - expression { params.fmi_v1_22 } + expression { params.fmi_v1_23 } } steps { - runRegressiontest('maintenance/v1.22', 'v1.22-fmi', '', omsimulatorHash(), 'ripper2', 'LibraryTestingRipper2DB', false, '', false, false) + runRegressiontest('maintenance/v1.23', 'v1.23-fmi', '', omsimulatorHash(), 'ripper2', 'LibraryTestingRipper2DB', false, '', false, false) } } - stage('v1.23 FMI with OMSimulator') { + stage('v1.24 FMI with OMSimulator') { agent { node { label 'ryzen-5950x-2-1' @@ -472,10 +148,10 @@ pipeline { options { skipDefaultCheckout() } when { beforeAgent true - expression { params.fmi_v1_23 } + expression { params.fmi_v1_24 } } steps { - runRegressiontest('maintenance/v1.23', 'v1.23-fmi', '', omsimulatorHash(), 'ripper2', 'LibraryTestingRipper2DB', false, '', false, false) + runRegressiontest('maintenance/v1.24', 'v1.24-fmi', '', omsimulatorHash(), 'ripper2', 'LibraryTestingRipper2DB', false, '', false, false) } } stage('master FMI with OMSimulator') { @@ -494,7 +170,9 @@ pipeline { runRegressiontest('master', 'master-fmi', '', 'origin/master', 'ripper2', 'LibraryTestingRipper2DB', false, '', false, false) } } - stage('v1.22 FMI with FMPy') { + + + stage('v1.23 FMI with FMPy') { agent { node { label 'ryzen-5950x-2-1' @@ -504,13 +182,13 @@ pipeline { options { skipDefaultCheckout() } when { beforeAgent true - expression { params.fmpy_fmi_v1_22 } + expression { params.fmpy_fmi_v1_23 } } steps { - runRegressiontest('maintenance/v1.22', 'v1.22-fmi-fmpy', '', omsimulatorHash(), 'ripper2', 'LibraryTestingRipper2DB', false, '', false, false) + runRegressiontest('maintenance/v1.23', 'v1.23-fmi-fmpy', '', omsimulatorHash(), 'ripper2', 'LibraryTestingRipper2DB', false, '', false, false) } } - stage('v1.23 FMI with FMPy') { + stage('v1.24 FMI with FMPy') { agent { node { label 'ryzen-5950x-2-1' @@ -520,10 +198,10 @@ pipeline { options { skipDefaultCheckout() } when { beforeAgent true - expression { params.fmpy_fmi_v1_23 } + expression { params.fmpy_fmi_v1_24 } } steps { - runRegressiontest('maintenance/v1.23', 'v1.23-fmi-fmpy', '', omsimulatorHash(), 'ripper2', 'LibraryTestingRipper2DB', false, '', false, false) + runRegressiontest('maintenance/v1.24', 'v1.24-fmi-fmpy', '', omsimulatorHash(), 'ripper2', 'LibraryTestingRipper2DB', false, '', false, false) } } stage('master FMI with FMPy') { @@ -638,73 +316,8 @@ pipeline { runRegressiontest('master', 'heavy_tests', '', '', 'ripper1', 'LibraryTestingRipper1DB', false, '', false, false, 'configs/heavy_tests.json', 1) } } - /* - stage('C++ v1.18') { - agent { - node { - label 'ryzen-5950x-2-1' - customWorkspace 'ws/OpenModelicaLibraryTestingWork' - } - } - options { skipDefaultCheckout() } - when { - beforeAgent true - expression { params.cpp_v1_18 } - } - steps { - runRegressiontest('maintenance/v1.18', 'v1.18-cpp', 'setCommandLineOptions("--simCodeTarget=Cpp")', '', 'ripper2', 'LibraryTestingRipper2DB', false, '', false, false) - } - } - */ - stage('C++ v1.19') { - agent { - node { - label 'ryzen-5950x-2-1' - customWorkspace 'ws/OpenModelicaLibraryTestingWork' - } - } - options { skipDefaultCheckout() } - when { - beforeAgent true - expression { params.cpp_v1_19 } - } - steps { - runRegressiontest('maintenance/v1.19', 'v1.19-cpp', 'setCommandLineOptions("--simCodeTarget=Cpp")', '', 'ripper2', 'LibraryTestingRipper2DB', false, '', false, false) - } - } - stage('C++ v1.20') { - agent { - node { - label 'ryzen-5950x-2-1' - customWorkspace 'ws/OpenModelicaLibraryTestingWork' - } - } - options { skipDefaultCheckout() } - when { - beforeAgent true - expression { params.cpp_v1_20 } - } - steps { - runRegressiontest('maintenance/v1.20', 'v1.20-cpp', 'setCommandLineOptions("--simCodeTarget=Cpp")', '', 'ripper2', 'LibraryTestingRipper2DB', false, '', false, false) - } - } - stage('C++ v1.21') { - agent { - node { - label 'ryzen-5950x-2-1' - customWorkspace 'ws/OpenModelicaLibraryTestingWork' - } - } - options { skipDefaultCheckout() } - when { - beforeAgent true - expression { params.cpp_v1_21 } - } - steps { - runRegressiontest('maintenance/v1.21', 'v1.21-cpp', 'setCommandLineOptions("--simCodeTarget=Cpp")', '', 'ripper2', 'LibraryTestingRipper2DB', false, '', false, false) - } - } - stage('C++ v1.22') { + + stage('C++ v1.23') { agent { node { label 'ryzen-5950x-2-1' @@ -714,13 +327,13 @@ pipeline { options { skipDefaultCheckout() } when { beforeAgent true - expression { params.cpp_v1_22 } + expression { params.cpp_v1_23 } } steps { - runRegressiontest('maintenance/v1.22', 'v1.22-cpp', 'setCommandLineOptions("--simCodeTarget=Cpp")', '', 'ripper2', 'LibraryTestingRipper2DB', false, '', false, false) + runRegressiontest('maintenance/v1.23', 'v1.23-cpp', 'setCommandLineOptions("--simCodeTarget=Cpp")', '', 'ripper2', 'LibraryTestingRipper2DB', false, '', false, false) } } - stage('C++ v1.23') { + stage('C++ v1.24') { agent { node { label 'ryzen-5950x-2-1' @@ -733,7 +346,7 @@ pipeline { expression { params.cpp_v1_23 } } steps { - runRegressiontest('maintenance/v1.23', 'v1.23-cpp', 'setCommandLineOptions("--simCodeTarget=Cpp")', '', 'ripper2', 'LibraryTestingRipper2DB', false, '', false, false) + runRegressiontest('maintenance/v1.24', 'v1.24-cpp', 'setCommandLineOptions("--simCodeTarget=Cpp")', '', 'ripper2', 'LibraryTestingRipper2DB', false, '', false, false) } } stage('C++') { @@ -765,7 +378,7 @@ pipeline { } when { beforeAgent true - expression { params.v1_12 || params.v1_13 || params.v1_14 || params.v1_16 || params.v1_17 || params.v1_18 || params.v1_19 || params.v1_20 || params.v1_21 || params.v1_22 || params.v1_23 || params.master || params.conversion_script || params.report_ryzen_5950x_1 | params.newInst_newBackend || params.generateSymbolicJacobian || params.heavy_tests} + expression { params.v1_12 || params.v1_13 || params.v1_14 || params.v1_16 || params.v1_17 || params.v1_18 || params.v1_19 || params.v1_20 || params.v1_21 || params.v1_22 || params.v1_23 || params.v1_24 || params.master || params.conversion_script || params.report_ryzen_5950x_1 | params.newInst_newBackend || params.generateSymbolicJacobian || params.heavy_tests} } environment { GITBRANCHES = 'maintenance/v1.12 maintenance/v1.13 maintenance/v1.14 maintenance/v1.16 maintenance/v1.17 maintenance/v1.18 maintenance/v1.19 maintenance/v1.20 maintenance/v1.21 maintenance/v1.22 maintenance/v1.23 master newInst-newBackend' @@ -824,13 +437,13 @@ pipeline { } when { beforeAgent true - expression { params.fmi_v1_12 || params.fmi_v1_13 || params.fmi_v1_14 || params.fmi_v1_16 || params.fmi_v1_17 || params.fmi_v1_18 || params.fmi_v1_19 || params.fmi_v1_20 || params.fmi_v1_21 || params.fmi_v1_22 || params.fmi_v1_23 || params.fmi_master || params.fmpy_fmi_v1_22 || params.fmpy_fmi_v1_23 || params.fmpy_fmi_master || params.newInst_daeMode || params.oldInst || params.report_ryzen_5950x_2 || params.cpp || params.cvode || params.gbode} + expression { params.fmi_v1_12 || params.fmi_v1_13 || params.fmi_v1_14 || params.fmi_v1_16 || params.fmi_v1_17 || params.fmi_v1_18 || params.fmi_v1_19 || params.fmi_v1_20 || params.fmi_v1_21 || params.fmi_v1_22 || params.fmi_v1_23 || params.fmi_v1_24 || params.fmi_master || params.fmpy_fmi_v1_22 || params.fmpy_fmi_v1_23 || params.fmpy_fmi_v1_24 || params.fmpy_fmi_master || params.newInst_daeMode || params.oldInst || params.report_ryzen_5950x_2 || params.cpp || params.cvode || params.gbode} } environment { - GITBRANCHES_FMI = 'maintenance/v1.12-fmi maintenance/v1.13-fmi maintenance/v1.14-fmi maintenance/v1.16-fmi maintenance/v1.17-fmi maintenance/v1.18-fmi maintenance/v1.19-fmi maintenance/v1.20-fmi maintenance/v1.21-fmi maintenance/v1.22-fmi maintenance/v1.22-fmi-fmpy maintenance/v1.23-fmi maintenance/v1.23-fmi-fmpy master-fmi master-fmi-fmpy' + GITBRANCHES_FMI = 'maintenance/v1.12-fmi maintenance/v1.13-fmi maintenance/v1.14-fmi maintenance/v1.16-fmi maintenance/v1.17-fmi maintenance/v1.18-fmi maintenance/v1.19-fmi maintenance/v1.20-fmi maintenance/v1.21-fmi maintenance/v1.22-fmi maintenance/v1.23-fmi maintenance/v1.24-fmi maintenance/v1.22-fmi-fmpy maintenance/v1.23-fmi-fmpy maintenance/v1.24-fmi-fmpy master-fmi master-fmi-fmpy' GITBRANCHES_NEWINST = 'oldInst' GITBRANCHES_DAE = 'newInst-daeMode' - GITBRANCHES_CPP = 'v1.19-cpp v1.20-cpp v1.21-cpp v1.22-cpp v1.23-cpp cpp' + GITBRANCHES_CPP = 'v1.19-cpp v1.20-cpp v1.21-cpp v1.22-cpp v1.23-cpp v1.24-cpp cpp' PYTHONIOENCODING = 'utf-8' IDA_EMAIL = credentials('IDA email') } @@ -904,7 +517,7 @@ pipeline { } when { beforeAgent true - expression { params.v1_12 || params.v1_13 || params.v1_14 || params.v1_16 || params.v1_17 || params.v1_18 || params.v1_19 || params.v1_20 || params.v1_21 || params.v1_22 ||params.master || params.report_ripper1 || params.generateSymbolicJacobian } + expression { params.v1_12 || params.v1_13 || params.v1_14 || params.v1_16 || params.v1_17 || params.v1_18 || params.v1_19 || params.v1_20 || params.v1_21 || params.v1_22 || params.v1_23 || params.v1_24 || params.master || params.report_ripper1 || params.generateSymbolicJacobian } } steps { sh 'cp ~/TEST_LIBS_BACKUP/ripper1-sqlite3.db sqlite3.db' @@ -920,7 +533,7 @@ pipeline { } when { beforeAgent true - expression { params.fmi_v1_12 || params.fmi_v1_13 || params.fmi_v1_14 || params.fmi_v1_16 || params.fmi_v1_17 || params.fmi_v1_18 || params.fmi_v1_18 || params.fmi_v1_19 || params.fmi_v1_20 || params.fmi_v1_21 || params.fmi_v1_22 || params.fmi_v1_23 || params.fmi_master || params.fmpy_fmi_v1_22 || params.fmpy_fmi_v1_23 || params.fmpy_fmi_master || params.newInst_daeMode || params.oldInst || params.report_ripper2 } + expression { params.fmi_v1_12 || params.fmi_v1_13 || params.fmi_v1_14 || params.fmi_v1_16 || params.fmi_v1_17 || params.fmi_v1_18 || params.fmi_v1_18 || params.fmi_v1_19 || params.fmi_v1_20 || params.fmi_v1_21 || params.fmi_v1_22 || params.fmi_v1_23 || params.fmi_v1_24 || params.fmi_master || params.fmpy_fmi_v1_22 || params.fmpy_fmi_v1_23 || params.fmpy_fmi_v1_24 || params.fmpy_fmi_master || params.newInst_daeMode || params.oldInst || params.report_ripper2 } } steps { sh 'cp ~/TEST_LIBS_BACKUP/ripper2-sqlite3.db sqlite3.db' @@ -1158,7 +771,7 @@ def runRegressiontest(branch, name, extraFlags, omsHash, dbPrefix, sshConfig, om export HOME="${libraryPath}" cd OpenModelicaLibraryTesting # Force /usr/bin/omc as being used for generating the mos-files. Ensures consistent behavior among all tested OMC versions - stdbuf -oL -eL time ./test.py --ompython_omhome=/usr ${FMI_TESTING_FLAG} --extraflags='${extraFlags}' --extrasimflags='${extrasimflags}' --branch="${name}" --output="libraries.openmodelica.org:/var/www/libraries.openmodelica.org/branches/${name}/" --libraries='${libraryPath}/.openmodelica/libraries/' --jobs=${jobs} ${libs_config_file} ${params.OLDLIBS ? "configs/conf-old.json configs/conf-nonstandard.json" : ""} || (killall omc ; false) || exit 1 + stdbuf -oL -eL time ./test.py --ompython_omhome=/usr ${FMI_TESTING_FLAG} --extraflags='${extraFlags}' --extrasimflags='${extrasimflags}' --branch="${name}" --output="libraries.openmodelica.org:/var/www/libraries.openmodelica.org/branches/${name}/" --libraries='${libraryPath}/.openmodelica/libraries/' ${libs_config_file} ${params.OLDLIBS ? "configs/conf-old.json configs/conf-nonstandard.json" : ""} || (killall omc ; false) || exit 1 """ sh 'date' sh "rm -f OpenModelicaLibraryTesting/${dbPrefix}-sqlite3.db.tmp" diff --git a/README.md b/README.md index 7296b37..c59957d 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,12 @@ The scripts from this repository can be used to run regression tests for public, "git-ref": "main", "git-directory": "ReferenceFiles" }, - "optlevel":"-Os -march=native" + "ulimitOmc":800, // specify a max timeout for a model build + "ulimitExe":300, // specify a max timeout for a model simulation + "ulimitMemory":62000000, // specify a max for the virtual memory of the running process when building a model + "procOMC":0, // [if procOMC = 0 use max procs, use procOMC = 1 if not defined, else use the given value] how many CPU cores should be used to run omc (load Modelica libraries in parallel and generate the C code in parallel) + "procCCompile":0, // [if procCCompile = 0 use max procs, use procCCompile = 1 if not defined, else use the given value] how many CPU cores should be used to compile the generated code + "optlevel":"-Os -march=native" // what optimizations should be used by the C compiler } ] ``` @@ -106,7 +111,7 @@ The scripts from this repository can be used to run regression tests for public, - `--fmisimulator=''`: The default is nothing but you can use the path to OMSimulator executable or 'fmpy' - `--ulimitvmem=8388608`: Virtual memory limit (in kB) - `--default=[]`: Add a default value for some configuration key, such as --default=ulimitExe=60. The equals sign is mandatory - - `-j`,`--jobs`: Number of threads to use for testing. + - `-j`,`--jobs`: Number of threads to use for testing. Deprecated, use procOMC and procCCompile inside the config json - Generate HTML results ```bash diff --git a/configs/heavy_tests.json b/configs/heavy_tests.json index fedba2a..1236783 100644 --- a/configs/heavy_tests.json +++ b/configs/heavy_tests.json @@ -6,6 +6,8 @@ "ulimitOmc":400, "ulimitExe":400, "ulimitMemory":62914560, + "procOMC":0, + "procCCompile":0, "optlevel":"-O0 -march=native", "referenceFileExtension":"mat", "referenceFileNameDelimiter":".", @@ -22,6 +24,8 @@ "ulimitOmc":400, "ulimitExe":400, "ulimitMemory":62914560, + "procOMC":0, + "procCCompile":0, "optlevel":"-Ofast -march=native", "referenceFileExtension":"mat", "referenceFileNameDelimiter":".", @@ -39,6 +43,8 @@ "ulimitOmc":300, "ulimitExe":800, "ulimitMemory":62914560, + "procOMC":0, + "procCCompile":0, "optlevel":"-Ofast -march=native", "extraCustomCommands":["setCommandLineOptions(\"--newBackend -d=arrayConnect\")"] }, @@ -50,6 +56,8 @@ "ulimitOmc":800, "ulimitExe":300, "ulimitMemory":62000000, + "procOMC":0, + "procCCompile":0, "optlevel":"-O0 -march=native", "extraCustomCommands":["setCommandLineOptions(\"--newBackend -d=mergeComponents\")"] }, @@ -61,6 +69,8 @@ "ulimitOmc":800, "ulimitExe":300, "ulimitMemory":62000000, + "procOMC":0, + "procCCompile":0, "optlevel":"-O0 -march=native", "extraCustomCommands":["setCommandLineOptions(\"--newBackend -d=mergeComponents --generateSymbolicJacobian\")"] } diff --git a/test.py b/test.py index 8a4caef..b1ba738 100755 --- a/test.py +++ b/test.py @@ -36,7 +36,7 @@ parser.add_argument('--fmisimulator', default='') parser.add_argument('--ulimitvmem', help="Virtual memory limit (in kB) (linux only)", type=int, default=8*1024*1024) parser.add_argument('--default', action='append', help="Add a default value for some configuration key, such as --default=ulimitExe=60. The equals sign is mandatory.", default=[]) -parser.add_argument('-j', '--jobs', default=0) +parser.add_argument('-j', '--jobs', default=0, help="Ignored and deprecated, use procOMC:0 or procOMC:1 in the config") parser.add_argument('-v', '--verbose', action="store_true", help="Verbose mode.", default=False) parser.add_argument('--execAllTests', action="store_true", help="Force all tests to be executed", default=False) parser.add_argument('--noSync', action="store_true", help="Move files using python instead of rsync", default=False) @@ -203,17 +203,8 @@ def target(): print("Sanity check failed (./testmodel.py --help):\n" + e.output.decode()) sys.exit(1) -# If -j=0 is specified (or -j is not specified, defaults to 0) then use all available physical CPUS. -if n_jobs == 0: - n_jobs = psutil.cpu_count(logical=False) - -# If we are running one test at a time assume that omc is allowed to use multiple -# threads for each individual test. -if n_jobs == 1: - single_thread="" # Alternative: single_thread="-n=0" -else: - single_thread="-n=1" - +# ignored j argument, use procOMC and procCCompile in config +n_jobs = psutil.cpu_count(logical=False) print("branch: %s, n_jobs: %d" % (branch, n_jobs)) @@ -575,7 +566,22 @@ def hashReferenceFiles(s): confighash = strToHashInt(str(c)+hashReferenceFiles("")) conf["confighash"] = confighash conf["omhome"] = omhome - conf["single_thread_cmd"] = single_thread + # if procOMC = 0 use max procs, use procOMC = 1 if not defined, else use the given value + if "procOMC" in conf: + if conf.get("procOMC") == 0: + omc_threads = '' + else: + omc_threads = '-n=%s' % conf.get("procOMC") + else: + omc_threads = '-n=1' + + # if procCompile = 0 use max procs, use procCompile = 1 if not defined, else use the given value + if "procCCompile" in conf: + if conf.get("procCCompile") == 0: + conf["procCCompile"] = n_jobs + else: + conf["procCCompile"] = 1 + conf["omc_thread_cmd"] = omc_threads conf["haveCppRuntime"] = haveCppRuntime conf["ulimitMemory"] = conf.get("ulimitMemory") or ulimitMemory if conf.get("fmi"): @@ -760,7 +766,7 @@ def runScript(c, timeout, memoryLimit, runverbose): except: pass start=monotonic() - # runCommand("%s %s %s.mos" % (omc_exe, single_thread, c), prefix=c, timeout=timeout) + # runCommand("%s %s %s.mos" % (omc_exe, omc_threads, c), prefix=c, timeout=timeout) if runverbose: print("Starting test: %s" % c) sys.stdout.flush() diff --git a/testmodel.py b/testmodel.py index a09bc0c..3ddcb87 100755 --- a/testmodel.py +++ b/testmodel.py @@ -203,7 +203,7 @@ def createOmcSessionNew(): omc = createOmcSession() omc_new = createOmcSessionNew() -cmd = 'setCommandLineOptions("%s")' % conf["single_thread_cmd"] +cmd = 'setCommandLineOptions("%s")' % conf["omc_thread_cmd"] if not omc.sendExpression(cmd): raise Exception('Could not send %s' % cmd) @@ -430,7 +430,7 @@ def sendExpressionOldOrNew(cmd): if isWin: res = checkOutputTimeout("\"%s\\share\\omc\\scripts\\Compile.bat\" %s gcc %s parallel dynamic 24 0" % (conf["omhome"], conf["fileName"], msysEnvironment), conf["ulimitOmc"], conf) else: - res = checkOutputTimeout("make -j1 -f %s.makefile" % conf["fileName"], conf["ulimitOmc"], conf) + res = checkOutputTimeout("make -j%s -f %s.makefile" % (conf["procCCompile"], conf["fileName"]), conf["ulimitOmc"], conf) execstat["build"] = monotonic()-start execstat["phase"] = 5