CoolFace
Apppublic

findEthics/Atlas

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
test_chat_analytics.py132 linesDownload Raw Back to tests
1#!/usr/bin/env python32"""3Test chat request to see if analytics are collected4"""5import asyncio6import httpx7import json8 9async def test_chat_request():10    """Make a chat request and check if analytics are collected"""11    try:12        print("๐Ÿš€ Testing Chat Request with Analytics Collection")13        print("=" * 60)14        15        # Make a chat request16        chat_data = {17            "prompt": "Hello, this is a test message for analytics",18            "max_new_tokens": 100,19            "use_search": True,20            "temperature": 0.721        }22        23        print("๐Ÿ“ค Sending chat request...")24        async with httpx.AsyncClient(timeout=30.0) as client:25            response = await client.post(26                "http://localhost:7860/chat",27                json=chat_data,28                headers={"Content-Type": "application/json"}29            )30            31            print(f"๐Ÿ“ฅ Response status: {response.status_code}")32            33            if response.status_code == 200:34                result = response.json()35                print(f"โœ… Chat response received (length: {len(result.get('response', ''))} chars)")36                37                # Check for session ID in headers38                session_id = response.headers.get('X-Session-ID')39                if session_id:40                    print(f"๐Ÿ†” Session ID: {session_id}")41                else:42                    print("โš ๏ธ  No session ID in response headers")43                44                return True45            else:46                print(f"โŒ Chat request failed: {response.text}")47                return False48                49    except Exception as e:50        print(f"โŒ Error making chat request: {e}")51        return False52 53async def check_data_after_request():54    """Check if data was collected after the chat request"""55    try:56        print("\n๐Ÿ” Checking Data Collection After Chat Request")57        print("=" * 60)58        59        # Wait a moment for data to be written60        await asyncio.sleep(2)61        62        from analytics.database import get_sessions_collection, get_messages_collection63        64        sessions_collection = await get_sessions_collection()65        messages_collection = await get_messages_collection()66        67        if sessions_collection is None or messages_collection is None:68            print("โŒ Database collections not available")69            return70        71        # Check sessions72        sessions_count = await sessions_collection.count_documents({})73        print(f"๐Ÿ“Š Sessions in database: {sessions_count}")74        75        if sessions_count > 0:76            latest_session = await sessions_collection.find_one({}, sort=[("start_time", -1)])77            print(f"   Latest session ID: {latest_session.get('session_id', 'N/A')}")78            print(f"   Message count: {latest_session.get('message_count', 0)}")79            print(f"   Status: {latest_session.get('status', 'N/A')}")80        81        # Check messages82        messages_count = await messages_collection.count_documents({})83        print(f"๐Ÿ’ฌ Messages in database: {messages_count}")84        85        if messages_count > 0:86            latest_message = await messages_collection.find_one({}, sort=[("timestamp", -1)])87            print(f"   Latest message ID: {latest_message.get('message_id', 'N/A')}")88            print(f"   Session ID: {latest_message.get('session_id', 'N/A')}")89            print(f"   Prompt length: {latest_message.get('prompt_length', 0)}")90            print(f"   Response time: {latest_message.get('response_time_ms', 0)}ms")91            print(f"   Used search: {latest_message.get('used_search', False)}")92            print(f"   Success: {latest_message.get('success', False)}")93        94        return sessions_count > 0 and messages_count > 095        96    except Exception as e:97        print(f"โŒ Error checking data: {e}")98        import traceback99        traceback.print_exc()100        return False101 102async def main():103    # Test chat request104    chat_success = await test_chat_request()105    106    if chat_success:107        # Check if data was collected108        data_collected = await check_data_after_request()109        110        if data_collected:111            print("\nโœ… SUCCESS: Analytics data is being collected!")112            113            # Test dashboard again114            print("\n๐ŸŽฏ Testing Dashboard After Data Collection")115            print("=" * 60)116            117            from analytics.dashboard import get_basic_stats118            stats = await get_basic_stats()119            120            print("Updated dashboard stats:")121            for key, value in stats.items():122                print(f"  {key}: {value}")123                124        else:125            print("\nโŒ PROBLEM: No analytics data was collected!")126            print("   The chat request worked but analytics collection failed.")127    else:128        print("\nโŒ PROBLEM: Chat request failed!")129        print("   Cannot test analytics collection.")130 131if __name__ == "__main__":132    asyncio.run(main())