diff --git a/ci-scripts/cls_containerize.py b/ci-scripts/cls_containerize.py index ee9f726c11..8092febe39 100644 --- a/ci-scripts/cls_containerize.py +++ b/ci-scripts/cls_containerize.py @@ -757,9 +757,13 @@ class Containerize(): cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml config | grep com.docker.network.bridge.name | sed -e "s@^.*name: @@"' networkNames = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10) if re.search('4g.*rfsimulator', self.yamlPath[0]) is not None: + # Excluding any traffic from LTE-UE container (192.168.61.30) + # From the trf-gen, keeping only PING traffic cmd = 'sudo nohup tshark -f "(host 192.168.61.11 and icmp) or (not host 192.168.61.11 and not host 192.168.61.30 and not arp and not port 53 and not port 2152)"' elif re.search('5g.*rfsimulator', self.yamlPath[0]) is not None: - cmd = 'sudo nohup tshark -f "(host 192.168.72.135 and icmp) or (not host 192.168.72.135 and not host 192.168.71.150 and not arp and not port 53 and not port 2152 and not port 2153)"' + # Excluding any traffic from NR-UE containers (192.168.71.150 and 192.168.71.151) + # From the ext-dn, keeping only PING traffic + cmd = 'sudo nohup tshark -f "(host 192.168.72.135 and icmp) or (not host 192.168.72.135 and not host 192.168.71.150 and not host 192.168.71.151 and not arp and not port 53 and not port 2152 and not port 2153)"' elif re.search('5g_l2sim', self.yamlPath[0]) is not None: cmd = 'sudo nohup tshark -f "(host 192.168.72.135 and icmp) or (not host 192.168.72.135 and not arp and not port 53 and not port 2152 and not port 2153)"' else: @@ -817,46 +821,48 @@ class Containerize(): # Analyzing log file(s)! listOfPossibleRanContainers = ['enb', 'gnb', 'cu', 'du'] for container in listOfPossibleRanContainers: - filename = self.yamlPath[0] + '/*-oai-' + container + '.log' - cmd = 'ls ' + filename + filenames = self.yamlPath[0] + '/*-oai-' + container + '.log' + cmd = 'ls ' + filenames containerStatus = True try: lsStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10) - filename = str(lsStatus).strip() + filenames = str(lsStatus).strip() except: containerStatus = False if not containerStatus: continue - logging.debug('\u001B[1m Analyzing xNB logfile ' + filename + ' \u001B[0m') - logStatus = RAN.AnalyzeLogFile_eNB(filename, HTML, self.ran_checkers) - if (logStatus < 0): - fullStatus = False - self.exitStatus = 1 - HTML.CreateHtmlTestRow(RAN.runtime_stats, 'KO', logStatus) - else: - HTML.CreateHtmlTestRow(RAN.runtime_stats, 'OK', CONST.ALL_PROCESSES_OK) + for filename in filenames.split('\n'): + logging.debug('\u001B[1m Analyzing xNB logfile ' + filename + ' \u001B[0m') + logStatus = RAN.AnalyzeLogFile_eNB(filename, HTML, self.ran_checkers) + if (logStatus < 0): + fullStatus = False + self.exitStatus = 1 + HTML.CreateHtmlTestRow(RAN.runtime_stats, 'KO', logStatus) + else: + HTML.CreateHtmlTestRow(RAN.runtime_stats, 'OK', CONST.ALL_PROCESSES_OK) listOfPossibleUeContainers = ['lte-ue*', 'nr-ue*'] for container in listOfPossibleUeContainers: - filename = self.yamlPath[0] + '/*-oai-' + container + '.log' - cmd = 'ls ' + filename + filenames = self.yamlPath[0] + '/*-oai-' + container + '.log' + cmd = 'ls ' + filenames containerStatus = True try: lsStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10) - filename = str(lsStatus).strip() + filenames = str(lsStatus).strip() except: containerStatus = False if not containerStatus: continue - logging.debug('\u001B[1m Analyzing UE logfile ' + filename + ' \u001B[0m') - logStatus = UE.AnalyzeLogFile_UE(filename, HTML, RAN) - if (logStatus < 0): - fullStatus = False - HTML.CreateHtmlTestRow('UE log Analysis', 'KO', logStatus) - else: - HTML.CreateHtmlTestRow('UE log Analysis', 'OK', CONST.ALL_PROCESSES_OK) + for filename in filenames.split('\n'): + logging.debug('\u001B[1m Analyzing UE logfile ' + filename + ' \u001B[0m') + logStatus = UE.AnalyzeLogFile_UE(filename, HTML, RAN) + if (logStatus < 0): + fullStatus = False + HTML.CreateHtmlTestRow('UE log Analysis', 'KO', logStatus) + else: + HTML.CreateHtmlTestRow('UE log Analysis', 'OK', CONST.ALL_PROCESSES_OK) cmd = 'rm ' + self.yamlPath[0] + '/*.log' logging.debug(cmd) diff --git a/ci-scripts/ran.py b/ci-scripts/ran.py index 1551c1ea9a..287a0a3c09 100644 --- a/ci-scripts/ran.py +++ b/ci-scripts/ran.py @@ -997,8 +997,18 @@ class RANManagement(): for k in keys: result = re.search(k, line) if result is not None: + ue_prefix = 'ue0' + ue_res = re.search('UE ID 1|UE 1:', line) + if ue_res is not None: + ue_prefix = 'ue1' + ue_res = re.search('UE ID 2|UE 2:', line) + if ue_res is not None: + ue_prefix = 'ue2' + ue_res = re.search('UE ID 3|UE 3:', line) + if ue_res is not None: + ue_prefix = 'ue3' #remove 1- all useless char before relevant info (ulsch or dlsch) 2- trailing char - dlsch_ulsch_stats[k]=re.sub(r'^.*\]\s+', r'' , line.rstrip()) + dlsch_ulsch_stats[ue_prefix+k]=re.sub(r'^.*\]\s+', r'' , line.rstrip()) result = re.search('Received NR_RRCReconfigurationComplete from UE', str(line)) if result is not None: diff --git a/ci-scripts/xml_files/container_5g_rfsim.xml b/ci-scripts/xml_files/container_5g_rfsim.xml index bab7f9637a..a1f50948a5 100644 --- a/ci-scripts/xml_files/container_5g_rfsim.xml +++ b/ci-scripts/xml_files/container_5g_rfsim.xml @@ -31,8 +31,11 @@ 000001 000002 000003 + 000004 020001 020002 + 020003 + 020004 030001 030002 100001 @@ -71,6 +74,14 @@ 8 + + DeployGenObject + Deploy Second OAI 5G NR-UE RF sim SA + yaml_files/5g_rfsimulator + oai-nr-ue2 + 9 + + PingFromContainer Ping ext-dn from NR-UE @@ -87,6 +98,22 @@ 5 + + PingFromContainer + Ping ext-dn from Second NR-UE + rfsim5g-oai-nr-ue2 + -I oaitun_ue1 -c 20 192.168.72.135 + 5 + + + + PingFromContainer + Ping Second NR-UE from ext-dn + rfsim5g-oai-ext-dn + -c 20 12.1.1.3 + 5 + + IperfFromContainer Iperf UDP Downlink