Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
118 commits
Select commit Hold shift + click to select a range
0c9e159
ras-record: use a more generic way to describe database fields
mchehab Aug 6, 2026
24c47c7
ras-record: add a generic binding routine
mchehab Aug 7, 2026
4183ddf
Get rid of sqlite3 specifics outside ras-record
mchehab Aug 7, 2026
64b0275
ras-reri-handler: fix file permissions
mchehab Aug 8, 2026
472b67a
rasdaemon: add an interface to register its modules
mchehab Aug 8, 2026
bed2908
configure.ac: bump its version to mark it as a draft
mchehab Aug 8, 2026
6c1bc90
Reorganize source tree
mchehab Aug 8, 2026
1c4c87a
core/modules: refactor module register logic
mchehab Aug 8, 2026
55a21d1
core/modules: keep modules entry sorted
mchehab Aug 9, 2026
3ea90df
core/modules: fix several bugs at the logic
mchehab Aug 9, 2026
e449a7d
tests: add unit tests for modules
mchehab Aug 9, 2026
e782f72
core/modules: better handle cleanup logic
mchehab Aug 9, 2026
b389650
tests/test-modules: add an unit test for module init/cleanup
mchehab Aug 9, 2026
8fca264
tests/test-modules: add a logic to better check errors
mchehab Aug 9, 2026
1f63e90
core/ras-logger: add support for mocking output
mchehab Aug 9, 2026
82f5e27
rasdaemon: abstract sqlite3 logic
mchehab Aug 10, 2026
47de667
db/ras-db: rename database operations
mchehab Aug 10, 2026
b3a8b5c
db/ras-db: document the database interface
mchehab Aug 10, 2026
46fc46a
db/ras-db: Rename the C code to db/db-sqlite3.c
mchehab Aug 10, 2026
287de7c
ras-db: add an database abstraction layer
mchehab Aug 10, 2026
df617a4
db/db-sqlite3: use the modules register logic
mchehab Aug 11, 2026
8c16aef
db/ras-db: add missing code
mchehab Aug 11, 2026
ab7faba
modules: add a function to initialize a single module.
mchehab Aug 11, 2026
350c595
ras-db: implement unit tests for db-sqlite3
mchehab Aug 11, 2026
5997f4b
tests/unittest: some cleanups
mchehab Aug 11, 2026
c7c69b1
tests/test-sqlite3: remove extra free
mchehab Aug 11, 2026
6e534e0
tests: some adjustments on its output
mchehab Aug 11, 2026
2cd995d
Makefile.am: some fixes for module auto register
mchehab Aug 12, 2026
8b47197
core/ras-logger: always use the binary name at the logs
mchehab Aug 12, 2026
41c2377
tests/test-sqlite3: ensure that module will be initialized
mchehab Aug 12, 2026
3694e00
tests/test-modules: cleanup modules before running the test
mchehab Aug 12, 2026
254ba34
db/ras-db: prevent an infinite loop if backend is used
mchehab Aug 12, 2026
db4d444
core/modules: change return value for zero to mean success
mchehab Aug 12, 2026
c3b0d81
db/ras-db: better name the global variable
mchehab Aug 12, 2026
23ea469
db/db-sqlite3: improve some error messages
mchehab Aug 12, 2026
0a6f612
db/ras-db: several fixes
mchehab Aug 12, 2026
419c637
db/ras-db: Fix open/close logic
mchehab Aug 13, 2026
b014aca
tests: use cmocka libary
mchehab Aug 13, 2026
8d42970
tests: only color the status
mchehab Aug 13, 2026
1441d2a
tests/main: use caseinsensitive match for paramters
mchehab Aug 13, 2026
51c2ba1
tests/test-sqlite3: fix test bugs
mchehab Aug 13, 2026
b545bd2
db/ras-db: add support to run a SQL command
mchehab Aug 14, 2026
c56d934
db/ras-db: better name the prepare insert statement
mchehab Aug 14, 2026
98d877f
db/ras-db: Fix several issues at the code
mchehab Aug 13, 2026
414457d
tests/test-sqlite3: check values from database
mchehab Aug 13, 2026
ba066c4
db/ras-db: pass table descriptor to db_tab()
mchehab Aug 14, 2026
ff43c99
db/db-sqlite3.c fix db_sqlite3_bind logic
mchehab Aug 14, 2026
4aaca7d
tests/test-sqlite3.c fix the remaining issues
mchehab Aug 14, 2026
1c4cd7f
rasdaemon: address several warnings
mchehab Aug 15, 2026
deeb8fd
rasdaemon: switch from autotools to meson
mchehab Aug 15, 2026
d2fd602
rasdaemon: add support for mysql database backend
mchehab Aug 15, 2026
f9ddfc0
ras-db: better handle bind failures
mchehab Aug 16, 2026
4bb5c9d
meson.build: fix config.h generation to use #define/#undef
mchehab Aug 16, 2026
85cbab4
meson.build: address issues with install data
mchehab Aug 16, 2026
5d5446d
rasdaemon: fix RPM generation after switching to meson
mchehab Aug 16, 2026
2660151
Makefile.inc.in: update the upload target
mchehab Aug 16, 2026
8a116a2
meson.build: add an option to disable all optional features
mchehab Aug 16, 2026
535f48b
meson.build: simplify the file
mchehab Aug 17, 2026
ffa78db
meson.build: auto-detect the need to support non-standard CPER events
mchehab Aug 17, 2026
7f1f857
meson.build: fix logic when systemd package is not found
mchehab Aug 17, 2026
3ec5464
meson.build: fix meson minimal version
mchehab Aug 17, 2026
2fe6058
ras-db: drop a callback for db_bind()
mchehab Aug 17, 2026
0cd76a5
actions: update them to use meson
mchehab Aug 17, 2026
788e054
actions: update auto-remove-waiting-label.yml
mchehab Aug 17, 2026
17f768a
actions: add unit tests support
mchehab Aug 17, 2026
958fd8e
tests/main: make it compatible with older versions
mchehab Aug 17, 2026
72d14a4
actions: don't require newer versions of cmocka
mchehab Aug 17, 2026
3a8dc19
actions: add support for mysql unit tests
mchehab Aug 17, 2026
d9018b9
db/ras-db: some fixes and cleanups
mchehab Aug 17, 2026
d8bf53f
rasdaemon: clean more files with distclean
mchehab Aug 18, 2026
47b234c
actions: use yamlfmt to format YAML files the same way
mchehab Aug 18, 2026
229fdbd
rasdaemon: add support for PostgreSQL database backend
mchehab Aug 17, 2026
0379979
actions: expand unit test to also cover PostgreSQL backend
mchehab Aug 18, 2026
8e3e9e5
README.md: Add information about database backend and unit teststhe
mchehab Aug 18, 2026
25661ca
non-standard: add some missing ifdefs if no database
mchehab Aug 18, 2026
766459e
rasdaemon: use HAVE_DB instead of HAVE_SQLITE3
mchehab Aug 18, 2026
485b912
rasdaemon: auto-load rasdaemon configuration
mchehab Aug 18, 2026
811ef6a
misc/rasdaemon.env: add database connection parameters
mchehab Aug 18, 2026
93e76af
rasdaemon: add support for initializing backends
mchehab Aug 18, 2026
ae52d2f
rasdaemon: add an option to select the config file
mchehab Aug 18, 2026
645d1d4
db/ras-db.h: avoid adding a duplicated db_backend_enable()
mchehab Aug 18, 2026
21eb624
rasdaemon: cleanup some logs
mchehab Aug 18, 2026
64c3b77
ras-logger: use ansi colors on tty terminals
mchehab Aug 18, 2026
0866126
meson.build: fix Fedora builds with mock
mchehab Aug 18, 2026
e576e0f
db-mysql: extend the logic to support mariadb-connector
mchehab Aug 19, 2026
cf2d4df
actions: unittest: add an unit test for MariaDB
mchehab Aug 19, 2026
5b3177d
core/ras-env: fix comma trim handling
mchehab Aug 19, 2026
da96179
rasdaemon: fix --config handling
mchehab Aug 19, 2026
39a7344
db/db-mysql: escape field names
mchehab Aug 19, 2026
f64b133
db/db-postgresql: escape field names
mchehab Aug 19, 2026
2b3e556
non-standard-jaguarmicro: don't try to create table twice
mchehab Aug 19, 2026
06df72b
tests: better handle environment variables
mchehab Aug 20, 2026
d51357f
ras-db: add hostname to remote databases
mchehab Aug 20, 2026
36bf9b5
Makefile: fix the meson build line
mchehab Aug 20, 2026
1a5379e
core/ras-events: make it backward-compatible with Ubuntu 22.04
mchehab Aug 20, 2026
c188fae
rasdaemon: drop two now-unused Makefile.am
mchehab Aug 20, 2026
dfa2861
ras_mc_ctl: add an experimental Python version of ras_mc_ctl
mchehab Aug 20, 2026
5413367
util: add a logic to display memory layout
mchehab Aug 21, 2026
a2ae2e9
ras_dimm: several fixes to avoid regressions
mchehab Aug 21, 2026
7a79cb1
ras-dimm: add some extra tests
mchehab Aug 21, 2026
0dee376
tests: Improve Python unit tests output
mchehab Aug 21, 2026
599c1a9
db/db-mysql: limit hostname size
mchehab Aug 21, 2026
c33342a
db/ras-db: don't need to skip placeholder there
mchehab Aug 21, 2026
4e6c60c
events-arch-arm/non-standard-ampere: fix duplicated field name
mchehab Aug 21, 2026
816b57a
ras-mc-ctl: add support for database query commands
mchehab Aug 21, 2026
f96d6aa
Improve DB test coverage to better check DB support
mchehab Aug 21, 2026
f379195
ras-mc-ctl.py: allow using a different configuration file
mchehab Aug 21, 2026
535c686
Replace the venerable ras-mc-ctl Perl script
mchehab Aug 21, 2026
4f96051
db-sqlite3: allow setting database in runtime
mchehab Aug 21, 2026
68b22f3
ras_env.py: use normal initialization instead of dataclass
mchehab Aug 21, 2026
97d6338
contrib: add a script to help testing ras-mc-ctl
mchehab Aug 21, 2026
b4217a4
tests: add more realistic test cases for the database support
mchehab Aug 21, 2026
03fba5a
rasdaemon: documentation updates
mchehab Aug 21, 2026
0126367
ChangeLog: update it to follow the redesign
mchehab Aug 21, 2026
74a29a7
ras-db: apply several changes to avoid UAF and memory leaks
mchehab Aug 21, 2026
c632f4f
meson.build: fix python3 install directory
mchehab Aug 21, 2026
b9b4a9a
util/ras_db.py: avoid craches due to utf-8 encoding
mchehab Aug 21, 2026
4738255
misc/rasdaemon.spec.in: Install python library
mchehab Aug 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .github/workflows/auto-remove-waiting-label.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: Auto-remove "waiting new revision" label on PR update

