mirror of
https://github.com/openobserve/openobserve.git
synced 2026-11-04 08:09:27 +00:00
The previous mechanism for generating hashes for dashboard models depended on hashing the JSON representation of the dashboard that was stored in the `meta` table. As part of the migration of dashboards out of the `meta` table and into a dedicated `dashboards` table, this ☝️ presented some problems: Specifically when we want to translate from the Dashboard ORM model to a `core::meta::dashboards::Dashboard` model, we need to generate the hash at the time of translation since `hash` is a field on `core::meta::dashboards::Dashboard`. We can't simply generate a hash from the JSON stored in the `dashboards.data` column because this JSON no longer contains fields for `title`, `owner`, `description`, and `role`. Those fields are now stored in DB columns, and changes to those columns in the DB columns would *not* result in changes to the hash on the JSON blob. Therefore, rather than hashing the JSON blob, this PR implements hash functions on the Rust types for the dashboards. Therefore changes to fields in those Rust structs will result in changes to the hash values, but changes to the way in which the data is stored in the DB will not affect the hash values. ⚠️ Note that this PR is changing the hash function on the dashboard models, so hashes generated for the same model before and after this deployment will not be the same. My understanding is that this shouldn't be an issue since hashes are just used as a way of checking on the UI if the dashboard model has been updated to avoid overwriting the changes of another user. I believe that this change to the dashboard function might just have the effect (around the time of deployment) where it would appear to the UI that the dashboard has been updated when, in fact, it has not. https://github.com/openobserve/o2-enterprise/actions/runs/11979723563 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Introduced a new type alias `OrdF64` for enhanced precision in floating-point operations. - Added the `Hash` trait to multiple dashboard-related structs and enums, enabling their use in hash-based collections. - **Bug Fixes** - Improved error handling and assertion clarity in API testing for folder and dashboard operations. - **Chores** - Standardized hashing mechanism for dashboard objects in database operations. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
pytest-openobserve
This is a repo to test openobserve API endpoints.
Introduction:
The tests are running using pytest against alpha1 for now.
Idea is to parametrize it for the other endpoints like production as well.
Getting Started
- We use
ryeto manage the python version and environment - https://github.com/mitsuhiko/rye - Once installed, simply run the following steps:
rye syncrye run pytest
TODOS:
- Parametrize tests to run against different environments
- Run the tests as cron-job every few hours or daily etc. for different environments
- Send slack-notification ( use github-actions ) in case something fails on
alpha1orproductionendpoints.