Skip to content

Performance Regression Test - Score Director #20

Performance Regression Test - Score Director

Performance Regression Test - Score Director #20

name: Performance - Score Director
on:
workflow_dispatch:
inputs:
jdk:
description: 'JDK version'
default: '23'
required: true
baseline:
description: 'Timefold Solver release'
default: '1.14.0'
required: true
branch:
description: 'Development branch to test against'
default: 'main'
required: true
branch_owner:
description: 'User owning the branch'
default: 'TimefoldAI'
required: true
async_profiler_version:
description: 'async-profiler version'
default: '3.0'
required: true
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
example: [cloud_balancing, conference_scheduling, curriculum_course, examination, machine_reassignment, meeting_scheduling, nurse_rostering, patient_admission_scheduling, task_assigning, traveling_tournament, tsp, vehicle_routing]
concurrency:
group: turtle-${{ matrix.example }}
cancel-in-progress: true
env:
MVN_USERNAME: '${{ secrets.JFROG_ENTERPRISE_READ_ONLY_ACCESS_USERNAME }}'
MVN_PASSWORD: '${{ secrets.JFROG_ENTERPRISE_READ_ONLY_ACCESS_TOKEN }}'
steps:
- name: Checkout timefold-solver-benchmarks
uses: actions/checkout@v4
with:
repository: TimefoldAI/timefold-solver-benchmarks
path: ./timefold-solver-benchmarks
- name: Setup JDK and Maven
uses: actions/setup-java@v4
with:
java-version: ${{ github.event.inputs.jdk }}
distribution: 'temurin'
cache: 'maven'
server-id: 'timefold-solver-enterprise'
server-username: 'MVN_USERNAME'
server-password: 'MVN_PASSWORD'
- name: Setup Async Profiler
working-directory: ./timefold-solver-benchmarks
run: |
export FILENAME=async-profiler-${{ github.event.inputs.async_profiler_version }}-linux-x64.tar.gz
wget https://github.com/async-profiler/async-profiler/releases/download/v${{ github.event.inputs.async_profiler_version }}/$FILENAME
tar -xzf $FILENAME
ls -l
- name: Compile the benchmarks
working-directory: ./timefold-solver-benchmarks
shell: bash
run: mvn clean install -B -Dquickly -Dversion.ai.timefold.solver=${{ github.event.inputs.baseline }} -Dversion.tools.provider="${{ github.event.inputs.async_profiler_version }}"
- name: Run the baseline configuration
working-directory: ./timefold-solver-benchmarks
shell: bash
run: |
echo "score_director_type=cs" > scoredirector-benchmark.properties
echo "example=${{ matrix.example }}" >> scoredirector-benchmark.properties
cat scoredirector-benchmark.properties
chmod +x run-scoredirector.sh
./run-scoredirector.sh