on:
pull_request:
pull_request_target:
types: [synchronize]

permissions:
Expand All @@ -14,4 +14,5 @@ jobs:
- name: Remove label on PR update
uses: actions-ecosystem/action-remove-labels@v1
with:
labels: 'waiting new revision'
labels: waiting new revision
fail_on_error: true
8 changes: 4 additions & 4 deletions .github/workflows/checkpatch_ignore.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# .github/workflows/checkpatch_ignore.txt

# Ignore a CONSTANT_COMPARISON that only appears in ras-page-isolation.h
^ras-page-isolation\.h:.*CONSTANT_COMPARISON
# Ignore a CONSTANT_COMPARISON that only appears in modules/ras-page-isolation.h
^modules/ras-page-isolation\.h:.*CONSTANT_COMPARISON

# Ignore a MACRO_ARG_PRECEDENCE that only appears in types.h
^types\.h:.*MACRO_ARG_PRECEDENCE
# Ignore a MACRO_ARG_PRECEDENCE that only appears in core/types.h
^core/types\.h:.*MACRO_ARG_PRECEDENCE
100 changes: 52 additions & 48 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,42 +14,44 @@ jobs:
strategy:
matrix:
arch: [x64_64, aarch64, ppc64le]
config: [--disable-all, --enable-all]
config: [disable-all=false, disable-all=true]
steps:
- uses: actions/checkout@v2
- name: prepare
run: |
sudo apt-get update
sudo apt-get install -y build-essential libsqlite3-dev sqlite3 libtraceevent-dev libtraceevent1 libpci-dev
- name: build
run: |
autoreconf -vfi
./configure ${{ matrix.config }}
make
sudo make install
- uses: actions/checkout@v7

