Shrinath Rao
9e3d950c7c
test: reports test stabilisation for env ( #9446 )
2025-12-03 10:02:24 +05:30
9b9e99b34c
test: Stabilize Dashboard Tests for Deployed Environment ( #9437 )
...
…d filtering
---------
Co-authored-by: Abhay Padamani <141122205+ktx-abhay@users.noreply.github.com >
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-12-02 19:26:18 +05:30
4ecc5509d5
test: Added Shard for Regression tests and logs spec file in it ( #9394 )
...
Co-authored-by: mmosarafO2 <mosraf@openobserve.ai >
Co-authored-by: Hengfei Yang <hengfei.yang@gmail.com >
Co-authored-by: Sai Nikhil <nikhil@openobserve.ai >
2025-12-01 14:38:03 +05:30
Subhra264
0d956ebdde
test: Add tests to directly validate db records ( #9356 )
...
pytest to directly access db, and validate test cases using db queries.
2025-11-28 17:20:10 +05:30
ktx-akshay
dd0206bad7
test: Dashboard tests stable deployed ( #9360 )
2025-11-28 15:11:57 +05:30
Shrinath Rao
d65232a2ed
test: Fixed failing pipeline import tests ( #9367 )
2025-11-28 12:24:15 +05:30
Neha P
8a158884c8
test: match_all_camelcase_tests ( #9345 )
...
- Verify full camel case token search: DbException should be found when
searching for complete camel case identifiers
- Verify atomic token search: UserAccountService should be searchable
and return matching results for full service class names
- Verify XML acronym tokenization: XMLHttpRequest should be properly
tokenized and discoverable through match_all queries
- Verify camel case with numbers: OAuth2TokenHandlershould handle mixed
alphanumeric camel case tokens correctly
- Verify multi-word service search:UserManagementService should support
complex multi-word camel case service names
2025-11-27 15:04:13 +05:30
dependabot[bot]
5543c130c5
chore(deps): bump node-forge from 1.3.1 to 1.3.2 in /tests/ui-testing ( #9347 )
2025-11-27 16:46:19 +08:00
ktx-akshay
e4e0bb6983
test: enhance stability of dashboard creation process in UI tests ( #9342 )
2025-11-27 13:27:48 +05:30
Neha P
b48a095125
test: multi-stream-testcases ( #9300 )
...
1. Verify search filter functionality with multiple streams selected
2. Should add a function and display it in streams with multiple streams
3. Should display combined results when both streams have data
4. Should create and delete saved view with multiple streams selected
2025-11-26 13:54:26 +05:30
44011fbebc
feat: add organization-level alert deduplication with semantic field groups ( #9209 )
...
## Summary
Implements org-level alert deduplication with semantic field groups for
intelligent alert suppression and batched notifications. This feature
prevents alert storms by deduplicating alerts based on configurable
fingerprints and grouping related alerts together.
### Core Capabilities
- **Semantic Field Groups**: Map field name variations (`hostname`,
`host`, `node`) to canonical dimensions for consistent deduplication
across different data sources
- **Organization-Level Configuration**: Global deduplication settings
with cross-alert support to suppress alerts from different rules sharing
semantic dimensions
- **Alert Grouping & Batching**: Wait-and-collect logic with three send
strategies (`FirstWithCount`, `Summary`, `All`) for batched
notifications
- **Per-Alert Control**: Individual alert deduplication settings with
optional fingerprint field customization
### Features
**Deduplication Modes:**
- Per-alert exact matching using fingerprint-based TTL expiration
- Cross-alert semantic matching using org-defined dimension groups
- Configurable time windows (per-alert override or org-level default)
**Alert Grouping:**
- Batch alerts with same fingerprint before sending notifications
- Three strategies: first alert with count, summary with names, or all
details
- Configurable wait time (1-300 seconds) and max batch size (1-100
alerts)
- Background processor runs every 1 second for expired batches
**Semantic Field Groups:**
- Built-in presets for common fields (host, IP address, service)
- Kubernetes resource groups (cluster, namespace, pod, node, container)
- Field normalization support (lowercase + trim)
- Overlap handling with first-defined precedence
### Configuration Types
- `SemanticFieldGroup`: Field name equivalence definitions with
normalization
- `GlobalDeduplicationConfig`: Org-level settings with semantic groups
and cross-alert dedup
- `DeduplicationConfig`: Per-alert fingerprint fields and grouping
options
### API Endpoints
- `GET /{org_id}/alerts/deduplication/config` - Retrieve org-level dedup
config
- `POST /{org_id}/alerts/deduplication/config` - Set org-level dedup
config
- `DELETE /{org_id}/alerts/deduplication/config` - Delete org-level
dedup config
### Implementation Details
- Pure business logic algorithms in enterprise layer (fingerprinting,
matching, calculations)
- OSS service layer orchestrates database operations with enterprise
delegation
- Feature-gated with `#[cfg(feature = "enterprise")]` for
enterprise-only functionality
- Background job architecture for async batch processing
- Storage: Org config in KV DB at `/alert_config/{org_id}/deduplication`
### Architecture
```
Alert Triggered
↓
Query Evaluation
↓
Deduplication Check (fingerprint + TTL)
↓
Grouping Enabled? → Add to Batch → Wait/Collect → Send Grouped
↓ No
Send Individual Notification
```
---------
Co-authored-by: Ashish Kolhe <ashish.j.kolhe@gmail.com >
Co-authored-by: Shrinath Rao <shnath@openobserve.ai >
2025-11-26 12:09:10 +05:30
priyabrata-stack
d7eda92632
test: sdr tests env run ( #9303 )
2025-11-26 09:27:04 +05:30
Shrinath Rao
f3afc8e296
test: reverted original bug report workflow and updates poc flow ( #9305 )
2025-11-26 08:46:49 +05:30
ktx-akshay
0d977a8a6a
test: stabilising-dashboards-tests-for-deployed-env ( #9177 )
2025-11-25 17:48:19 +05:30
priyabrata-stack and Shrinath Rao
d0afc8cb30
test: fix sdr pattern env run ( #9284 )
...
Co-authored-by: Shrinath Rao <shnath@openobserve.ai >
2025-11-25 16:22:54 +05:30
Shrinath Rao
3dad182054
test: pipeline import test fix ( #9292 )
2025-11-25 15:19:52 +05:30
Shrinath Rao
f74c90413b
test: stabilising logs core, reports, pipelines import tests for env ( #9246 )
2025-11-25 10:55:20 +05:30
Neha P
a39285c1f5
test: add testcases for timerange under logs ( #9280 )
...
testcases
1. Added comprehensive time range filtering validation test with proper
POM methods - validates backdated data ingestion and progressive
filtering (0→3→3 logs) while fixing 5-hour ingestion limit compliance
2025-11-25 07:57:36 +05:30
Neha P
536c95fdf3
test: multi-stream-histogram-test ( #9272 )
2025-11-24 15:47:46 +05:30
Shrinath Rao
264316516d
test: env runs stabilisation fix, sdr, reports ( #9242 )
2025-11-22 15:39:20 +05:30
Neha P
bdfd24525d
test: e2e-pagination-fix ( #9245 )
2025-11-22 08:30:59 +05:30
Neha P
7268eeb486
test: e2e-retention-delete ( #9240 )
2025-11-21 20:21:36 +05:30
Shrinath Rao
af686d2e6d
test: fixed Alerts failing test on e2e ( #9239 )
2025-11-21 19:50:11 +05:30
Shrinath Rao
7a37f760e9
test: stabilised logo management test and added cleanup for logo mana… ( #9234 )
...
…gement
2025-11-21 17:28:06 +05:30
Sai Nikhil
8e8db702ed
fix: change primary buttons text ( #9189 )
...
1. Now we will have Add module name we will change it to New module name
at module level and also in sidebars
2025-11-21 11:02:46 +05:30
priyabrata-stack
e8b0460370
test: regex_patterns_import ( #9195 )
2025-11-19 20:57:14 +05:30
Sai Nikhil
f98183787f
fix: mainlayout page refactoring ( #9176 )
...
1. we have created header component which will seperate out the header
part from mainlayout
2. introduced custom dark logo feature , it will fallback to light mode
logo if dark mode logo is not there
2025-11-19 15:48:35 +05:30
ktx-akshay and Shrinath Rao
2b5eafcb86
test(dashboard): improve stability of flaky tests ( #9139 )
...
…tests
---------
Co-authored-by: Shrinath Rao <shnath@openobserve.ai >
2025-11-19 14:51:45 +05:30
Neha P
9f2e8c87d5
test: index-type-testcases ( #9115 )
...
1. Verify stream detail access and index type options - Test stream
navigation and available configuration options
2. Verify validation error when selecting both index types - Test
business rule enforcement for conflicting field configurations
3. Verify index type clearing mechanism works - Test ability to clear
field index selections after validation errors
2025-11-14 19:00:35 +05:30
ktx-akshay
83ce0cf0d4
test: add test coverage for dashboard camelCase zero value issue ( #9119 )
...
…L queries
2025-11-14 16:57:37 +05:30
Neha P and Shrinath Rao
4901605a2c
test: e2e-cmd+enter tests ( #9098 )
...
1. Blank SQL Query Error - Verifies proper error message when cmd+enter
pressed with empty SQL query
2. Include/Exclude Terms Persistence - Ensures search terms remain
visible in log details after query execution
3. API Call Optimization - Validates cmd+enter makes exactly 1 search +
1 histogram call (no duplicates)
4. Editor Cursor Integrity - Confirms cmd+enter doesn't add unwanted
characters to Monaco editor
---------
Co-authored-by: Shrinath Rao <shnath@openobserve.ai >
2025-11-13 14:49:59 +05:30
Shrinath Rao
a4dd576df4
test: unskipped 2 pipeline-core tests ( #9085 )
2025-11-13 07:30:32 +05:30
ktx-akshay
f665228a1b
test: stabilize flaky dashboard test cases ( #9048 )
...
…ging
2025-11-12 22:21:53 +05:30
dd92d33ac0
test: fix sdr patterns locator ( #9076 )
...
Co-authored-by: Priyabrata Das <pryabrata@altimate.ai >
Co-authored-by: Shrinath Rao <shnath@openobserve.ai >
Co-authored-by: Neha P <neha@openobserve.ai >
2025-11-12 18:22:22 +05:30
Subhra264 and Shrinath Rao
683bf89c7b
test: Add tests for alerts and pipelines history ( #9064 )
...
Co-authored-by: Shrinath Rao <shnath@openobserve.ai >
2025-11-12 17:48:12 +05:30
Shrinath Rao and priyabrata-stack
8ea3c3240f
test: updated sharding logic for test dino reporting ( #9073 )
...
Co-authored-by: priyabrata-stack <pryabrata@openobserve.ai >
2025-11-12 16:04:10 +05:30
Sai Nikhil
39bcaad8f6
fix: import module refactored ( #8962 )
...
1. Here we have refactored import module
the structure will be
```
BaseImport will be main serving component for Import UI
import(module).vue will be used to serve core business logic and functionality
```
2025-11-12 09:29:04 +05:30
udev
a5b9facdc8
fix: migration issue ( #9067 )
...
fixes migration issue where older format pipeline would fail to load if
the pipeline contains a `condition` node.
2025-11-11 23:20:23 +05:30
Shrinath Rao
6b11b81d06
test: updated testDino workflow order ( #9059 )
2025-11-11 19:28:53 +05:30
udev
2854a33791
feat: pipeline or operator ( #8911 )
...
with this PR we add OR operator support in pipeline conditions along
with the ability to nest conditions, creating complex conditions
quickly. existing conditions will be treated as legacy conditions and
still be honoured in the new evaluation logic.
2025-11-11 17:39:11 +05:30
Shrinath Rao and Yashodhan Joshi
98e35c1632
test: added ent tags to all enterprise tests ( #9040 )
...
Co-authored-by: Yashodhan Joshi <yashodhan@openobserve.ai >
2025-11-11 15:14:33 +05:30
85a8fc1648
feat: license check ( #8522 )
...
### **User description**
This adds license check job
___
### **PR Type**
Enhancement, Bug fix
___
### **Description**
- Add enterprise license HTTP APIs and DB watch
- Enforce quota checks on search and ingestion
- Always enable usage reporting; simplify modes
- Expose license expiry in config and UI
___
### Diagram Walkthrough
```mermaid
flowchart LR
Backend["Backend: License APIs + quota checks"]
DB["DB: License watch + dist lock"]
Config["Config: usage/reporting & expiry"]
UI["UI: Settings License page + banner"]
Search["Search/PromQL: quota enforcement"]
Backend -- "watch updates" --> DB
Backend -- "expose expiry" --> Config
UI -- "GET/POST /api/license" --> Backend
Search -- "check_search_allowed" --> Backend
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>21
files</summary><table>
<tr>
<td><strong>config.rs</strong><dd><code>Validate usage mode and publish
interval bounds</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-9aeee4a74c0520daa40f9b81c7016f5b6b3254375b968dd7598e745630980d62 ">+16/-4</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Add license GET/POST endpoints with
validation</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-d569000673e415b222a20a6f4f50a93c278c189a7d6e43231d5ab8807e93021f ">+75/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Register license routes for
enterprise builds</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-a1cfd40da1ab6cd4db0181fd8664965034298047b3b7c3320c5385897a7c4aed ">+2/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Enforce search quota in PromQL
endpoints</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-0ad5729a1fbce00ff53076728c51822400c13af9918e1d8554f41be56d060fa0 ">+24/-1</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Add enterprise search quota checks
in endpoints</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-96630a0dbb6dd7b2b0248fa325c7c7041ce31340c32826675a4a70772e9d29f6 ">+51/-1</a>
</td>
</tr>
<tr>
<td><strong>search_stream.rs</strong><dd><code>Enforce quota in
streaming search endpoints</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-642de43ff6b19ae41087a9f1efc02d8b0b873809e0c92cbddfac1a30ef3f1184 ">+21/-1</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Expose license expiry; always
enable usage flag</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-ca09c9c9b020049bdbc3382c466bfcca80daac92e98760d9a9a76172abf34049 ">+8/-1</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Wire license endpoints into
router</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-02556e3f515441b5d2b6bbea7829df488beac03c4cc41309a6638ae3c0e0aec6 ">+3/-1</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Add license check locking and
startup watchers</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-f2e4c29b8eef22189ec704a832633c4bd135a24444f054864c98064bd0963681 ">+57/-0</a>
</td>
</tr>
<tr>
<td><strong>license.rs</strong><dd><code>Implement license update
broadcast and watch</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-43bb2d7d70d03657337dfabb078079de71fae8a7f58962a10ac68c03594e0f81 ">+70/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Export license DB module for
enterprise</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-b7e3bf7f0ac23dd084c0c817a310a4d5e7a64ff532746d182986ef940fa03fd0 ">+2/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Enforce ingestion quota for
enterprise</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-7c7b5bca85f0ced652965cae66540c96f56dfcca4f4c16b77bf7b45aac203d1b ">+10/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Provide search quota check
helper</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-c3b85ea662a885fbd39797968928b291cb59a58f53a03f7b7dfd7ba8b6a7985a ">+18/-0</a>
</td>
</tr>
<tr>
<td><strong>ingestion.rs</strong><dd><code>Simplify reporting mode;
always requeue on error</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-3edd5f4ed1eed0f765b7b450ef0fbf587632e6b22302006a5e397049e297057f ">+19/-50</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Always enable usage queue and
publishing</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-c6255010f7a87d6acdb3ad04954fc9f2c27350ae319c53a1857b120aa06408a3 ">+2/-25</a>
</td>
</tr>
<tr>
<td><strong>useManagementRoutes.ts</strong><dd><code>Add license
management route</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-b71a1d39b1fab0749f0668d5f16382536fbda6e2f0c92c56a972fb5d8b5835f5 ">+8/-0</a>
</td>
</tr>
<tr>
<td><strong>license_server.ts</strong><dd><code>Add client for license
APIs</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-3ac3fe8faca5f5a6aebd9d5e8885837f1511834eb7c78d0830af8f00c70523cb ">+16/-0</a>
</td>
</tr>
<tr>
<td><strong>License.vue</strong><dd><code>New license management UI with
usage</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-614c7b48f6f2ab1e8041d20c7583b6864285eacf9db032c27508b76f6de8467f ">+469/-0</a>
</td>
</tr>
<tr>
<td><strong>index.vue</strong><dd><code>Add License tab and routing
guards</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-699c63979f851c48ad440a078e93282fd797a18fc065e5331b2e41122ddb8b69 ">+27/-0</a>
</td>
</tr>
<tr>
<td><strong>LicensePeriod.vue</strong><dd><code>License expiry banner
component</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-14f02914aaa78ef3e82717173fa95455b7f1092faff2d0dbd51e243663850ad4 ">+111/-0</a>
</td>
</tr>
<tr>
<td><strong>HomeView.vue</strong><dd><code>Show license expiry banner
and navigate</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-9af441af191d3254ef5f9db603dca75486de7638cda41a3c050e7b3c33d68280 ">+9/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Bug
fix</strong></td><td><details><summary>1 files</summary><table>
<tr>
<td><strong>schema.rs</strong><dd><code>Remove usage_enabled dependency
in org creation</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-4696a44abde2df4ac48fed716f930bfdcc01759bdfcfd8d802821c6dd857bff9 ">+1/-3</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>en.json</strong><dd><code>Add i18n key for License tab
label</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824 ">+2/-1</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
---------
Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com >
Co-authored-by: Yashodhan Joshi <yjdoc2@gmail.com >
Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai >
2025-11-11 14:36:03 +05:30
Simha G and Subhradeep Chakraborty
24ac8ee0ff
fix: Add RBAC to the Alerts and Pipelines history endpoints and add tests ( #8930 )
...
# PR Type
Feature/Fix
# Description
The pipelines history and alerts history endpoints are now covered by
RBAC. Added basic e2e api test for the same endpoints.
---------
Co-authored-by: Subhradeep Chakraborty <chakrabortysubhradeep556@gmail.com >
2025-11-11 11:49:14 +05:30
Shrinath Rao
e26c810ffb
test: testdino retry failed tests flow optimisations ( #9015 )
2025-11-11 06:34:41 +05:30
Abhay Padamani and Kirtan Thakkar
098ee9d7d2
fix: dashboard panel re-position ( #9016 )
...
- #9020
---------
Co-authored-by: Kirtan Thakkar <kirtan@kiara.tech >
2025-11-10 18:54:30 +05:30
Shrinath Rao
2e89ae259a
test: skip invalid tests ( #9007 )
2025-11-07 22:17:49 +05:30
Shrinath Rao
44de3f8dca
test: fixed failing api tests ( #9004 )
2025-11-07 19:05:35 +05:30
Shrinath Rao
87ae8953b1
test: updated testdino approach to work from github variables ( #8987 )
2025-11-06 20:11:48 +05:30
Shrinath Rao
42dae4ba31
test: unskipped org tests ( #8972 )
2025-11-06 17:41:20 +05:30
ktx-akshay
48b8143769
fix: update dashboard failing testcases ( #8975 )
2025-11-06 19:43:42 +08:00