Commit 69d1d5fb authored by Robert Schmidt's avatar Robert Schmidt
Browse files

Merge branch 'integration_2025_w25' into 'develop'

Integration: `2025.w25`

Closes #970 and #969

See merge request oai/openairinterface5g!3485

* !3083 Speed up ubuntu22 image build
* !3428 NR UE fallback to RRCSetup from RRCReestablishment
* !3479 Suspend RBs at UE
* !3446 DL NAS Transport: Fix Message Type retrieval on too short message
* !3445 Finalize FAPI dump functions, add Digital Beamforming Table and Precoding Matrix Table to CONFIG.request
* !3447 NAS Registration Reject: Add bounds and lengths checks
* !3481 RNTI information printed in UE stats
* !3484 gNB RRC: handle optional measResultQuantity fields independently
* !3480 USRP lib: fix incorrect config check for time_source fallback
* !3483 UE segfault in DLInformationTransfer
* !3367 Enabling usage of ulsyncvalidityDuration timer in SIB19
* !3482 CI: Add "may_fail" step to execute flaky steps
parents 8c0641c6 1750d405
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -224,7 +224,6 @@ class HTMLManagement():
			self.htmlFile.write('  </table>\n')
			self.htmlFile.write('  </div>\n')
			self.htmlFile.close()
			time.sleep(1)
			if passStatus:
				cmd = "sed -i -e 's/__STATE_" + self.htmlTabNames[0] + "__//' test_results.html"
				subprocess.run(cmd, shell=True)
+4 −10
Original line number Diff line number Diff line
@@ -213,7 +213,7 @@ def Iperf_analyzeV2UDP(server_filename, iperf_bitrate_threshold, iperf_packetlos
			pal_msg += f' (too high! >{iperf_packetloss_threshold}%)'
		return (result, f'{req_msg}\n{bir_msg}\n{brl_msg}\n{jit_msg}\n{pal_msg}')

def Custom_Command(HTML, node, command, command_fail):
def Custom_Command(HTML, node, command):
    logging.info(f"Executing custom command on {node}")
    cmd = cls_cmd.getConnection(node)
    ret = cmd.run(command)
@@ -221,26 +221,20 @@ def Custom_Command(HTML, node, command, command_fail):
    logging.debug(f"Custom_Command: {command} on node: {node} - {'OK, command succeeded' if ret.returncode == 0 else f'Error, return code: {ret.returncode}'}")
    status = 'OK'
    message = []
    if ret.returncode != 0 and not command_fail:
        message = [ret.stdout]
        logging.warning(f'Custom_Command output: {message}')
        status = 'Warning'
    if ret.returncode != 0 and command_fail:
    if ret.returncode != 0:
        message = [ret.stdout]
        logging.error(f'Custom_Command failed: output: {message}')
        status = 'KO'
    HTML.CreateHtmlTestRowQueue(command, status, message)
    return status == 'OK' or status == 'Warning'

def Custom_Script(HTML, node, script, command_fail):
def Custom_Script(HTML, node, script):
	logging.info(f"Executing custom script on {node}")
	ret = cls_cmd.runScript(node, script, 90)
	logging.debug(f"Custom_Script: {script} on node: {node} - return code {ret.returncode}, output:\n{ret.stdout}")
	status = 'OK'
	message = [ret.stdout]
	if ret.returncode != 0 and not command_fail:
		status = 'Warning'
	if ret.returncode != 0 and command_fail:
	if ret.returncode != 0:
		status = 'KO'
	HTML.CreateHtmlTestRowQueue(script, status, message)
	return status == 'OK' or status == 'Warning'
+2 −0
Original line number Diff line number Diff line
@@ -149,6 +149,8 @@ gNBs =

  #ext2
    #ntn_Config_r17
      # This can be of values {s5, s10, s15, s20, s25, s30, s35, s40, s45, s50, s55, s60, s120, s180, s240, s900}
      ntn-UlSyncValidityDuration-r17                                = 240;
      cellSpecificKoffset_r17                                       = 478;
      ta-Common-r17                                                 = 58629666; # 238.74 ms
      positionX-r17                                                 = 0;
+6 −5
Original line number Diff line number Diff line
@@ -376,14 +376,12 @@ def ExecuteActionWithParam(action):
			# Change all execution targets to localhost
			node = 'localhost'
		command = test.findtext('command')
		command_fail = test.findtext('command_fail') in ['True', 'true', 'Yes', 'yes']
		success = cls_oaicitest.Custom_Command(HTML, node, command, command_fail)
		success = cls_oaicitest.Custom_Command(HTML, node, command)

	elif action == 'Custom_Script':
		node = test.findtext('node')
		script = test.findtext('script')
		command_fail = test.findtext('command_fail') in ['True', 'true', 'Yes', 'yes']
		success = cls_oaicitest.Custom_Script(HTML, node, script, command_fail)
		success = cls_oaicitest.Custom_Script(HTML, node, script)

	elif action == 'Pull_Cluster_Image':
		tag_prefix = test.findtext('tag_prefix') or ""
@@ -626,6 +624,7 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
			HTML.testCase_id=CiTestObj.testCase_id
			CiTestObj.desc = test.findtext('desc')
			always_exec = test.findtext('always_exec') in ['True', 'true', 'Yes', 'yes']
			may_fail = test.findtext('may_fail') in ['True', 'true', 'Yes', 'yes']
			HTML.desc=CiTestObj.desc
			action = test.findtext('class')
			if (CheckClassValidity(xml_class_list, action, id) == False):
@@ -639,7 +638,9 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
				break
			try:
				test_succeeded = ExecuteActionWithParam(action)
				if not test_succeeded:
				if not test_succeeded and may_fail:
					logging.warning(f"test ID {test_case_id} action {action} may or may not fail, proceeding despite error")
				elif not test_succeeded:
					logging.error(f"test ID {test_case_id} action {action} failed ({test_succeeded}), skipping next tests")
					task_set_succeeded = False
			except Exception as e:
+0 −1
Original line number Diff line number Diff line
@@ -95,7 +95,6 @@ class RANManagement():
		self.cmd_prefix = '' # prefix before {lte,nr}-softmodem
		self.node = ''
		self.command = ''
		self.command_fail = False


#-----------------------------------------------------------
Loading