- name: prepare
run: |
sudo apt-get update
sudo apt-get install -y build-essential meson ninja-build pkg-config \
git cmake libsqlite3-dev sqlite3 \
libtraceevent-dev libtraceevent1 libpci-dev
- name: build
run: |
meson setup build --reconfigure -D${{ matrix.config }}
make
sudo make install

Fedora:
name: Fedora
runs-on: ubuntu-latest
strategy:
matrix:
arch: [x64_64]
container:
image: fedora:rawhide
options: --privileged
steps:
- uses: actions/checkout@v2
- name: prepare
run: |
dnf install -y mock rpm-build rpmdevtools \
autoconf automake make gcc libtraceevent-devel
ln -sf fedora-rawhide-x86_64.cfg /etc/mock/default.cfg
rpmdev-setuptree
- name: build
run: |
autoreconf -vfi
./configure
make mock
- name: prepare
run: |
dnf install -y git mock rpmdevtools meson gcc make \
libtraceevent-devel

ln -sf fedora-rawhide-x86_64.cfg /etc/mock/default.cfg
rpmdev-setuptree

- uses: actions/checkout@v7

- name: build
run: |
meson setup build -Ddisable-all=true
git config --global safe.directory "*"
make mock

openEuler:
name: OpenEuler LTS
Expand All @@ -61,30 +63,32 @@ jobs:
image: openeuler/openeuler:24.03-lts-sp3
options: --privileged
steps:
- uses: actions/checkout@v2
- name: prepare
run: |
dnf install -y sudo autoconf automake libtool gettext-devel hwdata \
make gcc libtraceevent-devel sqlite-devel sqlite \
pciutils pciutils-devel
- name: build
run: |
autoreconf -vfi
./configure --enable-all
make
make install
- name: prepare
run: |
dnf install -y sudo meson ninja-build gettext-devel hwdata \
make gcc libtraceevent-devel sqlite-devel sqlite \
pciutils pciutils-devel findutils

