Skip to content

Implements Oracle

Implements Oracle #175

Workflow file for this run

name: build
on:
push:
branches:
- master
pull_request:
branches:
- master
paths-ignore:
- "**/README.md"
- "**/LICENSE"
- "**/SECURITY.md"
- "**/.gitignore"
- "**/resources/**"
- "**/.github/ISSUE_TEMPLATE/**"
- "**/website/**"
jobs:
build:
name: build
runs-on: ubuntu-latest
services:
mysql:
image: mysql:latest
options: >-
--health-cmd="mysqladmin ping --silent"
--health-interval=10s
--health-timeout=5s
--health-retries=3
ports:
- 3306:3306
env:
MYSQL_ROOT_PASSWORD: njord_rootpwd
MYSQL_DATABASE: njord_db
MYSQL_USER: njord_user
MYSQL_PASSWORD: njord_password
oracle:
image: gvenzl/oracle-free:latest
options: >-
--health-cmd="healthcheck.sh"
--health-interval=10s
--health-timeout=5s
--health-retries=10
ports:
- 1521:1521
- 5500:5500
env:
ORACLE_PASSWORD: njord_password
APP_USER: test
APP_USER_PASSWORD: test
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
- name: Cache Cargo Dependencies
uses: actions/cache@v2
with:
path: |
~/.cargo
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Run Clippy
run: cargo clippy --all-targets --all-features
- name: Build Project
run: cargo build --release
- name: Running Unit Tests for SQLite
run: cargo test sqlite
- name: Running Integration Tests for SQLite
run: cargo test --test sqlite_tests
# MySQL related steps
- name: Wait for MySQL to be ready
run: |
until mysqladmin ping -h 127.0.0.1 --silent; do
echo "Waiting for MySQL to be ready..."
sleep 5
done
- name: Set up MySQL schema
env:
MYSQL_PWD: njord_rootpwd
run: |
echo "Injecting schema and data into MySQL..."
mysql -h 127.0.0.1 -u njord_user -pnjord_password njord_db < njord/db/test/mysql.sql
- name: Running Unit Tests for MySQL
run: cargo test mysql
- name: Running Integration Tests for MySQL
env:
MYSQL_DATABASE: njord_db
MYSQL_USER: njord_user
MYSQL_PASSWORD: njord_password
MYSQL_HOST: 127.0.0.1
run: cargo test --test mysql_tests
# Oracle related steps
- name: Wait for Oracle to be ready
run: |
echo "Waiting for Oracle to be ready..."
until echo "exit" | sqlplus test/test@//127.0.0.1:1521/XEPDB1; do
echo "Waiting for Oracle to be ready..."
sleep 10
done
- name: Set up Oracle schema
run: |
echo "Injecting schema and data into Oracle..."
sqlplus test/test@//127.0.0.1:1521/XEPDB1 @njord/db/test/oracle/tests.sql
- name: Running Unit Tests for Oracle
run: cargo test oracle
- name: Running Integration Tests for Oracle
env:
ORACLE_DATABASE: XEPDB1
APP_USER: test
APP_USER_PASSWORD: test
ORACLE_HOST: 127.0.0.1
run: cargo test --test oracle_tests