Intersection speedup and refactor #277
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Code Quality | |
on: | |
pull_request: | |
jobs: | |
warnings-base: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
# Ensures that if the task on one system fails, other systems (the rest of the matrix) will be | |
# still executed. | |
fail-fast: false | |
matrix: | |
os: [ ubuntu-latest, macos-latest ] | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
ref: ${{ github.event.pull_request.base_ref }} | |
- uses: ./.github/workflows/actions/setup | |
with: | |
os: ${{ matrix.os }} | |
- uses: ./.github/workflows/actions/compile | |
with: | |
build-log-output-file: 'warnings-base' | |
warnings-new: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ ubuntu-latest, macos-latest ] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/workflows/actions/setup | |
with: | |
os: ${{ matrix.os }} | |
- uses: ./.github/workflows/actions/compile | |
with: | |
build-log-output-file: 'warnings-new' | |
run-tests: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ ubuntu-latest, macos-latest ] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/workflows/actions/setup | |
with: | |
os: ${{ matrix.os }} | |
- uses: ./.github/workflows/actions/compile | |
with: | |
build-log-output-file: 'warnings-new' | |
- name: Test the library | |
run: make test | |
run-test-performance-base: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ ubuntu-latest, macos-latest ] | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
ref: ${{ github.event.pull_request.base_ref }} | |
- uses: ./.github/workflows/actions/setup | |
with: | |
os: ${{ matrix.os }} | |
- uses: ./.github/workflows/actions/compile | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: 3.9 | |
cache: 'pip' | |
- name: Install Python Dependencies | |
shell: sh | |
run: | | |
python -m pip install --upgrade pip | |
pip install -r tests-integration/requirements.txt | |
- name: Test the library | |
run: make test-performance | |
- name: Cache performance results | |
uses: actions/cache@v3 | |
with: | |
path: | | |
./tests-integration/results/corr-single-param-jobs.csv | |
./tests-integration/results/corr-double-param-jobs.csv | |
key: performance-tests-baseline-${{ runner.os }}-${{ github.sha }} | |
run-test-performance: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ ubuntu-latest, macos-latest ] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/workflows/actions/setup | |
with: | |
os: ${{ matrix.os }} | |
- uses: ./.github/workflows/actions/compile | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: 3.9 | |
cache: 'pip' | |
- name: Install Python Dependencies | |
shell: sh | |
run: | | |
python -m pip install --upgrade pip | |
pip install -r tests-integration/requirements.txt | |
- name: Test the library | |
run: make test-performance | |
- name: Cache performance results | |
uses: actions/cache@v3 | |
with: | |
path: | | |
./tests-integration/results/corr-single-param-jobs.csv | |
./tests-integration/results/corr-double-param-jobs.csv | |
key: performance-tests-target-${{ runner.os }}-${{ github.sha }} | |
compare-performance: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ ubuntu-latest, macos-latest ] | |
needs: [ run-test-performance, run-test-performance-base ] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: 3.9 | |
cache: 'pip' | |
- name: Install Python Dependencies | |
shell: sh | |
run: | | |
python -m pip install --upgrade pip | |
pip install tabulate pandas | |
- name: Restore target profiles | |
uses: actions/cache/restore@v3 | |
with: | |
path: | | |
./tests-integration/results/corr-single-param-jobs.csv | |
./tests-integration/results/corr-double-param-jobs.csv | |
key: performance-tests-target-${{ runner.os }}-${{ github.sha }} | |
- run: mv ./tests-integration/results/corr-single-param-jobs.csv single-param-target.csv | |
- run: mv ./tests-integration/results/corr-double-param-jobs.csv double-param-target.csv | |
- name: Restore baseline profiles | |
uses: actions/cache/restore@v3 | |
with: | |
path: | | |
./tests-integration/results/corr-single-param-jobs.csv | |
./tests-integration/results/corr-double-param-jobs.csv | |
key: performance-tests-baseline-${{ runner.os }}-${{ github.sha }} | |
- run: mv ./tests-integration/results/corr-single-param-jobs.csv single-param-baseline.csv | |
- run: mv ./tests-integration/results/corr-double-param-jobs.csv double-param-baseline.csv | |
- name: LOOK HERE for Comparison of operations accepting single automaton as parameters | |
run: python3 tests-integration/scripts/compare_profiles.py single-param-target.csv single-param-baseline.csv | |
- name: LOOK HERE for Comparison of operations accepting two automata as parameters | |
run: python3 tests-integration/scripts/compare_profiles.py double-param-target.csv double-param-baseline.csv | |
compare-versions: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ ubuntu-latest, macos-latest ] | |
needs: [ warnings-base, warnings-new ] | |
steps: | |
- name: Restore new cache | |
uses: actions/cache/restore@v3 | |
with: | |
path: ./build_log | |
key: build-log-warnings-new-${{ runner.os }}-${{ github.sha }} | |
- run: mv build_log new_warnings | |
- name: Restore base cache | |
uses: actions/cache/restore@v3 | |
with: | |
path: ./build_log | |
key: build-log-warnings-base-${{ runner.os }}-${{ github.sha }} | |
- run: mv build_log base_warnings | |
- name: Print base warnings | |
run: cat base_warnings | |
- name: Print new warnings | |
run: cat new_warnings | |
- name: Create comparison diff file | |
run: | | |
diff base_warnings new_warnings | grep "^> *" | sed "s/^> //g" > comparison | |
cat comparison | |
- name: Count number of warnings | |
run: | | |
number_of_warnings=`cat comparison | grep "warning:" | wc -l` | |
echo $number_of_warnings | |
if [ $number_of_warnings -gt 0 ]; then | |
exit 1 | |
fi | |
code-coverage: | |
runs-on: ubuntu-latest | |
needs: run-tests | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/workflows/actions/setup | |
- name: Build library for coverage | |
run: make coverage | |
- name: Test the library | |
run: make test | |
- name: Upload coverage to codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
gcov: true |