- uses: actions/checkout@v7

- name: build
run: |
meson setup build --reconfigure -Ddisable-all=false
make
make install

Check:
name: Source code check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: checkpatch
run: |
ignore_regex=$(grep -Ev '^\s*#' .github/workflows/checkpatch_ignore.txt | tr '\n' '|')
ignore_regex=${ignore_regex%|}
- uses: actions/checkout@v7

- name: checkpatch
run: |
ignore_regex=$(grep -Ev '^\s*#' .github/workflows/checkpatch_ignore.txt | tr '\n' '|')
ignore_regex=${ignore_regex%|}

output=$(./scripts/checkpatch.pl --terse --show-types --no-summary \
-f $(git ls-files | grep -E '\.[ch]$') | \
grep -Ev "$ignore_regex" || true); echo $output; \
if [ -z "$output" ]; then exit 0; fi; exit 1
output=$(./scripts/checkpatch.pl --terse --show-types --no-summary \
-f $(git ls-files | grep -E '\.[ch]$') | \
grep -Ev "$ignore_regex" || true); echo $output; \
if [ -z "$output" ]; then exit 0; fi; exit 1
69 changes: 34 additions & 35 deletions .github/workflows/on_tag.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ on:
push:
# Sequence of patterns matched against refs/tags
tags:
- 'v[0-9]+*'
- v[0-9]+*

jobs:
release:
Expand All @@ -16,37 +16,36 @@ jobs:
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
steps:
- uses: actions/checkout@v2
- name: Release changelog
run: |
.github/workflows/gen_release.pl body_file.tmp > version
echo "version=$(cat version)" >> $GITHUB_ENV
- name: Create Release
id: create_release
uses: actions/create-release@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
body_path: body_file.tmp
draft: false
prerelease: true
- name: prepare
run: |
sudo apt-get update
sudo apt-get install -y build-essential sqlite3 libtraceevent-dev libtraceevent1
- name: Create Source Package for version ${{ env.version }}
run: |
autoreconf -vfi
./configure --enable-all
make dist-bzip2
- name: upload
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
uses: mchehab/upload-release-asset@v1.0.3
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: rasdaemon-${{ env.version }}.tar.bz2
asset_name: rasdaemon-${{ env.version }}.tar.bz2
asset_content_type: application/bzip2
- uses: actions/checkout@v2
- name: Release changelog
run: |
.github/workflows/gen_release.pl body_file.tmp > version
echo "version=$(cat version)" >> $GITHUB_ENV
- name: Create Release
id: create_release
uses: actions/create-release@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
body_path: body_file.tmp
draft: false
prerelease: true
- name: prepare
run: |
sudo apt-get update
sudo apt-get install -y build-essential meson ninja-build sqlite3 libtraceevent-dev libtraceevent1
- name: Create Source Package for version ${{ env.version }}
run: |
meson setup build --reconfigure -Ddisable-all=false
make dist-bzip2
- name: upload
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
uses: mchehab/upload-release-asset@v1.0.3
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: rasdaemon-${{ env.version }}.tar.bz2
asset_name: rasdaemon-${{ env.version }}.tar.bz2
asset_content_type: application/bzip2
157 changes: 157 additions & 0 deletions .github/workflows/unittest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
# SPDX-License-Identifier: GPL-2.0

name: Tests

on:
workflow_dispatch:
push:
pull_request:

jobs:
Unittest:
name: Default Unit Tests
runs-on: ubuntu-latest
steps:
- name: Start MySQL
run: |
sudo systemctl start mysql.service
mysqladmin ping --host=127.0.0.1 --user=root --password=root

- name: Install PostgreSQL
run: |
sudo apt-get update
sudo apt-get install -y postgresql postgresql-client

