Skip to content

ds mongo OPTIMIZE loading in operational datastore #39

ds mongo OPTIMIZE loading in operational datastore

ds mongo OPTIMIZE loading in operational datastore #39

Workflow file for this run

name: sysrepo CI
on:
push:
branches:
- master
- devel
pull_request:
branches:
- master
- devel
jobs:
git-branch:
name: Get git branch
runs-on: ubuntu-latest
outputs:
branch-name: ${{ steps.get-git-branch.outputs.branch-name }}
steps:
- id: get-git-branch
run: |
if ${{ github.event_name == 'push' }}
then export GIT_BRANCH=`echo ${{ github.ref }} | cut -d'/' -f 3`
else
export GIT_BRANCH=${{ github.base_ref }}
fi
echo "branch-name=$GIT_BRANCH" >> $GITHUB_OUTPUT
build:
name: ${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }} # mac-OS does not implement robust mutexes so it is not supported
needs: git-branch
strategy:
fail-fast: false
matrix:
config:
- {
name: "Release, gcc",
os: "ubuntu-22.04",
build-type: "Release",
dep-build-type: "Release",
cc: "gcc",
options: "-DENABLE_TESTS=ON",
packages: "libcmocka-dev",
snaps: "",
make-target: ""
}
- {
name: "Release, clang",
os: "ubuntu-22.04",
build-type: "Release",
dep-build-type: "Release",
cc: "clang",
options: "-DENABLE_TESTS=ON",
packages: "libcmocka-dev",
snaps: "",
make-target: ""
}
- {
name: "Debug, gcc",
os: "ubuntu-22.04",
build-type: "Debug",
dep-build-type: "Debug",
cc: "gcc",
options: "",
packages: "libcmocka-dev valgrind",
snaps: "",
make-target: ""
}
- {
name: "Debug, clang",
os: "ubuntu-22.04",
build-type: "Debug",
dep-build-type: "Debug",
cc: "clang",
options: "",
# no valgrind because it does not support DWARF5 yet generated by clang 14
packages: "libcmocka-dev",
snaps: "",
make-target: ""
}
- {
name: "ASAN and UBSAN",
os: "ubuntu-22.04",
build-type: "Debug",
dep-build-type: "Debug",
cc: "clang",
options: "-DCMAKE_C_FLAGS=-fsanitize=address,undefined -DENABLE_TESTS=ON -DENABLE_VALGRIND_TESTS=OFF",
packages: "libcmocka-dev",
snaps: "",
make-target: "",
ubsan-options: "print_stacktrace=1:halt_on_error=1",
}
- {
name: "ABI Check",
os: "ubuntu-latest",
build-type: "ABICheck",
dep-build-type: "Debug",
cc: "gcc",
options: "",
packages: "libcmocka-dev abi-dumper abi-compliance-checker",
snaps: "core universal-ctags",
make-target: "abi-check"
}
- {
name: "MONGO DS plugin",
os: "ubuntu-22.04",
build-type: "Debug",
dep-build-type: "Debug",
cc: "gcc",
options: "-DDEFAULT_STARTUP_DS_PLG=\"MONGO DS\" -DDEFAULT_RUNNING_DS_PLG=\"MONGO DS\" -DDEFAULT_CANDIDATE_DS_PLG=\"MONGO DS\" -DDEFAULT_OPERATIONAL_DS_PLG=\"MONGO DS\" -DDEFAULT_FACTORY_DEFAULT_DS_PLG=\"MONGO DS\"",
packages: "libcmocka-dev valgrind",
snaps: "",
make-target: ""
}
- {
name: "MONGO DS plugin latest",
os: "ubuntu-22.04",
build-type: "Debug",
dep-build-type: "Debug",
cc: "gcc",
options: "-DDEFAULT_STARTUP_DS_PLG=\"MONGO DS\" -DDEFAULT_RUNNING_DS_PLG=\"MONGO DS\" -DDEFAULT_CANDIDATE_DS_PLG=\"MONGO DS\" -DDEFAULT_OPERATIONAL_DS_PLG=\"MONGO DS\" -DDEFAULT_FACTORY_DEFAULT_DS_PLG=\"MONGO DS\"",
packages: "libcmocka-dev valgrind",
snaps: "",
make-target: ""
}
- {
name: "REDIS DS plugin",
os: "ubuntu-22.04",
build-type: "Debug",
dep-build-type: "Debug",
cc: "gcc",
options: "-DDEFAULT_STARTUP_DS_PLG=\"REDIS DS\" -DDEFAULT_RUNNING_DS_PLG=\"REDIS DS\" -DDEFAULT_CANDIDATE_DS_PLG=\"REDIS DS\" -DDEFAULT_OPERATIONAL_DS_PLG=\"REDIS DS\" -DDEFAULT_FACTORY_DEFAULT_DS_PLG=\"REDIS DS\"",
packages: "libcmocka-dev valgrind",
snaps: "",
make-target: ""
}
- {
name: "REDIS DS plugin latest",
os: "ubuntu-22.04",
build-type: "Debug",
dep-build-type: "Debug",
cc: "gcc",
options: "-DDEFAULT_STARTUP_DS_PLG=\"REDIS DS\" -DDEFAULT_RUNNING_DS_PLG=\"REDIS DS\" -DDEFAULT_CANDIDATE_DS_PLG=\"REDIS DS\" -DDEFAULT_OPERATIONAL_DS_PLG=\"REDIS DS\" -DDEFAULT_FACTORY_DEFAULT_DS_PLG=\"REDIS DS\"",
packages: "libcmocka-dev valgrind",
snaps: "",
make-target: ""
}
env:
UBSAN_OPTIONS: ${{ matrix.config.ubsan-options }}
steps:
- uses: actions/checkout@main
- name: Deps-packages
shell: bash
run: |
sudo apt-get update
if ${{ matrix.config.packages != '' }}
then sudo apt-get install ${{ matrix.config.packages }}
fi
if ${{ matrix.config.snaps != '' }}
then sudo snap install ${{ matrix.config.snaps }}
fi
- name: Deps-uncrustify
shell: bash
working-directory: ${{ github.workspace }}
run: |
git clone --branch uncrustify-0.77.1 https://github.com/uncrustify/uncrustify
cd uncrustify
mkdir build
cd build
CC=${{ matrix.config.cc }} cmake ..
make
sudo make install
if: ${{ matrix.config.name == 'Debug, gcc' }}
- name: Deps-libyang
shell: bash
run: |
git clone -b ${{ needs.git-branch.outputs.branch-name }} https://github.com/CESNET/libyang.git
cd libyang
mkdir build
cd build
CC=${{ matrix.config.cc }} cmake -DCMAKE_BUILD_TYPE=${{ matrix.config.dep-build-type }} -DENABLE_TESTS=OFF ..
make -j2
sudo make install
- name: Deps-MongoDB
shell: bash
run: |
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org
sudo service mongod start
if: ${{ matrix.config.name == 'MONGO DS plugin' || matrix.config.name == 'MONGO DS plugin latest' }}
- name: Deps-libmongoc
shell: bash
run: |
wget https://github.com/mongodb/mongo-c-driver/releases/download/1.24.0/mongo-c-driver-1.24.0.tar.gz
tar xzf mongo-c-driver-1.24.0.tar.gz
cd mongo-c-driver-1.24.0
mkdir cmake-build
cd cmake-build
cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF ..
cmake --build .
sudo cmake --build . --target install
if: ${{ matrix.config.name == 'MONGO DS plugin' }}
- name: Deps-libmongoc-latest
shell: bash
run: |
git clone https://github.com/mongodb/mongo-c-driver.git
cd mongo-c-driver
cmake -S . -B ./_build -D ENABLE_EXTRA_ALIGNMENT=OFF -D ENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF -D CMAKE_BUILD_TYPE=RelWithDebInfo -D ENABLE_MONGOC=ON
cmake --build ./_build --config RelWithDebInfo --parallel
sudo cmake --install "./_build" --prefix "/usr/local"
if: ${{ matrix.config.name == 'MONGO DS plugin latest' }}
- name: Deps-RedisDB
shell: bash
run: |
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
sudo chmod 644 /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt-get update
sudo apt-get install redis-stack-server
sudo service redis-stack-server start
if: ${{ matrix.config.name == 'REDIS DS plugin' || matrix.config.name == 'REDIS DS plugin latest' }}
- name: Deps-libhiredis
shell: bash
run: |
wget https://github.com/redis/hiredis/archive/refs/tags/v1.1.0.tar.gz
tar xzf v1.1.0.tar.gz
cd hiredis-1.1.0
make
sudo make install
if: ${{ matrix.config.name == 'REDIS DS plugin' }}
- name: Deps-libhiredis-latest
shell: bash
run: |
git clone https://github.com/redis/hiredis.git
cd hiredis
make
sudo make install
if: ${{ matrix.config.name == 'REDIS DS plugin latest' }}
- name: Configure
shell: bash
working-directory: ${{ github.workspace }}
run: |
mkdir build
cd build
CC=${{ matrix.config.cc }} cmake -DCMAKE_BUILD_TYPE=${{ matrix.config.build-type }} ${{ matrix.config.options }} ..
- name: Build
shell: bash
working-directory: ${{ github.workspace }}/build
run: |
export LC_ALL=C.UTF-8
export PATH=/snap/bin:${{ github.workspace }}/coverity-tools/bin:$PATH
make ${{ matrix.config.make-target }}
- name: Test
shell: bash
working-directory: ${{ github.workspace }}/build
run: ctest --output-on-failure