Tests #706
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: Tests | |
on: | |
push: | |
pull_request: | |
release: | |
types: | |
- published | |
schedule: | |
# At 12:00 on every day-of-month | |
- cron: "0 12 */1 * *" | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
env: | |
COMDB2_DBNAME: mattdb | |
TIMEOUT: 30 | |
jobs: | |
build_bloomberg_comdb2: | |
name: Build bloomberg-comdb2 from source | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout bloomberg-comdb2 repository | |
uses: actions/checkout@v4 | |
with: | |
repository: bloomberg/comdb2 | |
path: bloomberg-comdb2 | |
- name: Install build dependencies | |
run: ' | |
sudo apt-get update && | |
sudo apt-get install -qy | |
bison | |
build-essential | |
cmake | |
flex | |
libevent-dev | |
liblz4-dev | |
libprotobuf-c-dev | |
libreadline-dev | |
libsqlite3-dev | |
libssl-dev | |
libunwind-dev | |
ncurses-dev | |
protobuf-c-compiler | |
tcl | |
uuid-dev | |
zlib1g-dev | |
' | |
- name: Build from source | |
run: ' | |
( | |
mkdir bloomberg-comdb2/build && | |
cd bloomberg-comdb2/build && | |
cmake .. && | |
make | |
) | |
' | |
- name: Archive bloomberg-comdb2 repo with build artifacts | |
run: 'tar czvf bloomberg-comdb2.tar.gz bloomberg-comdb2/' | |
- name: Upload bloomberg-comdb2 repo with build artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: bloomberg-comdb2 | |
path: ./bloomberg-comdb2.tar.gz | |
build_sdist: | |
name: Build python-comdb2 source distribution | |
runs-on: ubuntu-latest | |
needs: [build_bloomberg_comdb2] | |
steps: | |
- name: Download bloomberg-comdb2 with build artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: bloomberg-comdb2 | |
path: . | |
- name: Install bloomberg-comdb2 | |
run: ' | |
sudo apt-get install -qy | |
libevent-dev | |
liblz4-dev | |
libprotobuf-c-dev | |
libsqlite3-dev | |
libssl-dev | |
libunwind-dev | |
zlib1g-dev && | |
tar xvf bloomberg-comdb2.tar.gz && | |
(cd bloomberg-comdb2/build && sudo make install) && | |
sudo rm -rf bloomberg-comdb2/ bloomberg-comdb2.tar.gz | |
' | |
- uses: actions/checkout@v4 | |
- name: 'Set up Python 3.7' | |
uses: actions/setup-python@v5 # note that this step overwrites the PKG_CONFIG_PATH variable | |
with: | |
python-version: '3.7' # the lowest version that we support in CI | |
- name: Build sdist | |
run: ' | |
sudo apt-get install -qy pkg-config && | |
PKG_CONFIG_PATH=/opt/bb/lib/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH | |
pipx run build --sdist | |
' | |
- name: Upload sdist | |
uses: actions/upload-artifact@v4 | |
with: | |
name: python-comdb2-sdist | |
path: dist/*.tar.gz | |
test: | |
name: Test suite | |
runs-on: ubuntu-latest | |
needs: [build_sdist] | |
strategy: | |
matrix: | |
python-version: | |
- '3.13-dev' | |
- '3.12' | |
- '3.11' | |
- '3.10' | |
- '3.9' | |
- '3.8' | |
- '3.7' | |
steps: | |
- name: Download comdb2 repo with build artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: bloomberg-comdb2 | |
path: . | |
- name: Install bloomberg-comdb2 | |
run: ' | |
sudo apt-get install -qy | |
libevent-dev | |
liblz4-dev | |
libprotobuf-c-dev | |
libsqlite3-dev | |
libssl-dev | |
libunwind-dev | |
zlib1g-dev && | |
tar xvf bloomberg-comdb2.tar.gz && | |
(cd bloomberg-comdb2/build && sudo make install) && | |
sudo rm -rf bloomberg-comdb2/ bloomberg-comdb2.tar.gz | |
' | |
- name: Start local comdb2 instance | |
run: ' | |
sudo mkdir -p /opt/bb/share/schemas/$COMDB2_DBNAME && | |
echo "$COMDB2_DBNAME 1234 $(hostname -f)" > /opt/bb/etc/cdb2/config/comdb2db.cfg && | |
(/opt/bb/bin/pmux -n &) && | |
echo started pmux && | |
/opt/bb/bin/comdb2 --create $COMDB2_DBNAME && | |
(/opt/bb/bin/comdb2 $COMDB2_DBNAME > /tmp/$COMDB2_DBNAME.log 2>&1 &); | |
iterations=0; | |
until /opt/bb/bin/cdb2sql $COMDB2_DBNAME local "select 1+1" > /dev/null 2>&1; | |
do | |
echo -n "."; | |
sleep 1; | |
iterations=$(($iterations + 1)); | |
if [ "$iterations" -ge "$TIMEOUT" ]; then | |
echo >&2 "$COMDB2_DBNAME failed to start after $iterations seconds"; | |
exit 1; | |
fi; | |
done | |
' | |
- name: Download python-comdb2 sdist | |
uses: actions/download-artifact@v4 | |
with: | |
name: python-comdb2-sdist | |
path: dist | |
- name: Extract python-comdb2 sdist | |
run: ' | |
(cd dist/ && tar xvf comdb2-*.tar.gz && rm comdb2-*.tar.gz) && | |
mv dist/comdb2-* python-comdb2-sdist && rmdir dist | |
' | |
- name: Create tables | |
run: | | |
tables="$(cat python-comdb2-sdist/tests/schemas/$COMDB2_DBNAME/table_constraint_order.txt)" | |
for table_name in $tables | |
do | |
table_file="python-comdb2-sdist/tests/schemas/$COMDB2_DBNAME/$table_name.csc2" | |
echo "Creating $table_name from $table_file" | |
/opt/bb/bin/cdb2sql "$COMDB2_DBNAME" local "create table $table_name { $(cat $table_file) }" | |
done | |
- name: Set up Python ${{matrix.python-version}} | |
uses: actions/setup-python@v5 # note that this step overwrites the PKG_CONFIG_PATH variable | |
with: | |
python-version: "${{matrix.python-version}}" | |
- name: Install python-comdb2 from the sdist | |
run: ' | |
sudo apt-get install -qy pkg-config && | |
python -m pip install --upgrade pip && | |
PKG_CONFIG_PATH=/opt/bb/lib/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH | |
LDFLAGS="-Wl,-rpath,/opt/bb/lib" | |
python -m pip install ./python-comdb2-sdist[tests] | |
' | |
- name: Run Tests | |
run: (cd python-comdb2-sdist/tests && python -m pytest -vvv) |