sudo systemctl start postgresql

for attempt in {1..30}; do
if pg_isready --host=127.0.0.1 --port=5432; then
exit 0
fi
sleep 1
done

sudo systemctl status postgresql --no-pager

- name: Setup PostgreSQL trust
run: |
HBA_FILE="$(sudo -u postgres psql --tuples-only --no-align \
--command='SHOW hba_file')"
sudo sed -i '1i local all rasdaemon trust' "$HBA_FILE"

echo "Postgres config file $HBA_FILE:"
sudo cat "$HBA_FILE"
sudo systemctl restart postgresql

for attempt in {1..30}; do
if pg_isready --host=127.0.0.1 --port=5432; then
exit 0
fi
sleep 1
done

sudo systemctl status postgresql --no-pager
exit 1

- name: Create MySQL database
env:
MYSQL_PWD: root
run: |
mysql --host=127.0.0.1 --user=root << EOF
CREATE USER 'rasdaemon'@'%' IDENTIFIED BY 'mypass';
CREATE DATABASE rasdaemon_test;
GRANT ALL PRIVILEGES ON rasdaemon_test.* TO 'rasdaemon'@'%';
FLUSH PRIVILEGES;
EOF
- name: Create PostgreSQL database
run: |
sudo -u postgres psql --set ON_ERROR_STOP=1 << EOF
CREATE USER rasdaemon WITH PASSWORD 'mypass';
CREATE DATABASE rasdaemon_test OWNER rasdaemon;
EOF

PGPASSWORD='mypass' \
psql -h /var/run/postgresql -U rasdaemon \
-d rasdaemon_test --set ON_ERROR_STOP=1 << EOF2
CREATE SCHEMA rasdaemon AUTHORIZATION rasdaemon;
EOF2
- name: Install packages needed by Rasdaemon
run: |
sudo apt-get update
sudo apt-get install -y build-essential meson ninja-build pkg-config \
git cmake libsqlite3-dev sqlite3 \
python3-sqlalchemy python3-mysqldb \
python3-psycopg2 \
libcmocka-dev libmysqlclient-dev libpq-dev \
libtraceevent-dev libtraceevent1 libpci-dev
- uses: actions/checkout@v7
- name: Build rasdaemon
run: |
meson setup build
make
- name: Run unittest
env:
RAS_MYSQL_HOST: ''
RAS_MYSQL_PORT: '3306'
RAS_MYSQL_USER: rasdaemon
RAS_MYSQL_PASSWORD: mypass
RAS_MYSQL_DATABASE: rasdaemon_test
RAS_PG_HOST: ''
RAS_PG_PORT: 5432
RAS_PG_USER: rasdaemon
RAS_PG_PASSWORD: mypass
RAS_PG_SCHEMA: rasdaemon
RAS_PG_DATABASE: rasdaemon_test
run: |
build/unittest -o tap
- name: Run Python unittests
run: |
python3 tests/run.py

MariaDBUnittest:
name: MariaDB Unit Test
runs-on: ubuntu-latest
steps:
- name: Start MariaDB
run: |
sudo apt-get remove -y mysql-server mysql-client
sudo apt-get install -y mariadb-server mariadb-client
sudo systemctl start mariadb.service

sudo mysqladmin ping

- name: Create MariaDB database
env:
MYSQL_PWD: root
run: |
sudo mysql << EOF
CREATE USER 'rasdaemon'@'%' IDENTIFIED BY 'mypass';
CREATE DATABASE rasdaemon_test;
GRANT ALL PRIVILEGES ON rasdaemon_test.* TO 'rasdaemon'@'%';
FLUSH PRIVILEGES;
EOF
- name: Install packages needed by Rasdaemon
run: |
sudo apt-get update
sudo apt-get install -y build-essential meson ninja-build pkg-config \
git cmake libsqlite3-dev sqlite3 \
python3-sqlalchemy python3-mysqldb \
libcmocka-dev libmariadb-dev-compat \
libtraceevent-dev libtraceevent1 libpci-dev
- uses: actions/checkout@v7
- name: Build rasdaemon
run: |
meson setup build
make
- name: Run unittest
env:
RAS_MYSQL_HOST: ''
RAS_MYSQL_PORT: '3306'
RAS_MYSQL_USER: rasdaemon
RAS_MYSQL_PASSWORD: mypass
RAS_MYSQL_DATABASE: rasdaemon_test
run: |-
build/unittest -o tap -g mysql
- name: Run Python unittests
run: |-
python3 -m unittest -v tests.test_ras_db.MysqlRasDatabaseTest
Loading
Loading