CI: Refactor log collection, collect also (COTS) UE logs Refactor log handling in CI: collect according to currently used XML files. This makes it homogeneous in the pipelines, and avoids accidental overwriting (as happens in phytest-timing), as well as harmonizing the log placement (e.g., no YAML lookup in Ping/Iperf). Allow to trace and archive UE logs (e.g., Quectel via QLog, Amarisoft UE logs). By default, no logs will be collected as of this MR, as many files are big. Various cleanup in Jenkinsfiles, some bugfixes, add unit tests.
85 lines
2.8 KiB
Python
85 lines
2.8 KiB
Python
import sys
|
|
import logging
|
|
logging.basicConfig(
|
|
level=logging.DEBUG,
|
|
stream=sys.stdout,
|
|
format="[%(asctime)s] %(levelname)8s: %(message)s"
|
|
)
|
|
import os
|
|
os.system(f'rm -rf cmake_targets')
|
|
os.system(f'mkdir -p cmake_targets/log')
|
|
import unittest
|
|
import tempfile
|
|
|
|
sys.path.append('./') # to find OAI imports below
|
|
import cls_oai_html
|
|
from cls_ci_helper import TestCaseCtx
|
|
import cls_oaicitest
|
|
import cls_cmd
|
|
|
|
class TestPingIperf(unittest.TestCase):
|
|
def setUp(self):
|
|
self.html = cls_oai_html.HTMLManagement()
|
|
self.html.testCaseId = "000000"
|
|
self.ci = cls_oaicitest.OaiCiTest()
|
|
self.ci.ue_ids = ["test"]
|
|
self.ci.nodes = ["localhost"]
|
|
self.ctx = TestCaseCtx.Default(tempfile.mkdtemp())
|
|
def tearDown(self):
|
|
with cls_cmd.LocalCmd() as c:
|
|
c.run(f'rm -rf {self.ctx.logPath}')
|
|
|
|
def test_ping(self):
|
|
self.ci.ping_args = "-c3"
|
|
self.ci.ping_packetloss_threshold = "0"
|
|
self.ci.svr_id = "test"
|
|
infra_file = "tests/config/infra_ping_iperf.yaml"
|
|
# TODO Should need nothing but options and UE(s) to use
|
|
success = self.ci.Ping(self.ctx, self.html, infra_file=infra_file)
|
|
self.assertTrue(success)
|
|
|
|
def test_iperf(self):
|
|
# note: needs to be five seconds because Iperf() adds -O 3, so if it is
|
|
# too short, the server is terminated before the client loaded
|
|
# everything
|
|
self.ci.iperf_args = "-u -t 5 -b 1M -R"
|
|
self.ci.svr_id = "test"
|
|
self.ci.svr_node = "localhost"
|
|
self.ci.iperf_packetloss_threshold = "0"
|
|
self.ci.iperf_bitrate_threshold = "0"
|
|
self.ci.iperf_profile = "balanced"
|
|
infra_file = "tests/config/infra_ping_iperf.yaml"
|
|
# TODO Should need nothing but options and UE(s) to use
|
|
success = self.ci.Iperf(self.ctx, self.html, infra_file=infra_file)
|
|
self.assertTrue(success)
|
|
|
|
def test_iperf2_unidir(self):
|
|
self.ci.iperf_args = "-u -t 5 -b 1M"
|
|
self.ci.svr_id = "test"
|
|
self.ci.svr_node = "localhost"
|
|
self.ci.iperf_packetloss_threshold = "0"
|
|
self.ci.iperf_bitrate_threshold = "0"
|
|
self.ci.iperf_profile = "balanced"
|
|
infra_file = "tests/config/infra_ping_iperf.yaml"
|
|
# TODO Should need nothing but options and UE(s) to use
|
|
success = self.ci.Iperf2_Unidir(self.ctx, self.html, infra_file=infra_file)
|
|
self.assertTrue(success)
|
|
|
|
def test_iperf_highrate(self):
|
|
# note: needs to be five seconds because Iperf() adds -O 3, so if it is
|
|
# too short, the server is terminated before the client loaded
|
|
# everything
|
|
self.ci.iperf_args = "-u -t 5 -b 1000M -R -O 0"
|
|
self.ci.svr_id = "test"
|
|
self.ci.svr_node = "localhost"
|
|
self.ci.iperf_packetloss_threshold = "0"
|
|
self.ci.iperf_bitrate_threshold = "0"
|
|
self.ci.iperf_profile = "balanced"
|
|
infra_file = "tests/config/infra_ping_iperf.yaml"
|
|
# TODO Should need nothing but options and UE(s) to use
|
|
success = self.ci.Iperf(self.html, self.cont, infra_file=infra_file)
|
|
self.assertTrue(success)
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|