Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-27 07:41:42

0001 from django.test import TestCase
0002 from django.urls import reverse
0003 from django.contrib.auth.models import User
0004 from django.utils import timezone
0005 from rest_framework.test import APITestCase, APIClient
0006 from rest_framework import status
0007 from monitor_app.models import SystemAgent, AppLog, Run, StfFile, Subscriber
0008 from monitor_app.serializers import AppLogSerializer
0009 from django.core.management import call_command
0010 from io import StringIO
0011 import logging
0012 import uuid
0013 import re
0014 
0015 
0016 class LogSummaryAPITests(TestCase):
0017     def setUp(self):
0018         # Use unique usernames for each test run
0019         self.username = f"testuser_{uuid.uuid4()}"
0020         self.user = User.objects.create_user(username=self.username, password="testpass")
0021         self.client.login(username=self.username, password="testpass")
0022         now = timezone.now()
0023         # Create logs for two apps and two instances
0024         AppLog.objects.create(app_name='app1', instance_name='inst1', timestamp=now, level=logging.ERROR, levelname='ERROR', message='Error 1', module='mod', funcname='f', lineno=1, process=1, thread=1)
0025         AppLog.objects.create(app_name='app1', instance_name='inst1', timestamp=now, level=logging.INFO, levelname='INFO', message='Info 1', module='mod', funcname='f', lineno=2, process=1, thread=1)
0026         AppLog.objects.create(app_name='app1', instance_name='inst2', timestamp=now, level=logging.ERROR, levelname='ERROR', message='Error 2', module='mod', funcname='f', lineno=3, process=1, thread=1)
0027         AppLog.objects.create(app_name='app2', instance_name='inst3', timestamp=now, level=logging.CRITICAL, levelname='CRITICAL', message='Critical 1', module='mod', funcname='f', lineno=4, process=1, thread=1)
0028 
0029     def tearDown(self):
0030         # Clean up created user
0031         User.objects.filter(username=self.username).delete()
0032 
0033     def test_summary_api(self):
0034         url = '/api/logs/summary/'
0035         response = self.client.get(url)
0036         self.assertEqual(response.status_code, status.HTTP_200_OK)
0037         data = response.json()
0038         self.assertIn('app1', data)
0039         self.assertIn('app2', data)
0040         self.assertIn('inst1', data['app1'])
0041         self.assertIn('inst2', data['app1'])
0042         self.assertIn('inst3', data['app2'])
0043         # Check error counts
0044         self.assertEqual(data['app1']['inst1']['error_counts'].get('ERROR', 0), 1)
0045         self.assertEqual(data['app1']['inst2']['error_counts'].get('ERROR', 0), 1)
0046         self.assertEqual(data['app2']['inst3']['error_counts'].get('CRITICAL', 0), 1)
0047         # Check recent errors structure
0048         self.assertTrue(isinstance(data['app1']['inst1']['recent_errors'], list))