Chris Weaver f1fc8ac19b
Connector checkpointing (#3876)
* wip checkpointing/continue on failure

more stuff for checkpointing

Basic implementation

FE stuff

More checkpointing/failure handling

rebase

rebase

initial scaffolding for IT

IT to test checkpointing

Cleanup

cleanup

Fix it

Rebase

Add todo

Fix actions IT

Test more

Pagination + fixes + cleanup

Fix IT networking

fix it

* rebase

* Address misc comments

* Address comments

* Remove unused router

* rebase

* Fix mypy

* Fixes

* fix it

* Fix tests

* Add drop index

* Add retries

* reset lock timeout

* Try hard drop of schema

* Add timeout/retries to downgrade

* rebase

* test

* test

* test

* Close all connections

* test closing idle only

* Fix it

* fix

* try using null pool

* Test

* fix

* rebase

* log

* Fix

* apply null pool

* Fix other test

* Fix quality checks

* Test not using the fixture

* Fix ordering

* fix test

* Change pooling behavior
2025-02-16 02:34:39 +00:00

68 lines
2.3 KiB
Python

import requests
from onyx.db.engine import get_session_context_manager
from onyx.db.models import User
def test_create_chat_session_and_send_messages() -> None:
# Create a test user
with get_session_context_manager() as db_session:
test_user = User(email="test@example.com", hashed_password="dummy_hash")
db_session.add(test_user)
db_session.commit()
base_url = "http://localhost:8080" # Adjust this to your API's base URL
headers = {"Authorization": f"Bearer {test_user.id}"}
# Create a new chat session
create_session_response = requests.post(
f"{base_url}/chat/create-chat-session",
json={
"description": "Test Chat",
"persona_id": 1,
}, # Assuming persona_id 1 exists
headers=headers,
)
assert create_session_response.status_code == 200
chat_session_id = create_session_response.json()["chat_session_id"]
# Send first message
first_message = "Hello, this is a test message."
send_message_response = requests.post(
f"{base_url}/chat/send-message",
json={
"chat_session_id": chat_session_id,
"message": first_message,
"prompt_id": None,
"retrieval_options": {"top_k": 3},
"stream_response": False,
},
headers=headers,
)
assert send_message_response.status_code == 200
# Send second message
second_message = "Can you provide more information?"
send_message_response = requests.post(
f"{base_url}/chat/send-message",
json={
"chat_session_id": chat_session_id,
"message": second_message,
"prompt_id": None,
"retrieval_options": {"top_k": 3},
"stream_response": False,
},
headers=headers,
)
assert send_message_response.status_code == 200
# Verify chat session details
get_session_response = requests.get(
f"{base_url}/chat/get-chat-session/{chat_session_id}", headers=headers
)
assert get_session_response.status_code == 200
session_details = get_session_response.json()
assert session_details["chat_session_id"] == chat_session_id
assert session_details["description"] == "Test Chat"
assert len(session_details["messages"]) == 4 # 2 user messages + 2 AI responses