priyabrata-stack
2a03b2a57d
add pipeline null condition test
2025-12-04 18:43:20 +05:30
Shrinath Rao
ffc265ceba
test: added auto rerun step to e2e yml ( #9466 )
2025-12-04 13:14:43 +05:30
udev
aff58b33a4
fix: use chrono apis to validate time ( #9422 )
2025-12-04 13:52:54 +08:00
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
Shrinath Rao
a4dd576df4
test: unskipped 2 pipeline-core tests ( #9085 )
2025-11-13 07:30:32 +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
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
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
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
db7f947089
fix: UI design implementation ( #8841 )
...
Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai >
Co-authored-by: omkark06 <omkar@zinclabs.io >
Co-authored-by: ktx-vaidehi <vaidehi.akhani@kiara.tech >
Co-authored-by: ktx-abhay <abhay.padamani@kiara.tech >
Co-authored-by: ktx-akshay <akshay.patil@kiara.tech >
2025-11-01 21:22:27 +05:30
ktx-akshay
e8f93ca802
test: add test cases for various filter operators in dashboard ( #8918 )
2025-10-31 16:06:06 +05:30
ByteBaker
77ab0cff5c
fix: resolve flaky integration tests
...
- Ensure memtable isolation to prevent cross-test data contamination
- Fix dashboard API version compatibility (v5 -> version-agnostic dashboard_id)
- Fix indentation bug causing function/dashboard/stream deletions to run inside alert loop
- Add 3-second wait after dashboard deletion for propagation
2025-10-30 17:20:21 +05:30
ktx-akshay
766bd14db1
fix: update dashboard tests for schema version v6 ( #8909 )
2025-10-29 11:52:49 +05:30
ktx-akshay
3af7349795
test: add pytest cases for dashboard functionality ( #8885 )
2025-10-28 15:39:31 +05:30
Neha P and Subhradeep Chakraborty
56024fe950
fix: dynamic stream name should work if it starts with { and ends with } ( #8882 )
...
### **PR Type**
Tests, Enhancement
___
### **Description**
- Add comprehensive dynamic template tests
- Introduce reusable validation utilities
- Parameterize edge and nested cases
- Standardize waits and identifiers
___
### Diagram Walkthrough
```mermaid
flowchart LR
Consts["Add constants (waits, limits)"]
Utils["Add utils: time window, query builder, validator, enabler"]
DynamicTest["Enhance dynamic template test"]
ComplexTests["Add complex, special-char, edge, nested tests"]
Perf["Add performance and cleanup tests"]
Consts -- "used by" --> Utils
Utils -- "reused in" --> DynamicTest
Utils -- "reused in" --> ComplexTests
Utils -- "reused in" --> Perf
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>test_pipeline_dynamic.py</strong><dd><code>Expand
pipeline dynamic template tests and utilities</code>
</dd></summary>
<hr>
tests/api-testing/tests/test_pipeline_dynamic.py
<ul><li>Add constants and safety helpers.<br> <li> Add reusable
validation and enable helpers.<br> <li> Expand tests: complex, special
chars, edge, nested.<br> <li> Add performance and cleanup tests.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8882/files#diff-0bbefbbf7a34e3414a0aadd1963ffe6a2af8b5df4d619076207e361b2a42bcb1 ">+774/-49</a></td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: Subhradeep Chakraborty <chakrabortysubhradeep556@gmail.com >
2025-10-27 18:27:49 +05:30
0a6d9a86b6
fix: pipelines should be able to create streams with dynamic names ( #8874 )
...
### **PR Type**
Tests
___
### **Description**
- Add pytest for dynamic namespace routing
- Create and enable pipelines via API
- Ingest logs post-creation and verify routing
- Optional cleanup to delete created pipelines
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Parametrized test inputs"] -- "build payload" --> B["Create pipeline via API"]
B -- "enable pipeline" --> C["Ingest logs to source"]
C -- "wait and verify" --> D["Search destination stream count"]
C -- "verify source matches" --> E["Search source for condition"]
D -- "report counts" --> F["Keep pipeline for monitoring"]
G["Cleanup test"] -- "find by name" --> H["Delete pipeline via API"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>test_pipeline_dynamic.py</strong><dd><code>Add tests
for pipeline dynamic namespace routing</code>
</dd></summary>
<hr>
tests/api-testing/tests/test_pipeline_dynamic.py
<ul><li>Add parametrized test creating dynamic routing pipelines<br>
<li> Enable pipeline, ingest logs, verify counts via SQL search<br> <li>
Include optional cleanup test to delete created pipelines<br> <li> Use
unique node IDs and names; wait for processing</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8874/files#diff-0bbefbbf7a34e3414a0aadd1963ffe6a2af8b5df4d619076207e361b2a42bcb1 ">+243/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: Subhradeep Chakraborty <chakrabortysubhradeep556@gmail.com >
Co-authored-by: Hengfei Yang <hengfei.yang@gmail.com >
2025-10-23 18:25:40 +05:30
Neha P
c5ea42ec2a
test: UTF8 queries pytests ( #8818 )
...
### **PR Type**
Tests
___
### **Description**
- Add regression tests for substr subqueries
- Validate env flags causing Utf8View panic
- Add alternative query pattern coverage
- Verify data content and string functions
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Env flags set via monkeypatch"] -- "enable JOIN_MATCH_ONE, UTF8_VIEW" --> B["Execute queries against stream_pytest_data"]
B -- "substr + IN subquery" --> C["Assert 200, validate hits"]
B -- "alternative IN/JOIN/CONCAT/length" --> D["Cross-validate no Utf8View error"]
B -- "data verification" --> E["Inspect container names/prefixes"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>test_subquery_join_match.py</strong><dd><code>Add
regression and coverage tests for substr subqueries</code>
</dd></summary>
<hr>
tests/api-testing/tests/test_subquery_join_match.py
<ul><li>Add end-to-end regression tests reproducing Utf8View panic<br>
<li> Set env vars via monkeypatch for failing conditions<br> <li> Cover
substr IN, JOIN, CONCAT, and length() variants<br> <li> Add data
verification and structural assertions on hits</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8818/files#diff-facac795b55980509f22b59fec9090910a8eb2c8d442936114c4b11f11008152 ">+564/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-10-15 18:17:55 +05:30
ByteBaker
934aaadbfc
fix: flaky integration tests
2025-10-03 20:09:49 +05:30
ktx-akshay
b88b7573b0
test: add pytest for dashboard ( #8698 )
...
### **PR Type**
Tests
___
### **Description**
- Add end-to-end dashboard API tests
- Cover CRUD flows and edge cases
- Validate SSE search stream responses
- Include auth, pagination, and folders
___
### Diagram Walkthrough
```mermaid
flowchart LR
list["List dashboards"] -- "200 with/without auth" --> validateList["Validate structure"]
create["Create dashboard"] -- "returns v1.dashboardId" --> read["Get by ID"]
read -- "assert fields" --> delete["Delete dashboard"]
updateNE["Update nonexistent"] -- "expect 400/404" --> done1["Handled"]
missingReq["Missing required fields"] -- "expect 400/422" --> done2["Handled"]
dupTitle["Duplicate title create"] -- "allowed" --> cleanup["Cleanup created dashboards"]
pagination["List with limit"] -- "verify dashboards key" --> cleanup2["Cleanup"]
sse["Search stream (SSE)"] -- "parse events/data" --> validateSSE["Validate results/hits"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>test_dashboards.py</strong><dd><code>End-to-end pytest
for dashboard APIs</code>
</dd></summary>
<hr>
tests/api-testing/tests/test_dashboards.py
<ul><li>Add pytest suite for dashboard APIs<br> <li> Test list, create,
get, delete flows<br> <li> Validate SSE search stream parsing<br> <li>
Cover pagination, auth, errors, duplicate titles</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8698/files#diff-936c6e8532b2f4ad8ebd0d5d2bd43638e278ce0880498ccf0c446f9e01a20901 ">+404/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-10-01 15:04:40 +05:30
Hengfei Yang
ad79d30c41
fix: optimize cache metadata ( #8671 )
2025-09-28 23:08:39 +08:00
Neha P
891d3f5d1a
test: pytest tests sql ( #8637 )
...
### **PR Type**
Tests
___
### **Description**
- Add time-series window functions test
- Add advanced regex aggregation test
- Add complex nested aggregation test
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Add E2E test: array case-sensitive"] -- "validates substring match in arrays" --> T["tests/test_advanced_sql.py"]
B["Add E2E test: window functions"] -- "histogram + LAG growth" --> T
C["Add E2E test: regex + metrics"] -- "regexp_match, health status" --> T
D["Add E2E test: complex CTEs"] -- "env metrics, ranks" --> T
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>test_advanced_sql.py</strong><dd><code>Add multiple
advanced E2E SQL tests</code>
</dd></summary>
<hr>
tests/api-testing/tests/test_advanced_sql.py
<ul><li>Add case-sensitive array extraction E2E test.<br> <li> Add
time-series window functions E2E test.<br> <li> Add advanced regex with
JSON-path metrics test.<br> <li> Add complex nested aggregation with
CTEs and ranking test.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8637/files#diff-190cc55e8b961580682e09403c997fda2e8288e5f210dec5ab41c9465c68538f ">+451/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-09-25 21:54:14 +05:30
Neha P and Shrinath Rao
3565d4a516
test: added advanced sql queries ( #8573 )
...
### **PR Type**
Tests
___
### **Description**
SQL Query Test Coverage
- COUNT, SUM, AVG, MIN, MAX
- approx_percentile_cont (P50, P75, P95, P99)
- histogram (time bucketing)
- str_match, str_match_ignore_case, COALESCE
- regexp_match, array_extract (regex groups)
- CASE WHEN (pattern matching)
- HAVING, LIKE, field comparisons
- GROUP BY (multi-field, time buckets)
- Kubernetes fields (kubernetes_container_name, etc.)
- Add advanced SQL E2E tests
- Validate fields and value constraints
- Cover percentiles and aggregations
- Exercise grouping, regex, and filters
___
### Diagram Walkthrough
```mermaid
flowchart LR
tests["New E2E SQL tests"] --> errorRate["Error rate analysis"]
tests --> percentiles["Time-bucket percentiles"]
tests --> volume["Log volume by bucket"]
tests --> source["Source grouping"]
tests --> hostPerf["Host performance stats"]
tests --> compPct["Component percentiles"]
tests --> apiLogs["API log analysis"]
tests --> metadata["Regex-based metadata extraction"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>test_advanced_sql.py</strong><dd><code>Add
comprehensive E2E advanced SQL query tests</code>
</dd></summary>
<hr>
tests/api-testing/tests/test_advanced_sql.py
<ul><li>Add eight E2E tests posting SQL queries<br> <li> Assert HTTP 200
and presence of expected fields<br> <li> Validate rates, percentile
ordering, and counts<br> <li> Use time windows, grouping, regex
extraction</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8573/files#diff-190cc55e8b961580682e09403c997fda2e8288e5f210dec5ab41c9465c68538f ">+514/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: Shrinath Rao <shnath@openobserve.ai >
2025-09-22 19:58:45 +05:30
Neha P and Shrinath Rao
000009f86d
test: str_match_coalesce_fix ( #8403 )
...
### **PR Type**
Tests
___
### **Description**
- Add e2e test for str_match_ignore_case with coalesce
- Validate all hits contain expected match
- Ensure 200 response and correct schema
- Log query performance and totals
___
### Diagram Walkthrough
```mermaid
flowchart LR
T["New e2e test: str_match_ignore_case + coalesce"] -- "executes query" --> API["/api/{org}/_search?type=logs"]
API -- "returns hits" --> V["Validate coalesce and case-insensitive match"]
V -- "assertions + logs" --> R["Report results and timing"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>test_search.py</strong><dd><code>Add coalesce-aware
case-insensitive match test</code>
</dd></summary>
<hr>
tests/api-testing/tests/test_search.py
<ul><li>Add end-to-end test for str_match_ignore_case with coalesce<br>
<li> Post SQL search over recent timeframe<br> <li> Assert 200, hits
presence, and per-hit validation<br> <li> Print diagnostics and timing
information</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8403/files#diff-f3776a5bc02e67c163ed707f86b2192f47b73c641dde04b83523b95a74518141 ">+76/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
Co-authored-by: Shrinath Rao <shnath@openobserve.ai >
2025-09-12 18:40:35 +05:30
Neha P
ed11cd1af3
test: add pytest for queries and assert hits ( #8241 )
...
### **PR Type**
Tests
___
### **Description**
- Add end-to-end SQL query validation tests
- Verify WHERE, match_all, ORDER BY semantics
- Enforce LIMIT and result consistency checks
- Validate CTE filtering and fields presence
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["New E2E tests"] -- "WHERE filter" --> B["Validate field equality"]
A -- "match_all" --> C["Check term presence"]
A -- "ORDER BY" --> D["Assert timestamp DESC"]
A -- "LIMIT" --> E["Enforce max hits"]
A -- "CTE" --> F["Validate filtered fields"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>test_search.py</strong><dd><code>Add comprehensive E2E
SQL query tests</code>
</dd></summary>
<hr>
tests/api-testing/tests/test_search.py
<ul><li>Add test for WHERE condition equality<br> <li> Add test for
match_all term presence<br> <li> Add test for ORDER BY timestamp
DESC<br> <li> Add tests for LIMIT and CTE behavior</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8241/files#diff-f3776a5bc02e67c163ed707f86b2192f47b73c641dde04b83523b95a74518141 ">+252/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-09-01 22:30:56 +05:30
Ashish Kolhe
65f5ab44e3
fix: failing streaming tests ( #8037 )
...
### **PR Type**
Tests, Bug fix
___
### **Description**
Fix streaming tests' total aggregation logic
Track latest total instead of summing
Update debug logs to reflect final total
Adjust combined metadata to use final total
___
### Diagram Walkthrough
```mermaid
flowchart LR
Parse["Parse streaming metadata"] -- "extract results.total" --> Track["Track latest total"]
Track -- "set final_total" --> Combine["Combine first metadata with final_total"]
Hits["Collect hits events"] -- "aggregate all hits" --> Combine
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>test_streaming.py</strong><dd><code>Use latest total
for streaming metadata</code>
</dd></summary>
<hr>
tests/api-testing/tests/test_streaming.py
<ul><li>Replace summed <code>total_sum</code> with
<code>final_total</code><br> <li> Update debug prints to reference final
total<br> <li> Set combined metadata <code>results.total</code> to
latest total<br> <li> Clarify comments for streaming semantics</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8037/files#diff-f15e9b733130f72112380fda658264545435fbf956b08869b0ad5a9435d222f7 ">+8/-8</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-08-18 22:41:45 +05:30
Neha P and Shrinath Rao
8a43a378f6
test: fix api stream tests ( #7923 )
...
### **PR Type**
Tests
___
### **Description**
Re-enable streaming SQL E2E tests
Add values streaming endpoint tests
Cover cache and non-cache paths
Validate response schema and totals
___
### Diagram Walkthrough
```mermaid
flowchart LR
SQLTests["SQL streaming tests"] -- "parametrized inputs" --> StreamNoCache["POST _search_stream use_cache=false"]
SQLTests -- "cache verification" --> StreamCache["POST _search_stream use_cache=true"]
ValuesTests["Values streaming tests"] -- "no cache" --> ValuesNoCache["POST _values_stream use_cache=false"]
ValuesTests -- "with cache" --> ValuesCache["POST _values_stream use_cache=true"]
StreamNoCache --> AssertSQL["Assert 200, totals match"]
StreamCache --> AssertSQLCache["Assert 200, totals match"]
ValuesNoCache --> AssertValues["Assert 200, structure, limits"]
ValuesCache --> AssertValuesCache["Assert 200, structure, limits"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>test_streaming.py</strong><dd><code>Re-enable SQL and
add values streaming tests</code>
</dd></summary>
<hr>
tests/api-testing/tests/test_streaming.py
<ul><li>Uncomment and restore <code>test_streaming_sql</code> with
parametrization<br> <li> Add <code>test_values_streaming_endpoint</code>
for non-cache path<br> <li> Add
<code>test_values_streaming_endpoint_cache</code> for cache path<br>
<li> Validate status, totals, and response schema</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7923/files#diff-f15e9b733130f72112380fda658264545435fbf956b08869b0ad5a9435d222f7 ">+176/-176</a></td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
Co-authored-by: Shrinath Rao <shnath@openobserve.ai >
2025-08-14 06:38:22 +05:30
Loakesh Indiran and sai nikhil kethe
e46f6d5b82
feat: custom histogram interval & aligned partitions ( #7909 )
...
- `is_ui_histogram` query param for search api, the backend will convert
the sql to histogram query and respond accordingly
- `search_type` for search partition query, and if search type is `ui`
only then we generate partitions with mini partition that is aligned
with histogram interval
### **PR Type**
Enhancement, Bug fix, Tests, Documentation
___
### **Description**
- Add UI histogram query conversion and flag
- Align partitions to histogram with mini
- Stream empty metadata+hints consistently
- Expose histogram eligibility and interval
___
### Diagram Walkthrough
```mermaid
flowchart LR
FE["Web UI logs & services"] -- "is_ui_histogram, searchType" --> HTTP["HTTP search endpoints"]
HTTP -- "convert to histogram SQL\n(resolve streams, eligibility)" --> SQL["Histogram SQL converter"]
HTTP -- "pass search_type, flags" --> SVC["Search service"]
SVC -- "is_eligible, gen interval" --> PART["PartitionGenerator"]
PART -- "aligned partitions\n(+mini optional)" --> STREAM["Streaming execution"]
STREAM -- "SearchResponse + metadata\n(empty hits emitted)" --> FE
SVC -- "Response: histogram_interval, is_histogram_eligible, converted_query" --> FE
```
<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>16
files</summary><table>
<tr>
<td><strong>partition.rs</strong><dd><code>Histogram-aligned partitions
with optional mini support</code> </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-348fa23375d0cea3e5fb039cc6b381d79aa1d5121e6b9792acc048d3fd02e37c ">+798/-269</a></td>
</tr>
<tr>
<td><strong>execution.rs</strong><dd><code>Always emit responses;
accumulate and metadata tweaks</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-75d432351865224f0b00d7cc819554c2ad5fa1f777e9c645d91a3fd5c1113bc0 ">+148/-152</a></td>
</tr>
<tr>
<td><strong>search_stream.rs</strong><dd><code>HTTP2 stream: UI
histogram conversion and interval handling</code></dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-642de43ff6b19ae41087a9f1efc02d8b0b873809e0c92cbddfac1a30ef3f1184 ">+149/-69</a></td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Partition API: histogram
eligibility, interval, UI paths</code> </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-c3b85ea662a885fbd39797968928b291cb59a58f53a03f7b7dfd7ba8b6a7985a ">+71/-5</a>
</td>
</tr>
<tr>
<td><strong>histogram.rs</strong><dd><code>Convert original SQL to
histogram-safe query</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-a5fc4cd11b3ec569b4cedf278ef0b14f540504abfbb23e29eb896d5b2a6cc2b2 ">+140/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>HTTP search: UI histogram
conversion and response enrichment</code></dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-96630a0dbb6dd7b2b0248fa325c7c7041ce31340c32826675a4a70772e9d29f6 ">+38/-3</a>
</td>
</tr>
<tr>
<td><strong>search.rs</strong><dd><code>Response/request fields for
histogram meta and streaming chunks</code></dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-373e83a31e5bbc82fba05d7ae274b0dbd624ed748272232cf7eb8b8c3b2f3afc ">+45/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>New error:
SearchHistogramNotAvailable</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-90c725d0e77a6e7d4bcc130cf5783848a5cf0efdb304b351cd63cacf8775fc36 ">+7/-0</a>
</td>
</tr>
<tr>
<td><strong>multi_streams.rs</strong><dd><code>Multi-stream partition
search accepts search_type</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-c3233cdf1e68cb2455f91457719b9c2f477e735ee16546fdfe111e76768bd054 ">+16/-4</a>
</td>
</tr>
<tr>
<td><strong>sql.rs</strong><dd><code>Detect histogram-eligible queries
and subqueries</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-a0a09c66a20d878ec7683ae222c919fbe092b8001871ade7f455b89573ce0911 ">+27/-0</a>
</td>
</tr>
<tr>
<td><strong>http.rs</strong><dd><code>Add query flag parser for
is_ui_histogram</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-3b50a69c1ec2f63f8eebb5f9880e17826463a586768aed3e3e15242833609d6b ">+8/-0</a>
</td>
</tr>
<tr>
<td><strong>Index.vue</strong><dd><code>UI: histogram streaming flow,
timeouts cleanup</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62 ">+45/-12</a>
</td>
</tr>
<tr>
<td><strong>IndexList.vue</strong><dd><code>Pass searchType=ui to
partition API</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-08f058f883b659e713e606991a7ea37ae1ff016b7cccef970489ab5840dc3d09 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>search.ts</strong><dd><code>API: support is_ui_histogram,
searchType plumbed</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-885ab872dbc6e7b20264df815e3ef4727f0abc86ce90d2fb47e4aff572814c75 ">+7/-2</a>
</td>
</tr>
<tr>
<td><strong>useStreamingSearch.ts</strong><dd><code>Include
is_ui_histogram in streaming URL</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-8fce3e25a161cd458e734bd9b1f98aadefe3482da7b6529a5b1f4fa20ec115e2 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>usePanelDataLoader.ts</strong><dd><code>Dashboard partition
calls pass searchType</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-5a42e9493a7bcd722b88e61fd38883c4f61001bc9cafa399f65f8eafda3aace9 ">+2/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>3
files</summary><table>
<tr>
<td><strong>cacher.rs</strong><dd><code>Adjust tests for new response
fields</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-8c387b22b2c0a282600ee41ca702b3db60f5a284d507c0feb7418608ff062c6c ">+6/-0</a>
</td>
</tr>
<tr>
<td><strong>SearchResult.spec.ts</strong><dd><code>Skip flaky
resetPlotChart unit test</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-8ff7d14fc3cdac80eeec5550ecd89a77f015b4ebe928da9d4a76a9585d64d788 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>useLogs.spec.ts</strong><dd><code>Skip failing query
partitions test</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-842307ae8db03aa51891ddde98cfdbbabc712db1e1614c9eee99a59add395f70 ">+1/-1</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Error
handling</strong></td><td><details><summary>1 files</summary><table>
<tr>
<td><strong>error_utils.rs</strong><dd><code>Map histogram
unavailability to 400 with code</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-d4de63bc9275a19c868f6967de0f7835bd2d7bda74ff55ce97b8fb3f9af54da9 ">+3/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Miscellaneous</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>mod.rs</strong><dd><code>Export histogram SQL
module</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-dc0ab53d0ff551cf3cd12027c73d0da5e66680c0bf2d1830778639a33bac3464 ">+1/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Bug
fix</strong></td><td><details><summary>2 files</summary><table>
<tr>
<td><strong>SearchResult.vue</strong><dd><code>UI: robust
empty-histogram handling and reset watcher</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-5e65533aa4754bb6d0074fda18ffc1ecacded3b9ca6bc28a161c3f6b12f20195 ">+17/-15</a>
</td>
</tr>
<tr>
<td><strong>SearchBar.vue</strong><dd><code>Cancel running query before
applying saved view</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-81893de4edf186b0556f610acb280c87baa2ffe67d3b48a60a866094c7635baf ">+2/-1</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>query.ts</strong><dd><code>Types: histogram interval and
eligibility fields</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-12dd5b3bb9741bbeaa348c0efbbd745d0a582899678738159c6927d34a35191d ">+2/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Additional
files</strong></td><td><details><summary>2 files</summary><table>
<tr>
<td><strong>fga.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-e7c99f37f3abbb5e0507d2760bbf67df010d9218704b38dce84c5477acecd22e ">+0/-2</a>
</td>
</tr>
<tr>
<td><strong>useLogs.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7909/files#diff-1040f61354f92711e0e77ed4e9bfa15586d45a94c7e2ab06cc37372068030e7b ">+154/-168</a></td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai >
2025-08-11 13:36:03 +05:30
Loakesh Indiran and Bhargav
1bd1caa10a
fix: limit, hist_alignment by factors of 24 hrs, order_by ( #7895 )
...
### **User description**
Fixes:
- `total` count when limit is reached for limit queries in http2
streaming
- Search response to return an array of `order_by`
```
eg: [["x_axis", "asc"], ["y_axis", "asc"]]
```
- Check and validate the histogram interval provided either as a query
payload or the histogram query, to generate partitions in aligned 24 hr
manner to avoid duplicate.
___
### **PR Type**
Enhancement, Bug fix, Tests
___
### **Description**
- Add `order_by_metadata` to search responses
- Validate histogram intervals as 24h factors
- Fix total count after results truncation
- Implement frontend sorting with metadata
___
### Diagram Walkthrough
```mermaid
flowchart LR
SQL["SQL generation"] -- "validate hist interval" --> R["Response (order_by metadata)"]
R -- "merge response" --> C["Cache module"]
R -- "set result" --> H["HTTP handler"]
H -- "streaming data" --> S["Streaming exec"]
S -- "apply sort metadata" --> U["Frontend UI"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody></tr></tbody></table>
</details>
___
---------
Co-authored-by: Bhargav <BJP232004@GMAIL.COM >
2025-08-08 17:50:20 +05:30
udev and Ashish Kolhe
1290512fe3
fix: SYNC optimize remote wal [phase 2] ( #7664 ) ( #7786 )
...
### **User description**
Add separate envs for pipeline wal
Improve metrics
___
### **PR Type**
Enhancement
___
### **Description**
- Add batch buffering for pipeline WAL writes
- Schedule periodic buffer flush in enterprise mode
- Introduce env configs and metric labels
- Instrument WAL reader with timing logs
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["process_node"]
B["group by batch_key"]
C["BATCH_BUFFERS"]
D["get_pipeline_wal_writer"]
E["remote WAL"]
F["accumulate"]
G["pipeline flush task"]
A -- "records" --> B
B -- "add to buffer" --> C
C -- "should_flush? yes" --> D
D -- "write_wal" --> E
C -- "should_flush? no" --> F
G -- "flush_all_buffers" --> C
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody></tr></tbody></table>
</details>
___
---------
Co-authored-by: Ashish Kolhe <ashish.j.kolhe@gmail.com >
2025-08-06 16:47:02 +05:30
Hengfei Yang
b7e1a9d702
perf: pushdown plan ( #7778 )
2025-07-31 14:31:33 +08:00
Huaijin
b41bb71779
feat: upgrade datafusion to v49 ( #7649 )
2025-07-30 10:57:25 +08:00
Anand Kumar Dubey
ad345086d4
fix: validate password length when creating & updating users ( #6782 )
2025-07-20 11:11:01 +08:00
Ashish Kolhe and Shrinath Rao
91bc704dc0
fix: RBAC default role ( #7560 )
...
### **PR Type**
Bug fix
___
### **Description**
- Include role in user-org tuple creation
- Pass `org.role` to `get_user_org_tuple`
- Add default role in custom role mapping
___
### **Changes diagram**
```mermaid
flowchart LR
PT["process_token"] -- "pass role" --> GUT["get_user_org_tuple"]
MG["map_group_to_custom_role"] -- "pass default role" --> GUT
```
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>jwt.rs</strong><dd><code>Add role parameter to tuple
function</code>
</dd></summary>
<hr>
src/handler/http/auth/jwt.rs
<li>Added role parameter to <code>get_user_org_tuple</code><br> <li>
Passed <code>org.role</code> in <code>process_token</code><br> <li>
Included default role in custom role mapping
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7560/files#diff-232cab74f4cbf135af424744272e17732fbda8ac005d33c0acb4597e65479d02 ">+15/-3</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
---------
Co-authored-by: Shrinath Rao <shnath@openobserve.ai >
2025-07-15 15:23:59 +05:30
Hengfei Yang
5b2148b043
fix: remove sql_mode support for FE ( #7516 )
2025-07-10 11:41:25 +08:00
c2c7ea6a95
test: match_all queries pytest ( #7208 )
...
### **User description**
match_all queries pytest
___
### **PR Type**
Tests
___
### **Description**
- Add tests for match_all streaming queries
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>test_streaming.py</strong><dd><code>Add match_all
streaming test cases</code>
</dd></summary>
<hr>
tests/api-testing/tests/test_streaming.py
<li>Added "match_all query one" test case<br> <li> Added "match_all
query two" test case<br> <li> Added "match_all query three" test case
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7208/files#diff-f15e9b733130f72112380fda658264545435fbf956b08869b0ad5a9435d222f7 ">+21/-3</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
---------
Co-authored-by: Taiming Liu <liutaiming3@gmail.com >
Co-authored-by: Shrinath Rao <shnath@openobserve.ai >
2025-06-19 11:57:32 +05:30
Loakesh Indiran and Hengfei Yang
600c0d3b7e
feat: aggregation cache ( #6923 )
...
Cache Intermediate record batches for aggregate sql queries
## TODO
- [ ] Add in memory cache file index
- [ ] Modify exiting delete stream results api to also delete
`aggregations` cache
- [ ] use bounded Chanel for `CACHE_QUEUE` and and an env for queue size
---------
Co-authored-by: Hengfei Yang <hengfei.yang@gmail.com >
2025-06-17 21:08:48 +05:30
Shyam Panjiyar
111298017c
test: pagination pytest ( #7126 )
...
### **PR Type**
Tests, Enhancement
___
### **Description**
- Comment out SQL mode calls in streaming tests
- Disable Chromium browser tests in config
- Add WebKit (Safari) project configuration
- Adjust viewport settings for Safari tests
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>streaming.spec.js</strong><dd><code>Disable SQL mode in
streaming tests</code>
</dd></summary>
<hr>
tests/ui-testing/playwright-tests/streaming.spec.js
<li>Commented out <code>await logsPage.enableSQLMode()</code> calls<br>
<li> Removed SQL mode requirement from streaming tests
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7126/files#diff-7ee1f433f2c0f92476e64e6777e719a3cbfd2c60c7e1b4fb77891445e3cd7b91 ">+13/-13</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>playwright.config.js</strong><dd><code>Add Safari
(WebKit) project to Playwright config</code>
</dd></summary>
<hr>
tests/ui-testing/playwright.config.js
<li>Commented out Chromium project configuration<br> <li> Added WebKit
(Safari) project settings<br> <li> Set viewport for Desktop Safari
device
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7126/files#diff-91cb9615068914b2e4f5d66fcbed50d3e9771ea2d882f8e8048bbe54eab3c414 ">+13/-6</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-06-13 17:20:03 +05:30
Shyam Panjiyar
138e7e296d
test: re_match, partition search and values API pytest ( #7051 )
...
re_match, partition search and values API pytest
2025-06-06 21:45:42 +05:30
Shyam Panjiyar and Hengfei Yang
dc99038a32
test: Updated change organisation validation playwright ( #6912 )
...
Updated Page change organisation validation
---------
Co-authored-by: Hengfei Yang <hengfei.yang@gmail.com >
2025-05-30 16:59:23 +05:30
Shyam Panjiyar
3fbe1e17dc
test: Resolved issues after Integrating organization pytest ( #6942 )
...
Resolved issues after Integrating organization pytest
2025-05-28 12:13:21 +05:30
Yashodhan Joshi and Yashodhan Joshi
7540824633
fix: use _all_ in org related api call perm checks ( #6920 )
...
Fixes permission check for organization related api. In ofga when we set
a role with org perms, it sets to `org:_all_{org}` but in the check , we
check for permission on `org:{org}` which causes users with role having
permission on org, not be able to rename org. This fixes it by updating
it to correct check.
---------
Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com >
Co-authored-by: Yashodhan Joshi <yjdoc2@gmail.com >
2025-05-28 11:02:01 +05:30
Shyam Panjiyar and Subhradeep Chakraborty
289d6234e5
test: new org created pytest ( #6926 )
...
New organizations created
---------
Co-authored-by: Subhradeep Chakraborty <chakrabortysubhradeep556@gmail.com >
2025-05-27 17:54:43 +05:30
+2
0d9f47966b
feat: Organization revamp ( #5579 )
...
Fixes #5131
Addresses #5408
### Revamp
- Created a new table to store organizations in the `organizations`
table. Earlier, we never stored organizations in any table, rather we
used to store the organizations in the meta table as part of the `user`
json.
- The users and organization membership relations are now moved to its
own separate tables - `users` and `org_users`.
### New changes
**API changes** -
- `/organizations` - `POST` api to create an org and save it in the meta
table. In non-enterprise version, currently only the root user can
create the org. For enterprise version with rbac enabled, anyone with
`CREATE` access for organizations can create the organization and
becomes an admin. Root user can always create an organization.
- `/{org_id}/rename` - `PUT` api to rename the existing org. Only root
user and the admins of the org can access this API.
The payload for following APIs are changed -
- `POST api/{org_id}/roles` - `{"name":"new_role"}` is changed to
`{"role":"new_role"}
- `POST api/{org_id}/users/{user}` -
`{"role":"viewer","custom_role":["role_name"]}` is the new payload where
`custom_role` is optional and is array of custom roles (only works in
enterprise with rbac enabled) which will be assigned to the user. The
value of `role` can be standard role or as well as any custom role (when
it is custom role, the standard role assigned to the user is decided
based on the enterprise env variable - `O2_DEX_DEFAULT_ROLE`).
- `POST api/{org_id}/users`- the payload -
```
{"email":"user@user.com ","role":"viewer","custom_role":["create_org_permission"],"password":"12345678", "first_name": "", "last_name":""}
```
- `PUT api//{org_id}/users/{email_id}` the payload -
```
{"first_name":"Hello","last_name":"j","role":"viewer","isExternal":false,"change_password":false,"password":"","custom_role":["create_org_permission"]}
```
A new ENV variable is introduced - `ZO_CREATE_ORG_THROUGH_INGESTION`
(default `false`) which if true, an org will automatically created when
ingesting data to a new org. If false, user can not create org by
ingesting data to new org, they need to first call the `POST
/organizations` API.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
## Release Notes
**New Features**
- Added a `cloud` feature for enhanced organizational management
capabilities.
- Introduced new methods for managing organizational users and
asynchronous message processing.
- Enhanced user invitation and membership features, including improved
role handling.
- Implemented configurable ingestion URL support across various
components.
- Added new functionality for user management and organization handling
in the super cluster architecture.
**Improvements**
- Refined user authentication and authorization processes, including
error handling.
- Updated database schema to support multi-organization architecture.
- Enhanced pagination settings and UI components for better user
experience.
- Improved handling of organization names and user roles in
notifications and alerts.
- Streamlined service account token management with visibility
enhancements.
- Enhanced the `AddUpdateOrganization` component with improved user
input handling and validation.
- Updated the `AppOrganizations` component to dynamically load the
appropriate organization management interface.
- Improved the `ServiceAccountsList` component with updated pagination
options and token handling logic.
**Bug Fixes**
- Resolved issues with user role assignments and organization management
inconsistencies.
- Corrected routing and navigation logic for login and logout processes.
- Addressed various error handling scenarios in user and organization
processes.
- Fixed issues with the visibility of service account options in the
`EditGroup` and `EditRole` components based on the cloud configuration.
**Breaking Changes**
- Significant restructuring of user and organization data models.
- Changes to authentication workflows and configuration handling.
- Removal of certain components related to user and organization
management.
- Updated the logic for determining the ingestion URL across various
components.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com >
Co-authored-by: Bhargav <BJP232004@GMAIL.COM >
Co-authored-by: Taiming Liu <liutaiming3@gmail.com >
Co-authored-by: hengfei yang <hengfei.yang@gmail.com >
Co-authored-by: harshiv-7 <harshiv@openobserve.ai >
Co-authored-by: Huaijin <haohuaijin@gmail.com >
Co-authored-by: Zhao.wei <weizhao029@gmail.com >
Co-authored-by: ShyamOOAI <shyam@openobserve.ai >
Co-authored-by: oasisk <ashish.j.kolhe@gmail.com >
Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai >
Co-authored-by: Yashodhan Joshi <yashodhan@openobserve.ai >
Co-authored-by: Yashodhan Joshi <yjdoc2@gmail.com >
2025-05-25 21:53:55 -07:00
Shyam Panjiyar
68f9193bec
test: validate max_query_range for 1 hour pytest ( #6890 )
...
Validate max_query_range for 1 hour pytest
1. HTTP Cache False
2. HTTP Cache True
3. Streaming Search Cache False
4. Streaming Search Cache True
2025-05-23 11:33:31 +05:30
Shyam Panjiyar
c84792d3eb
test: streaming search pytest ( #6803 )
...
Streaming Search PyTest
2025-05-20 16:22:24 +05:30