Compare commits

..

5 Commits

Author SHA1 Message Date
mathias 513966056b remove 2 32bit unsupported arch
Build and Publish Docker Image / publish (alpine) (release) Failing after 1h38m5s
Build and Publish Docker Image / publish (debian) (release) Failing after 22s
2025-02-15 12:28:08 -05:00
mathias 2c91c0c259 update image name
Build and Publish Docker Image / publish (alpine) (release) Failing after 1m49s
Build and Publish Docker Image / publish (debian) (release) Failing after 21s
2025-02-15 12:21:44 -05:00
Matt Robinson c59ad69d6a Correct Docker FromAsCasing warning (#7064) 2025-02-10 19:22:09 +01:00
Alexander Farber 61464fc2bd Fix no member named 'construct' in 'optional<type-parameter-0-0 &>' error in sol.hpp with Clang 19 (#7098) 2025-01-25 07:09:37 +00:00
Alexander Farber 6f235cca15 Use libtbb-dev/libtbb12 packages in Dockerfile-debian, sort packages alphabetically in both Dockerfiles (#7095)
* - Use libtbb-dev in builder stage and libtbb12 package in the runstage instead of building oneTBB v2021.12.0 from source code
- Remove wget package from builder stage, because it is not used
- Uppercase "FROM ... as" -> "FROM ... AS" to silence a "docker build" warning
- Sort packages alphabetically and put them on separate lines for easier comparison

* - Fix the warning "FromAsCasing: 'as' and 'FROM' keywords' casing do not match"
- Sort packages alphabetically and put them on separate lines for easier comparison

* Revert  -Wno-stringop-overflow

* Update the link to multi staged builds in the comment

* Update alpine:3.20.0 -> alpine:3.20.5
2025-01-12 16:28:56 +00:00
7 changed files with 633 additions and 566 deletions
+65
View File
@@ -0,0 +1,65 @@
name: Build and Publish Docker Image
on:
release:
types: [published, prereleased]
env:
IMAGE_NAME: openharbor/osrm-backend
jobs:
publish:
strategy:
matrix:
docker-base-image: ["debian", "alpine"]
runs-on: ubuntu-latest
steps:
- name: Check out the repo
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
with:
images: ${{ env.IMAGE_NAME }}
- name: Docker meta - debug
id: metadebug
uses: docker/metadata-action@v4
with:
images: ${{ env.IMAGE_NAME }}
flavor: |
latest=true
suffix=-debug,onlatest=true
- name: Log in to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN }}
- name: Build and push debug image
uses: docker/build-push-action@v4
with:
push: true
platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/riscv64
file: ./docker/Dockerfile-${{ matrix.docker-base-image }}
tags: ${{ steps.metadebug.outputs.tags }}
build-args: |
DOCKER_TAG=${{ join(steps.metadebug.outputs.tags) }}-${{ matrix.docker-base-image }}
- name: Build and push normal image
uses: docker/build-push-action@v4
with:
push: true
platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/ppc64le,linux/s390x,linux/riscv64
file: ./docker/Dockerfile-${{ matrix.docker-base-image }}
tags: ${{ steps.meta.outputs.tags }}
build-args: |
DOCKER_TAG=${{ join(steps.meta.outputs.tags) }}-${{ matrix.docker-base-image }}
+414 -420
View File
@@ -23,218 +23,218 @@ concurrency:
cancel-in-progress: true cancel-in-progress: true
jobs: jobs:
# windows-release-node: windows-release-node:
# needs: format-taginfo-docs needs: format-taginfo-docs
# runs-on: windows-2022 runs-on: windows-2022
# continue-on-error: false continue-on-error: false
# env: env:
# BUILD_TYPE: Release BUILD_TYPE: Release
# steps: steps:
# - uses: actions/checkout@v4 - uses: actions/checkout@v4
# - run: pip install "conan<2.0.0" - run: pip install "conan<2.0.0"
# - run: conan --version - run: conan --version
# - run: cmake --version - run: cmake --version
# - uses: actions/setup-node@v4 - uses: actions/setup-node@v4
# with: with:
# node-version: 18 node-version: 18
# - run: node --version - run: node --version
# - run: npm --version - run: npm --version
# - name: Prepare environment - name: Prepare environment
# shell: bash shell: bash
# run: | run: |
# PACKAGE_JSON_VERSION=$(node -e "console.log(require('./package.json').version)") PACKAGE_JSON_VERSION=$(node -e "console.log(require('./package.json').version)")
# echo PUBLISH=$([[ "${GITHUB_REF:-}" == "refs/tags/v${PACKAGE_JSON_VERSION}" ]] && echo "On" || echo "Off") >> $GITHUB_ENV echo PUBLISH=$([[ "${GITHUB_REF:-}" == "refs/tags/v${PACKAGE_JSON_VERSION}" ]] && echo "On" || echo "Off") >> $GITHUB_ENV
# - run: npm install --ignore-scripts - run: npm install --ignore-scripts
# - run: npm link --ignore-scripts - run: npm link --ignore-scripts
# - name: Build - name: Build
# shell: bash shell: bash
# run: | run: |
# mkdir build mkdir build
# cd build cd build
# cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_CONAN=ON -DENABLE_NODE_BINDINGS=ON .. cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_CONAN=ON -DENABLE_NODE_BINDINGS=ON ..
# cmake --build . --config Release cmake --build . --config Release
# # TODO: MSVC goes out of memory when building our tests # TODO: MSVC goes out of memory when building our tests
# # - name: Run tests # - name: Run tests
# # shell: bash # shell: bash
# # run: | # run: |
# # cd build # cd build
# # cmake --build . --config Release --target tests # cmake --build . --config Release --target tests
# # # TODO: run tests # # TODO: run tests
# # - name: Run node tests # - name: Run node tests
# # shell: bash # shell: bash
# # run: | # run: |
# # ./lib/binding/osrm-extract.exe -p profiles/car.lua test/data/monaco.osm.pbf # ./lib/binding/osrm-extract.exe -p profiles/car.lua test/data/monaco.osm.pbf
# # mkdir -p test/data/ch # mkdir -p test/data/ch
# # cp test/data/monaco.osrm* test/data/ch/ # cp test/data/monaco.osrm* test/data/ch/
# # ./lib/binding/osrm-contract.exe test/data/ch/monaco.osrm # ./lib/binding/osrm-contract.exe test/data/ch/monaco.osrm
# # ./lib/binding/osrm-datastore.exe test/data/ch/monaco.osrm # ./lib/binding/osrm-datastore.exe test/data/ch/monaco.osrm
# # node test/nodejs/index.js # node test/nodejs/index.js
# - name: Build Node package - name: Build Node package
# shell: bash shell: bash
# run: ./scripts/ci/node_package.sh run: ./scripts/ci/node_package.sh
# - name: Publish Node package - name: Publish Node package
# if: ${{ env.PUBLISH == 'On' }} if: ${{ env.PUBLISH == 'On' }}
# uses: ncipollo/release-action@v1 uses: ncipollo/release-action@v1
# with: with:
# allowUpdates: true allowUpdates: true
# artifactErrorsFailBuild: true artifactErrorsFailBuild: true
# artifacts: build/stage/**/*.tar.gz artifacts: build/stage/**/*.tar.gz
# omitBody: true omitBody: true
# omitBodyDuringUpdate: true omitBodyDuringUpdate: true
# omitName: true omitName: true
# omitNameDuringUpdate: true omitNameDuringUpdate: true
# replacesArtifacts: true replacesArtifacts: true
# token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
# format-taginfo-docs: format-taginfo-docs:
# runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
# steps: steps:
# - uses: actions/checkout@v4 - uses: actions/checkout@v4
# - name: Use Node.js - name: Use Node.js
# uses: actions/setup-node@v4 uses: actions/setup-node@v4
# with: with:
# node-version: 18 node-version: 18
# - name: Enable Node.js cache - name: Enable Node.js cache
# uses: actions/cache@v4 uses: actions/cache@v4
# with: with:
# path: ~/.npm path: ~/.npm
# key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
# restore-keys: | restore-keys: |
# ${{ runner.os }}-node- ${{ runner.os }}-node-
# - name: Prepare environment - name: Prepare environment
# run: | run: |
# npm ci --ignore-scripts npm ci --ignore-scripts
# clang-format-15 --version clang-format-15 --version
# - name: Run checks - name: Run checks
# run: | run: |
# ./scripts/check_taginfo.py taginfo.json profiles/car.lua ./scripts/check_taginfo.py taginfo.json profiles/car.lua
# ./scripts/format.sh && ./scripts/error_on_dirty.sh ./scripts/format.sh && ./scripts/error_on_dirty.sh
# node ./scripts/validate_changelog.js node ./scripts/validate_changelog.js
# npm run docs && ./scripts/error_on_dirty.sh npm run docs && ./scripts/error_on_dirty.sh
# npm audit --production npm audit --production
# docker-image-matrix: docker-image-matrix:
# strategy: strategy:
# matrix: matrix:
# docker-base-image: ["debian", "alpine"] docker-base-image: ["debian", "alpine"]
# needs: format-taginfo-docs needs: format-taginfo-docs
# runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
# continue-on-error: false continue-on-error: false
# steps: steps:
# - name: Check out the repo - name: Check out the repo
# uses: actions/checkout@v4 uses: actions/checkout@v4
# - name: Enable osm.pbf cache - name: Enable osm.pbf cache
# uses: actions/cache@v4 uses: actions/cache@v4
# with: with:
# path: berlin-latest.osm.pbf path: berlin-latest.osm.pbf
# key: v1-berlin-osm-pbf key: v1-berlin-osm-pbf
# restore-keys: | restore-keys: |
# v1-berlin-osm-pbf v1-berlin-osm-pbf
# - name: Docker build - name: Docker build
# run: | run: |
# docker build -t osrm-backend-local -f docker/Dockerfile-${{ matrix.docker-base-image }} . docker build -t osrm-backend-local -f docker/Dockerfile-${{ matrix.docker-base-image }} .
# - name: Test Docker image - name: Test Docker image
# run: | run: |
# if [ ! -f "${PWD}/berlin-latest.osm.pbf" ]; then if [ ! -f "${PWD}/berlin-latest.osm.pbf" ]; then
# wget http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf wget http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf
# fi fi
# TAG=osrm-backend-local TAG=osrm-backend-local
# # when `--memory-swap` value equals `--memory` it means container won't use swap # when `--memory-swap` value equals `--memory` it means container won't use swap
# # see https://docs.docker.com/config/containers/resource_constraints/#--memory-swap-details # see https://docs.docker.com/config/containers/resource_constraints/#--memory-swap-details
# MEMORY_ARGS="--memory=1g --memory-swap=1g" MEMORY_ARGS="--memory=1g --memory-swap=1g"
# docker run $MEMORY_ARGS -t -v "${PWD}:/data" "${TAG}" osrm-extract --dump-nbg-graph -p /opt/car.lua /data/berlin-latest.osm.pbf docker run $MEMORY_ARGS -t -v "${PWD}:/data" "${TAG}" osrm-extract --dump-nbg-graph -p /opt/car.lua /data/berlin-latest.osm.pbf
# docker run $MEMORY_ARGS -t -v "${PWD}:/data" "${TAG}" osrm-components /data/berlin-latest.osrm.nbg /data/berlin-latest.geojson docker run $MEMORY_ARGS -t -v "${PWD}:/data" "${TAG}" osrm-components /data/berlin-latest.osrm.nbg /data/berlin-latest.geojson
# if [ ! -s "${PWD}/berlin-latest.geojson" ] if [ ! -s "${PWD}/berlin-latest.geojson" ]
# then then
# >&2 echo "No berlin-latest.geojson found" >&2 echo "No berlin-latest.geojson found"
# exit 1 exit 1
# fi fi
# # removing `.osrm.nbg` to check that whole pipeline works without it # removing `.osrm.nbg` to check that whole pipeline works without it
# rm -rf "${PWD}/berlin-latest.osrm.nbg" rm -rf "${PWD}/berlin-latest.osrm.nbg"
# docker run $MEMORY_ARGS -t -v "${PWD}:/data" "${TAG}" osrm-partition /data/berlin-latest.osrm docker run $MEMORY_ARGS -t -v "${PWD}:/data" "${TAG}" osrm-partition /data/berlin-latest.osrm
# docker run $MEMORY_ARGS -t -v "${PWD}:/data" "${TAG}" osrm-customize /data/berlin-latest.osrm docker run $MEMORY_ARGS -t -v "${PWD}:/data" "${TAG}" osrm-customize /data/berlin-latest.osrm
# docker run $MEMORY_ARGS --name=osrm-container -t -p 5000:5000 -v "${PWD}:/data" "${TAG}" osrm-routed --algorithm mld /data/berlin-latest.osrm & docker run $MEMORY_ARGS --name=osrm-container -t -p 5000:5000 -v "${PWD}:/data" "${TAG}" osrm-routed --algorithm mld /data/berlin-latest.osrm &
# curl --retry-delay 3 --retry 10 --retry-all-errors "http://127.0.0.1:5000/route/v1/driving/13.388860,52.517037;13.385983,52.496891?steps=true" curl --retry-delay 3 --retry 10 --retry-all-errors "http://127.0.0.1:5000/route/v1/driving/13.388860,52.517037;13.385983,52.496891?steps=true"
# docker stop osrm-container docker stop osrm-container
build-test-publish: build-test-publish:
#needs: format-taginfo-docs needs: format-taginfo-docs
strategy: strategy:
matrix: matrix:
include: include:
# - name: gcc-13-debug-cov - name: gcc-13-debug-cov
# continue-on-error: false continue-on-error: false
# node: 20 node: 20
# runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
# BUILD_TOOLS: ON BUILD_TOOLS: ON
# BUILD_TYPE: Debug BUILD_TYPE: Debug
# CCOMPILER: gcc-13 CCOMPILER: gcc-13
# CUCUMBER_TIMEOUT: 20000 CUCUMBER_TIMEOUT: 20000
# CXXCOMPILER: g++-13 CXXCOMPILER: g++-13
# ENABLE_COVERAGE: ON ENABLE_COVERAGE: ON
# - name: clang-18-debug-asan-ubsan - name: clang-18-debug-asan-ubsan
# continue-on-error: false continue-on-error: false
# node: 20 node: 20
# runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
# BUILD_TOOLS: ON BUILD_TOOLS: ON
# BUILD_TYPE: Debug BUILD_TYPE: Debug
# CCOMPILER: clang-18 CCOMPILER: clang-18
# CUCUMBER_TIMEOUT: 20000 CUCUMBER_TIMEOUT: 20000
# CXXCOMPILER: clang++-18 CXXCOMPILER: clang++-18
# ENABLE_SANITIZER: ON ENABLE_SANITIZER: ON
# TARGET_ARCH: x86_64-asan-ubsan TARGET_ARCH: x86_64-asan-ubsan
# OSRM_CONNECTION_RETRIES: 10 OSRM_CONNECTION_RETRIES: 10
# OSRM_CONNECTION_EXP_BACKOFF_COEF: 1.5 OSRM_CONNECTION_EXP_BACKOFF_COEF: 1.5
# - name: clang-18-release - name: clang-18-release
# continue-on-error: false continue-on-error: false
# node: 18 node: 18
# runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
# BUILD_TOOLS: ON BUILD_TOOLS: ON
# BUILD_TYPE: Release BUILD_TYPE: Release
# CCOMPILER: clang-18 CCOMPILER: clang-18
# CXXCOMPILER: clang++-18 CXXCOMPILER: clang++-18
# CUCUMBER_TIMEOUT: 60000 CUCUMBER_TIMEOUT: 60000
# ENABLE_LTO: OFF ENABLE_LTO: OFF
# - name: clang-18-debug - name: clang-18-debug
# continue-on-error: false continue-on-error: false
# node: 18 node: 18
# runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
# BUILD_TOOLS: ON BUILD_TOOLS: ON
# BUILD_TYPE: Debug BUILD_TYPE: Debug
# CCOMPILER: clang-18 CCOMPILER: clang-18
# CXXCOMPILER: clang++-18 CXXCOMPILER: clang++-18
# CUCUMBER_TIMEOUT: 60000 CUCUMBER_TIMEOUT: 60000
# ENABLE_LTO: OFF ENABLE_LTO: OFF
# - name: clang-18-debug-clang-tidy - name: clang-18-debug-clang-tidy
# continue-on-error: false continue-on-error: false
# node: 18 node: 18
# runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
# BUILD_TOOLS: ON BUILD_TOOLS: ON
# BUILD_TYPE: Debug BUILD_TYPE: Debug
# CCOMPILER: clang-18 CCOMPILER: clang-18
# CXXCOMPILER: clang++-18 CXXCOMPILER: clang++-18
# CUCUMBER_TIMEOUT: 60000 CUCUMBER_TIMEOUT: 60000
# ENABLE_CLANG_TIDY: ON ENABLE_CLANG_TIDY: ON
# - name: clang-17-release - name: clang-17-release
# continue-on-error: false continue-on-error: false
# node: 18 node: 18
# runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
# BUILD_TOOLS: ON BUILD_TOOLS: ON
# BUILD_TYPE: Release BUILD_TYPE: Release
# CCOMPILER: clang-17 CCOMPILER: clang-17
# CXXCOMPILER: clang++-17 CXXCOMPILER: clang++-17
# CUCUMBER_TIMEOUT: 60000 CUCUMBER_TIMEOUT: 60000
# ENABLE_LTO: OFF ENABLE_LTO: OFF
- name: clang-16-release - name: clang-16-release
continue-on-error: false continue-on-error: false
@@ -247,104 +247,104 @@ jobs:
CUCUMBER_TIMEOUT: 60000 CUCUMBER_TIMEOUT: 60000
ENABLE_LTO: OFF ENABLE_LTO: OFF
# - name: conan-linux-debug-asan-ubsan - name: conan-linux-debug-asan-ubsan
# continue-on-error: false continue-on-error: false
# node: 18 node: 18
# runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
# BUILD_TOOLS: ON BUILD_TOOLS: ON
# BUILD_TYPE: Release BUILD_TYPE: Release
# CCOMPILER: clang-18 CCOMPILER: clang-18
# CXXCOMPILER: clang++-18 CXXCOMPILER: clang++-18
# ENABLE_CONAN: ON ENABLE_CONAN: ON
# ENABLE_SANITIZER: ON ENABLE_SANITIZER: ON
# ENABLE_LTO: OFF ENABLE_LTO: OFF
# - name: conan-linux-release - name: conan-linux-release
# continue-on-error: false continue-on-error: false
# node: 18 node: 18
# runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
# BUILD_TOOLS: ON BUILD_TOOLS: ON
# BUILD_TYPE: Release BUILD_TYPE: Release
# CCOMPILER: clang-18 CCOMPILER: clang-18
# CXXCOMPILER: clang++-18 CXXCOMPILER: clang++-18
# ENABLE_CONAN: ON ENABLE_CONAN: ON
# ENABLE_LTO: OFF ENABLE_LTO: OFF
# - name: gcc-14-release - name: gcc-14-release
# continue-on-error: false continue-on-error: false
# node: 20 node: 20
# runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
# BUILD_TOOLS: ON BUILD_TOOLS: ON
# BUILD_TYPE: Release BUILD_TYPE: Release
# CCOMPILER: gcc-14 CCOMPILER: gcc-14
# CXXCOMPILER: g++-14 CXXCOMPILER: g++-14
# CXXFLAGS: '-Wno-array-bounds -Wno-uninitialized' CXXFLAGS: '-Wno-array-bounds -Wno-uninitialized'
# - name: gcc-13-release - name: gcc-13-release
# continue-on-error: false continue-on-error: false
# node: 20 node: 20
# runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
# BUILD_TOOLS: ON BUILD_TOOLS: ON
# BUILD_TYPE: Release BUILD_TYPE: Release
# CCOMPILER: gcc-13 CCOMPILER: gcc-13
# CXXCOMPILER: g++-13 CXXCOMPILER: g++-13
# CXXFLAGS: '-Wno-array-bounds -Wno-uninitialized' CXXFLAGS: '-Wno-array-bounds -Wno-uninitialized'
# - name: gcc-12-release - name: gcc-12-release
# continue-on-error: false continue-on-error: false
# node: 20 node: 20
# runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
# BUILD_TOOLS: ON BUILD_TOOLS: ON
# BUILD_TYPE: Release BUILD_TYPE: Release
# CCOMPILER: gcc-12 CCOMPILER: gcc-12
# CXXCOMPILER: g++-12 CXXCOMPILER: g++-12
# CXXFLAGS: '-Wno-array-bounds -Wno-uninitialized' CXXFLAGS: '-Wno-array-bounds -Wno-uninitialized'
# - name: conan-linux-release-node - name: conan-linux-release-node
# build_node_package: true build_node_package: true
# continue-on-error: false continue-on-error: false
# node: 20 node: 20
# runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
# BUILD_TYPE: Release BUILD_TYPE: Release
# CCOMPILER: clang-16 CCOMPILER: clang-16
# CXXCOMPILER: clang++-16 CXXCOMPILER: clang++-16
# ENABLE_CONAN: ON ENABLE_CONAN: ON
# NODE_PACKAGE_TESTS_ONLY: ON NODE_PACKAGE_TESTS_ONLY: ON
# - name: conan-linux-debug-node - name: conan-linux-debug-node
# build_node_package: true build_node_package: true
# continue-on-error: false continue-on-error: false
# node: 20 node: 20
# runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
# BUILD_TYPE: Debug BUILD_TYPE: Debug
# CCOMPILER: clang-16 CCOMPILER: clang-16
# CXXCOMPILER: clang++-16 CXXCOMPILER: clang++-16
# ENABLE_CONAN: ON ENABLE_CONAN: ON
# NODE_PACKAGE_TESTS_ONLY: ON NODE_PACKAGE_TESTS_ONLY: ON
# - name: conan-macos-x64-release-node - name: conan-macos-x64-release-node
# build_node_package: true build_node_package: true
# continue-on-error: true continue-on-error: true
# node: 20 node: 20
# runs-on: macos-13 # x86_64 runs-on: macos-13 # x86_64
# BUILD_TYPE: Release BUILD_TYPE: Release
# CCOMPILER: clang CCOMPILER: clang
# CXXCOMPILER: clang++ CXXCOMPILER: clang++
# CUCUMBER_TIMEOUT: 60000 CUCUMBER_TIMEOUT: 60000
# ENABLE_ASSERTIONS: ON ENABLE_ASSERTIONS: ON
# ENABLE_CONAN: ON ENABLE_CONAN: ON
# - name: conan-macos-arm64-release-node - name: conan-macos-arm64-release-node
# build_node_package: true build_node_package: true
# continue-on-error: true continue-on-error: true
# node: 20 node: 20
# runs-on: macos-14 # arm64 runs-on: macos-14 # arm64
# BUILD_TYPE: Release BUILD_TYPE: Release
# CCOMPILER: clang CCOMPILER: clang
# CXXCOMPILER: clang++ CXXCOMPILER: clang++
# CUCUMBER_TIMEOUT: 60000 CUCUMBER_TIMEOUT: 60000
# ENABLE_ASSERTIONS: ON ENABLE_ASSERTIONS: ON
# ENABLE_CONAN: ON ENABLE_CONAN: ON
name: ${{ matrix.name}} name: ${{ matrix.name}}
continue-on-error: ${{ matrix.continue-on-error }} continue-on-error: ${{ matrix.continue-on-error }}
@@ -446,14 +446,14 @@ jobs:
if: steps.cache-boost.outputs.cache-hit != 'true' && runner.os == 'Linux' && matrix.ENABLE_CONAN != 'ON' if: steps.cache-boost.outputs.cache-hit != 'true' && runner.os == 'Linux' && matrix.ENABLE_CONAN != 'ON'
run: | run: |
BOOST_VERSION="1.85.0" BOOST_VERSION="1.85.0"
BOOST_VERSION_UNDERSCORE="${BOOST_VERSION//./_}" BOOST_VERSION_FLAVOR="${BOOST_VERSION}-b2-nodocs"
wget -q https://boostorg.jfrog.io/artifactory/main/release/${BOOST_VERSION}/source/boost_${BOOST_VERSION_UNDERSCORE}.tar.gz wget -q https://github.com/boostorg/boost/releases/download/boost-${BOOST_VERSION}/boost-${BOOST_VERSION_FLAVOR}.tar.gz
tar xzf boost_${BOOST_VERSION_UNDERSCORE}.tar.gz tar xzf boost-${BOOST_VERSION_FLAVOR}.tar.gz
cd boost_${BOOST_VERSION_UNDERSCORE} cd boost-${BOOST_VERSION}
sudo ./bootstrap.sh sudo ./bootstrap.sh
sudo ./b2 install sudo ./b2 install
cd .. cd ..
sudo rm -rf boost_${BOOST_VERSION_UNDERSCORE}* sudo rm -rf boost-${BOOST_VERSION}*
- name: Install dev dependencies - name: Install dev dependencies
run: | run: |
@@ -575,13 +575,7 @@ jobs:
# All tests assume to be run from the build directory # All tests assume to be run from the build directory
pushd ${OSRM_BUILD_DIR} pushd ${OSRM_BUILD_DIR}
for i in $(seq 1 100); do for i in ./unit_tests/*-tests ; do echo Running $i ; $i ; done
echo "Iteration $i"
for test in ./unit_tests/*-tests; do
echo "Running $test"
$test
done
done
if [ -z "${ENABLE_SANITIZER}" ]; then if [ -z "${ENABLE_SANITIZER}" ]; then
npm run nodejs-tests npm run nodejs-tests
fi fi
@@ -663,130 +657,130 @@ jobs:
ccache -p ccache -p
ccache -s ccache -s
# benchmarks: benchmarks:
# if: github.event_name == 'pull_request' if: github.event_name == 'pull_request'
# needs: [format-taginfo-docs] needs: [format-taginfo-docs]
# runs-on: self-hosted runs-on: self-hosted
# env: env:
# CCOMPILER: clang-16 CCOMPILER: clang-16
# CXXCOMPILER: clang++-16 CXXCOMPILER: clang++-16
# CC: clang-16 CC: clang-16
# CXX: clang++-16 CXX: clang++-16
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# PR_NUMBER: ${{ github.event.pull_request.number }} PR_NUMBER: ${{ github.event.pull_request.number }}
# GITHUB_REPOSITORY: ${{ github.repository }} GITHUB_REPOSITORY: ${{ github.repository }}
# RUN_BIG_BENCHMARK: ${{ contains(github.event.pull_request.labels.*.name, 'Performance') }} RUN_BIG_BENCHMARK: ${{ contains(github.event.pull_request.labels.*.name, 'Performance') }}
# steps: steps:
# - name: Checkout PR Branch - name: Checkout PR Branch
# uses: actions/checkout@v4 uses: actions/checkout@v4
# with: with:
# ref: ${{ github.head_ref }} ref: ${{ github.head_ref }}
# path: pr path: pr
# - name: Activate virtualenv - name: Activate virtualenv
# run: | run: |
# python3 -m venv .venv python3 -m venv .venv
# source .venv/bin/activate source .venv/bin/activate
# echo PATH=$PATH >> $GITHUB_ENV echo PATH=$PATH >> $GITHUB_ENV
# pip install "conan<2.0.0" "requests==2.31.0" "numpy==1.26.4" pip install "conan<2.0.0" "requests==2.31.0" "numpy==1.26.4"
# - name: Prepare data - name: Prepare data
# run: | run: |
# if [ "$RUN_BIG_BENCHMARK" = "true" ]; then if [ "$RUN_BIG_BENCHMARK" = "true" ]; then
# rm -rf ~/data.osm.pbf rm -rf ~/data.osm.pbf
# wget http://download.geofabrik.de/europe/poland-latest.osm.pbf -O ~/data.osm.pbf --quiet wget http://download.geofabrik.de/europe/poland-latest.osm.pbf -O ~/data.osm.pbf --quiet
# gunzip -c ./pr/test/data/poland_gps_traces.csv.gz > ~/gps_traces.csv gunzip -c ./pr/test/data/poland_gps_traces.csv.gz > ~/gps_traces.csv
# else else
# if [ ! -f "~/data.osm.pbf" ]; then if [ ! -f "~/data.osm.pbf" ]; then
# wget http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf -O ~/data.osm.pbf wget http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf -O ~/data.osm.pbf
# else else
# echo "Using cached data.osm.pbf" echo "Using cached data.osm.pbf"
# fi fi
# gunzip -c ./pr/test/data/berlin_gps_traces.csv.gz > ~/gps_traces.csv gunzip -c ./pr/test/data/berlin_gps_traces.csv.gz > ~/gps_traces.csv
# fi fi
# - name: Prepare environment - name: Prepare environment
# run: | run: |
# echo "CCACHE_DIR=$HOME/.ccache" >> $GITHUB_ENV echo "CCACHE_DIR=$HOME/.ccache" >> $GITHUB_ENV
# mkdir -p $HOME/.ccache mkdir -p $HOME/.ccache
# ccache --zero-stats ccache --zero-stats
# ccache --max-size=256M ccache --max-size=256M
# - name: Checkout Base Branch - name: Checkout Base Branch
# uses: actions/checkout@v4 uses: actions/checkout@v4
# with: with:
# ref: ${{ github.event.pull_request.base.ref }} ref: ${{ github.event.pull_request.base.ref }}
# path: base path: base
# - name: Build Base Branch - name: Build Base Branch
# run: | run: |
# cd base cd base
# npm ci --ignore-scripts npm ci --ignore-scripts
# cd .. cd ..
# mkdir base/build mkdir base/build
# cd base/build cd base/build
# cmake -DENABLE_CONAN=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_NODE_BINDINGS=ON .. cmake -DENABLE_CONAN=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_NODE_BINDINGS=ON ..
# make -j$(nproc) make -j$(nproc)
# make -j$(nproc) benchmarks make -j$(nproc) benchmarks
# cd .. cd ..
# make -C test/data make -C test/data
# - name: Build PR Branch - name: Build PR Branch
# run: | run: |
# cd pr cd pr
# npm ci --ignore-scripts npm ci --ignore-scripts
# cd .. cd ..
# mkdir -p pr/build mkdir -p pr/build
# cd pr/build cd pr/build
# cmake -DENABLE_CONAN=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_NODE_BINDINGS=ON .. cmake -DENABLE_CONAN=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_NODE_BINDINGS=ON ..
# make -j$(nproc) make -j$(nproc)
# make -j$(nproc) benchmarks make -j$(nproc) benchmarks
# cd .. cd ..
# make -C test/data make -C test/data
# # we run benchmarks in tmpfs to avoid impact of disk IO # we run benchmarks in tmpfs to avoid impact of disk IO
# - name: Create folder for tmpfs - name: Create folder for tmpfs
# run: | run: |
# # if by any chance it was mounted before(e.g. due to previous job failed), unmount it # if by any chance it was mounted before(e.g. due to previous job failed), unmount it
# sudo umount ~/benchmarks | true sudo umount ~/benchmarks | true
# rm -rf ~/benchmarks rm -rf ~/benchmarks
# mkdir -p ~/benchmarks mkdir -p ~/benchmarks
# # see https://llvm.org/docs/Benchmarking.html # see https://llvm.org/docs/Benchmarking.html
# - name: Run PR Benchmarks - name: Run PR Benchmarks
# run: | run: |
# sudo cset shield -c 2-3 -k on sudo cset shield -c 2-3 -k on
# sudo mount -t tmpfs -o size=4g none ~/benchmarks sudo mount -t tmpfs -o size=4g none ~/benchmarks
# cp -rf pr/build ~/benchmarks/build cp -rf pr/build ~/benchmarks/build
# cp -rf pr/lib ~/benchmarks/lib cp -rf pr/lib ~/benchmarks/lib
# mkdir -p ~/benchmarks/test mkdir -p ~/benchmarks/test
# cp -rf pr/test/data ~/benchmarks/test/data cp -rf pr/test/data ~/benchmarks/test/data
# cp -rf pr/profiles ~/benchmarks/profiles cp -rf pr/profiles ~/benchmarks/profiles
# sudo cset shield --exec -- ./pr/scripts/ci/run_benchmarks.sh -f ~/benchmarks -r $(pwd)/pr_results -s $(pwd)/pr -b ~/benchmarks/build -o ~/data.osm.pbf -g ~/gps_traces.csv sudo cset shield --exec -- ./pr/scripts/ci/run_benchmarks.sh -f ~/benchmarks -r $(pwd)/pr_results -s $(pwd)/pr -b ~/benchmarks/build -o ~/data.osm.pbf -g ~/gps_traces.csv
# sudo umount ~/benchmarks sudo umount ~/benchmarks
# sudo cset shield --reset sudo cset shield --reset
# - name: Run Base Benchmarks - name: Run Base Benchmarks
# run: | run: |
# sudo cset shield -c 2-3 -k on sudo cset shield -c 2-3 -k on
# sudo mount -t tmpfs -o size=4g none ~/benchmarks sudo mount -t tmpfs -o size=4g none ~/benchmarks
# cp -rf base/build ~/benchmarks/build cp -rf base/build ~/benchmarks/build
# cp -rf base/lib ~/benchmarks/lib cp -rf base/lib ~/benchmarks/lib
# mkdir -p ~/benchmarks/test mkdir -p ~/benchmarks/test
# cp -rf base/test/data ~/benchmarks/test/data cp -rf base/test/data ~/benchmarks/test/data
# cp -rf base/profiles ~/benchmarks/profiles cp -rf base/profiles ~/benchmarks/profiles
# # TODO: remove it when base branch will have this file at needed location # TODO: remove it when base branch will have this file at needed location
# if [ ! -f ~/benchmarks/test/data/portugal_to_korea.json ]; then if [ ! -f ~/benchmarks/test/data/portugal_to_korea.json ]; then
# cp base/src/benchmarks/portugal_to_korea.json ~/benchmarks/test/data/portugal_to_korea.json cp base/src/benchmarks/portugal_to_korea.json ~/benchmarks/test/data/portugal_to_korea.json
# fi fi
# # we intentionally use scripts from PR branch to be able to update them and see results in the same PR # we intentionally use scripts from PR branch to be able to update them and see results in the same PR
# sudo cset shield --exec -- cset shield --exec -- ./pr/scripts/ci/run_benchmarks.sh -f ~/benchmarks -r $(pwd)/base_results -s $(pwd)/pr -b ~/benchmarks/build -o ~/data.osm.pbf -g ~/gps_traces.csv sudo cset shield --exec -- cset shield --exec -- ./pr/scripts/ci/run_benchmarks.sh -f ~/benchmarks -r $(pwd)/base_results -s $(pwd)/pr -b ~/benchmarks/build -o ~/data.osm.pbf -g ~/gps_traces.csv
# sudo umount ~/benchmarks sudo umount ~/benchmarks
# sudo cset shield --reset sudo cset shield --reset
# - name: Post Benchmark Results - name: Post Benchmark Results
# run: | run: |
# python3 pr/scripts/ci/post_benchmark_results.py base_results pr_results python3 pr/scripts/ci/post_benchmark_results.py base_results pr_results
# - name: Show CCache statistics - name: Show CCache statistics
# run: | run: |
# ccache -p ccache -p
# ccache -s ccache -s
# ci-complete: ci-complete:
# runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
# needs: [build-test-publish, docker-image-matrix, windows-release-node, benchmarks] needs: [build-test-publish, docker-image-matrix, windows-release-node, benchmarks]
# steps: steps:
# - run: echo "CI complete" - run: echo "CI complete"
+3
View File
@@ -56,6 +56,9 @@ endif()
if (POLICY CMP0074) if (POLICY CMP0074)
cmake_policy(SET CMP0074 NEW) cmake_policy(SET CMP0074 NEW)
endif() endif()
if (POLICY CMP0167)
cmake_policy(SET CMP0167 NEW)
endif()
project(OSRM C CXX) project(OSRM C CXX)
+29 -12
View File
@@ -1,20 +1,34 @@
FROM alpine:3.20.0 as alpine-mimalloc FROM alpine:3.21.2 AS alpine-mimalloc
RUN apk add --no-cache mimalloc RUN apk update && \
apk upgrade && \
apk add --no-cache \
boost-iostreams \
boost-program_options \
boost-thread \
mimalloc
ENV LD_PRELOAD=/usr/lib/libmimalloc.so.2 ENV LD_PRELOAD=/usr/lib/libmimalloc.so.2
ENV MIMALLOC_LARGE_OS_PAGES=1 ENV MIMALLOC_LARGE_OS_PAGES=1
FROM alpine-mimalloc as builder FROM alpine-mimalloc AS builder
ARG DOCKER_TAG ARG DOCKER_TAG
ARG BUILD_CONCURRENCY ARG BUILD_CONCURRENCY
RUN mkdir -p /src && mkdir -p /opt
RUN apk add --no-cache \ RUN mkdir -p /src /opt && \
cmake make git clang libbz2 libxml2 \ apk add --no-cache \
boost-dev boost-program_options boost-filesystem boost-iostreams boost-thread \ boost-dev \
lua5.4-dev onetbb-dev expat-dev boost-filesystem \
clang \
cmake \
expat-dev \
git \
libbz2 \
libxml2 \
lua5.4-dev \
make \
onetbb-dev
COPY . /src COPY . /src
WORKDIR /src WORKDIR /src
@@ -39,16 +53,18 @@ RUN NPROC=${BUILD_CONCURRENCY:-$(nproc)} && \
rm -rf /src rm -rf /src
# Multistage build to reduce image size - https://docs.docker.com/engine/userguide/eng-image/multistage-build/#use-multi-stage-builds # Multistage build to reduce image size - https://docs.docker.com/build/building/multi-stage/#use-multi-stage-builds
# Only the content below ends up in the image, this helps remove /src from the image (which is large) # Only the content below ends up in the image, this helps remove /src from the image (which is large)
FROM alpine-mimalloc as runstage FROM alpine-mimalloc AS runstage
COPY --from=builder /usr/local /usr/local COPY --from=builder /usr/local /usr/local
COPY --from=builder /opt /opt COPY --from=builder /opt /opt
RUN apk add --no-cache \ RUN apk add --no-cache \
boost-program_options boost-date_time boost-iostreams boost-thread \ boost-date_time \
expat lua5.4 onetbb && \ expat \
lua5.4 \
onetbb && \
ldconfig /usr/local/lib ldconfig /usr/local/lib
RUN /usr/local/bin/osrm-extract --help && \ RUN /usr/local/bin/osrm-extract --help && \
@@ -60,3 +76,4 @@ RUN /usr/local/bin/osrm-extract --help && \
WORKDIR /opt WORKDIR /opt
EXPOSE 5000 EXPOSE 5000
+30 -21
View File
@@ -1,21 +1,24 @@
FROM debian:bookworm-slim as builder FROM debian:bookworm-slim AS builder
ARG DOCKER_TAG ARG DOCKER_TAG
ARG BUILD_CONCURRENCY ARG BUILD_CONCURRENCY
RUN mkdir -p /src && mkdir -p /opt
RUN apt-get update && \ RUN mkdir -p /src /opt && \
apt-get -y --no-install-recommends install ca-certificates cmake make git gcc g++ libbz2-dev libxml2-dev wget \ apt-get update && \
libzip-dev libboost1.81-all-dev lua5.4 liblua5.4-dev pkg-config -o APT::Install-Suggests=0 -o APT::Install-Recommends=0 apt-get -y --no-install-recommends --no-install-suggests install \
ca-certificates \
RUN NPROC=${BUILD_CONCURRENCY:-$(nproc)} && \ cmake \
ldconfig /usr/local/lib && \ g++ \
git clone --branch v2021.12.0 --single-branch https://github.com/oneapi-src/oneTBB.git && \ gcc \
cd oneTBB && \ git \
mkdir build && \ libboost1.81-all-dev \
cd build && \ libbz2-dev \
cmake -DTBB_TEST=OFF -DCMAKE_BUILD_TYPE=Release .. && \ liblua5.4-dev \
cmake --build . && \ libtbb-dev \
cmake --install . libxml2-dev \
libzip-dev \
lua5.4 \
make \
pkg-config
COPY . /src COPY . /src
WORKDIR /src WORKDIR /src
@@ -41,19 +44,24 @@ RUN NPROC=${BUILD_CONCURRENCY:-$(nproc)} && \
rm -rf /src rm -rf /src
# Multistage build to reduce image size - https://docs.docker.com/engine/userguide/eng-image/multistage-build/#use-multi-stage-builds # Multistage build to reduce image size - https://docs.docker.com/build/building/multi-stage/#use-multi-stage-builds
# Only the content below ends up in the image, this helps remove /src from the image (which is large) # Only the content below ends up in the image, this helps remove /src from the image (which is large)
FROM debian:bookworm-slim as runstage FROM debian:bookworm-slim AS runstage
COPY --from=builder /usr/local /usr/local COPY --from=builder /usr/local /usr/local
COPY --from=builder /opt /opt COPY --from=builder /opt /opt
RUN apt-get update && \ RUN apt-get update && \
apt-get install -y --no-install-recommends \ apt-get install -y --no-install-recommends --no-install-suggests \
libboost-program-options1.81.0 libboost-date-time1.81.0 libboost-iostreams1.81.0 libboost-thread1.81.0 \ expat \
expat liblua5.4-0 && \ libboost-date-time1.81.0 \
libboost-iostreams1.81.0 \
libboost-program-options1.81.0 \
libboost-thread1.81.0 \
liblua5.4-0 \
libtbb12 && \
rm -rf /var/lib/apt/lists/* && \ rm -rf /var/lib/apt/lists/* && \
# add /usr/local/lib to ldconfig to allow loading libraries from there # Add /usr/local/lib to ldconfig to allow loading libraries from there
ldconfig /usr/local/lib ldconfig /usr/local/lib
RUN /usr/local/bin/osrm-extract --help && \ RUN /usr/local/bin/osrm-extract --help && \
@@ -65,3 +73,4 @@ RUN /usr/local/bin/osrm-extract --help && \
WORKDIR /opt WORKDIR /opt
EXPOSE 5000 EXPOSE 5000
+2 -1
View File
@@ -6752,7 +6752,8 @@ namespace sol {
static_assert(std::is_constructible<T, Args&&...>::value, "T must be constructible with Args"); static_assert(std::is_constructible<T, Args&&...>::value, "T must be constructible with Args");
*this = nullopt; *this = nullopt;
this->construct(std::forward<Args>(args)...); new (static_cast<void*>(this)) optional(std::in_place, std::forward<Args>(args)...);
return **this;
} }
/// Swaps this optional with the other. /// Swaps this optional with the other.
+90 -112
View File
@@ -5,9 +5,6 @@
#include "osrm/extractor_config.hpp" #include "osrm/extractor_config.hpp"
#include <boost/algorithm/string.hpp> #include <boost/algorithm/string.hpp>
#include <oneapi/tbb/global_control.h>
#include <oneapi/tbb/parallel_for.h>
#include <tbb/flow_graph.h>
#include <thread> #include <thread>
// utility class to redirect stderr so we can test it // utility class to redirect stderr so we can test it
@@ -32,24 +29,16 @@ class redirect_stderr
BOOST_AUTO_TEST_SUITE(library_extract) BOOST_AUTO_TEST_SUITE(library_extract)
BOOST_AUTO_TEST_CASE(dummy)
{
BOOST_CHECK(true);
}
BOOST_AUTO_TEST_CASE(test_extract_with_invalid_config) BOOST_AUTO_TEST_CASE(test_extract_with_invalid_config)
{ {
oneapi::tbb::task_scheduler_handle handle{tbb::attach{}};
osrm::ExtractorConfig config; osrm::ExtractorConfig config;
config.requested_num_threads = std::thread::hardware_concurrency(); config.requested_num_threads = std::thread::hardware_concurrency();
BOOST_CHECK_THROW(osrm::extract(config), BOOST_CHECK_THROW(osrm::extract(config),
std::exception); // including osrm::util::exception, osmium::io_error, etc. std::exception); // including osrm::util::exception, osmium::io_error, etc.
oneapi::tbb::finalize(handle);
} }
BOOST_AUTO_TEST_CASE(test_extract_with_valid_config) BOOST_AUTO_TEST_CASE(test_extract_with_valid_config)
{ {
oneapi::tbb::task_scheduler_handle handle{tbb::attach{}};
osrm::ExtractorConfig config; osrm::ExtractorConfig config;
config.input_path = OSRM_TEST_DATA_DIR "/monaco.osm.pbf"; config.input_path = OSRM_TEST_DATA_DIR "/monaco.osm.pbf";
config.UseDefaultOutputNames(OSRM_TEST_DATA_DIR "/monaco.osm.pbf"); config.UseDefaultOutputNames(OSRM_TEST_DATA_DIR "/monaco.osm.pbf");
@@ -57,127 +46,116 @@ BOOST_AUTO_TEST_CASE(test_extract_with_valid_config)
config.small_component_size = 1000; config.small_component_size = 1000;
config.requested_num_threads = std::thread::hardware_concurrency(); config.requested_num_threads = std::thread::hardware_concurrency();
BOOST_CHECK_NO_THROW(osrm::extract(config)); BOOST_CHECK_NO_THROW(osrm::extract(config));
oneapi::tbb::finalize(handle);
} }
// BOOST_AUTO_TEST_CASE(test_setup_runtime_error) BOOST_AUTO_TEST_CASE(test_setup_runtime_error)
// { {
// oneapi::tbb::task_scheduler_handle handle{tbb::attach{}}; osrm::ExtractorConfig config;
// osrm::ExtractorConfig config; config.input_path = OSRM_TEST_DATA_DIR "/monaco.osm.pbf";
// config.input_path = OSRM_TEST_DATA_DIR "/monaco.osm.pbf"; config.UseDefaultOutputNames(OSRM_TEST_DATA_DIR "/monaco.osm.pbf");
// config.UseDefaultOutputNames(OSRM_TEST_DATA_DIR "/monaco.osm.pbf"); config.profile_path = OSRM_TEST_DATA_DIR "/profiles/bad_setup.lua";
// config.profile_path = OSRM_TEST_DATA_DIR "/profiles/bad_setup.lua"; config.small_component_size = 1000;
// config.small_component_size = 1000; config.requested_num_threads = std::thread::hardware_concurrency();
// config.requested_num_threads = std::thread::hardware_concurrency();
// std::stringstream output; std::stringstream output;
// { {
// redirect_stderr redir(output.rdbuf()); redirect_stderr redir(output.rdbuf());
// BOOST_CHECK_THROW(osrm::extract(config), osrm::util::exception); BOOST_CHECK_THROW(osrm::extract(config), osrm::util::exception);
// } }
// // We just look for the line number, file name, and error message. This avoids portability // We just look for the line number, file name, and error message. This avoids portability
// // issues since the output contains the full path to the file, which may change between systems // issues since the output contains the full path to the file, which may change between systems
// BOOST_CHECK(boost::algorithm::contains(output.str(), BOOST_CHECK(boost::algorithm::contains(output.str(),
// "bad_setup.lua:6: attempt to compare number with nil")); "bad_setup.lua:6: attempt to compare number with nil"));
// oneapi::tbb::finalize(handle); }
// }
// BOOST_AUTO_TEST_CASE(test_way_runtime_error) BOOST_AUTO_TEST_CASE(test_way_runtime_error)
// { {
// oneapi::tbb::task_scheduler_handle handle{tbb::attach{}}; osrm::ExtractorConfig config;
// osrm::ExtractorConfig config; config.input_path = OSRM_TEST_DATA_DIR "/monaco.osm.pbf";
// config.input_path = OSRM_TEST_DATA_DIR "/monaco.osm.pbf"; config.UseDefaultOutputNames(OSRM_TEST_DATA_DIR "/monaco.osm.pbf");
// config.UseDefaultOutputNames(OSRM_TEST_DATA_DIR "/monaco.osm.pbf"); config.profile_path = OSRM_TEST_DATA_DIR "/profiles/bad_way.lua";
// config.profile_path = OSRM_TEST_DATA_DIR "/profiles/bad_way.lua"; config.small_component_size = 1000;
// config.small_component_size = 1000; config.requested_num_threads = std::thread::hardware_concurrency();
// config.requested_num_threads = std::thread::hardware_concurrency();
// std::stringstream output; std::stringstream output;
// { {
// redirect_stderr redir(output.rdbuf()); redirect_stderr redir(output.rdbuf());
// BOOST_CHECK_THROW(osrm::extract(config), osrm::util::exception); BOOST_CHECK_THROW(osrm::extract(config), osrm::util::exception);
// } }
// // We just look for the line number, file name, and error message. This avoids portability // We just look for the line number, file name, and error message. This avoids portability
// // issues since the output contains the full path to the file, which may change between systems // issues since the output contains the full path to the file, which may change between systems
// BOOST_CHECK(boost::algorithm::contains(output.str(), BOOST_CHECK(boost::algorithm::contains(output.str(),
// "bad_way.lua:41: attempt to compare number with nil")); "bad_way.lua:41: attempt to compare number with nil"));
// oneapi::tbb::finalize(handle); }
// }
// BOOST_AUTO_TEST_CASE(test_node_runtime_error) BOOST_AUTO_TEST_CASE(test_node_runtime_error)
// { {
// oneapi::tbb::task_scheduler_handle handle{tbb::attach{}}; osrm::ExtractorConfig config;
// osrm::ExtractorConfig config; config.input_path = OSRM_TEST_DATA_DIR "/monaco.osm.pbf";
// config.input_path = OSRM_TEST_DATA_DIR "/monaco.osm.pbf"; config.UseDefaultOutputNames(OSRM_TEST_DATA_DIR "/monaco.osm.pbf");
// config.UseDefaultOutputNames(OSRM_TEST_DATA_DIR "/monaco.osm.pbf"); config.profile_path = OSRM_TEST_DATA_DIR "/profiles/bad_node.lua";
// config.profile_path = OSRM_TEST_DATA_DIR "/profiles/bad_node.lua"; config.small_component_size = 1000;
// config.small_component_size = 1000; config.requested_num_threads = std::thread::hardware_concurrency();
// config.requested_num_threads = std::thread::hardware_concurrency();
// std::stringstream output; std::stringstream output;
// { {
// redirect_stderr redir(output.rdbuf()); redirect_stderr redir(output.rdbuf());
// BOOST_CHECK_THROW(osrm::extract(config), osrm::util::exception); BOOST_CHECK_THROW(osrm::extract(config), osrm::util::exception);
// } }
// // We just look for the line number, file name, and error message. This avoids portability // We just look for the line number, file name, and error message. This avoids portability
// // issues since the output contains the full path to the file, which may change between systems // issues since the output contains the full path to the file, which may change between systems
// BOOST_CHECK(boost::algorithm::contains(output.str(), BOOST_CHECK(boost::algorithm::contains(output.str(),
// "bad_node.lua:36: attempt to compare number with nil")); "bad_node.lua:36: attempt to compare number with nil"));
// oneapi::tbb::finalize(handle); }
// }
// BOOST_AUTO_TEST_CASE(test_segment_runtime_error) BOOST_AUTO_TEST_CASE(test_segment_runtime_error)
// { {
// oneapi::tbb::task_scheduler_handle handle{tbb::attach{}}; osrm::ExtractorConfig config;
// osrm::ExtractorConfig config; config.input_path = OSRM_TEST_DATA_DIR "/monaco.osm.pbf";
// config.input_path = OSRM_TEST_DATA_DIR "/monaco.osm.pbf"; config.UseDefaultOutputNames(OSRM_TEST_DATA_DIR "/monaco.osm.pbf");
// config.UseDefaultOutputNames(OSRM_TEST_DATA_DIR "/monaco.osm.pbf"); config.profile_path = OSRM_TEST_DATA_DIR "/profiles/bad_segment.lua";
// config.profile_path = OSRM_TEST_DATA_DIR "/profiles/bad_segment.lua"; config.small_component_size = 1000;
// config.small_component_size = 1000; config.requested_num_threads = std::thread::hardware_concurrency();
// config.requested_num_threads = std::thread::hardware_concurrency();
// std::stringstream output; std::stringstream output;
// { {
// redirect_stderr redir(output.rdbuf()); redirect_stderr redir(output.rdbuf());
// BOOST_CHECK_THROW(osrm::extract(config), osrm::util::exception); BOOST_CHECK_THROW(osrm::extract(config), osrm::util::exception);
// } }
// // We just look for the line number, file name, and error message. This avoids portability // We just look for the line number, file name, and error message. This avoids portability
// // issues since the output contains the full path to the file, which may change between systems // issues since the output contains the full path to the file, which may change between systems
// BOOST_CHECK(boost::algorithm::contains( BOOST_CHECK(boost::algorithm::contains(
// output.str(), "bad_segment.lua:132: attempt to compare number with nil")); output.str(), "bad_segment.lua:132: attempt to compare number with nil"));
// oneapi::tbb::finalize(handle); }
// }
// BOOST_AUTO_TEST_CASE(test_turn_runtime_error) BOOST_AUTO_TEST_CASE(test_turn_runtime_error)
// { {
// oneapi::tbb::task_scheduler_handle handle{tbb::attach{}}; osrm::ExtractorConfig config;
// osrm::ExtractorConfig config; config.input_path = OSRM_TEST_DATA_DIR "/monaco.osm.pbf";
// config.input_path = OSRM_TEST_DATA_DIR "/monaco.osm.pbf"; config.UseDefaultOutputNames(OSRM_TEST_DATA_DIR "/monaco.osm.pbf");
// config.UseDefaultOutputNames(OSRM_TEST_DATA_DIR "/monaco.osm.pbf"); config.profile_path = OSRM_TEST_DATA_DIR "/profiles/bad_turn.lua";
// config.profile_path = OSRM_TEST_DATA_DIR "/profiles/bad_turn.lua"; config.small_component_size = 1000;
// config.small_component_size = 1000; config.requested_num_threads = std::thread::hardware_concurrency();
// config.requested_num_threads = std::thread::hardware_concurrency();
// std::stringstream output; std::stringstream output;
// { {
// redirect_stderr redir(output.rdbuf()); redirect_stderr redir(output.rdbuf());
// BOOST_CHECK_THROW(osrm::extract(config), osrm::util::exception); BOOST_CHECK_THROW(osrm::extract(config), osrm::util::exception);
// } }
// // We just look for the line number, file name, and error message. This avoids portability // We just look for the line number, file name, and error message. This avoids portability
// // issues since the output contains the full path to the file, which may change between systems // issues since the output contains the full path to the file, which may change between systems
// BOOST_CHECK(boost::algorithm::contains(output.str(), BOOST_CHECK(boost::algorithm::contains(output.str(),
// "bad_turn.lua:122: attempt to compare number with nil")); "bad_turn.lua:122: attempt to compare number with nil"));
// oneapi::tbb::finalize(handle); }
// }
BOOST_AUTO_TEST_SUITE_END() BOOST_AUTO_TEST_SUITE_END()