99 lines
5.4 KiB
Python
99 lines
5.4 KiB
Python
import sys
|
|
import logging
|
|
logging.basicConfig(
|
|
level=logging.DEBUG,
|
|
stream=sys.stdout,
|
|
format="[%(asctime)s] %(levelname)8s: %(message)s"
|
|
)
|
|
import os
|
|
import unittest
|
|
|
|
sys.path.append('./') # to find OAI imports below
|
|
import cls_loganalysis
|
|
|
|
class TestLogAnalysis(unittest.TestCase):
|
|
def setUp(self):
|
|
self.maxDiff = None
|
|
|
|
def test_no_file(self):
|
|
f = "/total/fantasy/path/file.log"
|
|
result, _ = cls_loganalysis.Default.run(f, None)
|
|
self.assertFalse(result)
|
|
|
|
def test_no_error(self):
|
|
f = "tests/log-analysis/empty.log"
|
|
result, _ = cls_loganalysis.Default.run(f, None)
|
|
self.assertTrue(result)
|
|
|
|
def test_retx_check_good(self):
|
|
f = "tests/log-analysis/retx-check-good.log"
|
|
opt = "dl=1,0,0,0;ul=1,0,0,0"
|
|
result, log = cls_loganalysis.RetxCheck.run(f, opt)
|
|
expected = """UE f40a: dlsch_rounds 86/0/0/0, dlsch_errors 0, pucch0_DTX 0, BLER 0.00052 MCS (0) 0 CCE fail 3
|
|
UE f40a: ulsch_rounds 518/0/0/0, ulsch_errors 0, ulsch_DTX 0, BLER 0.00000 MCS (0) 0 (Qm 2 deltaMCS 0 dB) NPRB 5 SNR 51.0 dB CCE fail 0"""
|
|
self.assertTrue(result)
|
|
self.assertEqual(log, expected)
|
|
|
|
def test_retx_check_good_single_val(self):
|
|
f = "tests/log-analysis/retx-check-good.log"
|
|
opt = "1,0,0,0"
|
|
result, log = cls_loganalysis.RetxCheck.run(f, opt)
|
|
expected = """UE f40a: dlsch_rounds 86/0/0/0, dlsch_errors 0, pucch0_DTX 0, BLER 0.00052 MCS (0) 0 CCE fail 3
|
|
UE f40a: ulsch_rounds 518/0/0/0, ulsch_errors 0, ulsch_DTX 0, BLER 0.00000 MCS (0) 0 (Qm 2 deltaMCS 0 dB) NPRB 5 SNR 51.0 dB CCE fail 0"""
|
|
self.assertTrue(result)
|
|
self.assertEqual(log, expected)
|
|
|
|
def test_retx_check_good_ul_only(self):
|
|
f = "tests/log-analysis/retx-check-good.log"
|
|
opt = "ul=1,0,0,0"
|
|
result, log = cls_loganalysis.RetxCheck.run(f, opt)
|
|
expected = """UE f40a: dlsch_rounds 86/0/0/0, dlsch_errors 0, pucch0_DTX 0, BLER 0.00052 MCS (0) 0 CCE fail 3
|
|
UE f40a: ulsch_rounds 518/0/0/0, ulsch_errors 0, ulsch_DTX 0, BLER 0.00000 MCS (0) 0 (Qm 2 deltaMCS 0 dB) NPRB 5 SNR 51.0 dB CCE fail 0"""
|
|
self.assertTrue(result)
|
|
self.assertEqual(log, expected)
|
|
|
|
def test_retx_check_bad(self):
|
|
f = "tests/log-analysis/retx-check-bad.log"
|
|
opt = "dl=10,100,100,100;ul=10,100,100,100"
|
|
result, log = cls_loganalysis.RetxCheck.run(f, opt)
|
|
expected = """UE a491: dlsch_rounds 13/1/0/0, dlsch_errors 0, pucch0_DTX 0, BLER 0.11000 MCS (0) 0 CCE fail 0
|
|
UE a491: ulsch_rounds 23/1/0/0, ulsch_errors 0, ulsch_DTX 1, BLER 0.08447 MCS (0) 0 (Qm 2 deltaMCS 0 dB) NPRB 5 SNR 34.0 dB CCE fail 0
|
|
UE bf9b: dlsch_rounds 370/368/368/368, dlsch_errors 368, pucch0_DTX 1377, BLER 1.00000 MCS (0) 0 CCE fail 64
|
|
UE bf9b: ulsch_rounds 150/148/147/147, ulsch_errors 147, ulsch_DTX 589, BLER 1.00000 MCS (0) 0 (Qm 2 deltaMCS 0 dB) NPRB 104 SNR 38.0 dB CCE fail 0
|
|
!!! Failure: UE bf9b: retx rounds DL [1] UL [1] exceeded threshold
|
|
UE 257a: dlsch_rounds 68071/142/14/0, dlsch_errors 0, pucch0_DTX 10, BLER 0.00427 MCS (1) 25 CCE fail 0
|
|
UE 257a: ulsch_rounds 41777/2863/10/0, ulsch_errors 0, ulsch_DTX 17, BLER 0.11456 MCS (1) 10 (Qm 4 deltaMCS 0 dB) NPRB 5 SNR 29.0 dB CCE fail 0"""
|
|
self.assertFalse(result)
|
|
self.assertEqual(log, expected)
|
|
|
|
def test_retx_check_dl_only_bad(self):
|
|
f = "tests/log-analysis/retx-check-bad.log"
|
|
opt = "dl=10,80,100,100"
|
|
result, log = cls_loganalysis.RetxCheck.run(f, opt)
|
|
expected = """UE a491: dlsch_rounds 13/1/0/0, dlsch_errors 0, pucch0_DTX 0, BLER 0.11000 MCS (0) 0 CCE fail 0
|
|
UE a491: ulsch_rounds 23/1/0/0, ulsch_errors 0, ulsch_DTX 1, BLER 0.08447 MCS (0) 0 (Qm 2 deltaMCS 0 dB) NPRB 5 SNR 34.0 dB CCE fail 0
|
|
UE bf9b: dlsch_rounds 370/368/368/368, dlsch_errors 368, pucch0_DTX 1377, BLER 1.00000 MCS (0) 0 CCE fail 64
|
|
UE bf9b: ulsch_rounds 150/148/147/147, ulsch_errors 147, ulsch_DTX 589, BLER 1.00000 MCS (0) 0 (Qm 2 deltaMCS 0 dB) NPRB 104 SNR 38.0 dB CCE fail 0
|
|
!!! Failure: UE bf9b: retx rounds DL [1, 2] exceeded threshold
|
|
UE 257a: dlsch_rounds 68071/142/14/0, dlsch_errors 0, pucch0_DTX 10, BLER 0.00427 MCS (1) 25 CCE fail 0
|
|
UE 257a: ulsch_rounds 41777/2863/10/0, ulsch_errors 0, ulsch_DTX 17, BLER 0.11456 MCS (1) 10 (Qm 4 deltaMCS 0 dB) NPRB 5 SNR 29.0 dB CCE fail 0"""
|
|
self.assertFalse(result)
|
|
self.assertEqual(log, expected)
|
|
|
|
def test_retx_check_ul_bad(self):
|
|
f = "tests/log-analysis/retx-check-bad.log"
|
|
opt = "dl=100,100,100,100;ul=10,100,100,100"
|
|
result, log = cls_loganalysis.RetxCheck.run(f, opt)
|
|
expected = """UE a491: dlsch_rounds 13/1/0/0, dlsch_errors 0, pucch0_DTX 0, BLER 0.11000 MCS (0) 0 CCE fail 0
|
|
UE a491: ulsch_rounds 23/1/0/0, ulsch_errors 0, ulsch_DTX 1, BLER 0.08447 MCS (0) 0 (Qm 2 deltaMCS 0 dB) NPRB 5 SNR 34.0 dB CCE fail 0
|
|
UE bf9b: dlsch_rounds 370/368/368/368, dlsch_errors 368, pucch0_DTX 1377, BLER 1.00000 MCS (0) 0 CCE fail 64
|
|
UE bf9b: ulsch_rounds 150/148/147/147, ulsch_errors 147, ulsch_DTX 589, BLER 1.00000 MCS (0) 0 (Qm 2 deltaMCS 0 dB) NPRB 104 SNR 38.0 dB CCE fail 0
|
|
!!! Failure: UE bf9b: retx rounds UL [1] exceeded threshold
|
|
UE 257a: dlsch_rounds 68071/142/14/0, dlsch_errors 0, pucch0_DTX 10, BLER 0.00427 MCS (1) 25 CCE fail 0
|
|
UE 257a: ulsch_rounds 41777/2863/10/0, ulsch_errors 0, ulsch_DTX 17, BLER 0.11456 MCS (1) 10 (Qm 4 deltaMCS 0 dB) NPRB 5 SNR 29.0 dB CCE fail 0"""
|
|
self.assertFalse(result)
|
|
self.assertEqual(log, expected)
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|