Skip to content
Closed
Show file tree
Hide file tree
Changes from 12 commits
Commits
Show all changes
101 commits
Select commit Hold shift + click to select a range
ef914b0
Update dependencies to version 0.5.2 for llama-stack, llama-stack-cli…
jrobertboos Mar 9, 2026
cef66f2
Add new MCP authentication configurations and update tests
jrobertboos Mar 9, 2026
8fe30ba
Add invalid MCP token configuration and update tests
jrobertboos Mar 9, 2026
91bdf62
LCORE-1326: Updated dependencies
tisnik Mar 10, 2026
d2ddba0
LCORE-1326: Updated Konflux dependencies
tisnik Mar 10, 2026
798e469
Added linter rule B009
tisnik Mar 10, 2026
902320e
Refactored sources
tisnik Mar 10, 2026
8e08ec1
LCORE-1438: Use removeprefix method
tisnik Mar 10, 2026
3f1c3c9
Better approach
tisnik Mar 10, 2026
a067c8d
Merge pull request #1295 from tisnik/lcore-1326-updated-dependencies
tisnik Mar 10, 2026
b1a6cf3
Merge pull request #1296 from tisnik/lcore-1326-updated-konflux-depen…
tisnik Mar 10, 2026
841d1ad
Merge pull request #1298 from tisnik/lcore-1438-use-removeprefix-method
tisnik Mar 10, 2026
b9e971b
Merge pull request #1297 from tisnik/lcore-1437-b010-linter-rule
tisnik Mar 10, 2026
4876372
LCORE-1439: print all commands during Konflux requirements generation
tisnik Mar 10, 2026
36c2ae2
Merge pull request #1299 from tisnik/lcore-1438-print-all-commands-du…
tisnik Mar 10, 2026
335297a
BYOK Inline and Tool RAG integration tests
are-ces Mar 9, 2026
65240e8
ran `make konflux-requiements`
jrobertboos Mar 10, 2026
280741f
Merge branch 'main' into lcore-1285
jrobertboos Mar 10, 2026
d59b6ba
recommend `uv run` instead of `python` for running the config enrichm…
mwcz Mar 10, 2026
e9304cf
LCORE-1438: better string format
tisnik Mar 10, 2026
967d89f
Merge pull request #1293 from jrobertboos/lcore-1285
tisnik Mar 10, 2026
be115c9
Merge pull request #1302 from mwcz/patch-1
tisnik Mar 10, 2026
de8a85a
Merge pull request #1303 from tisnik/lcore-1438-better-string-format
tisnik Mar 10, 2026
040ff3a
add `chunk_family_fields` to okp enrichment config
mwcz Mar 10, 2026
523ad83
Add additional MCP authentication configurations and update scenario …
jrobertboos Mar 10, 2026
ef0756a
fixed errored tests
jrobertboos Mar 10, 2026
2bd501c
Updated sources
tisnik Mar 11, 2026
b41fd9c
Updated tests
tisnik Mar 11, 2026
00913a4
LCORE-1449: Use proper type specification in LCORE sources
tisnik Mar 11, 2026
b86cf64
Check can be done on CI
tisnik Mar 11, 2026
fa0ce86
Sorted __all__
tisnik Mar 11, 2026
aad4146
Better error formatting
tisnik Mar 11, 2026
e201fd7
Shorter pop() operation
tisnik Mar 11, 2026
bcda784
Merge pull request #1306 from tisnik/lcore-1438-short-returns
tisnik Mar 11, 2026
1efbba4
Merge pull request #1307 from tisnik/use-proper-type-specification
tisnik Mar 11, 2026
dfd5295
Merge pull request #1308 from tisnik/lcore-1438-minor-refactoring
tisnik Mar 11, 2026
7cca40b
Assert QueryResponse
are-ces Mar 11, 2026
c9848f5
fix logic in e2e tests to handle all providers
Mar 11, 2026
eb97491
Merge pull request #1292 from are-ces/inline-byok-integration-tests
radofuchs Mar 11, 2026
5fb28b9
Parse index name from chunk metadata source attribute
max-svistunov Mar 10, 2026
d238a82
Merge pull request #1300 from max-svistunov/lcore-1377-parse-index-na…
tisnik Mar 11, 2026
566862b
Merge pull request #1309 from radofuchs/e2e_test_fix
tisnik Mar 11, 2026
ffb769a
Apply suggestions from code review
tisnik Mar 11, 2026
b4daa8e
Merge pull request #1304 from mwcz/mwcz/solr-config-updates
tisnik Mar 11, 2026
fa2e2b1
LCORE-1438: nit: open file without open mode parameters
tisnik Mar 12, 2026
9cb80c6
LCORE-1326: Update dependencies
tisnik Mar 12, 2026
29ba660
Merge pull request #1312 from tisnik/nit-open-file-without-openmode-p…
tisnik Mar 12, 2026
6d7c76a
Merge pull request #1311 from tisnik/lcore-1326-update-dependencies
tisnik Mar 12, 2026
8d2deee
Refactor of shield moderation
asimurka Mar 4, 2026
524ac1c
Added merging of chunks from inline and tool-based RAG in streaming q…
asimurka Mar 12, 2026
482ac5e
Merge pull request #1291 from asimurka/moderations_api_replacement
tisnik Mar 12, 2026
f6a7c52
add lightspeed evaluation e2e tests
VladimirKadlec Mar 11, 2026
ddbc284
update example config with citation annotation
Jdubrick Mar 12, 2026
69b9368
Merge pull request #1314 from Jdubrick/update-config-examples
tisnik Mar 12, 2026
3a436f7
skipped failing scenarios and added library mode configs
jrobertboos Mar 12, 2026
7e8a728
fixed library mode tests error
jrobertboos Mar 12, 2026
5f78dd3
fixed black
jrobertboos Mar 12, 2026
62f8a53
skipped acidentally missed failing test
jrobertboos Mar 12, 2026
1938666
Merge pull request #1313 from VladimirKadlec/leads-247
radofuchs Mar 13, 2026
f3fa114
Implementation of POST v1/responses endpoint
asimurka Feb 26, 2026
e8eb123
Update Konflux references
red-hat-konflux-kflux-prd-rh02[bot] Mar 14, 2026
c082c14
Configuration attributes reading
tisnik Mar 15, 2026
aa5f0ef
Timezone specification
tisnik Mar 15, 2026
543d203
Removed empty string param
tisnik Mar 15, 2026
4a6e0de
Simplified headers storing
tisnik Mar 15, 2026
1e1dba6
Timezone specification
tisnik Mar 15, 2026
1a79905
New Ruff rule
tisnik Mar 15, 2026
4c17178
Merge pull request #1317 from tisnik/lcore-1438-minor-fixes
tisnik Mar 15, 2026
5441b71
LCORE-1441: Updated dependencies
tisnik Mar 15, 2026
6dcf810
Merge pull request #1318 from tisnik/lcore-1441-updated-dependencies
tisnik Mar 15, 2026
7224f11
LCORE-1441: Updated Konflux dependencies
tisnik Mar 15, 2026
bcd351f
Refactor Llama Stack utilities and update E2E tests
jrobertboos Mar 15, 2026
14a205f
Enhance MCP feature tests and streamline Llama Stack storage clearing
jrobertboos Mar 15, 2026
9e761a9
Merge pull request #1319 from tisnik/lcore-1441-updated-konflux-depen…
tisnik Mar 15, 2026
9e124f9
Merge pull request #1316 from lightspeed-core/konflux/references/main
tisnik Mar 15, 2026
4abd9f0
Fixed CVE in cryptography module
tisnik Mar 15, 2026
89cac0f
Merge pull request #1321 from tisnik/fixed-cve-in-cryptograpy-module
tisnik Mar 15, 2026
e3d0931
Add okp source attribute
are-ces Mar 15, 2026
0291d01
LCORE-1438: Organize imports in quota handler
tisnik Mar 15, 2026
11832f8
Merge pull request #1322 from are-ces/okp-source-attribute
tisnik Mar 15, 2026
abe551b
Merge pull request #1323 from tisnik/lcore-1438-organize-imports-in-q…
tisnik Mar 15, 2026
bd62934
Updated OpenAPI specification
tisnik Mar 16, 2026
4ec185c
Updated configuration doc
tisnik Mar 16, 2026
620837e
Merge pull request #1324 from tisnik/lcore-1438-updated-docs
tisnik Mar 16, 2026
aba4b8e
Fixed tool choice setup, addressed comments
asimurka Mar 13, 2026
84faf9f
Merge pull request #1301 from asimurka/conversation_management
tisnik Mar 16, 2026
eac693d
Remove deprecated MCP file-based authorization feature and update tes…
jrobertboos Mar 16, 2026
d4f4518
addressed code rabbit
jrobertboos Mar 16, 2026
2151c34
Add new MCP authentication configurations and update tests
jrobertboos Mar 9, 2026
40d63e7
Add invalid MCP token configuration and update tests
jrobertboos Mar 9, 2026
538e0fc
Add additional MCP authentication configurations and update scenario …
jrobertboos Mar 10, 2026
49c5474
fixed errored tests
jrobertboos Mar 10, 2026
c28ce2d
skipped failing scenarios and added library mode configs
jrobertboos Mar 12, 2026
b658364
fixed library mode tests error
jrobertboos Mar 12, 2026
4804d28
fixed black
jrobertboos Mar 12, 2026
9109754
skipped acidentally missed failing test
jrobertboos Mar 12, 2026
fdad91a
Refactor Llama Stack utilities and update E2E tests
jrobertboos Mar 15, 2026
e436fba
Enhance MCP feature tests and streamline Llama Stack storage clearing
jrobertboos Mar 15, 2026
1699f3a
Remove deprecated MCP file-based authorization feature and update tes…
jrobertboos Mar 16, 2026
0701af5
addressed code rabbit
jrobertboos Mar 16, 2026
128906f
Merge branch 'lcore-1329' of github.com:jrobertboos/lightspeed-stack …
jrobertboos Mar 16, 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
1 change: 1 addition & 0 deletions docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ services:
volumes:
- ./lightspeed-stack.yaml:/app-root/lightspeed-stack.yaml:z
- ./tests/e2e/secrets/mcp-token:/tmp/mcp-secret-token:ro
- ./tests/e2e/secrets/invalid-mcp-token:/tmp/invalid-mcp-secret-token:ro
environment:
- OPENAI_API_KEY=${OPENAI_API_KEY}
# Azure Entra ID credentials (AZURE_API_KEY is obtained dynamically)
Expand Down
2 changes: 1 addition & 1 deletion docs/e2e_testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ tests/e2e/
├── utils/
│ ├── utils.py # restart_container, switch_config, wait_for_container_health, etc.
│ ├── prow_utils.py # Prow/OpenShift helpers (restore_llama_stack_pod, etc.)
│ └── llama_stack_shields.py # Shield unregister/register (server mode, optional)
│ └── llama_stack_utils.py # Toolgroups + shield unregister/register (server mode, optional)
├── mock_mcp_server/ # Mock MCP server for MCP tests
└── rag/ # RAG test data (e.g. for FAISS)
```
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Lightspeed Core Service (LCS)
service:
host: 0.0.0.0
port: 8080
auth_enabled: false
workers: 1
color_log: true
access_log: true
llama_stack:
# Library mode - embeds llama-stack as library
use_as_library_client: true
library_client_config_path: run.yaml
user_data_collection:
feedback_enabled: true
feedback_storage: "/tmp/data/feedback"
transcripts_enabled: true
transcripts_storage: "/tmp/data/transcripts"
authentication:
module: "noop"
mcp_servers:
- name: "mcp-file"
url: "http://mock-mcp:3001"
authorization_headers:
Authorization: "/tmp/invalid-mcp-secret-token"
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Lightspeed Core Service (LCS)
service:
host: 0.0.0.0
port: 8080
auth_enabled: false
workers: 1
color_log: true
access_log: true
llama_stack:
# Library mode - embeds llama-stack as library
use_as_library_client: true
library_client_config_path: run.yaml
user_data_collection:
feedback_enabled: true
feedback_storage: "/tmp/data/feedback"
transcripts_enabled: true
transcripts_storage: "/tmp/data/transcripts"
authentication:
module: "noop"
mcp_servers:
- name: "mcp-client"
url: "http://mock-mcp:3001"
authorization_headers:
Authorization: "client"
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,7 @@ user_data_collection:
authentication:
module: "noop"
mcp_servers:
- name: "mcp-file-auth"
provider_id: "model-context-protocol"
- name: "mcp-file"
url: "http://mock-mcp:3001"
authorization_headers:
Authorization: "/tmp/mcp-secret-token"
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Lightspeed Core Service (LCS)
service:
host: 0.0.0.0
port: 8080
auth_enabled: false
workers: 1
color_log: true
access_log: true
llama_stack:
# Library mode - embeds llama-stack as library
use_as_library_client: true
library_client_config_path: run.yaml
user_data_collection:
feedback_enabled: true
feedback_storage: "/tmp/data/feedback"
transcripts_enabled: true
transcripts_storage: "/tmp/data/transcripts"
authentication:
module: "noop"
mcp_servers:
- name: "mcp-kubernetes"
url: "http://mock-mcp:3001"
authorization_headers:
Authorization: "kubernetes"
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Lightspeed Core Service (LCS)
service:
host: 0.0.0.0
port: 8080
auth_enabled: false
workers: 1
color_log: true
access_log: true
llama_stack:
# Library mode - embeds llama-stack as library
use_as_library_client: true
library_client_config_path: run.yaml
user_data_collection:
feedback_enabled: true
feedback_storage: "/tmp/data/feedback"
transcripts_enabled: true
transcripts_storage: "/tmp/data/transcripts"
authentication:
module: "noop"
mcp_servers:
- name: "mcp-oauth"
url: "http://mock-mcp:3001"
authorization_headers:
Authorization: "oauth"
15 changes: 13 additions & 2 deletions tests/e2e/configuration/library-mode/lightspeed-stack-mcp.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,18 @@ authentication:
module: "noop"
mcp_servers:
- name: "mcp-oauth"
provider_id: "model-context-protocol"
url: "http://mock-mcp:3001"
authorization_headers:
Authorization: "oauth"
Authorization: "oauth"
- name: "mcp-kubernetes"
url: "http://mock-mcp:3001"
authorization_headers:
Authorization: "kubernetes"
- name: "mcp-file"
url: "http://mock-mcp:3001"
authorization_headers:
Authorization: "/tmp/mcp-secret-token"
- name: "mcp-client"
url: "http://mock-mcp:3001"
authorization_headers:
Authorization: "client"
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Lightspeed Core Service (LCS)
service:
host: 0.0.0.0
port: 8080
auth_enabled: false
workers: 1
color_log: true
access_log: true
llama_stack:
# Server mode - connects to separate llama-stack service
use_as_library_client: false
url: http://llama-stack:8321
api_key: xyzzy
user_data_collection:
feedback_enabled: true
feedback_storage: "/tmp/data/feedback"
transcripts_enabled: true
transcripts_storage: "/tmp/data/transcripts"
authentication:
module: "noop"
mcp_servers:
- name: "mcp-file"
url: "http://mock-mcp:3001"
authorization_headers:
Authorization: "/tmp/invalid-mcp-secret-token"
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Lightspeed Core Service (LCS)
service:
host: 0.0.0.0
port: 8080
auth_enabled: false
workers: 1
color_log: true
access_log: true
llama_stack:
# Server mode - connects to separate llama-stack service
use_as_library_client: false
url: http://llama-stack:8321
api_key: xyzzy
user_data_collection:
feedback_enabled: true
feedback_storage: "/tmp/data/feedback"
transcripts_enabled: true
transcripts_storage: "/tmp/data/transcripts"
authentication:
module: "noop"
mcp_servers:
- name: "mcp-client"
url: "http://mock-mcp:3001"
authorization_headers:
Authorization: "client"
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@ user_data_collection:
authentication:
module: "noop"
mcp_servers:
- name: "mcp-file-auth"
provider_id: "model-context-protocol"
- name: "mcp-file"
url: "http://mock-mcp:3001"
authorization_headers:
Authorization: "/tmp/mcp-secret-token"
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Lightspeed Core Service (LCS)
service:
host: 0.0.0.0
port: 8080
auth_enabled: false
workers: 1
color_log: true
access_log: true
llama_stack:
# Server mode - connects to separate llama-stack service
use_as_library_client: false
url: http://llama-stack:8321
api_key: xyzzy
user_data_collection:
feedback_enabled: true
feedback_storage: "/tmp/data/feedback"
transcripts_enabled: true
transcripts_storage: "/tmp/data/transcripts"
authentication:
module: "noop"
mcp_servers:
- name: "mcp-kubernetes"
url: "http://mock-mcp:3001"
authorization_headers:
Authorization: "kubernetes"
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Lightspeed Core Service (LCS)
service:
host: 0.0.0.0
port: 8080
auth_enabled: false
workers: 1
color_log: true
access_log: true
llama_stack:
# Server mode - connects to separate llama-stack service
use_as_library_client: false
url: http://llama-stack:8321
api_key: xyzzy
user_data_collection:
feedback_enabled: true
feedback_storage: "/tmp/data/feedback"
transcripts_enabled: true
transcripts_storage: "/tmp/data/transcripts"
authentication:
module: "noop"
mcp_servers:
- name: "mcp-oauth"
url: "http://mock-mcp:3001"
authorization_headers:
Authorization: "oauth"
15 changes: 13 additions & 2 deletions tests/e2e/configuration/server-mode/lightspeed-stack-mcp.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,18 @@ authentication:
module: "noop"
mcp_servers:
- name: "mcp-oauth"
provider_id: "model-context-protocol"
url: "http://mock-mcp:3001"
authorization_headers:
Authorization: "oauth"
Authorization: "oauth"
- name: "mcp-kubernetes"
url: "http://mock-mcp:3001"
authorization_headers:
Authorization: "kubernetes"
- name: "mcp-file"
url: "http://mock-mcp:3001"
authorization_headers:
Authorization: "/tmp/mcp-secret-token"
- name: "mcp-client"
url: "http://mock-mcp:3001"
authorization_headers:
Authorization: "client"
51 changes: 49 additions & 2 deletions tests/e2e/features/environment.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,13 @@
from tests.e2e.utils.prow_utils import restore_llama_stack_pod
from behave.runner import Context

from tests.e2e.utils.llama_stack_shields import (
from tests.e2e.utils.llama_stack_utils import (
register_shield,
unregister_mcp_toolgroups,
unregister_shield,
)
from tests.e2e.utils.utils import (
clear_llama_stack_storage,
create_config_backup,
is_prow_environment,
remove_config_backup,
Expand Down Expand Up @@ -57,6 +59,22 @@
"tests/e2e/configuration/{mode_dir}/lightspeed-stack-mcp-file-auth.yaml",
"tests/e2e-prow/rhoai/configs/lightspeed-stack-mcp-file-auth.yaml",
),
"invalid-mcp-file-auth": (
"tests/e2e/configuration/{mode_dir}/lightspeed-stack-invalid-mcp-file-auth.yaml",
"tests/e2e-prow/rhoai/configs/lightspeed-stack-invalid-mcp-file-auth.yaml",
),
"mcp-kubernetes-auth": (
"tests/e2e/configuration/{mode_dir}/lightspeed-stack-mcp-kubernetes-auth.yaml",
"tests/e2e-prow/rhoai/configs/lightspeed-stack-mcp-kubernetes-auth.yaml",
),
"mcp-client-auth": (
"tests/e2e/configuration/{mode_dir}/lightspeed-stack-mcp-client-auth.yaml",
"tests/e2e-prow/rhoai/configs/lightspeed-stack-mcp-client-auth.yaml",
),
"mcp-oauth-auth": (
"tests/e2e/configuration/{mode_dir}/lightspeed-stack-mcp-oauth-auth.yaml",
"tests/e2e-prow/rhoai/configs/lightspeed-stack-mcp-oauth-auth.yaml",
),
}


Expand Down Expand Up @@ -207,6 +225,27 @@ def before_scenario(context: Context, scenario: Scenario) -> None:
switch_config(context.scenario_config)
restart_container("lightspeed-stack")

config_name: str | None = None
if "MCPFileAuthConfig" in scenario.effective_tags:
config_name = "mcp-file-auth"
elif "InvalidMCPFileAuthConfig" in scenario.effective_tags:
config_name = "invalid-mcp-file-auth"
elif "MCPKubernetesAuthConfig" in scenario.effective_tags:
config_name = "mcp-kubernetes-auth"
elif "MCPClientAuthConfig" in scenario.effective_tags:
config_name = "mcp-client-auth"
elif "MCPOAuthAuthConfig" in scenario.effective_tags:
config_name = "mcp-oauth-auth"

if config_name is not None:
if not context.is_library_mode:
unregister_mcp_toolgroups()
else:
clear_llama_stack_storage()
context.scenario_config = _get_config_path(config_name, mode_dir)
switch_config(context.scenario_config)
restart_container("lightspeed-stack")


def after_scenario(context: Context, scenario: Scenario) -> None:
"""Run after each scenario is run.
Expand Down Expand Up @@ -241,7 +280,15 @@ def after_scenario(context: Context, scenario: Scenario) -> None:
context.llama_stack_was_running = False

# Tags that require config restoration after scenario
config_restore_tags = {"InvalidFeedbackStorageConfig", "NoCacheConfig"}
config_restore_tags = {
"InvalidFeedbackStorageConfig",
"NoCacheConfig",
"MCPFileAuthConfig",
"InvalidMCPFileAuthConfig",
"MCPKubernetesAuthConfig",
"MCPClientAuthConfig",
"MCPOAuthAuthConfig",
}
if config_restore_tags & set(scenario.effective_tags):
switch_config(context.feature_config)
restart_container("lightspeed-stack")
Expand Down
Loading
Loading