Add unit test phytest analysis

This commit is contained in:
Robert Schmidt
2026-02-26 13:39:39 +01:00
parent e809841aea
commit 65dab3e027
4 changed files with 95 additions and 0 deletions
+57
View File
@@ -0,0 +1,57 @@
import sys
import logging
logging.basicConfig(
level=logging.DEBUG,
stream=sys.stdout,
format="[%(asctime)s] %(levelname)8s: %(message)s"
)
import os
import unittest
import yaml
sys.path.append('./') # to find OAI imports below
import cls_analysis
import cls_oai_html
import constants
class TestAnalysis(unittest.TestCase):
def setUp(self):
self.html = cls_oai_html.HTMLManagement()
self.html.testCaseId = "000000"
self.maxDiff = 10000 # to compare long files below
def test_gnb_phytest(self):
rtsf = "datalog_rt_stats.100.2x2.yaml"
l1f = "tests/analysis/gnb_phytest.success.nrL1.log"
macf = "tests/analysis/gnb_phytest.success.nrMAC.log"
status, s = cls_analysis.Analysis.analyze_rt_stats(rtsf, l1f, macf)
self.assertTrue(status)
self.assertEqual(s['Title'], "Processing Time (us) from datalog_rt_stats.100.2x2.yaml")
self.assertEqual(s['ColNames'], ["Metric", "Average; Max; Count", "Average vs Reference Deviation (Reference Value; Acceptability Deviation Threshold)"])
with open(rtsf, 'r') as f:
rt_stats = yaml.load(f, Loader=yaml.FullLoader)
# check that analyze_rt_stats() picked up all Ref/DeviationThreshold values from yaml file, e.g.
# s['Ref']['L1 Tx processing'] == corresponding value in yaml
# s['DeviationThreshold']['L1 Tx processing'] == corresponding value in yaml
for k, v in rt_stats['Ref'].items():
self.assertEqual(s['Ref'][k], v)
for k, v in rt_stats['DeviationThreshold'].items():
self.assertEqual(s['DeviationThreshold'][k], v)
for k, v in s['Ref'].items():
self.assertEqual(v, rt_stats['Ref'][k])
for k, v in s['DeviationThreshold'].items():
self.assertEqual(v, rt_stats['DeviationThreshold'][k])
self.assertEqual(s['Data']['L1 Tx processing'], ['476', '872', '102933', '1.00'])
self.assertEqual(s['Data']['DLSCH encoding'], ['216', '544', '77201', '1.08'])
self.assertEqual(s['Data']['L1 Rx processing'], ['488', '868', '38598', '0.92'])
self.assertEqual(s['Data']['UL Indication'], ['1', '10', '38598', '0.76'])
self.assertEqual(s['Data']['Slot Indication'], ['18', '94', '128667', '1.38'])
self.assertEqual(s['Data']['PUSCH inner-receiver'], ['307', '530', '25730', '0.85'])
self.assertEqual(s['Data']['feprx'], ['169', '310', '38600', '1.12'])
self.assertEqual(s['Data']['feptx_ofdm (per port, half_slot)'], ['56', '88', '102933', '0.98'])
self.assertEqual(s['Data']['feptx_total'], ['148', '299', '102933', '1.00'])
# TODO this one is not found, the CI does not recover this??
#self.assertEqual(s['Data']['DL & UL scheduling timing'], ['17', '97', '159371', '1.14'])
if __name__ == '__main__':
unittest.main()