diff --git a/.CI/ReSim/prepare_pr.sh b/.CI/ReSim/prepare_pr.sh new file mode 100755 index 0000000000..c2bb77c958 --- /dev/null +++ b/.CI/ReSim/prepare_pr.sh @@ -0,0 +1,7 @@ +event_number=$1 +# checkout the pull request +docker run --name compile_msl --rm --volume shared_data:/shared_data wsm_image /shared_data/run_scripts/git_pr_pull.sh $event_number +# compile msl binaries +docker run --name compile_msl --rm --volume shared_data:/shared_data wsm_image /shared_data/run_scripts/compile_msl.sh /shared_data/repos/pr_testing/ModelicaStandardLibrary +# delete old PRs with same number (in case of a new commit on a PR) +docker run --name compile_msl --rm --volume shared_data:/shared_data dymola_image /shared_data/run_scripts/delete_old_PRs.sh $event_number \ No newline at end of file diff --git a/.CI/ReSim/run_pr.sh b/.CI/ReSim/run_pr.sh new file mode 100755 index 0000000000..deb92e9655 --- /dev/null +++ b/.CI/ReSim/run_pr.sh @@ -0,0 +1,33 @@ +event_number=$1 +master_hash=$2 +pkg_name=$3 + +# Run Modelica in all tools +tools=$4 + +for tool in $tools +do + uppertool=$tool | tr 'a-z' 'A-Z' + docker run --rm --name $tool\_pr_compare_$event_number\_$pkg_name --volume shared_data:/shared_data $tool\_image python /shared_data/run_scripts/$uppertool\_PR_compare.py $master_hash $event_number $pkg_name +done + +#docker run --rm --name dymola_pr_compare_$event_number\_$pkg_name --volume shared_data:/shared_data dymola_image python /shared_data/run_scripts/Dymola_PR_compare.py $master_hash $event_number $pkg_name +#docker run --rm --name om_pr_compare_$event_number\_$pkg_name --volume shared_data:/shared_data om_image python /shared_data/run_scripts/OM_PR_compare.py $master_hash $event_number $pkg_name +#docker run --rm --name wsm_pr_compare_$event_number\_$pkg_name --volume shared_data:/shared_data wsm_image python /shared_data/run_scripts/WSM_PR_compare.py $master_hash $event_number $pkg_name + +# create an overview over all tools +docker run --name create_overview_$event_number\_$pkg_name --volume shared_data:/shared_data om_image python /shared_data/run_scripts/overview_report.py $event_number $pkg_name + +# clear published directory (web server) +if [ -d "/var/www/html/prs/$event_number/$pkg_name" ]; then + rm -rf "/var/www/html/prs/$event_number/$pkg_name" +fi +if [ ! -d "/var/www/html/prs/$event_number" ]; then + mkdir /var/www/html/prs/$event_number +fi +mkdir /var/www/html/prs/$event_number/$pkg_name + +# copy data to webserver directory +docker cp create_overview_$event_number\_$pkg_name:/shared_data/resim_output/PRs/PR_$event_number/$pkg_name/report /var/www/html/prs/$event_number/$pkg_name +docker rm create_overview_$event_number\_$pkg_name +exit $(head -n 1 /var/www/html/prs/$event_number/$pkg_name/status.txt) \ No newline at end of file diff --git a/.github/workflows/ReSim_CI.yml b/.github/workflows/ReSim_CI.yml new file mode 100644 index 0000000000..fa5dd01425 --- /dev/null +++ b/.github/workflows/ReSim_CI.yml @@ -0,0 +1,43 @@ +name: CI ReSim + +on: + pull_request_target: + workflow_dispatch: + +env: + PR_SERVER: ${{ vars.LTX_PR_SERVER }} + TESTING_TOOLS: ${{ vars.LTX_TESTING_TOOLS }} + EVENT_NUMBER: ${{ github.event.number }} + PR_SHA: ${{ github.event.pull_request.base.sha }} + +jobs: + prepare: + runs-on: [ self-hosted, Linux, regression_testing ] + steps: + - uses: actions/checkout@v6 + with: + sparse-checkout: './.CI/ReSim' + + - name: Checkout code in docker + run: ./.CI/ReSim/prepare_pr.sh ${{ env.EVENT_NUMBER }} + + testrun_modelica: + needs: prepare + runs-on: [ self-hosted, Linux, regression_testing ] + environment: + name: Report modelica + url: ${{ env.PR_SERVER }}/${{ env.EVENT_NUMBER }}/Modelica/report/PR_comparison_report.html + steps: + - name: Run tests modelica + run: ./.CI/ReSim/run_pr.sh ${{ env.EVENT_NUMBER }} ${{ env.PR_SHA }} Modelica ${{ env.TESTING_TOOLS }} + + + testrun_modelicatest: + needs: prepare + runs-on: [ self-hosted, Linux, regression_testing ] + environment: + name: Report modelicatest + url: ${{ env.PR_SERVER }}/${{ env.EVENT_NUMBER }}/ModelicaTest/report/PR_comparison_report.html + steps: + - name: Run tests modelicatest + run: ./.CI/ReSim/run_pr.sh ${{ env.EVENT_NUMBER }} ${{ env.PR_SHA }} ModelicaTest ${{ env.TESTING_TOOLS }} \ No newline at end of file diff --git a/Modelica/Blocks/Sources.mo b/Modelica/Blocks/Sources.mo index 8fbd5f270a..0eac6f1081 100644 --- a/Modelica/Blocks/Sources.mo +++ b/Modelica/Blocks/Sources.mo @@ -1589,7 +1589,7 @@ parameter Real table[:, 2]=[0, 0; 1, 1; 2, 4]; "Table look-up with respect to time and various interpolation and extrapolation methods (data from matrix/file)" import Modelica.Blocks.Tables.Internal; extends Modelica.Blocks.Interfaces.MO(final nout=max([size(columns, 1); size(offset, 1)])); - parameter Boolean tableOnFile=false + parameter Boolean tableOnFile = false "= true, if table is defined on file or in function usertab" annotation (Dialog(group="Table data definition")); parameter Real table[:, :] = fill(0.0, 0, 2) @@ -1606,8 +1606,8 @@ parameter Real table[:, 2]=[0, 0; 1, 1; 2, 4]; caption="Open file in which table is present"))); parameter String delimiter="," "Column delimiter character for CSV file" annotation (Dialog( - group="Table data definition", - enable=tableOnFile and isCsvExt), + group = "Table data definition", + enable = tableOnFile and isCsvExt), choices(choice=" " "Blank", choice="," "Comma", choice="\t" "Horizontal tabulator", choice=";" "Semicolon")); parameter Integer nHeaderLines=0 "Number of header lines to ignore for CSV file" annotation (Dialog(group="Table data definition",enable=tableOnFile and isCsvExt)); @@ -1618,7 +1618,7 @@ parameter Real table[:, 2]=[0, 0; 1, 1; 2, 4]; "Columns of table to be interpolated" annotation (Dialog(group="Table data interpretation", groupImage="modelica://Modelica/Resources/Images/Blocks/Sources/CombiTimeTable.png")); - parameter Modelica.Blocks.Types.Smoothness smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments + parameter Modelica.Blocks.Types.Smoothness smoothness = Modelica.Blocks.Types.Smoothness.LinearSegments "Smoothness of table interpolation" annotation (Dialog(group="Table data interpretation")); parameter Modelica.Blocks.Types.Extrapolation extrapolation=Modelica.Blocks.Types.Extrapolation.LastTwoPoints