Commit 76c112a8 authored by Roberto Louro Magueta's avatar Roberto Louro Magueta

Merge remote-tracking branch 'origin/develop' into develop-SRS-feedback

parents 10faa7c5 62cea0ef
...@@ -136,16 +136,16 @@ pipeline { ...@@ -136,16 +136,16 @@ pipeline {
} }
} }
} }
stage ("RHEL8 Build") { stage ("RHEL8-Cluster-Image-Builder") {
steps { steps {
script { script {
triggerSlaveJob ('RAN-RHEL8-Image-Builder', 'RHEL8-Images-Build') triggerSlaveJob ('RAN-RHEL8-Cluster-Image-Builder', 'RHEL8-Cluster-Image-Builder')
} }
} }
post { post {
always { always {
script { script {
finalizeSlaveJob('RAN-RHEL8-Image-Builder') finalizeSlaveJob('RAN-RHEL8-Cluster-Image-Builder')
} }
} }
failure { failure {
......
This diff is collapsed.
...@@ -41,7 +41,7 @@ import constants as CONST ...@@ -41,7 +41,7 @@ import constants as CONST
#----------------------------------------------------------- #-----------------------------------------------------------
def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM): def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM,CLUSTER):
py_param_file_present = False py_param_file_present = False
...@@ -82,6 +82,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM): ...@@ -82,6 +82,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM):
CONTAINERS.ranRepository=matchReg.group(1) CONTAINERS.ranRepository=matchReg.group(1)
SCA.ranRepository=matchReg.group(1) SCA.ranRepository=matchReg.group(1)
PHYSIM.ranRepository=matchReg.group(1) PHYSIM.ranRepository=matchReg.group(1)
CLUSTER.ranRepository=matchReg.group(1)
elif re.match('^\-\-eNB_AllowMerge=(.+)$|^\-\-ranAllowMerge=(.+)$', myArgv, re.IGNORECASE): elif re.match('^\-\-eNB_AllowMerge=(.+)$|^\-\-ranAllowMerge=(.+)$', myArgv, re.IGNORECASE):
if re.match('^\-\-eNB_AllowMerge=(.+)$', myArgv, re.IGNORECASE): if re.match('^\-\-eNB_AllowMerge=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNB_AllowMerge=(.+)$', myArgv, re.IGNORECASE) matchReg = re.match('^\-\-eNB_AllowMerge=(.+)$', myArgv, re.IGNORECASE)
...@@ -96,6 +97,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM): ...@@ -96,6 +97,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM):
CONTAINERS.ranAllowMerge=True CONTAINERS.ranAllowMerge=True
SCA.ranAllowMerge=True SCA.ranAllowMerge=True
PHYSIM.ranAllowMerge=True PHYSIM.ranAllowMerge=True
CLUSTER.ranAllowMerge=True
elif re.match('^\-\-eNBBranch=(.+)$|^\-\-ranBranch=(.+)$', myArgv, re.IGNORECASE): elif re.match('^\-\-eNBBranch=(.+)$|^\-\-ranBranch=(.+)$', myArgv, re.IGNORECASE):
if re.match('^\-\-eNBBranch=(.+)$', myArgv, re.IGNORECASE): if re.match('^\-\-eNBBranch=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNBBranch=(.+)$', myArgv, re.IGNORECASE) matchReg = re.match('^\-\-eNBBranch=(.+)$', myArgv, re.IGNORECASE)
...@@ -108,6 +110,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM): ...@@ -108,6 +110,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM):
CONTAINERS.ranBranch=matchReg.group(1) CONTAINERS.ranBranch=matchReg.group(1)
SCA.ranBranch=matchReg.group(1) SCA.ranBranch=matchReg.group(1)
PHYSIM.ranBranch=matchReg.group(1) PHYSIM.ranBranch=matchReg.group(1)
CLUSTER.ranBranch=matchReg.group(1)
elif re.match('^\-\-eNBCommitID=(.*)$|^\-\-ranCommitID=(.*)$', myArgv, re.IGNORECASE): elif re.match('^\-\-eNBCommitID=(.*)$|^\-\-ranCommitID=(.*)$', myArgv, re.IGNORECASE):
if re.match('^\-\-eNBCommitID=(.*)$', myArgv, re.IGNORECASE): if re.match('^\-\-eNBCommitID=(.*)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNBCommitID=(.*)$', myArgv, re.IGNORECASE) matchReg = re.match('^\-\-eNBCommitID=(.*)$', myArgv, re.IGNORECASE)
...@@ -120,6 +123,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM): ...@@ -120,6 +123,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM):
CONTAINERS.ranCommitID=matchReg.group(1) CONTAINERS.ranCommitID=matchReg.group(1)
SCA.ranCommitID=matchReg.group(1) SCA.ranCommitID=matchReg.group(1)
PHYSIM.ranCommitID=matchReg.group(1) PHYSIM.ranCommitID=matchReg.group(1)
CLUSTER.ranCommitID=matchReg.group(1)
elif re.match('^\-\-eNBTargetBranch=(.*)$|^\-\-ranTargetBranch=(.*)$', myArgv, re.IGNORECASE): elif re.match('^\-\-eNBTargetBranch=(.*)$|^\-\-ranTargetBranch=(.*)$', myArgv, re.IGNORECASE):
if re.match('^\-\-eNBTargetBranch=(.*)$', myArgv, re.IGNORECASE): if re.match('^\-\-eNBTargetBranch=(.*)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNBTargetBranch=(.*)$', myArgv, re.IGNORECASE) matchReg = re.match('^\-\-eNBTargetBranch=(.*)$', myArgv, re.IGNORECASE)
...@@ -132,6 +136,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM): ...@@ -132,6 +136,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM):
CONTAINERS.ranTargetBranch=matchReg.group(1) CONTAINERS.ranTargetBranch=matchReg.group(1)
SCA.ranTargetBranch=matchReg.group(1) SCA.ranTargetBranch=matchReg.group(1)
PHYSIM.ranTargetBranch=matchReg.group(1) PHYSIM.ranTargetBranch=matchReg.group(1)
CLUSTER.ranTargetBranch=matchReg.group(1)
elif re.match('^\-\-eNBIPAddress=(.+)$|^\-\-eNB[1-2]IPAddress=(.+)$', myArgv, re.IGNORECASE): elif re.match('^\-\-eNBIPAddress=(.+)$|^\-\-eNB[1-2]IPAddress=(.+)$', myArgv, re.IGNORECASE):
if re.match('^\-\-eNBIPAddress=(.+)$', myArgv, re.IGNORECASE): if re.match('^\-\-eNBIPAddress=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNBIPAddress=(.+)$', myArgv, re.IGNORECASE) matchReg = re.match('^\-\-eNBIPAddress=(.+)$', myArgv, re.IGNORECASE)
...@@ -140,6 +145,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM): ...@@ -140,6 +145,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM):
CONTAINERS.eNBIPAddress=matchReg.group(1) CONTAINERS.eNBIPAddress=matchReg.group(1)
SCA.eNBIPAddress=matchReg.group(1) SCA.eNBIPAddress=matchReg.group(1)
PHYSIM.eNBIPAddress=matchReg.group(1) PHYSIM.eNBIPAddress=matchReg.group(1)
CLUSTER.eNBIPAddress=matchReg.group(1)
elif re.match('^\-\-eNB1IPAddress=(.+)$', myArgv, re.IGNORECASE): elif re.match('^\-\-eNB1IPAddress=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNB1IPAddress=(.+)$', myArgv, re.IGNORECASE) matchReg = re.match('^\-\-eNB1IPAddress=(.+)$', myArgv, re.IGNORECASE)
RAN.eNB1IPAddress=matchReg.group(1) RAN.eNB1IPAddress=matchReg.group(1)
...@@ -156,6 +162,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM): ...@@ -156,6 +162,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM):
CONTAINERS.eNBUserName=matchReg.group(1) CONTAINERS.eNBUserName=matchReg.group(1)
SCA.eNBUserName=matchReg.group(1) SCA.eNBUserName=matchReg.group(1)
PHYSIM.eNBUserName=matchReg.group(1) PHYSIM.eNBUserName=matchReg.group(1)
CLUSTER.eNBUserName=matchReg.group(1)
elif re.match('^\-\-eNB1UserName=(.+)$', myArgv, re.IGNORECASE): elif re.match('^\-\-eNB1UserName=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNB1UserName=(.+)$', myArgv, re.IGNORECASE) matchReg = re.match('^\-\-eNB1UserName=(.+)$', myArgv, re.IGNORECASE)
RAN.eNB1UserName=matchReg.group(1) RAN.eNB1UserName=matchReg.group(1)
...@@ -172,6 +179,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM): ...@@ -172,6 +179,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM):
CONTAINERS.eNBPassword=matchReg.group(1) CONTAINERS.eNBPassword=matchReg.group(1)
SCA.eNBPassword=matchReg.group(1) SCA.eNBPassword=matchReg.group(1)
PHYSIM.eNBPassword=matchReg.group(1) PHYSIM.eNBPassword=matchReg.group(1)
CLUSTER.eNBPassword=matchReg.group(1)
elif re.match('^\-\-eNB1Password=(.+)$', myArgv, re.IGNORECASE): elif re.match('^\-\-eNB1Password=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNB1Password=(.+)$', myArgv, re.IGNORECASE) matchReg = re.match('^\-\-eNB1Password=(.+)$', myArgv, re.IGNORECASE)
RAN.eNB1Password=matchReg.group(1) RAN.eNB1Password=matchReg.group(1)
...@@ -188,6 +196,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM): ...@@ -188,6 +196,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM):
CONTAINERS.eNBSourceCodePath=matchReg.group(1) CONTAINERS.eNBSourceCodePath=matchReg.group(1)
SCA.eNBSourceCodePath=matchReg.group(1) SCA.eNBSourceCodePath=matchReg.group(1)
PHYSIM.eNBSourceCodePath=matchReg.group(1) PHYSIM.eNBSourceCodePath=matchReg.group(1)
CLUSTER.eNBSourceCodePath=matchReg.group(1)
elif re.match('^\-\-eNB1SourceCodePath=(.+)$', myArgv, re.IGNORECASE): elif re.match('^\-\-eNB1SourceCodePath=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNB1SourceCodePath=(.+)$', myArgv, re.IGNORECASE) matchReg = re.match('^\-\-eNB1SourceCodePath=(.+)$', myArgv, re.IGNORECASE)
RAN.eNB1SourceCodePath=matchReg.group(1) RAN.eNB1SourceCodePath=matchReg.group(1)
...@@ -260,12 +269,21 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM): ...@@ -260,12 +269,21 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM):
elif re.match('^\-\-OCUserName=(.+)$', myArgv, re.IGNORECASE): elif re.match('^\-\-OCUserName=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-OCUserName=(.+)$', myArgv, re.IGNORECASE) matchReg = re.match('^\-\-OCUserName=(.+)$', myArgv, re.IGNORECASE)
PHYSIM.OCUserName = matchReg.group(1) PHYSIM.OCUserName = matchReg.group(1)
CLUSTER.OCUserName = matchReg.group(1)
elif re.match('^\-\-OCPassword=(.+)$', myArgv, re.IGNORECASE): elif re.match('^\-\-OCPassword=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-OCPassword=(.+)$', myArgv, re.IGNORECASE) matchReg = re.match('^\-\-OCPassword=(.+)$', myArgv, re.IGNORECASE)
PHYSIM.OCPassword = matchReg.group(1) PHYSIM.OCPassword = matchReg.group(1)
CLUSTER.OCPassword = matchReg.group(1)
elif re.match('^\-\-OCProjectName=(.+)$', myArgv, re.IGNORECASE): elif re.match('^\-\-OCProjectName=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-OCProjectName=(.+)$', myArgv, re.IGNORECASE) matchReg = re.match('^\-\-OCProjectName=(.+)$', myArgv, re.IGNORECASE)
PHYSIM.OCProjectName = matchReg.group(1) PHYSIM.OCProjectName = matchReg.group(1)
CLUSTER.OCProjectName = matchReg.group(1)
elif re.match('^\-\-OCUrl=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-OCUrl=(.+)$', myArgv, re.IGNORECASE)
CLUSTER.OCUrl = matchReg.group(1)
elif re.match('^\-\-OCRegistry=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-OCRegistry=(.+)$', myArgv, re.IGNORECASE)
CLUSTER.OCRegistry = matchReg.group(1)
elif re.match('^\-\-BuildId=(.+)$', myArgv, re.IGNORECASE): elif re.match('^\-\-BuildId=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-BuildId=(.+)$', myArgv, re.IGNORECASE) matchReg = re.match('^\-\-BuildId=(.+)$', myArgv, re.IGNORECASE)
RAN.BuildId = matchReg.group(1) RAN.BuildId = matchReg.group(1)
......
...@@ -74,7 +74,7 @@ then ...@@ -74,7 +74,7 @@ then
IS_NFAPI=`echo $FILE | egrep -c "nfapi/open-nFAPI|nfapi/oai_integration/vendor_ext" || true` IS_NFAPI=`echo $FILE | egrep -c "nfapi/open-nFAPI|nfapi/oai_integration/vendor_ext" || true`
IS_OAI_LICENCE_PRESENT=`egrep -c "OAI Public License" $FILE || true` IS_OAI_LICENCE_PRESENT=`egrep -c "OAI Public License" $FILE || true`
IS_BSD_LICENCE_PRESENT=`egrep -c "the terms of the BSD Licence|License-Identifier: BSD-2-Clause" $FILE || true` IS_BSD_LICENCE_PRESENT=`egrep -c "the terms of the BSD Licence|License-Identifier: BSD-2-Clause" $FILE || true`
IS_EXCEPTION=`echo $FILE | egrep -c "common/utils/collection/tree.h|common/utils/collection/queue.h|openair2/UTIL/OPT/packet-rohc.h|openair3/NAS/COMMON/milenage.h|openair1/PHY/CODING/types.h|openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_offload.c|openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_offload.h" || true` IS_EXCEPTION=`echo $FILE | egrep -c "common/utils/collection/tree.h|common/utils/collection/queue.h|openair2/UTIL/OPT/packet-rohc.h|openair3/NAS/COMMON/milenage.h|openair1/PHY/CODING/crc.h|openair1/PHY/CODING/crcext.h|openair1/PHY/CODING/types.h|openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_offload.c|openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_offload.h" || true`
if [ $IS_OAI_LICENCE_PRESENT -eq 0 ] && [ $IS_BSD_LICENCE_PRESENT -eq 0 ] if [ $IS_OAI_LICENCE_PRESENT -eq 0 ] && [ $IS_BSD_LICENCE_PRESENT -eq 0 ]
then then
if [ $IS_NFAPI -eq 0 ] && [ $IS_EXCEPTION -eq 0 ] if [ $IS_NFAPI -eq 0 ] && [ $IS_EXCEPTION -eq 0 ]
...@@ -184,7 +184,7 @@ do ...@@ -184,7 +184,7 @@ do
IS_NFAPI=`echo $FULLFILE | egrep -c "nfapi/open-nFAPI|nfapi/oai_integration/vendor_ext" || true` IS_NFAPI=`echo $FULLFILE | egrep -c "nfapi/open-nFAPI|nfapi/oai_integration/vendor_ext" || true`
IS_OAI_LICENCE_PRESENT=`egrep -c "OAI Public License" $FULLFILE || true` IS_OAI_LICENCE_PRESENT=`egrep -c "OAI Public License" $FULLFILE || true`
IS_BSD_LICENCE_PRESENT=`egrep -c "the terms of the BSD Licence|License-Identifier: BSD-2-Clause" $FULLFILE || true` IS_BSD_LICENCE_PRESENT=`egrep -c "the terms of the BSD Licence|License-Identifier: BSD-2-Clause" $FULLFILE || true`
IS_EXCEPTION=`echo $FULLFILE | egrep -c "common/utils/collection/tree.h|common/utils/collection/queue.h|openair2/UTIL/OPT/packet-rohc.h|openair3/NAS/COMMON/milenage.h|openair1/PHY/CODING/types.h|openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_offload.c|openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_offload.h" || true` IS_EXCEPTION=`echo $FULLFILE | egrep -c "common/utils/collection/tree.h|common/utils/collection/queue.h|openair2/UTIL/OPT/packet-rohc.h|openair3/NAS/COMMON/milenage.h|openair1/PHY/CODING/crc.h|openair1/PHY/CODING/crcext.h|openair1/PHY/CODING/types.h|openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_offload.c|openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_offload.h" || true`
if [ $IS_OAI_LICENCE_PRESENT -eq 0 ] && [ $IS_BSD_LICENCE_PRESENT -eq 0 ] if [ $IS_OAI_LICENCE_PRESENT -eq 0 ] && [ $IS_BSD_LICENCE_PRESENT -eq 0 ]
then then
if [ $IS_NFAPI -eq 0 ] && [ $IS_EXCEPTION -eq 0 ] if [ $IS_NFAPI -eq 0 ] && [ $IS_EXCEPTION -eq 0 ]
......
This diff is collapsed.
This diff is collapsed.
...@@ -453,13 +453,11 @@ class HTMLManagement(): ...@@ -453,13 +453,11 @@ class HTMLManagement():
self.htmlFile.write(' <td bgcolor = "red" >' + str(parameters['warnings']) + '</td>\n') self.htmlFile.write(' <td bgcolor = "red" >' + str(parameters['warnings']) + '</td>\n')
elif (parameters['warnings'] == 0): elif (parameters['warnings'] == 0):
self.htmlFile.write(' <td bgcolor = "green" >' + str(parameters['warnings']) + '</td>\n') self.htmlFile.write(' <td bgcolor = "green" >' + str(parameters['warnings']) + '</td>\n')
elif ((parameters['warnings'] > 0) and (parameters['warnings'] <= 20)):
self.htmlFile.write(' <td bgcolor = "orange" >' + str(parameters['warnings']) + '</td>\n')
else: else:
self.htmlFile.write(' <td bgcolor = "red" >' + str(parameters['warnings']) + '</td>\n') self.htmlFile.write(' <td bgcolor = "orange" >' + str(parameters['warnings']) + '</td>\n')
if (parameters['errors'] == 0) and (parameters['warnings'] == 0): if (parameters['errors'] == 0) and (parameters['warnings'] == 0):
self.htmlFile.write(' <th colspan=' + str(1+self.htmlUEConnected) + ' bgcolor = "green" ><font color="white">OK </font></th>\n') self.htmlFile.write(' <th colspan=' + str(1+self.htmlUEConnected) + ' bgcolor = "green" ><font color="white">OK </font></th>\n')
elif (parameters['errors'] == 0) and ((parameters['warnings'] > 0) and (parameters['warnings'] <= 20)): elif (parameters['errors'] == 0):
self.htmlFile.write(' <th colspan=' + str(1+self.htmlUEConnected) + ' bgcolor = "orange" ><font color="white">OK </font></th>\n') self.htmlFile.write(' <th colspan=' + str(1+self.htmlUEConnected) + ' bgcolor = "orange" ><font color="white">OK </font></th>\n')
else: else:
self.htmlFile.write(' <th colspan=' + str(1+self.htmlUEConnected) + ' bgcolor = "red" > NOT OK </th>\n') self.htmlFile.write(' <th colspan=' + str(1+self.htmlUEConnected) + ' bgcolor = "red" > NOT OK </th>\n')
......
...@@ -115,30 +115,6 @@ class PhySim: ...@@ -115,30 +115,6 @@ class PhySim:
mySSH.command('git merge --ff origin/' + self.ranTargetBranch + ' -m "Temporary merge for CI"', '\$', 5) mySSH.command('git merge --ff origin/' + self.ranTargetBranch + ' -m "Temporary merge for CI"', '\$', 5)
else: else:
imageTag = "develop" imageTag = "develop"
# Check if image is exist on the Red Hat server, before pushing it to OC cluster
mySSH.command('sudo podman image inspect --format="Size = {{.Size}} bytes" oai-physim:' + imageTag, '\$', 60)
if mySSH.getBefore().count('no such image') != 0:
logging.error('\u001B[1m No such image oai-physim\u001B[0m')
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.PHYSIM_IMAGE_ABSENT)
RAN.prematureExit = True
return
else:
result = re.search('Size *= *(?P<size>[0-9\-]+) *bytes', mySSH.getBefore())
if result is not None:
imageSize = float(result.group('size'))
imageSize = imageSize / 1000
if imageSize < 1000:
logging.debug('\u001B[1m oai-physim size is ' + ('%.0f' % imageSize) + ' kbytes\u001B[0m')
else:
imageSize = imageSize / 1000
if imageSize < 1000:
logging.debug('\u001B[1m oai-physim size is ' + ('%.0f' % imageSize) + ' Mbytes\u001B[0m')
else:
imageSize = imageSize / 1000
logging.debug('\u001B[1m oai-physim is ' + ('%.3f' % imageSize) + ' Gbytes\u001B[0m')
else:
logging.debug('oai-physim size is unknown')
# logging to OC Cluster and then switch to corresponding project # logging to OC Cluster and then switch to corresponding project
mySSH.command(f'oc login -u {ocUserName} -p {ocPassword} --server https://api.oai.cs.eurecom.fr:6443', '\$', 30) mySSH.command(f'oc login -u {ocUserName} -p {ocPassword} --server https://api.oai.cs.eurecom.fr:6443', '\$', 30)
...@@ -161,46 +137,7 @@ class PhySim: ...@@ -161,46 +137,7 @@ class PhySim:
else: else:
logging.debug(f'\u001B[1m Now using project {ocProjectName}\u001B[0m') logging.debug(f'\u001B[1m Now using project {ocProjectName}\u001B[0m')
# Tag the image and push to the OC cluster
mySSH.command('oc whoami -t | sudo podman login -u ' + ocUserName + ' --password-stdin https://default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/ --tls-verify=false', '\$', 30)
if mySSH.getBefore().count('Login Succeeded!') == 0:
logging.error('\u001B[1m Podman Login to OC Cluster Registry Failed\u001B[0m')
mySSH.command('oc logout', '\$', 30)
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL)
RAN.prematureExit = True
return
else:
logging.debug('\u001B[1m Podman Login to OC Cluster Registry Successfully\u001B[0m')
time.sleep(2)
mySSH.command('oc create -f openshift/oai-physim-image-stream.yml || true', '\$', 30)
if mySSH.getBefore().count('(AlreadyExists):') == 0 and mySSH.getBefore().count('created') == 0:
logging.error(f'\u001B[1m Image Stream "oai-physim" Creation Failed on OC Cluster {ocProjectName}\u001B[0m')
mySSH.command('sudo podman logout https://default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/', '\$', 6)
mySSH.command('oc logout', '\$', 30)
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_IS_FAIL)
RAN.prematureExit = True
return
else:
logging.debug(f'\u001B[1m Image Stream "oai-physim" created on OC project {ocProjectName}\u001B[0m')
time.sleep(2)
mySSH.command(f'sudo podman tag oai-physim:{imageTag} default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/{self.OCProjectName}/oai-physim:{imageTag}', '\$', 30)
time.sleep(2)
mySSH.command(f'sudo podman push default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/{self.OCProjectName}/oai-physim:{imageTag} --tls-verify=false', '\$', 180)
if mySSH.getBefore().count('Storing signatures') == 0:
logging.error('\u001B[1m Image "oai-physim" push to OC Cluster Registry Failed\u001B[0m')
mySSH.command('sudo podman logout https://default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/', '\$', 6)
mySSH.command('oc logout', '\$', 30)
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_IS_FAIL)
RAN.prematureExit = True
return
else:
logging.debug('\u001B[1m Image "oai-physim" push to OC Cluster Registry Successfully\u001B[0m')
# Using helm charts deployment # Using helm charts deployment
time.sleep(5)
mySSH.command(f'grep -rl OAICICD_PROJECT ./charts/ | xargs sed -i -e "s#OAICICD_PROJECT#{ocProjectName}#"', '\$', 30) mySSH.command(f'grep -rl OAICICD_PROJECT ./charts/ | xargs sed -i -e "s#OAICICD_PROJECT#{ocProjectName}#"', '\$', 30)
mySSH.command(f'sed -i -e "s#TAG#{imageTag}#g" ./charts/physims/values.yaml', '\$', 6) mySSH.command(f'sed -i -e "s#TAG#{imageTag}#g" ./charts/physims/values.yaml', '\$', 6)
mySSH.command('helm install physim ./charts/physims/ 2>&1 | tee -a cmake_targets/log/physim_helm_summary.txt', '\$', 30) mySSH.command('helm install physim ./charts/physims/ 2>&1 | tee -a cmake_targets/log/physim_helm_summary.txt', '\$', 30)
...@@ -213,9 +150,6 @@ class PhySim: ...@@ -213,9 +150,6 @@ class PhySim:
mySSH.command('oc get pods -l app.kubernetes.io/instance=physim', '\$', 6, resync=True) mySSH.command('oc get pods -l app.kubernetes.io/instance=physim', '\$', 6, resync=True)
if re.search('No resources found', mySSH.getBefore()): if re.search('No resources found', mySSH.getBefore()):
isFinished1 = True isFinished1 = True
mySSH.command(f'sudo podman rmi default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/{self.OCProjectName}/oai-physim:{imageTag}', '\$', 30)
mySSH.command('oc delete is oai-physim', '\$', 30)
mySSH.command('sudo podman logout https://default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/', '\$', 6)
mySSH.command('oc logout', '\$', 30) mySSH.command('oc logout', '\$', 30)
mySSH.close() mySSH.close()
self.AnalyzeLogFile_phySim(HTML) self.AnalyzeLogFile_phySim(HTML)
...@@ -244,9 +178,6 @@ class PhySim: ...@@ -244,9 +178,6 @@ class PhySim:
mySSH.command('oc get pods -l app.kubernetes.io/instance=physim', '\$', 6, resync=True) mySSH.command('oc get pods -l app.kubernetes.io/instance=physim', '\$', 6, resync=True)
if re.search('No resources found', mySSH.getBefore()): if re.search('No resources found', mySSH.getBefore()):
isFinished1 = True isFinished1 = True
mySSH.command(f'sudo podman rmi default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/{self.OCProjectName}/oai-physim:{imageTag}', '\$', 6)
mySSH.command('oc delete is oai-physim', '\$', 6)
mySSH.command('sudo podman logout https://default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/', '\$', 6)
mySSH.command('oc logout', '\$', 30) mySSH.command('oc logout', '\$', 30)
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_PHYSIM_DEPLOY_FAIL) HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_PHYSIM_DEPLOY_FAIL)
HTML.CreateHtmlTestRowPhySimTestResult(self.testSummary,self.testResult) HTML.CreateHtmlTestRowPhySimTestResult(self.testSummary,self.testResult)
...@@ -304,10 +235,6 @@ class PhySim: ...@@ -304,10 +235,6 @@ class PhySim:
isFinished1 = True isFinished1 = True
if isFinished1 == True: if isFinished1 == True:
logging.debug('\u001B[1m UnDeployed PhySim Successfully on OC Cluster\u001B[0m') logging.debug('\u001B[1m UnDeployed PhySim Successfully on OC Cluster\u001B[0m')
mySSH.command(f'sudo podman rmi default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/{self.OCProjectName}/oai-physim:{imageTag}', '\$', 6)
mySSH.command('oc delete is oai-physim', '\$', 6)
logging.debug('\u001B[1m Deleted the Image and ImageStream\u001B[0m')
mySSH.command('sudo podman logout https://default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/', '\$', 6)
mySSH.command('oc logout', '\$', 6) mySSH.command('oc logout', '\$', 6)
mySSH.close() mySSH.close()
self.AnalyzeLogFile_phySim(HTML) self.AnalyzeLogFile_phySim(HTML)
......
...@@ -11,22 +11,7 @@ gNBs = ...@@ -11,22 +11,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 40960; tracking_area_code = 40960;
plmn_list = ({ plmn_list = ({ mcc = 208; mnc = 95; mnc_length = 2; snssaiList = ({ sst = 1 }) });
mcc = 208;
mnc = 95;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x1; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
nr_cellid = 12345678L; nr_cellid = 12345678L;
......
...@@ -11,22 +11,7 @@ gNBs = ...@@ -11,22 +11,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1; tracking_area_code = 1;
plmn_list = ({ plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ({ sst = 1 }) });
mcc = 208;
mnc = 99;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x1; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
nr_cellid = 12345678L; nr_cellid = 12345678L;
......
...@@ -15,22 +15,7 @@ gNBs = ...@@ -15,22 +15,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1; tracking_area_code = 1;
plmn_list = ({ plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ({ sst = 1 }) });
mcc = 208;
mnc = 99;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x010203; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
nr_cellid = 12345678L; nr_cellid = 12345678L;
......
...@@ -14,22 +14,7 @@ gNBs = ...@@ -14,22 +14,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1; tracking_area_code = 1;
plmn_list = ({ plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ({ sst = 1 }) });
mcc = 208;
mnc = 99;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x010203; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
nr_cellid = 12345678L; nr_cellid = 12345678L;
......
...@@ -15,21 +15,7 @@ gNBs = ...@@ -15,21 +15,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1; tracking_area_code = 1;
plmn_list = ({ plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ({ sst = 1 }) });
mcc = 208;
mnc = 99;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x010203; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
nr_cellid = 12345678L nr_cellid = 12345678L
......
...@@ -16,21 +16,7 @@ gNBs = ...@@ -16,21 +16,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1; tracking_area_code = 1;
plmn_list = ({ plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ({ sst = 1 }) });
mcc = 208;
mnc = 99;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x010203; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
nr_cellid = 12345678L nr_cellid = 12345678L
......
...@@ -15,25 +15,7 @@ gNBs = ...@@ -15,25 +15,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1; tracking_area_code = 1;
plmn_list = ({ plmn_list = ({ mcc = 208; mnc = 97; mnc_length = 2; snssaiList = ({ sst = 1, sd = 0x010203 }) });
mcc = 208;
mnc = 97;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x1; // 0 false, else true
},
{
sst = 1;
sd = 0x010203; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
nr_cellid = 12345678L nr_cellid = 12345678L
......
...@@ -15,21 +15,7 @@ gNBs = ...@@ -15,21 +15,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1; tracking_area_code = 1;
plmn_list = ({ plmn_list = ({ mcc = 208; mnc = 97; mnc_length = 2; snssaiList = ({ sst = 1 }) });
mcc = 208;
mnc = 97;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x010203; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
nr_cellid = 12345678L nr_cellid = 12345678L
......
...@@ -15,21 +15,7 @@ gNBs = ...@@ -15,21 +15,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1; tracking_area_code = 1;
plmn_list = ({ plmn_list = ({ mcc = 208; mnc = 97; mnc_length = 2; snssaiList = ({ sst = 1, sd = 0x010203 }) });
mcc = 208;
mnc = 97;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x010203; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
nr_cellid = 12345678L nr_cellid = 12345678L
......
...@@ -15,21 +15,7 @@ gNBs = ...@@ -15,21 +15,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1; tracking_area_code = 1;
plmn_list = ({ plmn_list = ({ mcc = 208; mnc = 97; mnc_length = 2; snssaiList = ({ sst = 1 }) });
mcc = 208;
mnc = 97;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x010203; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
nr_cellid = 12345678L nr_cellid = 12345678L
......
...@@ -15,21 +15,7 @@ gNBs = ...@@ -15,21 +15,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1; tracking_area_code = 1;
plmn_list = ({ plmn_list = ({ mcc = 208; mnc = 97; mnc_length = 2; snssaiList = ({ sst = 1, sd = 0x010203 }) });
mcc = 208;
mnc = 97;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x010203; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
nr_cellid = 12345678L nr_cellid = 12345678L
......
...@@ -11,22 +11,7 @@ gNBs = ...@@ -11,22 +11,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1; tracking_area_code = 1;
plmn_list = ({ plmn_list = ({ mcc = 208; mnc = 95; mnc_length = 2; snssaiList = ({ sst = 1 }) });
mcc = 208;
mnc = 95;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x1; // 0 false, else true
},
{
sst = 2;
sd = 2; // 0 false, else true
}
);
});
nr_cellid = 12345678L; nr_cellid = 12345678L;
......
...@@ -11,18 +11,7 @@ gNBs = ...@@ -11,18 +11,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1; tracking_area_code = 1;
plmn_list = ({ plmn_list = ({ mcc = 222; mnc = 01; mnc_length = 2; snssaiList = ({ sst = 1; }) });
mcc = 222;
mnc = 01;
mnc_length = 2;
snssaiList = (
{
sst = 1;
#sd = 0x1; // 0 false, else true
}
);
});
nr_cellid = 12345678L; nr_cellid = 12345678L;
......
...@@ -11,22 +11,7 @@ gNBs = ...@@ -11,22 +11,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1; tracking_area_code = 1;
plmn_list = ({ plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ({ sst = 1 }) });
mcc = 208;
mnc = 99;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x1; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
nr_cellid = 12345678L; nr_cellid = 12345678L;
......
...@@ -4,5 +4,4 @@ uicc0 = { ...@@ -4,5 +4,4 @@ uicc0 = {
opc= "@OPC@"; opc= "@OPC@";
dnn= "@DNN@"; dnn= "@DNN@";
nssai_sst=@NSSAI_SST@; nssai_sst=@NSSAI_SST@;
nssai_sd=@NSSAI_SD@;
} }
...@@ -79,3 +79,7 @@ X2_HO_REQ_STATE__TARGET_RECEIVES_REQ = 1 ...@@ -79,3 +79,7 @@ X2_HO_REQ_STATE__TARGET_RECEIVES_REQ = 1
X2_HO_REQ_STATE__TARGET_RRC_RECFG_COMPLETE = 2 X2_HO_REQ_STATE__TARGET_RRC_RECFG_COMPLETE = 2
X2_HO_REQ_STATE__TARGET_SENDS_SWITCH_REQ = 3 X2_HO_REQ_STATE__TARGET_SENDS_SWITCH_REQ = 3
X2_HO_REQ_STATE__SOURCE_RECEIVES_REQ_ACK = 10 X2_HO_REQ_STATE__SOURCE_RECEIVES_REQ_ACK = 10
# placeholder for a "don't care" password to gradually transition to
# passwordless CI
CI_NO_PASSWORD = "CIPASSWORDDONTCARE"
...@@ -45,6 +45,7 @@ import cls_containerize #class Containerize for all container-based oper ...@@ -45,6 +45,7 @@ import cls_containerize #class Containerize for all container-based oper
import cls_static_code_analysis #class for static code analysis import cls_static_code_analysis #class for static code analysis
import cls_ci_ueinfra #class defining the multi Ue infrastrucure import cls_ci_ueinfra #class defining the multi Ue infrastrucure
import cls_physim1 #class PhySim for physical simulators deploy and run import cls_physim1 #class PhySim for physical simulators deploy and run
import cls_cluster # class for building/deploying on cluster
import sshconnection import sshconnection
import epc import epc
...@@ -102,20 +103,17 @@ def AssignParams(params_dict): ...@@ -102,20 +103,17 @@ def AssignParams(params_dict):
def GetParametersFromXML(action): def GetParametersFromXML(action):
if action == 'Build_eNB' or action == 'Build_Image' or action == 'Build_Proxy': if action == 'Build_eNB' or action == 'Build_Image' or action == 'Build_Proxy' or action == "Build_Cluster_Image":
RAN.Build_eNB_args=test.findtext('Build_eNB_args') RAN.Build_eNB_args=test.findtext('Build_eNB_args')
CONTAINERS.imageKind=test.findtext('kind') CONTAINERS.imageKind=test.findtext('kind')
forced_workspace_cleanup = test.findtext('forced_workspace_cleanup') forced_workspace_cleanup = test.findtext('forced_workspace_cleanup')
if (forced_workspace_cleanup is None): RAN.Build_eNB_forced_workspace_cleanup=False
RAN.Build_eNB_forced_workspace_cleanup=False CONTAINERS.forcedWorkspaceCleanup=False
CONTAINERS.forcedWorkspaceCleanup=False CLUSTER.forcedWorkspaceCleanup = False
else: if forced_workspace_cleanup is not None and re.match('true', forced_workspace_cleanup, re.IGNORECASE):
if re.match('true', forced_workspace_cleanup, re.IGNORECASE): RAN.Build_eNB_forced_workspace_cleanup = True
RAN.Build_eNB_forced_workspace_cleanup=True CONTAINERS.forcedWorkspaceCleanup = True
CONTAINERS.forcedWorkspaceCleanup=True CLUSTER.forcedWorkspaceCleanup = True
else:
RAN.Build_eNB_forced_workspace_cleanup=True
CONTAINERS.forcedWorkspaceCleanup=False
eNB_instance=test.findtext('eNB_instance') eNB_instance=test.findtext('eNB_instance')
if (eNB_instance is None): if (eNB_instance is None):
RAN.eNB_instance=0 RAN.eNB_instance=0
...@@ -534,6 +532,7 @@ HTML = cls_oai_html.HTMLManagement() ...@@ -534,6 +532,7 @@ HTML = cls_oai_html.HTMLManagement()
CONTAINERS = cls_containerize.Containerize() CONTAINERS = cls_containerize.Containerize()
SCA = cls_static_code_analysis.StaticCodeAnalysis() SCA = cls_static_code_analysis.StaticCodeAnalysis()
PHYSIM = cls_physim1.PhySim() PHYSIM = cls_physim1.PhySim()
CLUSTER = cls_cluster.Cluster()
ldpc=cls_physim.PhySim() #create an instance for LDPC test using GPU or CPU build ldpc=cls_physim.PhySim() #create an instance for LDPC test using GPU or CPU build
...@@ -543,7 +542,7 @@ ldpc=cls_physim.PhySim() #create an instance for LDPC test using GPU or CPU b ...@@ -543,7 +542,7 @@ ldpc=cls_physim.PhySim() #create an instance for LDPC test using GPU or CPU b
#----------------------------------------------------------- #-----------------------------------------------------------
import args_parse import args_parse
py_param_file_present, py_params, mode = args_parse.ArgsParse(sys.argv,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM) py_param_file_present, py_params, mode = args_parse.ArgsParse(sys.argv,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM,CLUSTER)
...@@ -931,6 +930,9 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re ...@@ -931,6 +930,9 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
HTML=ldpc.Run_NRulsimTest(HTML,CONST,id) HTML=ldpc.Run_NRulsimTest(HTML,CONST,id)
if ldpc.exitStatus==1: if ldpc.exitStatus==1:
RAN.prematureExit = True RAN.prematureExit = True
elif action == 'Build_Cluster_Image':
if not CLUSTER.BuildClusterImage(HTML):
RAN.prematureExit = True
elif action == 'Build_Image': elif action == 'Build_Image':
CONTAINERS.BuildImage(HTML) CONTAINERS.BuildImage(HTML)
elif action == 'Build_Proxy': elif action == 'Build_Proxy':
......
- Build_Proxy - Build_Proxy
- Build_Cluster_Image
- Build_PhySim - Build_PhySim
- Run_LDPCTest - Run_LDPCTest
- Run_NRulsimTest - Run_NRulsimTest
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>TEST-NSA-FR1-TM1</htmlTabRef> <htmlTabRef>TEST-NSA-FR1-TM1</htmlTabRef>
<htmlTabName>NSA Ping DL UL with QUECTEL</htmlTabName> <htmlTabName>NSA Ping DL UL with QUECTEL</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon> <htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>3</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
030000 030000
040000 040000
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>TEST-NSA-FR1-TM1</htmlTabRef> <htmlTabRef>TEST-NSA-FR1-TM1</htmlTabRef>
<htmlTabName>NSA Ping DL UL with QUECTEL</htmlTabName> <htmlTabName>NSA Ping DL UL with QUECTEL</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon> <htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>3</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
030000 030000
040000 040000
......
<!--
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The OpenAirInterface Software Alliance licenses this file to You under
the OAI Public License, Version 1.1 (the "License"); you may not use this file
except in compliance with the License.
You may obtain a copy of the License at
http://www.openairinterface.org/?page_id=698
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
For more information about the OpenAirInterface (OAI) Software Alliance:
contact@openairinterface.org
-->
<testCaseList>
<htmlTabRef>build-tab</htmlTabRef>
<htmlTabName>Build Images on Cluster</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon>
<TestCaseRequestedList>000001</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="000001">
<class>Build_Cluster_Image</class>
<desc>Build Images on OpenShift Cluster</desc>
</testCase>
</testCaseList>
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>l2sim-4glte-tdd</htmlTabRef> <htmlTabRef>l2sim-4glte-tdd</htmlTabRef>
<htmlTabName>Testing 4G LTE L2 sim - FDD eNB</htmlTabName> <htmlTabName>Testing 4G LTE L2 sim - FDD eNB</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon> <htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>2</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
100001 100001
000000 000000
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>rfsim-4glte-tdd05mhz</htmlTabRef> <htmlTabRef>rfsim-4glte-tdd05mhz</htmlTabRef>
<htmlTabName>Monolithic eNB - TDD 05MHz</htmlTabName> <htmlTabName>Monolithic eNB - TDD 05MHz</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon> <htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>2</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
100011 100011
000011 000011
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>rfsim-5gnr-fdd</htmlTabRef> <htmlTabRef>rfsim-5gnr-fdd</htmlTabRef>
<htmlTabName>Monolithic FDD gNB with SDAP</htmlTabName> <htmlTabName>Monolithic FDD gNB with SDAP</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon> <htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>4</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
100011 100011
000010 000010
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>l2sim-5gnr-tdd</htmlTabRef> <htmlTabRef>l2sim-5gnr-tdd</htmlTabRef>
<htmlTabName>Testing 5G NR L2 sim - TDD gNB</htmlTabName> <htmlTabName>Testing 5G NR L2 sim - TDD gNB</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon> <htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>2</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
100001 100001
000000 000000
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>rfsim-5gnr-tdd</htmlTabRef> <htmlTabRef>rfsim-5gnr-tdd</htmlTabRef>
<htmlTabName>Monolithic TDD gNB</htmlTabName> <htmlTabName>Monolithic TDD gNB</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon> <htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>4</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
100001 100001
000000 000000
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>test-05-tm1</htmlTabRef> <htmlTabRef>test-05-tm1</htmlTabRef>
<htmlTabName>Test-05MHz-TM1</htmlTabName> <htmlTabName>Test-05MHz-TM1</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon> <htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>4</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
030201 030201
040101 040101
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>test-05-tm1-nos1-tunnel</htmlTabRef> <htmlTabRef>test-05-tm1-nos1-tunnel</htmlTabRef>
<htmlTabName>Test-05MHz-TM1-noS1-tunnel</htmlTabName> <htmlTabName>Test-05MHz-TM1-noS1-tunnel</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon> <htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>4</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
030201 090109 030201 090109
030101 000001 090101 000002 040501 040502 000001 040601 040602 040641 040642 000001 090109 030201 030101 000001 090101 000002 040501 040502 000001 040601 040602 040641 040642 000001 090109 030201
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>test-05-tm1-fembms-nos1-tunnel</htmlTabRef> <htmlTabRef>test-05-tm1-fembms-nos1-tunnel</htmlTabRef>
<htmlTabName>Test-05MHz-FEMBMS-TM1-noS1-tunnel</htmlTabName> <htmlTabName>Test-05MHz-FEMBMS-TM1-noS1-tunnel</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon> <htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>2</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
030201 090109 030201 090109
030104 000001 090104 000002 040605 000001 090109 030201 030104 000001 090104 000002 040605 000001 090109 030201
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>test-05-tm1-mbms-nos1-tunnel</htmlTabRef> <htmlTabRef>test-05-tm1-mbms-nos1-tunnel</htmlTabRef>
<htmlTabName>Test-05MHz-MBMS-TM1-noS1-tunnel</htmlTabName> <htmlTabName>Test-05MHz-MBMS-TM1-noS1-tunnel</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon> <htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>2</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
030201 090109 030201 090109
030103 000001 090103 000002 040605 000001 090109 030201 030103 000001 090103 000002 040605 000001 090109 030201
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>test-05-tm1-tunnel</htmlTabRef> <htmlTabRef>test-05-tm1-tunnel</htmlTabRef>
<htmlTabName>Test-05MHz-TM1-tunnel</htmlTabName> <htmlTabName>Test-05MHz-TM1-tunnel</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon> <htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>2</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
030201 090109 030201 090109
030102 000001 090102 000002 040503 000001 040603 040604 040643 040644 000001 090109 030201 030102 000001 090102 000002 040503 000001 040603 040604 040643 040644 000001 090109 030201
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
<htmlTabRef>test-05-tm2</htmlTabRef> <htmlTabRef>test-05-tm2</htmlTabRef>
<htmlTabName>Test-05MHz-TM2</htmlTabName> <htmlTabName>Test-05MHz-TM2</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon> <htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>2</repeatCount> <repeatCount>1</repeatCount>
<TestUnstable>True</TestUnstable> <TestUnstable>True</TestUnstable>
<TestMinId>040608</TestMinId> <TestMinId>040608</TestMinId>
<TestCaseRequestedList> <TestCaseRequestedList>
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>test-20-tm1</htmlTabRef> <htmlTabRef>test-20-tm1</htmlTabRef>
<htmlTabName>Test-20MHz-TM1</htmlTabName> <htmlTabName>Test-20MHz-TM1</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon> <htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>4</repeatCount> <repeatCount>1</repeatCount>
<TestUnstable>True</TestUnstable> <TestUnstable>True</TestUnstable>
<TestMinId>040623</TestMinId> <TestMinId>040623</TestMinId>
<TestCaseRequestedList> <TestCaseRequestedList>
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>test-05-tm1-rrc-no-flex</htmlTabRef> <htmlTabRef>test-05-tm1-rrc-no-flex</htmlTabRef>
<htmlTabName>Test-05MHz-TM1-RRC-Inactivity</htmlTabName> <htmlTabName>Test-05MHz-TM1-RRC-Inactivity</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon> <htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>2</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
030201 030201
040101 040101
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>test-05-tm1-rrc-w-flex</htmlTabRef> <htmlTabRef>test-05-tm1-rrc-w-flex</htmlTabRef>
<htmlTabName>Test-05MHz-TM1-RRC-Inactivity-FlexRan</htmlTabName> <htmlTabName>Test-05MHz-TM1-RRC-Inactivity-FlexRan</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon> <htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>2</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
030201 030201
040101 040101
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>test-10-cdrx-tm1</htmlTabRef> <htmlTabRef>test-10-cdrx-tm1</htmlTabRef>
<htmlTabName>Test-10MHz-CDRX-TM1</htmlTabName> <htmlTabName>Test-10MHz-CDRX-TM1</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon> <htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>4</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
030201 030201
040101 040101
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>run-oai-gnb-nr-ue</htmlTabRef> <htmlTabRef>run-oai-gnb-nr-ue</htmlTabRef>
<htmlTabName>Run-gNB-and-NR-UE</htmlTabName> <htmlTabName>Run-gNB-and-NR-UE</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon> <htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>2</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
090101 000001 090102 000002 090108 090109 090101 000001 090102 000002 090108 090109
</TestCaseRequestedList> </TestCaseRequestedList>
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>run-oai-gnb-nr-ue-tx-write-thread</htmlTabRef> <htmlTabRef>run-oai-gnb-nr-ue-tx-write-thread</htmlTabRef>
<htmlTabName>Run-gNB-and-NR-UE-TX-Write-Thread</htmlTabName> <htmlTabName>Run-gNB-and-NR-UE-TX-Write-Thread</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon> <htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>2</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
090103 000001 090104 000002 090108 090109 090103 000001 090104 000002 090108 090109
</TestCaseRequestedList> </TestCaseRequestedList>
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>gnb-build-tab</htmlTabRef> <htmlTabRef>gnb-build-tab</htmlTabRef>
<htmlTabName>Build-gNB</htmlTabName> <htmlTabName>Build-gNB</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon> <htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>4</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
010101 010101
</TestCaseRequestedList> </TestCaseRequestedList>
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>test-10</htmlTabRef> <htmlTabRef>test-10</htmlTabRef>
<htmlTabName>Test-10MHz</htmlTabName> <htmlTabName>Test-10MHz</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon> <htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>2</repeatCount> <repeatCount>1</repeatCount>
<TestUnstable>True</TestUnstable> <TestUnstable>True</TestUnstable>
<TestMinId>040612</TestMinId> <TestMinId>040612</TestMinId>
<TestCaseRequestedList> <TestCaseRequestedList>
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>test-20</htmlTabRef> <htmlTabRef>test-20</htmlTabRef>
<htmlTabName>Test-20MHz</htmlTabName> <htmlTabName>Test-20MHz</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon> <htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>2</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
030201 030201
040101 040101
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>test-05-tm1-oai-ue</htmlTabRef> <htmlTabRef>test-05-tm1-oai-ue</htmlTabRef>
<htmlTabName>Test-05MHz-TM1-OAI-UE</htmlTabName> <htmlTabName>Test-05MHz-TM1-OAI-UE</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon> <htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>4</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
030201 090109 030201 090109
030102 000001 090102 000002 040503 000002 040603 040604 040643 040644 000002 090109 000001 030201 030102 000001 090102 000002 040503 000002 040603 040604 040643 040644 000002 090109 000001 030201
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>test-05-tm1-nos1-tunnel</htmlTabRef> <htmlTabRef>test-05-tm1-nos1-tunnel</htmlTabRef>
<htmlTabName>Test-05MHz-TM1-noS1-tunnel</htmlTabName> <htmlTabName>Test-05MHz-TM1-noS1-tunnel</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon> <htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>4</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
030201 090109 030201 090109
030101 000001 090101 000002 040501 040502 000001 040601 040602 040641 040642 000001 090109 030201 030101 000001 090101 000002 040501 040502 000001 040601 040602 040641 040642 000001 090109 030201
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>test-x2-ho-05-tm1</htmlTabRef> <htmlTabRef>test-x2-ho-05-tm1</htmlTabRef>
<htmlTabName>Test-X2-Handover-05MHz-TM1</htmlTabName> <htmlTabName>Test-X2-Handover-05MHz-TM1</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon> <htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>2</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
040101 030201 030202 040101 030201 030202
050102 050102
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>test-multi-rru-10</htmlTabRef> <htmlTabRef>test-multi-rru-10</htmlTabRef>
<htmlTabName>Test-Multi-RRU-10MHz</htmlTabName> <htmlTabName>Test-Multi-RRU-10MHz</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon> <htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>2</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
030211 030212 030213 030211 030212 030213
030111 030112 030113 030111 030112 030113
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>nr-ue-build-tab</htmlTabRef> <htmlTabRef>nr-ue-build-tab</htmlTabRef>
<htmlTabName>Build-NR-UE</htmlTabName> <htmlTabName>Build-NR-UE</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon> <htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>2</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
010102 010102
</TestCaseRequestedList> </TestCaseRequestedList>
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>test-10mhz-orange</htmlTabRef> <htmlTabRef>test-10mhz-orange</htmlTabRef>
<htmlTabName>Test-10Mhz-Orange</htmlTabName> <htmlTabName>Test-10Mhz-Orange</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon> <htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>4</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
090109 090109
090110 000001 090109 090110 000001 090109
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<htmlTabRef>test-10mHz-sfr</htmlTabRef> <htmlTabRef>test-10mHz-sfr</htmlTabRef>
<htmlTabName>Test-10MHz-SFR</htmlTabName> <htmlTabName>Test-10MHz-SFR</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon> <htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>4</repeatCount> <repeatCount>1</repeatCount>
<TestCaseRequestedList> <TestCaseRequestedList>
090109 090109
090111 000001 090109 090111 000001 090109
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
<htmlTabRef>test-x2-ho-05-tm1</htmlTabRef> <htmlTabRef>test-x2-ho-05-tm1</htmlTabRef>
<htmlTabName>Test-X2-HO-FDD-05MHz-TM1</htmlTabName> <htmlTabName>Test-X2-HO-FDD-05MHz-TM1</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon> <htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>2</repeatCount> <repeatCount>1</repeatCount>
<TestUnstable>True</TestUnstable> <TestUnstable>True</TestUnstable>
<TestCaseRequestedList> <TestCaseRequestedList>
030201 030202 030201 030202
......
...@@ -2,7 +2,7 @@ version: '3.8' ...@@ -2,7 +2,7 @@ version: '3.8'
services: services:
oai-nrf: oai-nrf:
container_name: "rfsim5g-oai-nrf" container_name: "rfsim5g-oai-nrf"
image: oai-nrf:latest image: oai-nrf:august-dev
environment: environment:
- NRF_INTERFACE_NAME_FOR_SBI=eth0 - NRF_INTERFACE_NAME_FOR_SBI=eth0
- NRF_INTERFACE_PORT_FOR_SBI=80 - NRF_INTERFACE_PORT_FOR_SBI=80
...@@ -42,7 +42,7 @@ services: ...@@ -42,7 +42,7 @@ services:
ipv4_address: 192.168.71.131 ipv4_address: 192.168.71.131
oai-amf: oai-amf:
container_name: "rfsim5g-oai-amf" container_name: "rfsim5g-oai-amf"
image: oai-amf:latest image: oai-amf:august-dev
environment: environment:
- TZ=Europe/paris - TZ=Europe/paris
- INSTANCE=0 - INSTANCE=0
...@@ -63,9 +63,9 @@ services: ...@@ -63,9 +63,9 @@ services:
- PLMN_SUPPORT_MNC=99 - PLMN_SUPPORT_MNC=99
- PLMN_SUPPORT_TAC=0x0001 - PLMN_SUPPORT_TAC=0x0001
- SST_0=1 - SST_0=1
- SD_0=1 - SD_0=0xffffff
- SST_1=1 - SST_1=1
- SD_1=12 - SD_1=1
- AMF_INTERFACE_NAME_FOR_NGAP=eth0 - AMF_INTERFACE_NAME_FOR_NGAP=eth0
- AMF_INTERFACE_NAME_FOR_N11=eth0 - AMF_INTERFACE_NAME_FOR_N11=eth0
- SMF_INSTANCE_ID_0=1 - SMF_INSTANCE_ID_0=1
...@@ -110,7 +110,7 @@ services: ...@@ -110,7 +110,7 @@ services:
ipv4_address: 192.168.71.132 ipv4_address: 192.168.71.132
oai-smf: oai-smf:
container_name: "rfsim5g-oai-smf" container_name: "rfsim5g-oai-smf"
image: oai-smf:latest image: oai-smf:august-dev
environment: environment:
- TZ=Europe/Paris - TZ=Europe/Paris
- INSTANCE=0 - INSTANCE=0
...@@ -140,6 +140,12 @@ services: ...@@ -140,6 +140,12 @@ services:
- DISCOVER_UPF=yes - DISCOVER_UPF=yes
- USE_FQDN_DNS=yes - USE_FQDN_DNS=yes
- DNN_NI0=oai - DNN_NI0=oai
- TYPE0=IPv4
- DNN_RANGE0=12.1.1.2 - 12.1.1.127
- NSSAI_SST0=1
- NSSAI_SD0=0xFFFFFF
- SESSION_AMBR_UL0=200Mbps
- SESSION_AMBR_DL0=400Mbps
- DNN_NI2=oai.ipv4 - DNN_NI2=oai.ipv4
depends_on: depends_on:
- oai-nrf - oai-nrf
...@@ -156,7 +162,7 @@ services: ...@@ -156,7 +162,7 @@ services:
ipv4_address: 192.168.71.133 ipv4_address: 192.168.71.133
oai-spgwu: oai-spgwu:
container_name: "rfsim5g-oai-spgwu" container_name: "rfsim5g-oai-spgwu"
image: oai-spgwu-tiny:latest image: oai-spgwu-tiny:august-dev
environment: environment:
- TZ=Europe/Paris - TZ=Europe/Paris
- PID_DIRECTORY=/var/run - PID_DIRECTORY=/var/run
...@@ -183,7 +189,7 @@ services: ...@@ -183,7 +189,7 @@ services:
- NRF_API_VERSION=v1 - NRF_API_VERSION=v1
- NRF_FQDN=oai-nrf - NRF_FQDN=oai-nrf
- NSSAI_SST_0=1 - NSSAI_SST_0=1
- NSSAI_SD_0=1 - NSSAI_SD_0=0xffffff
- DNN_0=oai - DNN_0=oai
depends_on: depends_on:
- oai-nrf - oai-nrf
...@@ -237,8 +243,6 @@ services: ...@@ -237,8 +243,6 @@ services:
MNC: '99' MNC: '99'
MNC_LENGTH: 2 MNC_LENGTH: 2
NSSAI_SST: 1 NSSAI_SST: 1
NSSAI_SD0: 1
NSSAI_SD1: 112233
AMF_IP_ADDRESS: 192.168.71.132 AMF_IP_ADDRESS: 192.168.71.132
GNB_NGA_IF_NAME: eth0 GNB_NGA_IF_NAME: eth0
GNB_NGA_IP_ADDRESS: 192.168.71.140 GNB_NGA_IP_ADDRESS: 192.168.71.140
...@@ -273,8 +277,6 @@ services: ...@@ -273,8 +277,6 @@ services:
MNC: '99' MNC: '99'
MNC_LENGTH: 2 MNC_LENGTH: 2
NSSAI_SST: 1 NSSAI_SST: 1
NSSAI_SD0: 1
NSSAI_SD1: 112233
AMF_IP_ADDRESS: 192.168.71.132 AMF_IP_ADDRESS: 192.168.71.132
GNB_NGA_IF_NAME: eth0 GNB_NGA_IF_NAME: eth0
GNB_NGA_IP_ADDRESS: 192.168.71.142 GNB_NGA_IP_ADDRESS: 192.168.71.142
...@@ -307,7 +309,6 @@ services: ...@@ -307,7 +309,6 @@ services:
OPC: 'C42449363BBAD02B66D16BC975D77CC1' OPC: 'C42449363BBAD02B66D16BC975D77CC1'
DNN: oai DNN: oai
NSSAI_SST: 1 NSSAI_SST: 1
NSSAI_SD: 1
USE_ADDITIONAL_OPTIONS: --sa --rfsim -r 106 --numerology 1 -C 3619200000 --nokrnmod --log_config.global_log_options level,nocolor,time USE_ADDITIONAL_OPTIONS: --sa --rfsim -r 106 --numerology 1 -C 3619200000 --nokrnmod --log_config.global_log_options level,nocolor,time
depends_on: depends_on:
- oai-du - oai-du
......
...@@ -2,7 +2,7 @@ version: '3.8' ...@@ -2,7 +2,7 @@ version: '3.8'
services: services:
oai-nrf: oai-nrf:
container_name: "rfsim5g-oai-nrf" container_name: "rfsim5g-oai-nrf"
image: oai-nrf:latest image: oai-nrf:august-dev
environment: environment:
- NRF_INTERFACE_NAME_FOR_SBI=eth0 - NRF_INTERFACE_NAME_FOR_SBI=eth0
- NRF_INTERFACE_PORT_FOR_SBI=80 - NRF_INTERFACE_PORT_FOR_SBI=80
...@@ -42,7 +42,7 @@ services: ...@@ -42,7 +42,7 @@ services:
ipv4_address: 192.168.71.131 ipv4_address: 192.168.71.131
oai-amf: oai-amf:
container_name: "rfsim5g-oai-amf" container_name: "rfsim5g-oai-amf"
image: oai-amf:latest image: oai-amf:august-dev
environment: environment:
- TZ=Europe/paris - TZ=Europe/paris
- INSTANCE=0 - INSTANCE=0
...@@ -63,9 +63,9 @@ services: ...@@ -63,9 +63,9 @@ services:
- PLMN_SUPPORT_MNC=99 - PLMN_SUPPORT_MNC=99
- PLMN_SUPPORT_TAC=0x0001 - PLMN_SUPPORT_TAC=0x0001
- SST_0=1 - SST_0=1
- SD_0=1 - SD_0=0xffffff
- SST_1=1 - SST_1=1
- SD_1=12 - SD_1=1
- AMF_INTERFACE_NAME_FOR_NGAP=eth0 - AMF_INTERFACE_NAME_FOR_NGAP=eth0
- AMF_INTERFACE_NAME_FOR_N11=eth0 - AMF_INTERFACE_NAME_FOR_N11=eth0
- SMF_INSTANCE_ID_0=1 - SMF_INSTANCE_ID_0=1
...@@ -110,7 +110,7 @@ services: ...@@ -110,7 +110,7 @@ services:
ipv4_address: 192.168.71.132 ipv4_address: 192.168.71.132
oai-smf: oai-smf:
container_name: "rfsim5g-oai-smf" container_name: "rfsim5g-oai-smf"
image: oai-smf:latest image: oai-smf:august-dev
environment: environment:
- TZ=Europe/Paris - TZ=Europe/Paris
- INSTANCE=0 - INSTANCE=0
...@@ -140,6 +140,12 @@ services: ...@@ -140,6 +140,12 @@ services:
- DISCOVER_UPF=yes - DISCOVER_UPF=yes
- USE_FQDN_DNS=yes - USE_FQDN_DNS=yes
- DNN_NI0=oai - DNN_NI0=oai
- TYPE0=IPv4
- DNN_RANGE0=12.1.1.2 - 12.1.1.127
- NSSAI_SST0=1
- NSSAI_SD0=0xFFFFFF
- SESSION_AMBR_UL0=200Mbps
- SESSION_AMBR_DL0=400Mbps
- DNN_NI2=oai.ipv4 - DNN_NI2=oai.ipv4
depends_on: depends_on:
- oai-nrf - oai-nrf
...@@ -156,7 +162,7 @@ services: ...@@ -156,7 +162,7 @@ services:
ipv4_address: 192.168.71.133 ipv4_address: 192.168.71.133
oai-spgwu: oai-spgwu:
container_name: "rfsim5g-oai-spgwu" container_name: "rfsim5g-oai-spgwu"
image: oai-spgwu-tiny:latest image: oai-spgwu-tiny:august-dev
environment: environment:
- TZ=Europe/Paris - TZ=Europe/Paris
- PID_DIRECTORY=/var/run - PID_DIRECTORY=/var/run
...@@ -183,7 +189,7 @@ services: ...@@ -183,7 +189,7 @@ services:
- NRF_API_VERSION=v1 - NRF_API_VERSION=v1
- NRF_FQDN=oai-nrf - NRF_FQDN=oai-nrf
- NSSAI_SST_0=1 - NSSAI_SST_0=1
- NSSAI_SD_0=1 - NSSAI_SD_0=0xffffff
- DNN_0=oai - DNN_0=oai
depends_on: depends_on:
- oai-nrf - oai-nrf
...@@ -237,8 +243,6 @@ services: ...@@ -237,8 +243,6 @@ services:
MNC: '99' MNC: '99'
MNC_LENGTH: 2 MNC_LENGTH: 2
NSSAI_SST: 1 NSSAI_SST: 1
NSSAI_SD0: 1
NSSAI_SD1: 112233
AMF_IP_ADDRESS: 192.168.71.132 AMF_IP_ADDRESS: 192.168.71.132
GNB_NGA_IF_NAME: eth0 GNB_NGA_IF_NAME: eth0
GNB_NGA_IP_ADDRESS: 192.168.71.140 GNB_NGA_IP_ADDRESS: 192.168.71.140
...@@ -266,7 +270,6 @@ services: ...@@ -266,7 +270,6 @@ services:
OPC: 'C42449363BBAD02B66D16BC975D77CC1' OPC: 'C42449363BBAD02B66D16BC975D77CC1'
DNN: oai DNN: oai
NSSAI_SST: 1 NSSAI_SST: 1
NSSAI_SD: 1
USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 --band 66 -C 2169080000 --CO -400000000 -s 396 --nokrnmod --log_config.global_log_options level,nocolor,time USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 --band 66 -C 2169080000 --CO -400000000 -s 396 --nokrnmod --log_config.global_log_options level,nocolor,time
depends_on: depends_on:
- oai-gnb - oai-gnb
......
...@@ -63,9 +63,9 @@ services: ...@@ -63,9 +63,9 @@ services:
- PLMN_SUPPORT_MNC=99 - PLMN_SUPPORT_MNC=99
- PLMN_SUPPORT_TAC=0x0001 - PLMN_SUPPORT_TAC=0x0001
- SST_0=1 - SST_0=1
- SD_0=1 - SD_0=0xffffff
- SST_1=1 - SST_1=1
- SD_1=12 - SD_1=1
- AMF_INTERFACE_NAME_FOR_NGAP=eth0 - AMF_INTERFACE_NAME_FOR_NGAP=eth0
- AMF_INTERFACE_NAME_FOR_N11=eth0 - AMF_INTERFACE_NAME_FOR_N11=eth0
- SMF_INSTANCE_ID_0=1 - SMF_INSTANCE_ID_0=1
...@@ -140,6 +140,12 @@ services: ...@@ -140,6 +140,12 @@ services:
- DISCOVER_UPF=yes - DISCOVER_UPF=yes
- USE_FQDN_DNS=yes - USE_FQDN_DNS=yes
- DNN_NI0=oai - DNN_NI0=oai
- TYPE0=IPv4
- DNN_RANGE0=12.1.1.2 - 12.1.1.127
- NSSAI_SST0=1
- NSSAI_SD0=0xFFFFFF
- SESSION_AMBR_UL0=200Mbps
- SESSION_AMBR_DL0=400Mbps
- DNN_NI2=oai.ipv4 - DNN_NI2=oai.ipv4
depends_on: depends_on:
- oai-nrf - oai-nrf
...@@ -183,7 +189,7 @@ services: ...@@ -183,7 +189,7 @@ services:
- NRF_API_VERSION=v1 - NRF_API_VERSION=v1
- NRF_FQDN=oai-nrf - NRF_FQDN=oai-nrf
- NSSAI_SST_0=1 - NSSAI_SST_0=1
- NSSAI_SD_0=1 - NSSAI_SD_0=0xffffff
- DNN_0=oai - DNN_0=oai
depends_on: depends_on:
- oai-nrf - oai-nrf
...@@ -237,8 +243,6 @@ services: ...@@ -237,8 +243,6 @@ services:
MNC: '99' MNC: '99'
MNC_LENGTH: 2 MNC_LENGTH: 2
NSSAI_SST: 1 NSSAI_SST: 1
NSSAI_SD0: 1
NSSAI_SD1: 112233
AMF_IP_ADDRESS: 192.168.71.132 AMF_IP_ADDRESS: 192.168.71.132
GNB_NGA_IF_NAME: eno1 GNB_NGA_IF_NAME: eno1
GNB_NGA_IP_ADDRESS: 172.21.16.128 GNB_NGA_IP_ADDRESS: 172.21.16.128
...@@ -287,7 +291,7 @@ services: ...@@ -287,7 +291,7 @@ services:
OPC: 'C42449363BBAD02B66D16BC975D77CC1' OPC: 'C42449363BBAD02B66D16BC975D77CC1'
DNN: oai DNN: oai
NSSAI_SST: 1 NSSAI_SST: 1
NSSAI_SD: 1 NSSAI_SD: 0xffffff
NR_UE_NFAPI_IF_NAME: eno1 NR_UE_NFAPI_IF_NAME: eno1
GNB_IP_ADDRESS: 127.0.0.1 GNB_IP_ADDRESS: 127.0.0.1
NR_UE_IP_ADDRESS: 127.0.0.1 NR_UE_IP_ADDRESS: 127.0.0.1
......
...@@ -274,7 +274,6 @@ Create entry for Second UE in docker-compose.yaml file as follows: ...@@ -274,7 +274,6 @@ Create entry for Second UE in docker-compose.yaml file as follows:
OPC: 'C42449363BBAD02B66D16BC975D77CC1' OPC: 'C42449363BBAD02B66D16BC975D77CC1'
DNN: oai DNN: oai
NSSAI_SST: 1 NSSAI_SST: 1
NSSAI_SD: 1
USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 -C 3619200000 --nokrnmod --log_config.global_log_options level,nocolor,time USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 -C 3619200000 --nokrnmod --log_config.global_log_options level,nocolor,time
depends_on: depends_on:
- oai-gnb - oai-gnb
......
...@@ -63,9 +63,9 @@ services: ...@@ -63,9 +63,9 @@ services:
- PLMN_SUPPORT_MNC=99 - PLMN_SUPPORT_MNC=99
- PLMN_SUPPORT_TAC=0x0001 - PLMN_SUPPORT_TAC=0x0001
- SST_0=1 - SST_0=1
- SD_0=1 - SD_0=0xffffff
- SST_1=1 - SST_1=1
- SD_1=12 - SD_1=1
- AMF_INTERFACE_NAME_FOR_NGAP=eth0 - AMF_INTERFACE_NAME_FOR_NGAP=eth0
- AMF_INTERFACE_NAME_FOR_N11=eth0 - AMF_INTERFACE_NAME_FOR_N11=eth0
- SMF_INSTANCE_ID_0=1 - SMF_INSTANCE_ID_0=1
...@@ -140,6 +140,12 @@ services: ...@@ -140,6 +140,12 @@ services:
- DISCOVER_UPF=yes - DISCOVER_UPF=yes
- USE_FQDN_DNS=yes - USE_FQDN_DNS=yes
- DNN_NI0=oai - DNN_NI0=oai
- TYPE0=IPv4
- DNN_RANGE0=12.1.1.2 - 12.1.1.127
- NSSAI_SST0=1
- NSSAI_SD0=0xFFFFFF
- SESSION_AMBR_UL0=200Mbps
- SESSION_AMBR_DL0=400Mbps
- DNN_NI2=oai.ipv4 - DNN_NI2=oai.ipv4
depends_on: depends_on:
- oai-nrf - oai-nrf
...@@ -183,7 +189,7 @@ services: ...@@ -183,7 +189,7 @@ services:
- NRF_API_VERSION=v1 - NRF_API_VERSION=v1
- NRF_FQDN=oai-nrf - NRF_FQDN=oai-nrf
- NSSAI_SST_0=1 - NSSAI_SST_0=1
- NSSAI_SD_0=1 - NSSAI_SD_0=0xffffff
- DNN_0=oai - DNN_0=oai
depends_on: depends_on:
- oai-nrf - oai-nrf
...@@ -237,8 +243,6 @@ services: ...@@ -237,8 +243,6 @@ services:
MNC: '99' MNC: '99'
MNC_LENGTH: 2 MNC_LENGTH: 2
NSSAI_SST: 1 NSSAI_SST: 1
NSSAI_SD0: 1
NSSAI_SD1: 112233
AMF_IP_ADDRESS: 192.168.71.132 AMF_IP_ADDRESS: 192.168.71.132
GNB_NGA_IF_NAME: eth0 GNB_NGA_IF_NAME: eth0
GNB_NGA_IP_ADDRESS: 192.168.71.140 GNB_NGA_IP_ADDRESS: 192.168.71.140
...@@ -266,7 +270,6 @@ services: ...@@ -266,7 +270,6 @@ services:
OPC: 'C42449363BBAD02B66D16BC975D77CC1' OPC: 'C42449363BBAD02B66D16BC975D77CC1'
DNN: oai DNN: oai
NSSAI_SST: 1 NSSAI_SST: 1
NSSAI_SD: 1
USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 -C 3619200000 --nokrnmod --log_config.global_log_options level,nocolor,time USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 -C 3619200000 --nokrnmod --log_config.global_log_options level,nocolor,time
depends_on: depends_on:
- oai-gnb - oai-gnb
...@@ -290,7 +293,6 @@ services: ...@@ -290,7 +293,6 @@ services:
OPC: 'C42449363BBAD02B66D16BC975D77CC1' OPC: 'C42449363BBAD02B66D16BC975D77CC1'
DNN: oai DNN: oai
NSSAI_SST: 1 NSSAI_SST: 1
NSSAI_SD: 1
USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 -C 3619200000 --nokrnmod --log_config.global_log_options level,nocolor,time USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 -C 3619200000 --nokrnmod --log_config.global_log_options level,nocolor,time
depends_on: depends_on:
- oai-gnb - oai-gnb
......
...@@ -1241,6 +1241,7 @@ add_library(UTIL ...@@ -1241,6 +1241,7 @@ add_library(UTIL
${OPENAIR_DIR}/common/utils/system.c ${OPENAIR_DIR}/common/utils/system.c
${OPENAIR_DIR}/common/utils/backtrace.c ${OPENAIR_DIR}/common/utils/backtrace.c
${OPENAIR_DIR}/common/utils/time_meas.c ${OPENAIR_DIR}/common/utils/time_meas.c
${OPENAIR_DIR}/common/utils/time_stat.c
) )
set(SECU_OSA_SRC set(SECU_OSA_SRC
......
...@@ -113,7 +113,7 @@ void config_check_valptr(paramdef_t *cfgoptions, int elt_sz, int nb_elt) { ...@@ -113,7 +113,7 @@ void config_check_valptr(paramdef_t *cfgoptions, int elt_sz, int nb_elt) {
sz=managed_ptr_sz(*cfgoptions->strptr); sz=managed_ptr_sz(*cfgoptions->strptr);
else else
sz=managed_ptr_sz(cfgoptions->voidptr); sz=managed_ptr_sz(cfgoptions->voidptr);
if ( sz != -1) { if ( sz == -1) {
CONFIG_PRINTF_ERROR("[CONFIG] %s NOT SUPPORTED not NULL pointer with array types", cfgoptions->optname); CONFIG_PRINTF_ERROR("[CONFIG] %s NOT SUPPORTED not NULL pointer with array types", cfgoptions->optname);
return ; return ;
} }
......
...@@ -17,8 +17,6 @@ ...@@ -17,8 +17,6 @@
#ifndef __COMMON_UTILS_T_TRACER_PACKET_MAC_LTE__H__ #ifndef __COMMON_UTILS_T_TRACER_PACKET_MAC_LTE__H__
#define __COMMON_UTILS_T_TRACER_PACKET_MAC_LTE__H__ #define __COMMON_UTILS_T_TRACER_PACKET_MAC_LTE__H__
//#include "ws_symbol_export.h"
/* radioType */ /* radioType */
#define FDD_RADIO 1 #define FDD_RADIO 1
#define TDD_RADIO 2 #define TDD_RADIO 2
......
...@@ -724,3 +724,4 @@ void SLIV2SL(int SLIV,int *S,int *L) { ...@@ -724,3 +724,4 @@ void SLIV2SL(int SLIV,int *S,int *L) {
*S=13-SLIVmod14; *S=13-SLIVmod14;
} }
} }
...@@ -56,10 +56,9 @@ typedef enum frequency_range_e { ...@@ -56,10 +56,9 @@ typedef enum frequency_range_e {
} frequency_range_t; } frequency_range_t;
extern const nr_bandentry_t nr_bandtable[]; extern const nr_bandentry_t nr_bandtable[];
static inline int get_num_dmrs(uint16_t dmrs_mask ) {
static inline int get_num_dmrs(uint16_t dmrs_mask ) {
int num_dmrs=0; int num_dmrs=0;
for (int i=0;i<16;i++) num_dmrs+=((dmrs_mask>>i)&1); for (int i=0;i<16;i++) num_dmrs+=((dmrs_mask>>i)&1);
return(num_dmrs); return(num_dmrs);
} }
......
...@@ -171,6 +171,8 @@ extern "C" { ...@@ -171,6 +171,8 @@ extern "C" {
AssertFatal(epoll_ctl(t->epoll_fd, EPOLL_CTL_ADD, fd, &event) == 0, AssertFatal(epoll_ctl(t->epoll_fd, EPOLL_CTL_ADD, fd, &event) == 0,
"epoll_ctl (EPOLL_CTL_ADD) failed for task %s, fd %d: %s!\n", "epoll_ctl (EPOLL_CTL_ADD) failed for task %s, fd %d: %s!\n",
itti_get_task_name(task_id), fd, strerror(errno)); itti_get_task_name(task_id), fd, strerror(errno));
eventfd_t sem_counter = 1;
AssertFatal ( sizeof(sem_counter) == write(t->sem_fd, &sem_counter, sizeof(sem_counter)), "");
} }
void itti_unsubscribe_event_fd(task_id_t task_id, int fd) { void itti_unsubscribe_event_fd(task_id_t task_id, int fd) {
...@@ -274,16 +276,12 @@ extern "C" { ...@@ -274,16 +276,12 @@ extern "C" {
struct epoll_event events[t->nb_fd_epoll]; struct epoll_event events[t->nb_fd_epoll];
// Weird condition to deal with crap legacy itti interface // Weird condition to deal with crap legacy itti interface
if ( t->nb_fd_epoll == 1 ) { if (t->message_queue.empty()) {
while (t->message_queue.empty()) { do {
itti_get_events_locked(task_id, events, t->nb_fd_epoll);
pthread_mutex_lock(&t->queue_cond_lock);
}
} else {
if (t->message_queue.empty()) {
itti_get_events_locked(task_id, events, t->nb_fd_epoll); itti_get_events_locked(task_id, events, t->nb_fd_epoll);
pthread_mutex_lock(&t->queue_cond_lock); pthread_mutex_lock(&t->queue_cond_lock);
} }
while (t->message_queue.empty() && t->nb_fd_epoll == 1);
} }
// Legacy design: we return even if we have no message // Legacy design: we return even if we have no message
......
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#include "time_stat.h"
#include <time.h>
#include <stdlib.h>
#include <string.h>
#include "common/utils/LOG/log.h"
time_average_t *time_average_new(int duration, int initial_size)
{
time_average_t *ret;
/* let's only accept power of two initial_size */
if (initial_size & (initial_size - 1)) {
LOG_E(UTIL, "time_average_new: illegal initial_size %d, use power of two\n", initial_size);
exit(1);
}
ret = calloc(1, sizeof(time_average_t));
if (ret == NULL) {
LOG_E(UTIL, "out of memory\n");
exit(1);
}
ret->duration = duration;
ret->r.head = initial_size - 1;
ret->r.maxsize = initial_size;
ret->r.buffer = calloc(initial_size, sizeof(time_value_t));
if (ret->r.buffer == NULL) {
LOG_E(UTIL, "out of memory\n");
exit(1);
}
return ret;
}
void time_average_free(time_average_t *t)
{
free(t->r.buffer);
free(t);
}
void time_average_reset(time_average_t *t)
{
t->r.head = t->r.maxsize - 1;
t->r.tail = 0;
t->r.size = 0;
t->accumulated_value = 0;
}
static void remove_old(time_average_t *t, uint64_t time)
{
/* remove old events */
while (t->r.size && t->r.buffer[t->r.tail].time < time - t->duration) {
t->accumulated_value -= t->r.buffer[t->r.tail].value;
t->r.size--;
t->r.tail++;
t->r.tail %= t->r.maxsize;
}
}
void time_average_add(time_average_t *t, uint64_t time, uint64_t value)
{
remove_old(t, time);
if (t->r.size == t->r.maxsize) {
t->r.maxsize *= 2;
t->r.buffer = realloc(t->r.buffer, t->r.maxsize * sizeof(time_value_t));
if (t->r.buffer == NULL) {
LOG_E(UTIL, "out of memory\n");
exit(1);
}
if (t->r.head < t->r.tail) {
memcpy(&t->r.buffer[t->r.size], &t->r.buffer[0], (t->r.head + 1) * sizeof(time_value_t));
t->r.head += t->r.size;
}
}
t->r.head++;
t->r.head %= t->r.maxsize;
t->r.buffer[t->r.head].time = time;
t->r.buffer[t->r.head].value = value;
t->r.size++;
t->accumulated_value += value;
}
double time_average_get_average(time_average_t *t, uint64_t time)
{
remove_old(t, time);
if (t->r.size == 0)
return 0;
return (double)t->accumulated_value / t->r.size;
}
uint64_t time_average_now(void)
{
struct timespec t;
uint64_t ret;
if (clock_gettime(CLOCK_REALTIME, &t)) {
LOG_E(UTIL, "clock_gettime failed\n");
exit(1);
}
ret = (uint64_t)t.tv_sec * (uint64_t)1000000 + t.tv_nsec / 1000;
/* round up if necessary */
if (t.tv_nsec % 1000 >= 500)
ret++;
return ret;
}
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#ifndef _COMMON_UTIL_TIME_STAT_H_
#define _COMMON_UTIL_TIME_STAT_H_
#include <stdint.h>
typedef struct {
uint64_t time; /* unit: microsecond */
uint64_t value; /* unit: microsecond */
} time_value_t;
typedef struct {
int head;
int tail;
time_value_t *buffer;
int maxsize;
int size;
} time_ring_t;
typedef struct {
int duration; /* unit: microsecond */
time_ring_t r;
uint64_t accumulated_value;
} time_average_t;
/* 'duration' is in unit microsecond */
time_average_t *time_average_new(int duration, int initial_size);
void time_average_free(time_average_t *t);
void time_average_reset(time_average_t *t);
/* add a value tagged with time 'time' unit microsecond (it also modifies 't',
* removing all data with time < 'time' - t->duration)
*/
void time_average_add(time_average_t *t, uint64_t time, uint64_t value);
/* get the average for time 'time' (it also modifies 't', removing all
* data with time < 'time' - t->duration)
*/
double time_average_get_average(time_average_t *t, uint64_t time);
/* unit microsecond */
uint64_t time_average_now(void);
#endif /* _COMMON_UTIL_TIME_STAT_H_ */
...@@ -105,8 +105,9 @@ Webhook ...@@ -105,8 +105,9 @@ Webhook
- [RAN-RF-Sim-Test-5G](https://jenkins-oai.eurecom.fr/job/RAN-RF-Sim-Test-5G/) - [RAN-RF-Sim-Test-5G](https://jenkins-oai.eurecom.fr/job/RAN-RF-Sim-Test-5G/)
- obelix (gNB, 2x UE, OAI 5GC) - obelix (gNB, 2x UE, OAI 5GC)
- uses RFsimulator, TDD 40MHz, FDD 40MHz, F1 split - uses RFsimulator, TDD 40MHz, FDD 40MHz, F1 split
- [RAN-RHEL8-Image-Builder](https://jenkins-oai.eurecom.fr/job/RAN-RHEL8-Image-Builder/) - [RAN-RHEL8-Cluster-Image-Builder](https://jenkins-oai.eurecom.fr/job/RAN-RHEL8-Cluster-Image-Builder/)
- asterix: RHEL 8 image build using podman - asterix (`Asterix-OC-oaicicd-session` resource): RHEL 8 image build using
the OpenShift in Eurecom
- [RAN-Ubuntu18-Image-Builder](https://jenkins-oai.eurecom.fr/job/RAN-Ubuntu18-Image-Builder/) - [RAN-Ubuntu18-Image-Builder](https://jenkins-oai.eurecom.fr/job/RAN-Ubuntu18-Image-Builder/)
- obelix: Ubuntu 18 image build using docker - obelix: Ubuntu 18 image build using docker
......
...@@ -68,21 +68,7 @@ In the following, we highlight the fields of the file that have to be configured ...@@ -68,21 +68,7 @@ In the following, we highlight the fields of the file that have to be configured
```bash ```bash
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1; tracking_area_code = 1;
plmn_list = ({ plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ({ sst = 1 }) });
mcc = 208;
mnc = 99;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x1; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
``` ```
Then, the source and destination IP interfaces for the communication with Then, the source and destination IP interfaces for the communication with
the Core Network also need to be set as shown below. the Core Network also need to be set as shown below.
......
...@@ -314,7 +314,7 @@ services: ...@@ -314,7 +314,7 @@ services:
- NRF_API_VERSION=v1 - NRF_API_VERSION=v1
- NRF_FQDN=oai-nrf - NRF_FQDN=oai-nrf
- NSSAI_SST_0=1 - NSSAI_SST_0=1
- NSSAI_SD_0=0x1 - NSSAI_SD_0=0xffffff
- DNN_0=oai - DNN_0=oai
depends_on: depends_on:
- oai-nrf - oai-nrf
......
...@@ -32,8 +32,12 @@ ENV TZ=Europe/Paris ...@@ -32,8 +32,12 @@ ENV TZ=Europe/Paris
ENV BUILD_UHD_FROM_SOURCE=True ENV BUILD_UHD_FROM_SOURCE=True
ENV UHD_VERSION=3.15.0.0 ENV UHD_VERSION=3.15.0.0
COPY tmp/ca/redhat-uep.pem /etc/rhsm/ca # Copy the entitlements
COPY tmp/entitlement/*.pem /etc/pki/entitlement COPY ./etc-pki-entitlement /etc/pki/entitlement
# Copy the subscription manager configurations
COPY ./rhsm-conf /etc/rhsm
COPY ./rhsm-ca /etc/rhsm/ca
#install developers pkg/repo #install developers pkg/repo
RUN rm -f /etc/rhsm-host && \ RUN rm -f /etc/rhsm-host && \
......
...@@ -35,4 +35,4 @@ COPY . . ...@@ -35,4 +35,4 @@ COPY . .
RUN /bin/sh oaienv && \ RUN /bin/sh oaienv && \
cd cmake_targets && \ cd cmake_targets && \
mkdir -p log && \ mkdir -p log && \
./build_oai --eNB --gNB --RU --UE --nrUE --ninja --build-lib all -w USRP --verbose-ci --noavx512 ./build_oai --eNB --gNB --RU --UE --nrUE --ninja --build-lib all -w USRP --verbose-ci --noavx512 -c
...@@ -35,4 +35,4 @@ COPY . . ...@@ -35,4 +35,4 @@ COPY . .
RUN /bin/sh oaienv && \ RUN /bin/sh oaienv && \
cd cmake_targets && \ cd cmake_targets && \
mkdir -p log && \ mkdir -p log && \
./build_oai --eNB --gNB --RU --UE --nrUE --ninja --build-lib all -w USRP --verbose-ci --noavx512 ./build_oai --eNB --gNB --RU --UE --nrUE --ninja --build-lib all -w USRP --verbose-ci --noavx512 -c
#/*
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements. See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# * http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# * contact@openairinterface.org
# */
#---------------------------------------------------------------------
#
# Dockerfile for the Open-Air-Interface BUILD service
# Valid for RHEL7 in the OpenShift context (v4.4)
#
#---------------------------------------------------------------------
FROM image-registry.openshift-image-registry.svc:5000/oai/oai-ran:latest AS enb-build
WORKDIR /oai-enb
COPY . .
#run build_oai to build the target image
RUN /bin/sh oaienv && \
cd cmake_targets && \
mkdir -p log && \
./build_oai --eNB
#start from scratch for target executable
FROM registry.access.redhat.com/ubi7/ubi:latest as oai-enb
# Entitlements and RHSM configurations are Open-Shift Secret and ConfigMaps
# It is pre-requisite
RUN rm -Rf /etc/rhsm/ca /etc/pki/entitlement
# Copy the entitlements
COPY ./etc-pki-entitlement /etc/pki/entitlement
# Copy the subscription manager configurations
COPY ./rhsm-conf /etc/rhsm
COPY ./rhsm-ca /etc/rhsm/ca
#install developers pkg/repo
RUN rm /etc/rhsm-host && \
# Initialize /etc/yum.repos.d/redhat.repo
# See https://access.redhat.com/solutions/1443553
yum repolist --disablerepo=* && \
yum-config-manager --enable rhel-7-server-optional-rpms rhel-server-rhscl-7-rpms && \
yum update -y && \
yum install -y \
lksctp-tools \
protobuf-c \
nettle \
libyaml && \
echo "/usr/local/lib" > /etc/ld.so.conf.d/local-lib.conf
WORKDIR /opt/oai-enb/bin
COPY --from=enb-build /oai-enb/targets/bin/lte-softmodem.Rel15 .
RUN ldd lte-softmodem.Rel15
#EXPOSE 2152/udp # S1U, GTP/UDP
#EXPOSE 22100/tcp # ?
#EXPOSE 36412/udp # S1C, SCTP/UDP
#EXPOSE 36422/udp # X2C, SCTP/UDP
#EXPOSE 50000/udp # IF5 / ORI (control)
#EXPOSE 50001/udp # IF5 / ECPRI (data)
#CMD ["/opt/oai-enb/bin/lte-softmodem", "-O", "/opt/oai-enb/etc/enb.conf"]
#ENTRYPOINT ["/opt/oai-enb/bin/entrypoint.sh"]
#/*
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements. See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# * http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# * contact@openairinterface.org
# */
#---------------------------------------------------------------------
#
# Dockerfile for the Open-Air-Interface BUILD service
# Valid for RHEL8 in the OpenShift context (v4.4)
#
#---------------------------------------------------------------------
FROM image-registry.openshift-image-registry.svc:5000/oai/oai-ran:rhel8-latest AS enb-build
WORKDIR /oai-ran
#run build_oai to build the target image
RUN /bin/sh oaienv && \
cd cmake_targets && \
rm -Rf log && \
mkdir -p log && \
./build_oai --eNB --ninja -w USRP
# debug
#RUN ldconfig -v && ldd /oai-ran/targets/bin/lte-softmodem.Rel15
#RUN ls -ls /oai-ran/targets/bin
#RUN ls -ls /oai-ran/cmake_targets/ran_build/build/*.so
#start from scratch for target executable
FROM registry.access.redhat.com/ubi8/ubi:latest as oai-enb
RUN yum update -y && \
yum install -y --enablerepo="ubi-8-codeready-builder" \
lksctp-tools \
nettle \
atlas \
net-tools \
iproute \
iputils \
libyaml && \
echo "/usr/local/lib" > /etc/ld.so.conf.d/local-lib.conf && \
echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf
WORKDIR /opt/oai-enb/bin
COPY --from=enb-build /oai-ran/targets/bin/lte-softmodem.Rel15 .
WORKDIR /usr/local/lib/
COPY --from=enb-build /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 .
COPY --from=enb-build /oai-ran/targets/bin/librfsimulator.so.Rel15 .
COPY --from=enb-build /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 .
COPY --from=enb-build /oai-ran/targets/bin/libcoding.so .
COPY --from=enb-build /oai-ran/targets/bin/libparams_libconfig.so .
COPY --from=enb-build /oai-ran/cmake_targets/ran_build/build/libdfts.so .
COPY --from=enb-build /oai-ran/cmake_targets/ran_build/build/liboai_iqplayer.so .
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so"
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so"
RUN /bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so"
COPY --from=enb-build /usr/local/lib/libprotobuf-c.so.1 .
COPY --from=enb-build /lib64/libconfig.so.9 /lib64
COPY --from=enb-build /lib64/libblas.so.3 /lib64
COPY --from=enb-build /lib64/liblapack.so.3 /lib64
COPY --from=enb-build /lib64/liblapacke.so.3 /lib64
COPY --from=enb-build /lib64/libboost_chrono.so.1.66.0 /lib64
COPY --from=enb-build /lib64/libboost_date_time.so.1.66.0 /lib64
COPY --from=enb-build /lib64/libboost_filesystem.so.1.66.0 /lib64
COPY --from=enb-build /lib64/libboost_program_options.so.1.66.0 /lib64
COPY --from=enb-build /lib64/libboost_serialization.so.1.66.0 /lib64
COPY --from=enb-build /lib64/libboost_thread.so.1.66.0 /lib64
COPY --from=enb-build /lib64/libboost_system.so.1.66.0 /lib64
COPY --from=enb-build /lib64/libboost_unit_test_framework.so.1.66.0 /lib64
COPY --from=enb-build /lib64/libboost_atomic.so.1.66.0 /lib64
COPY --from=enb-build /lib64/libboost_timer.so.1.66.0 /lib64
COPY --from=enb-build /usr/local/lib64/libuhd.so.4.0.0 /usr/local/lib64
RUN ldconfig
#debug
RUN ldd /usr/local/lib/liboai_eth_transpro.so.Rel15
RUN ldd /usr/local/lib/librfsimulator.so.Rel15
RUN ldd /usr/local/lib/liboai_usrpdevif.so.Rel15
RUN ldd /usr/local/lib/libcoding.so
RUN ldd /usr/local/lib/libparams_libconfig.so
RUN ldd /usr/local/lib/libdfts.so
RUN ldd /usr/local/lib/liboai_iqplayer.so
RUN ldd /opt/oai-enb/bin/lte-softmodem.Rel15
# Copy the relevant configuration files for eNB
WORKDIR /opt/oai-enb/etc
COPY --from=enb-build /oai-ran/ci-scripts/conf_files/enb.* .
COPY --from=enb-build /oai-ran/ci-scripts/conf_files/rcc.* .
COPY --from=enb-build /oai-ran/ci-scripts/conf_files/cu.* .
COPY --from=enb-build /oai-ran/ci-scripts/conf_files/du.* .
COPY --from=enb-build /oai-ran/ci-scripts/conf_files/rru.* .
WORKDIR /opt/oai-enb
#EXPOSE 2152/udp # S1U, GTP/UDP
#EXPOSE 22100/tcp # ?
#EXPOSE 36412/udp # S1C, SCTP/UDP
#EXPOSE 36422/udp # X2C, SCTP/UDP
#EXPOSE 50000/udp # IF5 / ORI (control)
#EXPOSE 50001/udp # IF5 / ECPRI (data)
#CMD ["/opt/oai-enb/bin/lte-softmodem", "-O", "/opt/oai-enb/etc/enb.conf"]
#ENTRYPOINT ["/opt/oai-enb/bin/entrypoint.sh"]
CMD ["sleep", "infinity"]
#/*
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements. See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# * http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# * contact@openairinterface.org
# */
#---------------------------------------------------------------------
#
# Dockerfile for the Open-Air-Interface BUILD service
# Valid for RHEL7 in the OpenShift context (v4.4)
#
#---------------------------------------------------------------------
FROM image-registry.openshift-image-registry.svc:5000/oai/oai-ran:latest AS gnb-build
WORKDIR /oai-gnb
COPY . .
#run build_oai to build the target image
RUN /bin/sh oaienv && \
cd cmake_targets && \
mkdir -p log && \
./build_oai --gNB
#start from scratch for target executable
FROM registry.access.redhat.com/ubi7/ubi:latest as oai-gnb
# Entitlements and RHSM configurations are Open-Shift Secret and ConfigMaps
# It is pre-requisite
RUN rm -Rf /etc/rhsm/ca /etc/pki/entitlement
# Copy the entitlements
COPY ./etc-pki-entitlement /etc/pki/entitlement
# Copy the subscription manager configurations
COPY ./rhsm-conf /etc/rhsm
COPY ./rhsm-ca /etc/rhsm/ca
#install developers pkg/repo
RUN rm /etc/rhsm-host && \
# Initialize /etc/yum.repos.d/redhat.repo
# See https://access.redhat.com/solutions/1443553
yum repolist --disablerepo=* && \
yum-config-manager --enable rhel-7-server-optional-rpms rhel-server-rhscl-7-rpms && \
yum update -y && \
yum install -y \
libXpm \
libX11 \
atlas \
blas \
lapack \
lksctp-tools \
protobuf-c \
nettle \
libyaml && \
echo "/usr/local/lib" > /etc/ld.so.conf.d/local-lib.conf
WORKDIR /opt/oai-gnb/bin
COPY --from=gnb-build /oai-gnb/targets/bin/nr-softmodem.Rel15 .
WORKDIR /lib64
COPY --from=gnb-build /lib64/libforms.so.2 .
RUN ldd /opt/oai-gnb/bin/nr-softmodem.Rel15
#EXPOSE 2152/udp # S1U, GTP/UDP
#EXPOSE 22100/tcp # ?
#EXPOSE 36412/udp # S1C, SCTP/UDP
#EXPOSE 36422/udp # X2C, SCTP/UDP
#EXPOSE 50000/udp # IF5 / ORI (control)
#EXPOSE 50001/udp # IF5 / ECPRI (data)
#CMD ["/opt/oai-gnb/bin/nr-softmodem", "-O", "/opt/oai-gnb/etc/gnb.conf"]
#ENTRYPOINT ["/opt/oai-gnb/bin/entrypoint.sh"]
#/*
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements. See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# * http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# * contact@openairinterface.org
# */
#---------------------------------------------------------------------
#
# Dockerfile for the Open-Air-Interface BUILD service
# Valid for RHEL8 in the OpenShift context (v4.4)
#
#---------------------------------------------------------------------
FROM image-registry.openshift-image-registry.svc:5000/oai/oai-ran:rhel8-latest AS gnb-build
WORKDIR /oai-ran
#run build_oai to build the target image
RUN /bin/sh oaienv && \
cd cmake_targets && \
rm -Rf log && \
mkdir -p log && \
./build_oai --gNB --ninja -w USRP
#debug
#RUN ldconfig -v
#RUN ldd /oai-ran/targets/bin/nr-softmodem.Rel15
#RUN ls -lst /oai-ran/targets/bin
#RUN ls -lst /oai-ran/cmake_targets/ran_build/build/*.so
#start from scratch for target executable
FROM registry.access.redhat.com/ubi8/ubi:latest as oai-gnb
RUN yum repolist --disablerepo=* && \
yum update -y && \
yum install -y --enablerepo="ubi-8-codeready-builder" \
libXpm \
libX11 \
atlas \
lksctp-tools \
nettle \
net-tools \
iputils \
libyaml && \
echo "/usr/local/lib" > /etc/ld.so.conf.d/local-lib.conf && \
echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf
WORKDIR /opt/oai-gnb/bin
COPY --from=gnb-build /oai-ran/targets/bin/nr-softmodem.Rel15 .
WORKDIR /usr/local/lib/
COPY --from=gnb-build /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 .
COPY --from=gnb-build /oai-ran/targets/bin/librfsimulator.so.Rel15 .
COPY --from=gnb-build /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 .
COPY --from=gnb-build /oai-ran/targets/bin/libcoding.so .
COPY --from=gnb-build /oai-ran/targets/bin/libparams_libconfig.so .
COPY --from=gnb-build /oai-ran/cmake_targets/ran_build/build/libdfts.so .
COPY --from=gnb-build /oai-ran/cmake_targets/ran_build/build/libldpc.so .
COPY --from=gnb-build /oai-ran/cmake_targets/ran_build/build/libldpc_optim.so .
COPY --from=gnb-build /oai-ran/cmake_targets/ran_build/build/libldpc_optim8seg.so .
COPY --from=gnb-build /oai-ran/cmake_targets/ran_build/build/libldpc_orig.so .
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so"
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so"
RUN /bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so"
COPY --from=gnb-build /usr/local/lib/libprotobuf-c.so.1 .
COPY --from=gnb-build /lib64/libconfig.so.9 /lib64
COPY --from=gnb-build /lib64/libforms.so.2 /lib64
COPY --from=gnb-build /lib64/libblas.so.3 /lib64
COPY --from=gnb-build /lib64/liblapack.so.3 /lib64
COPY --from=gnb-build /lib64/liblapacke.so.3 /lib64
COPY --from=gnb-build /lib64/libboost_chrono.so.1.66.0 /lib64
COPY --from=gnb-build /lib64/libboost_date_time.so.1.66.0 /lib64
COPY --from=gnb-build /lib64/libboost_filesystem.so.1.66.0 /lib64
COPY --from=gnb-build /lib64/libboost_program_options.so.1.66.0 /lib64
COPY --from=gnb-build /lib64/libboost_serialization.so.1.66.0 /lib64
COPY --from=gnb-build /lib64/libboost_thread.so.1.66.0 /lib64
COPY --from=gnb-build /lib64/libboost_system.so.1.66.0 /lib64
COPY --from=gnb-build /lib64/libboost_unit_test_framework.so.1.66.0 /lib64
COPY --from=gnb-build /lib64/libboost_atomic.so.1.66.0 /lib64
COPY --from=gnb-build /lib64/libboost_timer.so.1.66.0 /lib64
COPY --from=gnb-build /usr/local/lib64/libuhd.so.4.0.0 /usr/local/lib64
RUN ldconfig
#debug
RUN ldd /opt/oai-gnb/bin/nr-softmodem.Rel15
RUN ldd /usr/local/lib/liboai_eth_transpro.so.Rel15
RUN ldd /usr/local/lib/librfsimulator.so.Rel15
RUN ldd /usr/local/lib/liboai_usrpdevif.so.Rel15
RUN ldd /usr/local/lib/libcoding.so
RUN ldd /usr/local/lib/libparams_libconfig.so
RUN ldd /usr/local/lib/libdfts.so
RUN ldd /usr/local/lib/libldpc.so
RUN ldd /usr/local/lib/libldpc_optim.so
RUN ldd /usr/local/lib/libldpc_optim8seg.so
RUN ldd /usr/local/lib/libldpc_orig.so
# Copy the relevant configuration files for gNB
WORKDIR /opt/oai-gnb/etc
COPY --from=gnb-build /oai-ran/ci-scripts/conf_files/gnb.* .
WORKDIR /opt/oai-gnb
#EXPOSE 2152/udp # S1U, GTP/UDP
#EXPOSE 22100/tcp # ?
#EXPOSE 36412/udp # S1C, SCTP/UDP
#EXPOSE 36422/udp # X2C, SCTP/UDP
#EXPOSE 50000/udp # IF5 / ORI (control)
#EXPOSE 50001/udp # IF5 / ECPRI (data)
#CMD ["/opt/oai-gnb/bin/nr-softmodem", "-O", "/opt/oai-gnb/etc/gnb.conf"]
#ENTRYPOINT ["/opt/oai-gnb/bin/entrypoint.sh"]
CMD ["sleep", "infinity"]
#/*
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements. See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# * http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# * contact@openairinterface.org
# */
#---------------------------------------------------------------------
#
# Dockerfile for the Open-Air-Interface BUILD service
# Valid for RHEL8 in the OpenShift context (v4.4)
#
#---------------------------------------------------------------------
FROM image-registry.openshift-image-registry.svc:5000/oai/oai-ran:rhel8-latest AS lte-ue-build
WORKDIR /oai-ran
#run build_oai to build the target image
RUN /bin/sh oaienv && \
cd cmake_targets && \
rm -Rf log && \
mkdir -p log && \
./build_oai --UE --ninja -w USRP
# debug
#RUN ldconfig -v && ldd /oai-ran/targets/bin/lte-uesoftmodem.Rel15
#RUN ls -lst /oai-ran/targets/bin
#RUN ls -lst /oai-ran/cmake_targets/ran_build/build/*.so
#start from scratch for target executable
FROM registry.access.redhat.com/ubi8/ubi:latest as oai-lte-ue
RUN yum update -y && \
yum install -y --enablerepo="ubi-8-codeready-builder" \
lksctp-tools \
nettle \
atlas \
iproute \
net-tools \
iputils \
libyaml && \
echo "/usr/local/lib" > /etc/ld.so.conf.d/local-lib.conf && \
echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf
WORKDIR /opt/oai-lte-ue/bin
COPY --from=lte-ue-build /oai-ran/targets/bin/lte-uesoftmodem.Rel15 .
COPY --from=lte-ue-build /oai-ran/targets/bin/conf2uedata .
COPY --from=lte-ue-build /oai-ran/targets/bin/nvram .
COPY --from=lte-ue-build /oai-ran/targets/bin/usim .
COPY --from=lte-ue-build /oai-ran/targets/bin/.ue_emm.nvram0 .
COPY --from=lte-ue-build /oai-ran/targets/bin/.ue.nvram0 .
COPY --from=lte-ue-build /oai-ran/targets/bin/.usim.nvram0 .
WORKDIR /usr/local/lib/
COPY --from=lte-ue-build /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 .
COPY --from=lte-ue-build /oai-ran/targets/bin/librfsimulator.so.Rel15 .
COPY --from=lte-ue-build /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 .
COPY --from=lte-ue-build /oai-ran/targets/bin/libcoding.so .
COPY --from=lte-ue-build /oai-ran/targets/bin/libparams_libconfig.so .
COPY --from=lte-ue-build /oai-ran/cmake_targets/ran_build/build/libSIMU.so .
COPY --from=lte-ue-build /oai-ran/cmake_targets/ran_build/build/libdfts.so .
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so"
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so"
RUN /bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so"
COPY --from=lte-ue-build /usr/local/lib/libprotobuf-c.so.1 .
COPY --from=lte-ue-build /lib64/libconfig.so.9 /lib64
COPY --from=lte-ue-build /lib64/libblas.so.3 /lib64
COPY --from=lte-ue-build /lib64/liblapack.so.3 /lib64
COPY --from=lte-ue-build /lib64/liblapacke.so.3 /lib64
COPY --from=lte-ue-build /lib64/libboost_chrono.so.1.66.0 /lib64
COPY --from=lte-ue-build /lib64/libboost_date_time.so.1.66.0 /lib64
COPY --from=lte-ue-build /lib64/libboost_filesystem.so.1.66.0 /lib64
COPY --from=lte-ue-build /lib64/libboost_program_options.so.1.66.0 /lib64
COPY --from=lte-ue-build /lib64/libboost_serialization.so.1.66.0 /lib64
COPY --from=lte-ue-build /lib64/libboost_thread.so.1.66.0 /lib64
COPY --from=lte-ue-build /lib64/libboost_system.so.1.66.0 /lib64
COPY --from=lte-ue-build /lib64/libboost_unit_test_framework.so.1.66.0 /lib64
COPY --from=lte-ue-build /lib64/libboost_atomic.so.1.66.0 /lib64
COPY --from=lte-ue-build /lib64/libboost_timer.so.1.66.0 /lib64
COPY --from=lte-ue-build /usr/local/lib64/libuhd.so.4.0.0 /usr/local/lib64
RUN ldconfig
#debug
RUN ldd /opt/oai-lte-ue/bin/lte-uesoftmodem.Rel15
RUN ldd /opt/oai-lte-ue/bin/conf2uedata
RUN ldd /opt/oai-lte-ue/bin/nvram
RUN ldd /opt/oai-lte-ue/bin/usim
RUN ldd /usr/local/lib/liboai_eth_transpro.so.Rel15
RUN ldd /usr/local/lib/librfsimulator.so.Rel15
RUN ldd /usr/local/lib/liboai_usrpdevif.so.Rel15
RUN ldd /usr/local/lib/libcoding.so
RUN ldd /usr/local/lib/libparams_libconfig.so
RUN ldd /usr/local/lib/libSIMU.so
RUN ldd /usr/local/lib/libdfts.so
# Copy the relevant configuration files for eNB
WORKDIR /opt/oai-lte-ue/etc
COPY --from=lte-ue-build /oai-ran/ci-scripts/conf_files/ue.* .
COPY --from=lte-ue-build /oai-ran/openair3/NAS/TOOLS/ue_eurecom_test_sfr.conf ./ue_usim.conf
WORKDIR /opt/oai-lte-ue
#CMD ["/opt/oai-lte-ue/bin/lte-uesoftmodem", "-O", "/opt/oai-lte-ue/etc/enb.conf"]
#ENTRYPOINT ["/opt/oai-lte-ue/bin/entrypoint.sh"]
CMD ["sleep", "infinity"]
#/*
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements. See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# * http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# * contact@openairinterface.org
# */
#---------------------------------------------------------------------
#
# Dockerfile for the Open-Air-Interface BUILD service
# Valid for RHEL8 in the OpenShift context (v4.4)
#
#---------------------------------------------------------------------
FROM image-registry.openshift-image-registry.svc:5000/oai/oai-ran:rhel8-latest AS nr-ue-build
WORKDIR /oai-ran
#run build_oai to build the target image
RUN /bin/sh oaienv && \
cd cmake_targets && \
rm -Rf log && \
mkdir -p log && \
./build_oai --nrUE --ninja -w USRP
# debug
#RUN ldconfig -v
#RUN ldd /oai-ran/targets/bin/nr-uesoftmodem.Rel15
#RUN ls -lst /oai-ran/targets/bin
#RUN ls -lst /oai-ran/cmake_targets/ran_build/build/*.so
#start from scratch for target executable
FROM registry.access.redhat.com/ubi8/ubi:latest as oai-nr-ue
RUN yum update -y && \
yum install -y --enablerepo="ubi-8-codeready-builder" \
lksctp-tools \
nettle \
net-tools \
iputils \
atlas \
libXpm \
libX11 \
libyaml && \
echo "/usr/local/lib" > /etc/ld.so.conf.d/local-lib.conf && \
echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf
WORKDIR /opt/oai-nr-ue/bin
COPY --from=nr-ue-build /oai-ran/targets/bin/nr-uesoftmodem.Rel15 .
WORKDIR /usr/local/lib/
COPY --from=nr-ue-build /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 .
COPY --from=nr-ue-build /oai-ran/targets/bin/librfsimulator.so.Rel15 .
COPY --from=nr-ue-build /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 .
COPY --from=nr-ue-build /oai-ran/targets/bin/libcoding.so .
COPY --from=nr-ue-build /oai-ran/targets/bin/libparams_libconfig.so .
COPY --from=nr-ue-build /oai-ran/cmake_targets/ran_build/build/libdfts.so .
COPY --from=nr-ue-build /oai-ran/cmake_targets/ran_build/build/libldpc.so .
COPY --from=nr-ue-build /oai-ran/cmake_targets/ran_build/build/libldpc_optim.so .
COPY --from=nr-ue-build /oai-ran/cmake_targets/ran_build/build/libldpc_optim8seg.so .
COPY --from=nr-ue-build /oai-ran/cmake_targets/ran_build/build/libldpc_orig.so .
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so"
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so"
RUN /bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so"
COPY --from=nr-ue-build /usr/local/lib/libprotobuf-c.so.1 .
COPY --from=nr-ue-build /lib64/libconfig.so.9 /lib64
COPY --from=nr-ue-build /lib64/libblas.so.3 /lib64
COPY --from=nr-ue-build /lib64/liblapack.so.3 /lib64
COPY --from=nr-ue-build /lib64/liblapacke.so.3 /lib64
COPY --from=nr-ue-build /lib64/libforms.so.2 /lib64
COPY --from=nr-ue-build /lib64/libboost_chrono.so.1.66.0 /lib64
COPY --from=nr-ue-build /lib64/libboost_date_time.so.1.66.0 /lib64
COPY --from=nr-ue-build /lib64/libboost_filesystem.so.1.66.0 /lib64
COPY --from=nr-ue-build /lib64/libboost_program_options.so.1.66.0 /lib64
COPY --from=nr-ue-build /lib64/libboost_serialization.so.1.66.0 /lib64
COPY --from=nr-ue-build /lib64/libboost_thread.so.1.66.0 /lib64
COPY --from=nr-ue-build /lib64/libboost_system.so.1.66.0 /lib64
COPY --from=nr-ue-build /lib64/libboost_unit_test_framework.so.1.66.0 /lib64
COPY --from=nr-ue-build /lib64/libboost_atomic.so.1.66.0 /lib64
COPY --from=nr-ue-build /lib64/libboost_timer.so.1.66.0 /lib64
COPY --from=nr-ue-build /usr/local/lib64/libuhd.so.4.0.0 /usr/local/lib64
RUN ldconfig
RUN ldd /opt/oai-nr-ue/bin/nr-uesoftmodem.Rel15
RUN ldd /usr/local/lib/liboai_eth_transpro.so.Rel15
RUN ldd /usr/local/lib/librfsimulator.so.Rel15
RUN ldd /usr/local/lib/liboai_usrpdevif.so.Rel15
RUN ldd /usr/local/lib/libcoding.so
RUN ldd /usr/local/lib/libparams_libconfig.so
RUN ldd /usr/local/lib/libdfts.so
RUN ldd /usr/local/lib/libldpc.so
RUN ldd /usr/local/lib/libldpc_optim.so
RUN ldd /usr/local/lib/libldpc_optim8seg.so
RUN ldd /usr/local/lib/libldpc_orig.so
# Copy the relevant configuration files for eNB
WORKDIR /opt/oai-nr-ue/etc
COPY --from=nr-ue-build /oai-ran/ci-scripts/conf_files/ue.* .
WORKDIR /opt/oai-nr-ue
#CMD ["/opt/oai-nr-ue/bin/nr-uesoftmodem", "-O", "/opt/oai-nr-ue/etc/enb.conf"]
#ENTRYPOINT ["/opt/oai-nr-ue/bin/entrypoint.sh"]
CMD ["sleep", "infinity"]
...@@ -38,7 +38,7 @@ RUN yum install -y libasan ...@@ -38,7 +38,7 @@ RUN yum install -y libasan
RUN /bin/sh oaienv && \ RUN /bin/sh oaienv && \
cd cmake_targets && \ cd cmake_targets && \
mkdir -p log && \ mkdir -p log && \
./build_oai --phy_simulators --ninja --verbose-ci --sanitize-address --noavx512 ./build_oai --phy_simulators --ninja --verbose-ci --sanitize-address --noavx512 -c
#start from scratch for target executable #start from scratch for target executable
FROM registry.access.redhat.com/ubi8/ubi:latest as oai-physim FROM registry.access.redhat.com/ubi8/ubi:latest as oai-physim
......
#/*
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements. See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# * http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# * contact@openairinterface.org
# */
#---------------------------------------------------------------------
#
# Dockerfile for the Open-Air-Interface BUILD service
# Valid for RHEL7 in the OpenShift context (v4.4)
#
#---------------------------------------------------------------------
FROM registry.access.redhat.com/ubi7/ubi:latest AS ran-base
# Entitlements and RHSM configurations are Open-Shift Secret and ConfigMaps
# It is pre-requisite
RUN rm -Rf /etc/rhsm/ca /etc/pki/entitlement
# Copy the entitlements
COPY ./etc-pki-entitlement /etc/pki/entitlement
# Copy the subscription manager configurations
COPY ./rhsm-conf /etc/rhsm
COPY ./rhsm-ca /etc/rhsm/ca
#install developers pkg/repo
RUN rm /etc/rhsm-host && \
# Initialize /etc/yum.repos.d/redhat.repo
# See https://access.redhat.com/solutions/1443553
yum repolist --disablerepo=* && \
yum-config-manager --enable rhel-7-server-optional-rpms rhel-server-rhscl-7-rpms && \
yum update -y && \
yum install -y \
#gcc needed for build_oai
gcc gcc-c++ \
diffutils \
file \
psmisc \
git \
#unzip is needed for protobuf
unzip && \
echo "/usr/local/lib" > /etc/ld.so.conf.d/local-lib.conf
# In some network environments, GIT proxy is required
RUN /bin/bash -c "if [[ -v NEEDED_GIT_PROXY ]]; then git config --global http.proxy $NEEDED_GIT_PROXY; fi"
#create the WORKDIR
WORKDIR /oai-ran
COPY . .
#run build_oai -I to get the builder image
RUN /bin/sh oaienv && \
cd cmake_targets && \
mkdir -p log && \
./build_oai -I
#as the image is public, we need to remove the subscription manager configurations
#RUN rm -Rf /etc/rhsm /etc/pki/entitlement
#/*
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements. See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# * http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# * contact@openairinterface.org
# */
#---------------------------------------------------------------------
#
# Dockerfile for the Open-Air-Interface BUILD service
# Valid for RHEL8 in the OpenShift context (v4.4)
#
#---------------------------------------------------------------------
FROM registry.access.redhat.com/ubi8/ubi:latest AS ran-base
# Entitlements and RHSM configurations are Open-Shift Secret and ConfigMaps
# It is pre-requisite
RUN rm -Rf /etc/rhsm/ca /etc/pki/entitlement
# Copy the entitlements
COPY ./etc-pki-entitlement /etc/pki/entitlement
# Copy the subscription manager configurations
COPY ./rhsm-conf /etc/rhsm
COPY ./rhsm-ca /etc/rhsm/ca
#install developers pkg/repo
RUN rm /etc/rhsm-host && \
# Initialize /etc/yum.repos.d/redhat.repo
# See https://access.redhat.com/solutions/1443553
yum repolist --disablerepo=* && \
subscription-manager repos --enable codeready-builder-for-rhel-8-x86_64-rpms && \
yum update -y && \
yum install -y \
#gcc needed for build_oai
gcc gcc-c++ \
diffutils \
file \
psmisc \
git \
#unzip is needed for protobuf
unzip && \
echo "/usr/local/lib" > /etc/ld.so.conf.d/local-lib.conf && \
echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf
# In some network environments, GIT proxy is required
RUN /bin/bash -c "if [[ -v NEEDED_GIT_PROXY ]]; then git config --global http.proxy $NEEDED_GIT_PROXY; fi"
#create the WORKDIR
WORKDIR /oai-ran
COPY . .
#run build_oai -I to get the builder image
RUN /bin/sh oaienv && \
cd cmake_targets && \
mkdir -p log && \
./build_oai -I -w USRP
#as the image is public, we need to remove the subscription certificates
RUN rm -Rf /etc/pki/entitlement/*.pem
...@@ -78,9 +78,7 @@ The currently-supported OS are: ...@@ -78,9 +78,7 @@ The currently-supported OS are:
The currently-supported cluster version is: The currently-supported cluster version is:
- `rhel8.2.oc4-4` - `rhel8.2.oc4-9`
We have also `rhel7.oc4-4` support but it will be discontinued soon.
For more details in build within a Openshift Cluster, see [OpenShift README](../openshift/README.md) for more details. For more details in build within a Openshift Cluster, see [OpenShift README](../openshift/README.md) for more details.
......
...@@ -32,11 +32,12 @@ ...@@ -32,11 +32,12 @@
env: "@ENB_NAME@" env: "@ENB_NAME@"
- key: eNB_name - key: eNB_name
env: "@ENB_NAME@" env: "@ENB_NAME@"
- key: plmn_list - key: mcc
env: env: "@MCC@"
mcc: "@MCC@" - key: mnc
mnc: "@MNC@" env: "@MNC@"
mnc_length: "@MNC_LENGTH@" - key: mnc_length
env: "@MNC_LENGTH@"
- key: tracking_area_code - key: tracking_area_code
env: "@TAC@" env: "@TAC@"
- key: local_s_if_name - key: local_s_if_name
...@@ -75,11 +76,12 @@ ...@@ -75,11 +76,12 @@
env: "@ENB_NAME@" env: "@ENB_NAME@"
- key: eNB_name - key: eNB_name
env: "@ENB_NAME@" env: "@ENB_NAME@"
- key: plmn_list - key: mcc
env: env: "@MCC@"
mcc: "@MCC@" - key: mnc
mnc: "@MNC@" env: "@MNC@"
mnc_length: "@MNC_LENGTH@" - key: mnc_length
env: "@MNC_LENGTH@"
- key: tracking_area_code - key: tracking_area_code
env: "@TAC@" env: "@TAC@"
- key: local_n_if_name - key: local_n_if_name
...@@ -136,11 +138,12 @@ ...@@ -136,11 +138,12 @@
env: "@ENB_NAME@" env: "@ENB_NAME@"
- key: eNB_name - key: eNB_name
env: "@ENB_NAME@" env: "@ENB_NAME@"
- key: plmn_list - key: mcc
env: env: "@MCC@"
mcc: "@MCC@" - key: mnc
mnc: "@MNC@" env: "@MNC@"
mnc_length: "@MNC_LENGTH@" - key: mnc_length
env: "@MNC_LENGTH@"
- key: tracking_area_code - key: tracking_area_code
env: "@TAC@" env: "@TAC@"
- key: eutra_band - key: eutra_band
...@@ -187,11 +190,12 @@ ...@@ -187,11 +190,12 @@
env: "@ENB_NAME@" env: "@ENB_NAME@"
- key: eNB_name - key: eNB_name
env: "@ENB_NAME@" env: "@ENB_NAME@"
- key: plmn_list - key: mcc
env: env: "@MCC@"
mcc: "@MCC@" - key: mnc
mnc: "@MNC@" env: "@MNC@"
mnc_length: "@MNC_LENGTH@" - key: mnc_length
env: "@MNC_LENGTH@"
- key: tracking_area_code - key: tracking_area_code
env: "@TAC@" env: "@TAC@"
- key: eutra_band - key: eutra_band
...@@ -226,11 +230,12 @@ ...@@ -226,11 +230,12 @@
env: "@ENB_NAME@" env: "@ENB_NAME@"
- key: eNB_name - key: eNB_name
env: "@ENB_NAME@" env: "@ENB_NAME@"
- key: plmn_list - key: mcc
env: env: "@MCC@"
mcc: "@MCC@" - key: mnc
mnc: "@MNC@" env: "@MNC@"
mnc_length: "@MNC_LENGTH@" - key: mnc_length
env: "@MNC_LENGTH@"
- key: tracking_area_code - key: tracking_area_code
env: "@TAC@" env: "@TAC@"
- key: local_s_if_name - key: local_s_if_name
...@@ -271,11 +276,12 @@ ...@@ -271,11 +276,12 @@
env: "@ENB_NAME@" env: "@ENB_NAME@"
- key: eNB_name - key: eNB_name
env: "@ENB_NAME@" env: "@ENB_NAME@"
- key: plmn_list - key: mcc
env: env: "@MCC@"
mcc: "@MCC@" - key: mnc
mnc: "@MNC@" env: "@MNC@"
mnc_length: "@MNC_LENGTH@" - key: mnc_length
env: "@MNC_LENGTH@"
- key: tracking_area_code - key: tracking_area_code
env: "@TAC@" env: "@TAC@"
- key: eutra_band - key: eutra_band
...@@ -316,11 +322,12 @@ ...@@ -316,11 +322,12 @@
env: "@ENB_NAME@" env: "@ENB_NAME@"
- key: eNB_name - key: eNB_name
env: "@ENB_NAME@" env: "@ENB_NAME@"
- key: plmn_list - key: mcc
env: env: "@MCC@"
mcc: "@MCC@" - key: mnc
mnc: "@MNC@" env: "@MNC@"
mnc_length: "@MNC_LENGTH@" - key: mnc_length
env: "@MNC_LENGTH@"
- key: tracking_area_code - key: tracking_area_code
env: "@TAC@" env: "@TAC@"
- key: eutra_band - key: eutra_band
...@@ -361,11 +368,12 @@ ...@@ -361,11 +368,12 @@
env: "@ENB_NAME@" env: "@ENB_NAME@"
- key: eNB_name - key: eNB_name
env: "@ENB_NAME@" env: "@ENB_NAME@"
- key: plmn_list - key: mcc
env: env: "@MCC@"
mcc: "@MCC@" - key: mnc
mnc: "@MNC@" env: "@MNC@"
mnc_length: "@MNC_LENGTH@" - key: mnc_length
env: "@MNC_LENGTH@"
- key: tracking_area_code - key: tracking_area_code
env: "@TAC@" env: "@TAC@"
- key: eutra_band - key: eutra_band
......
...@@ -82,47 +82,32 @@ def main(): ...@@ -82,47 +82,32 @@ def main():
with open(f'{inputfile}', mode='r') as inputfile, \ with open(f'{inputfile}', mode='r') as inputfile, \
open(outputfile1, mode='w') as outputfile: open(outputfile1, mode='w') as outputfile:
for line in inputfile: for line in inputfile:
count = 0
if re.search(r'EHPLMN_LIST', line): if re.search(r'EHPLMN_LIST', line):
outputfile.write(line) outputfile.write(line)
continue continue
if re.search(r'sd = 0x1;', line): templine = line
templine = re.sub(r'sd = 0x1;', 'sd = 0x@NSSAI_SD0@;', line)
outputfile.write(templine)
continue
if re.search(r'sd = 0x010203;', line):
templine = re.sub(r'sd = 0x010203;', 'sd = 0x@NSSAI_SD0@;', line)
outputfile.write(templine)
continue
if re.search(r'sd = 0x112233;', line):
templine = re.sub(r'sd = 0x112233;', 'sd = 0x@NSSAI_SD1@;', line)
outputfile.write(templine)
continue
for key in config["config"]: for key in config["config"]:
if line.find(key["key"]) >= 0: if templine.find(key["key"]) >= 0:
count += 1 if re.search(r'preference', templine): # false positive
if re.search(r'preference', line): continue
templine = line if re.search(r'sdr_addrs', templine): # false positive
elif re.search(r'mnc_length', line) and key["key"] == "mnc":
continue continue
elif re.search(r'plmn_list', line):
templine = re.sub(r'[0-9]+', '""', line)
templine = re.sub(r'\"\"', key["env"]["mcc"], templine, 1)
templine = re.sub(r'\"\"', key["env"]["mnc"], templine, 1)
templine = re.sub(r'\"\"', key["env"]["mnc_length"], templine, 1)
elif re.search('downlink_frequency', line): elif re.search('downlink_frequency', line):
templine = re.sub(r'[0-9]+', key["env"], line) templine = re.sub(r'[0-9]+', key["env"], line)
elif re.search('uplink_frequency_offset', line): elif re.search('uplink_frequency_offset', line):
templine = re.sub(r'[0-9]+', key["env"], line) templine = re.sub(r'[0-9]+', key["env"], line)
# next: matches key = ( "SOMETHING" ) or key = [ "SOMETHING" ]
elif re.search(r'"(.*?)"', line): elif re.search(key["key"] + "\s*=\s*[\(\[]\s*\"[0-9.a-zA-Z:_-]+\"\s*[\)\]]", templine):
templine = re.sub(r'(?<=")[^"]*(?=")', key["env"], line) templine = re.sub("(" + key["key"] + "\s*=\s*[\(\[]\s*\")[0-9.a-zA-Z:_-]+(\"[\)\]])",
elif re.search(r'[0-9]', line): r'\1' + key["env"] + r"\2", templine)
templine = re.sub(r'\d+', key["env"], line) # next: matches key = "SOMETHING" or key = [SOMETHING],
outputfile.write(templine) elif re.search(key["key"] + "\s*=\s*[\"\[][0-9.a-zA-Z:_/-]+[\"\]]", templine):
templine = re.sub("(" + key["key"] + "\s*=\s*[\"\[])[0-9.a-zA-Z:_/-]+([\"\]])",
if count == 0: r'\1' + key["env"] + r"\2", templine)
outputfile.write(line) # next: matches key = NUMBER
elif re.search(key["key"] + "\s*=\s*[x0-9]+", templine): # x for "0x" hex start
templine = re.sub("(" + key["key"] + "\s*=\s*(?:0x)?)[x0-9]+", r"\1" + key["env"], templine)
outputfile.write(templine)
if __name__ == "__main__": if __name__ == "__main__":
main() main()
...@@ -32,11 +32,16 @@ ...@@ -32,11 +32,16 @@
env: "@GNB_NAME@" env: "@GNB_NAME@"
- key: gNB_name - key: gNB_name
env: "@GNB_NAME@" env: "@GNB_NAME@"
- key: plmn_list - key: mcc
env: env: "@MCC@"
mcc: "@MCC@" - key: mnc
mnc: "@MNC@" env: "@MNC@"
mnc_length: "@MNC_LENGTH@" - key: mnc_length
env: "@MNC_LENGTH@"
- key: sst
env: "@NSSAI_SST@"
- key: sd
env: "@NSSAI_SD@"
- key: tracking_area_code - key: tracking_area_code
env: "@TAC@" env: "@TAC@"
- key: enable_x2 - key: enable_x2
...@@ -81,6 +86,8 @@ ...@@ -81,6 +86,8 @@
env: "@TAC@" env: "@TAC@"
- key: sst - key: sst
env: "@NSSAI_SST@" env: "@NSSAI_SST@"
- key: sd
env: "@NSSAI_SD@"
- key: ipv4 - key: ipv4
env: "@AMF_IP_ADDRESS@" env: "@AMF_IP_ADDRESS@"
- key: GNB_INTERFACE_NAME_FOR_NG_AMF - key: GNB_INTERFACE_NAME_FOR_NG_AMF
...@@ -141,6 +148,8 @@ ...@@ -141,6 +148,8 @@
env: "@TAC@" env: "@TAC@"
- key: sst - key: sst
env: "@NSSAI_SST@" env: "@NSSAI_SST@"
- key: sd
env: "@NSSAI_SD@"
- key: ipv4 - key: ipv4
env: "@AMF_IP_ADDRESS@" env: "@AMF_IP_ADDRESS@"
- key: GNB_INTERFACE_NAME_FOR_NG_AMF - key: GNB_INTERFACE_NAME_FOR_NG_AMF
...@@ -171,6 +180,8 @@ ...@@ -171,6 +180,8 @@
env: "@TAC@" env: "@TAC@"
- key: sst - key: sst
env: "@NSSAI_SST@" env: "@NSSAI_SST@"
- key: sd
env: "@NSSAI_SD@"
- key: ipv4 - key: ipv4
env: "@AMF_IP_ADDRESS@" env: "@AMF_IP_ADDRESS@"
- key: GNB_INTERFACE_NAME_FOR_NG_AMF - key: GNB_INTERFACE_NAME_FOR_NG_AMF
...@@ -209,6 +220,8 @@ ...@@ -209,6 +220,8 @@
env: "@TAC@" env: "@TAC@"
- key: sst - key: sst
env: "@NSSAI_SST@" env: "@NSSAI_SST@"
- key: sd
env: "@NSSAI_SD@"
- key: ipv4 - key: ipv4
env: "@AMF_IP_ADDRESS@" env: "@AMF_IP_ADDRESS@"
- key: GNB_INTERFACE_NAME_FOR_NG_AMF - key: GNB_INTERFACE_NAME_FOR_NG_AMF
...@@ -249,6 +262,8 @@ ...@@ -249,6 +262,8 @@
env: "@TAC@" env: "@TAC@"
- key: sst - key: sst
env: "@NSSAI_SST@" env: "@NSSAI_SST@"
- key: sd
env: "@NSSAI_SD@"
- key: ipv4 - key: ipv4
env: "@AMF_IP_ADDRESS@" env: "@AMF_IP_ADDRESS@"
- key: GNB_INTERFACE_NAME_FOR_NG_AMF - key: GNB_INTERFACE_NAME_FOR_NG_AMF
......
...@@ -505,8 +505,6 @@ int main( int argc, char **argv ) { ...@@ -505,8 +505,6 @@ int main( int argc, char **argv ) {
*mac->scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0]); *mac->scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0]);
} }
init_symbol_rotation(&UE[CC_id]->frame_parms);
init_timeshift_rotation(&UE[CC_id]->frame_parms);
init_nr_ue_vars(UE[CC_id], 0, abstraction_flag); init_nr_ue_vars(UE[CC_id], 0, abstraction_flag);
} }
......
...@@ -777,6 +777,7 @@ typedef struct { ...@@ -777,6 +777,7 @@ typedef struct {
} nfapi_nr_dl_tti_pdcch_pdu_rel15_t; } nfapi_nr_dl_tti_pdcch_pdu_rel15_t;
typedef struct { typedef struct {
uint8_t ldpcBaseGraph;
uint32_t tbSizeLbrmBytes; uint32_t tbSizeLbrmBytes;
}nfapi_v3_pdsch_maintenance_parameters_t; }nfapi_v3_pdsch_maintenance_parameters_t;
...@@ -1191,6 +1192,7 @@ typedef struct ...@@ -1191,6 +1192,7 @@ typedef struct
#define PUSCH_PDU_BITMAP_DFTS_OFDM 0x8 #define PUSCH_PDU_BITMAP_DFTS_OFDM 0x8
typedef struct { typedef struct {
uint8_t ldpcBaseGraph;
uint32_t tbSizeLbrmBytes; uint32_t tbSizeLbrmBytes;
}nfapi_v3_pusch_maintenance_parameters_t; }nfapi_v3_pusch_maintenance_parameters_t;
......
...@@ -917,7 +917,11 @@ void nr_phy_config_request_sim(PHY_VARS_gNB *gNB, ...@@ -917,7 +917,11 @@ void nr_phy_config_request_sim(PHY_VARS_gNB *gNB,
gNB_config->carrier_config.dl_bandwidth.value = config_bandwidth(mu, N_RB_DL, fp->nr_band); gNB_config->carrier_config.dl_bandwidth.value = config_bandwidth(mu, N_RB_DL, fp->nr_band);
nr_init_frame_parms(gNB_config, fp); nr_init_frame_parms(gNB_config, fp);
fp->ofdm_offset_divisor = UINT_MAX; fp->ofdm_offset_divisor = UINT_MAX;
init_symbol_rotation(fp);
init_timeshift_rotation(fp);
gNB->configured = 1; gNB->configured = 1;
LOG_I(PHY,"gNB configured\n"); LOG_I(PHY,"gNB configured\n");
} }
......
...@@ -376,6 +376,8 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, int nb_connected_gNB) ...@@ -376,6 +376,8 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, int nb_connected_gNB)
init_nr_prach_tables(839); init_nr_prach_tables(839);
init_symbol_rotation(fp); init_symbol_rotation(fp);
init_timeshift_rotation(fp);
return 0; return 0;
} }
......
...@@ -198,10 +198,10 @@ void nr_generate_dci(PHY_VARS_gNB *gNB, ...@@ -198,10 +198,10 @@ void nr_generate_dci(PHY_VARS_gNB *gNB,
int8_t cce_idx = reg_list_order[cce_count]; int8_t cce_idx = reg_list_order[cce_count];
for (int reg_in_cce_idx = 0; reg_in_cce_idx < NR_NB_REG_PER_CCE; reg_in_cce_idx+=pdcch_pdu_rel15->DurationSymbols) { for (int reg_in_cce_idx = symbol_idx; reg_in_cce_idx < NR_NB_REG_PER_CCE; reg_in_cce_idx+=pdcch_pdu_rel15->DurationSymbols) {
k = cset_start_sc + cce_list[d][cce_idx].reg_list[reg_in_cce_idx].start_sc_idx; k = cset_start_sc + cce_list[d][cce_idx].reg_list[reg_in_cce_idx].start_sc_idx;
LOG_D(PHY,"CCE %d REG %d k %d\n",cce_idx,reg_in_cce_idx+symbol_idx,k); LOG_D(PHY,"CCE %d REG %d k %d\n",cce_idx,reg_in_cce_idx,k);
if (k >= frame_parms->ofdm_symbol_size) if (k >= frame_parms->ofdm_symbol_size)
k -= frame_parms->ofdm_symbol_size; k -= frame_parms->ofdm_symbol_size;
......
...@@ -80,15 +80,15 @@ void nr_fill_cce_list(nr_cce_t cce_list[MAX_DCI_CORESET][NR_MAX_PDCCH_AGG_LEVEL] ...@@ -80,15 +80,15 @@ void nr_fill_cce_list(nr_cce_t cce_list[MAX_DCI_CORESET][NR_MAX_PDCCH_AGG_LEVEL]
LOG_D(PHY, "cce_idx %d\n", cce->cce_idx); LOG_D(PHY, "cce_idx %d\n", cce->cce_idx);
uint8_t j = cce->cce_idx; uint8_t j = cce->cce_idx;
for (int k=6*j/bsize; k<(6*j/bsize+6/bsize); k++) { // loop over REG bundles for (uint8_t bundle_idx=0; bundle_idx<NR_NB_REG_PER_CCE/bsize; bundle_idx++) {
uint8_t k = 6*j/bsize + bundle_idx;
int f = cce_to_reg_interleaving(R, k, n_shift, C, bsize, N_regs); int f = cce_to_reg_interleaving(R, k, n_shift, C, bsize, N_regs);
for (uint8_t reg_idx=0; reg_idx<bsize; reg_idx++) { for (uint8_t reg_idx=0; reg_idx<bsize; reg_idx++) {
reg = &cce->reg_list[reg_idx]; reg = &cce->reg_list[bundle_idx*bsize+reg_idx];
reg->reg_idx = bsize*f + reg_idx; reg->reg_idx = bsize*f + reg_idx;
reg->start_sc_idx = (reg->reg_idx/dur) * NR_NB_SC_PER_RB; reg->start_sc_idx = (reg->reg_idx/dur) * NR_NB_SC_PER_RB;
reg->symb_idx = reg_idx%dur; reg->symb_idx = reg->reg_idx%dur;
LOG_D(PHY, "reg %d symbol %d start subcarrier %d\n", reg->reg_idx, reg->symb_idx, reg->start_sc_idx); LOG_D(PHY, "reg %d symbol %d start subcarrier %d\n", reg->reg_idx, reg->symb_idx, reg->start_sc_idx);
} }
} }
......
...@@ -375,14 +375,7 @@ int nr_dlsch_encoding(PHY_VARS_gNB *gNB, ...@@ -375,14 +375,7 @@ int nr_dlsch_encoding(PHY_VARS_gNB *gNB,
memcpy(harq->b, a, (A / 8) + 3); // using 3 bytes to mimic the case of 24 bit crc memcpy(harq->b, a, (A / 8) + 3); // using 3 bytes to mimic the case of 24 bit crc
} }
// target_code_rate is in 0.1 units impp.BG = rel15->maintenance_parms_v3.ldpcBaseGraph;
float Coderate = (float) rel15->targetCodeRate[0] / 10240.0f;
LOG_D(PHY,"DLSCH Coderate %f\n",Coderate);
if ((A <=292) || ((A<=3824) && (Coderate <= 0.6667)) || Coderate <= 0.25)
impp.BG = 2;
else
impp.BG = 1;
start_meas(dlsch_segmentation_stats); start_meas(dlsch_segmentation_stats);
impp.Kb = nr_segmentation(harq->b, harq->c, harq->B, &impp.n_segments, &impp.K, impp.Zc, &impp.F, impp.BG); impp.Kb = nr_segmentation(harq->b, harq->c, harq->B, &impp.n_segments, &impp.K, impp.Zc, &impp.F, impp.BG);
......
...@@ -380,7 +380,6 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB, ...@@ -380,7 +380,6 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB,
uint32_t r; uint32_t r;
uint32_t r_offset; uint32_t r_offset;
uint32_t offset; uint32_t offset;
int kc;
int E; int E;
int8_t llrProcBuf[22*384]; int8_t llrProcBuf[22*384];
int ret = 0; int ret = 0;
...@@ -462,8 +461,9 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB, ...@@ -462,8 +461,9 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB,
LOG_D(PHY,"ULSCH Decoding, harq_pid %d TBS %d G %d mcs %d Nl %d nb_rb %d, Qm %d, Coderate %f RV %d round %d\n", LOG_D(PHY,"ULSCH Decoding, harq_pid %d TBS %d G %d mcs %d Nl %d nb_rb %d, Qm %d, Coderate %f RV %d round %d\n",
harq_pid, A, G, mcs, n_layers, nb_rb, Qm, Coderate, pusch_pdu->pusch_data.rv_index, harq_process->round); harq_pid, A, G, mcs, n_layers, nb_rb, Qm, Coderate, pusch_pdu->pusch_data.rv_index, harq_process->round);
if ((A <=292) || ((A<=3824) && (Coderate <= 0.6667)) || Coderate <= 0.25){ p_decParams->BG = pusch_pdu->maintenance_parms_v3.ldpcBaseGraph;
p_decParams->BG = 2; int kc;
if (p_decParams->BG == 2){
kc = 52; kc = 52;
if (Coderate < 0.3333) { if (Coderate < 0.3333) {
p_decParams->R = 15; p_decParams->R = 15;
...@@ -475,7 +475,6 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB, ...@@ -475,7 +475,6 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB,
p_decParams->R = 23; p_decParams->R = 23;
} }
} else { } else {
p_decParams->BG = 1;
kc = 68; kc = 68;
if (Coderate < 0.6667) { if (Coderate < 0.6667) {
p_decParams->R = 13; p_decParams->R = 13;
......
...@@ -261,19 +261,20 @@ int nr_get_csi_rs_signal(const PHY_VARS_NR_UE *ue, ...@@ -261,19 +261,20 @@ int nr_get_csi_rs_signal(const PHY_VARS_NR_UE *ue,
return 0; return 0;
} }
uint32_t calc_power_csirs(const uint16_t *x, const fapi_nr_dl_config_csirs_pdu_rel15_t *csirs_config_pdu) { uint32_t calc_power_csirs(const uint16_t *x, const fapi_nr_dl_config_csirs_pdu_rel15_t *csirs_config_pdu)
{
uint64_t sum_x = 0; uint64_t sum_x = 0;
uint64_t sum_x2 = 0; uint64_t sum_x2 = 0;
uint16_t size = 0; uint16_t size = 0;
for (int rb = csirs_config_pdu->start_rb; rb < (csirs_config_pdu->start_rb+csirs_config_pdu->nr_of_rbs); rb++) { for (int rb = 0; rb < csirs_config_pdu->nr_of_rbs; rb++) {
if (csirs_config_pdu->freq_density <= 1 && csirs_config_pdu->freq_density != (rb % 2)) { if (csirs_config_pdu->freq_density <= 1 && csirs_config_pdu->freq_density != ((rb + csirs_config_pdu->start_rb) % 2)) {
continue; continue;
} }
sum_x = sum_x + x[rb-csirs_config_pdu->start_rb]; sum_x = sum_x + x[rb];
sum_x2 = sum_x2 + x[rb]*x[rb-csirs_config_pdu->start_rb]; sum_x2 = sum_x2 + x[rb] * x[rb];
size++; size++;
} }
return sum_x2/size - (sum_x/size)*(sum_x/size); return sum_x2 / size - (sum_x / size) * (sum_x / size);
} }
int nr_csi_rs_channel_estimation(const PHY_VARS_NR_UE *ue, int nr_csi_rs_channel_estimation(const PHY_VARS_NR_UE *ue,
......
...@@ -236,7 +236,6 @@ void nr_processDLSegment(void* arg) { ...@@ -236,7 +236,6 @@ void nr_processDLSegment(void* arg) {
int length_dec; int length_dec;
int no_iteration_ldpc; int no_iteration_ldpc;
int Kr; int Kr;
int Kr_bytes;
int K_bits_F; int K_bits_F;
uint8_t crc_type; uint8_t crc_type;
int i; int i;
...@@ -259,8 +258,7 @@ void nr_processDLSegment(void* arg) { ...@@ -259,8 +258,7 @@ void nr_processDLSegment(void* arg) {
__m128i *pv = (__m128i*)&z; __m128i *pv = (__m128i*)&z;
__m128i *pl = (__m128i*)&l; __m128i *pl = (__m128i*)&l;
Kr = harq_process->K; // [hna] overwrites this line "Kr = p_decParams->Z*kb" Kr = harq_process->K;
Kr_bytes = Kr>>3;
K_bits_F = Kr-harq_process->F; K_bits_F = Kr-harq_process->F;
t_nrLDPC_time_stats procTime = {0}; t_nrLDPC_time_stats procTime = {0};
...@@ -270,8 +268,7 @@ void nr_processDLSegment(void* arg) { ...@@ -270,8 +268,7 @@ void nr_processDLSegment(void* arg) {
start_meas(&rdata->ts_deinterleave); start_meas(&rdata->ts_deinterleave);
//VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DEINTERLEAVING, VCD_FUNCTION_IN); //VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DEINTERLEAVING, VCD_FUNCTION_IN);
int16_t w[E]; int16_t w[E];
memset(w, 0, sizeof(w));
nr_deinterleaving_ldpc(E, nr_deinterleaving_ldpc(E,
Qm, Qm,
w, // [hna] w is e w, // [hna] w is e
...@@ -298,7 +295,7 @@ void nr_processDLSegment(void* arg) { ...@@ -298,7 +295,7 @@ void nr_processDLSegment(void* arg) {
w, w,
harq_process->C, harq_process->C,
harq_process->rvidx, harq_process->rvidx,
(harq_process->first_rx==1)?1:0, harq_process->first_rx,
E, E,
harq_process->F, harq_process->F,
Kr-harq_process->F-2*(p_decoderParms->Z))==-1) { Kr-harq_process->F-2*(p_decoderParms->Z))==-1) {
...@@ -310,8 +307,6 @@ void nr_processDLSegment(void* arg) { ...@@ -310,8 +307,6 @@ void nr_processDLSegment(void* arg) {
} }
stop_meas(&rdata->ts_rate_unmatch); stop_meas(&rdata->ts_rate_unmatch);
r_offset += E;
if (LOG_DEBUGFLAG(DEBUG_DLSCH_DECOD)) { if (LOG_DEBUGFLAG(DEBUG_DLSCH_DECOD)) {
LOG_D(PHY,"decoder input(segment %u) :",r); LOG_D(PHY,"decoder input(segment %u) :",r);
...@@ -321,8 +316,6 @@ void nr_processDLSegment(void* arg) { ...@@ -321,8 +316,6 @@ void nr_processDLSegment(void* arg) {
LOG_D(PHY,"\n"); LOG_D(PHY,"\n");
} }
memset(harq_process->c[r],0,Kr_bytes);
if (harq_process->C == 1) { if (harq_process->C == 1) {
if (A > NR_MAX_PDSCH_TBS) if (A > NR_MAX_PDSCH_TBS)
crc_type = CRC24_A; crc_type = CRC24_A;
...@@ -360,21 +353,23 @@ void nr_processDLSegment(void* arg) { ...@@ -360,21 +353,23 @@ void nr_processDLSegment(void* arg) {
&procTime); &procTime);
//VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_LDPC, VCD_FUNCTION_OUT); //VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_LDPC, VCD_FUNCTION_OUT);
LOG_D(PHY,"no_iteration_ldpc = %d\n", no_iteration_ldpc);
// Fixme: correct type is unsigned, but nrLDPC_decoder and all called behind use signed int // Fixme: correct type is unsigned, but nrLDPC_decoder and all called behind use signed int
if (check_crc((uint8_t *)llrProcBuf,length_dec,harq_process->F,crc_type)) { if (check_crc((uint8_t *)llrProcBuf,length_dec,harq_process->F,crc_type)) {
LOG_D(PHY,"Segment %u CRC OK\n",r); LOG_D(PHY,"Segment %u CRC OK\n",r);
if (no_iteration_ldpc > dlsch->max_ldpc_iterations)
if (r==0) { no_iteration_ldpc = dlsch->max_ldpc_iterations;
for (int i=0; i<10; i++) LOG_D(PHY,"byte %d : %x\n",i,((uint8_t *)llrProcBuf)[i]);
}
//Temporary hack
no_iteration_ldpc = dlsch->max_ldpc_iterations;
rdata->decodeIterations = no_iteration_ldpc;
} else { } else {
LOG_D(PHY,"CRC NOT OK\n"); LOG_D(PHY,"CRC NOT OK\n");
no_iteration_ldpc = dlsch->max_ldpc_iterations + 1;
} }
if (r==0) {
for (int i=0; i<10; i++) LOG_D(PHY,"byte %d : %x\n",i,((uint8_t *)llrProcBuf)[i]);
}
rdata->decodeIterations = no_iteration_ldpc;
nb_total_decod++; nb_total_decod++;
if (no_iteration_ldpc > dlsch->max_ldpc_iterations) { if (no_iteration_ldpc > dlsch->max_ldpc_iterations) {
...@@ -524,7 +519,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue, ...@@ -524,7 +519,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
} }
if (LOG_DEBUGFLAG(DEBUG_DLSCH_DECOD) && (!frame%100)) if (LOG_DEBUGFLAG(DEBUG_DLSCH_DECOD) && (!frame%100))
LOG_I(PHY,"K %d C %d Z %d nl %d \n", harq_process->K, harq_process->C, p_decParams->Z, harq_process->Nl); LOG_I(PHY,"K %d C %d Z %d nl %d \n", harq_process->K, harq_process->C, harq_process->Z, harq_process->Nl);
} }
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_SEGMENTATION, VCD_FUNCTION_OUT); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_SEGMENTATION, VCD_FUNCTION_OUT);
......
...@@ -207,7 +207,6 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc, ...@@ -207,7 +207,6 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc,
{ {
int32_t sync_pos, sync_pos_frame; // k_ssb, N_ssb_crb, sync_pos2, int32_t sync_pos, sync_pos_frame; // k_ssb, N_ssb_crb, sync_pos2,
int32_t accumulated_freq_offset = 0;
int32_t metric_tdd_ncp=0; int32_t metric_tdd_ncp=0;
uint8_t phase_tdd_ncp; uint8_t phase_tdd_ncp;
double im, re; double im, re;
...@@ -258,8 +257,6 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc, ...@@ -258,8 +257,6 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc,
LOG_I(PHY,"sync_pos %d ssb_offset %d \n",sync_pos,ue->ssb_offset); LOG_I(PHY,"sync_pos %d ssb_offset %d \n",sync_pos,ue->ssb_offset);
#endif #endif
accumulated_freq_offset += ue->common_vars.freq_offset;
// digital compensation of FFO for SSB symbols // digital compensation of FFO for SSB symbols
if (ue->UE_fo_compensation){ if (ue->UE_fo_compensation){
double s_time = 1/(1.0e3*fp->samples_per_subframe); // sampling time double s_time = 1/(1.0e3*fp->samples_per_subframe); // sampling time
...@@ -310,8 +307,6 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc, ...@@ -310,8 +307,6 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc,
int freq_offset_sss = 0; int freq_offset_sss = 0;
ret = rx_sss_nr(ue, proc, &metric_tdd_ncp, &phase_tdd_ncp, &freq_offset_sss); ret = rx_sss_nr(ue, proc, &metric_tdd_ncp, &phase_tdd_ncp, &freq_offset_sss);
accumulated_freq_offset += freq_offset_sss;
// digital compensation of FFO for SSB symbols // digital compensation of FFO for SSB symbols
if (ue->UE_fo_compensation){ if (ue->UE_fo_compensation){
double s_time = 1/(1.0e3*fp->samples_per_subframe); // sampling time double s_time = 1/(1.0e3*fp->samples_per_subframe); // sampling time
...@@ -334,6 +329,8 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc, ...@@ -334,6 +329,8 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc,
((short *)ue->common_vars.rxdata[ar])[2*n+1] = (short)(round(re*sin(n*off_angle) + im*cos(n*off_angle))); ((short *)ue->common_vars.rxdata[ar])[2*n+1] = (short)(round(re*sin(n*off_angle) + im*cos(n*off_angle)));
} }
} }
ue->common_vars.freq_offset += freq_offset_sss;
} }
if (ret==0) { //we got sss channel if (ret==0) { //we got sss channel
...@@ -603,8 +600,6 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc, ...@@ -603,8 +600,6 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc,
} }
if (dec == false) // sib1 not decoded if (dec == false) // sib1 not decoded
ret = -1; ret = -1;
ue->common_vars.freq_offset = accumulated_freq_offset;
} }
// exit_fun("debug exit"); // exit_fun("debug exit");
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_NR_INITIAL_UE_SYNC, VCD_FUNCTION_OUT); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_NR_INITIAL_UE_SYNC, VCD_FUNCTION_OUT);
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment