Skip to content
Snippets Groups Projects
Commit a5a2fb99 authored by Raphael Defosseux's avatar Raphael Defosseux
Browse files

Merge branch 'ci-check-stopped-containers' into 'develop'

chore(ci): checking how CN5G containers stop

See merge request !175
parents d540d21a b77befef
No related branches found
Tags 2024.w30
1 merge request!175chore(ci): checking how CN5G containers stop
Showing
with 117 additions and 69 deletions
...@@ -163,6 +163,7 @@ pipeline { ...@@ -163,6 +163,7 @@ pipeline {
sleep 60 sleep 60
sh "oc describe pod &>> archives/describe-pods.logs" sh "oc describe pod &>> archives/describe-pods.logs"
sh "oc get pods -o wide" sh "oc get pods -o wide"
CollectLogsFromPods()
coreStatus = checkCoreNetworkDeployment() coreStatus = checkCoreNetworkDeployment()
if (coreStatus > 0) { if (coreStatus > 0) {
error ('Core Deployment went wrong') error ('Core Deployment went wrong')
...@@ -222,6 +223,9 @@ pipeline { ...@@ -222,6 +223,9 @@ pipeline {
sleep 2 sleep 2
// Deploying now // Deploying now
dir ('ci-scripts/docker-compose/gnb-ci-testbed') { dir ('ci-scripts/docker-compose/gnb-ci-testbed') {
sh "sudo b2xx_fx3_utils --reset-device"
sh "sudo uhd_find_devices > /dev/null 2>&1 || true"
sleep 5
sh "sed -i -e 's@image: oaisoftwarealliance/oai-gnb:develop@image: ${ranFullImage}@' docker-compose.yml" sh "sed -i -e 's@image: oaisoftwarealliance/oai-gnb:develop@image: ${ranFullImage}@' docker-compose.yml"
if (mountedFileAsMountedDotConf) { if (mountedFileAsMountedDotConf) {
sh "sed -i -e 's@/opt/oai-gnb/etc/gnb.conf@/opt/oai-gnb/etc/mounted.conf@' docker-compose.yml" sh "sed -i -e 's@/opt/oai-gnb/etc/gnb.conf@/opt/oai-gnb/etc/mounted.conf@' docker-compose.yml"
...@@ -511,7 +515,7 @@ def checkCoreNetworkDeployment() { ...@@ -511,7 +515,7 @@ def checkCoreNetworkDeployment() {
return status return status
} }
def retrieveLogsFromPods() { def CollectLogsFromPods() {
sh "mkdir -p archives" sh "mkdir -p archives"
for (ii = 0; ii < imageNames.size(); ii++) { for (ii = 0; ii < imageNames.size(); ii++) {
podName = sh returnStdout: true, script: "oc get pods | grep ${imageNames[ii]} | awk {'print \$1'} || true" podName = sh returnStdout: true, script: "oc get pods | grep ${imageNames[ii]} | awk {'print \$1'} || true"
...@@ -520,11 +524,14 @@ def retrieveLogsFromPods() { ...@@ -520,11 +524,14 @@ def retrieveLogsFromPods() {
nrfPod = podName nrfPod = podName
} }
try { try {
sh "oc logs ${podName} ${containerInPods[ii]} &> archives/${imageNames[ii]}.logs" sh "nohup oc logs -f ${podName} ${containerInPods[ii]} &> archives/${imageNames[ii]}.logs &"
} catch (Exception e) { } catch (Exception e) {
echo "Getting logs from ${podName} failed" echo "Getting logs from ${podName} failed"
} }
} }
}
def retrieveLogsFromPods() {
// Retrieving mysql logs // Retrieving mysql logs
podName = sh returnStdout: true, script: "oc get pods | grep mysql | awk {'print \$1'} || true" podName = sh returnStdout: true, script: "oc get pods | grep mysql | awk {'print \$1'} || true"
podName = podName.trim() podName = podName.trim()
......
...@@ -235,12 +235,12 @@ pipeline { ...@@ -235,12 +235,12 @@ pipeline {
unsuccessful { unsuccessful {
script { script {
dir ('docker-compose') { dir ('docker-compose') {
sh 'docker-compose -f docker-compose-basic-nrf.yaml stop -t 3' sh 'docker-compose -f docker-compose-basic-nrf.yaml stop -t 30'
} }
sleep 5 sleep 5
retrieveLogs('archives/registration-test', 'docker-compose/docker-compose-basic-nrf.yaml', 'docker-compose/conf/basic_nrf_config.yaml') retrieveLogs('archives/registration-test', 'docker-compose/docker-compose-basic-nrf.yaml', 'docker-compose/conf/basic_nrf_config.yaml')
dir ('docker-compose') { dir ('docker-compose') {
sh 'docker-compose -f docker-compose-basic-nrf.yaml down -t 3' sh 'docker-compose -f docker-compose-basic-nrf.yaml down -v'
} }
cleanUpDockerCompose() cleanUpDockerCompose()
} }
...@@ -272,12 +272,12 @@ pipeline { ...@@ -272,12 +272,12 @@ pipeline {
sh 'docker-compose -f docker-compose-omec-gnbsim.yaml down -t 0' sh 'docker-compose -f docker-compose-omec-gnbsim.yaml down -t 0'
} }
dir ('docker-compose') { dir ('docker-compose') {
sh 'docker-compose -f docker-compose-basic-nrf.yaml stop -t 3' sh 'docker-compose -f docker-compose-basic-nrf.yaml stop -t 30'
} }
sleep 5 sleep 5
retrieveLogs('archives/registration-test', 'docker-compose/docker-compose-basic-nrf.yaml', 'docker-compose/conf/basic_nrf_config.yaml') retrieveLogs('archives/registration-test', 'docker-compose/docker-compose-basic-nrf.yaml', 'docker-compose/conf/basic_nrf_config.yaml')
dir ('docker-compose') { dir ('docker-compose') {
sh 'docker-compose -f docker-compose-basic-nrf.yaml down -t 3' sh 'docker-compose -f docker-compose-basic-nrf.yaml down -v'
} }
cleanUpDockerCompose() cleanUpDockerCompose()
} }
...@@ -288,12 +288,12 @@ pipeline { ...@@ -288,12 +288,12 @@ pipeline {
steps { steps {
script { script {
dir ('docker-compose') { dir ('docker-compose') {
sh 'docker-compose -f docker-compose-basic-nrf.yaml stop -t 3' sh 'docker-compose -f docker-compose-basic-nrf.yaml stop -t 30'
} }
sleep 5 sleep 5
retrieveLogs('archives/registration-test', 'docker-compose/docker-compose-basic-nrf.yaml', 'docker-compose/conf/basic_nrf_config.yaml') retrieveLogs('archives/registration-test', 'docker-compose/docker-compose-basic-nrf.yaml', 'docker-compose/conf/basic_nrf_config.yaml')
dir ('docker-compose') { dir ('docker-compose') {
sh 'docker-compose -f docker-compose-basic-nrf.yaml down -t 3' sh 'docker-compose -f docker-compose-basic-nrf.yaml down -v'
} }
cleanUpDockerCompose() cleanUpDockerCompose()
} }
...@@ -329,12 +329,12 @@ pipeline { ...@@ -329,12 +329,12 @@ pipeline {
unsuccessful { unsuccessful {
script { script {
dir ('docker-compose') { dir ('docker-compose') {
sh 'docker-compose -f docker-compose-basic-nrf.yaml stop -t 3' sh 'docker-compose -f docker-compose-basic-nrf.yaml stop -t 30'
} }
sleep 5 sleep 5
retrieveLogs('archives/pdu-sess-est-test', 'docker-compose/docker-compose-basic-nrf.yaml', 'docker-compose/conf/basic_nrf_config.yaml') retrieveLogs('archives/pdu-sess-est-test', 'docker-compose/docker-compose-basic-nrf.yaml', 'docker-compose/conf/basic_nrf_config.yaml')
dir ('docker-compose') { dir ('docker-compose') {
sh 'docker-compose -f docker-compose-basic-nrf.yaml down -t 3' sh 'docker-compose -f docker-compose-basic-nrf.yaml down -v'
} }
cleanUpDockerCompose() cleanUpDockerCompose()
} }
...@@ -367,12 +367,12 @@ pipeline { ...@@ -367,12 +367,12 @@ pipeline {
sh 'docker-compose -f docker-compose-omec-gnbsim.yaml down -t 0' sh 'docker-compose -f docker-compose-omec-gnbsim.yaml down -t 0'
} }
dir ('docker-compose') { dir ('docker-compose') {
sh 'docker-compose -f docker-compose-basic-nrf.yaml stop -t 3' sh 'docker-compose -f docker-compose-basic-nrf.yaml stop -t 30'
} }
sleep 5 sleep 5
retrieveLogs('archives/pdu-sess-est-test', 'docker-compose/docker-compose-basic-nrf.yaml', 'docker-compose/conf/basic_nrf_config.yaml') retrieveLogs('archives/pdu-sess-est-test', 'docker-compose/docker-compose-basic-nrf.yaml', 'docker-compose/conf/basic_nrf_config.yaml')
dir ('docker-compose') { dir ('docker-compose') {
sh 'docker-compose -f docker-compose-basic-nrf.yaml down -t 3' sh 'docker-compose -f docker-compose-basic-nrf.yaml down -v'
} }
cleanUpDockerCompose() cleanUpDockerCompose()
} }
...@@ -383,12 +383,12 @@ pipeline { ...@@ -383,12 +383,12 @@ pipeline {
steps { steps {
script { script {
dir ('docker-compose') { dir ('docker-compose') {
sh 'docker-compose -f docker-compose-basic-nrf.yaml stop -t 3' sh 'docker-compose -f docker-compose-basic-nrf.yaml stop -t 30'
} }
sleep 5 sleep 5
retrieveLogs('archives/pdu-sess-est-test', 'docker-compose/docker-compose-basic-nrf.yaml', 'docker-compose/conf/basic_nrf_config.yaml') retrieveLogs('archives/pdu-sess-est-test', 'docker-compose/docker-compose-basic-nrf.yaml', 'docker-compose/conf/basic_nrf_config.yaml')
dir ('docker-compose') { dir ('docker-compose') {
sh 'docker-compose -f docker-compose-basic-nrf.yaml down -t 3' sh 'docker-compose -f docker-compose-basic-nrf.yaml down -v'
} }
cleanUpDockerCompose() cleanUpDockerCompose()
} }
...@@ -424,12 +424,12 @@ pipeline { ...@@ -424,12 +424,12 @@ pipeline {
unsuccessful { unsuccessful {
script { script {
dir ('docker-compose') { dir ('docker-compose') {
sh 'docker-compose -f docker-compose-basic-nrf.yaml stop -t 3' sh 'docker-compose -f docker-compose-basic-nrf.yaml stop -t 30'
} }
sleep 5 sleep 5
retrieveLogs('archives/deregistration', 'docker-compose/docker-compose-basic-nrf.yaml', 'docker-compose/conf/basic_nrf_config.yaml') retrieveLogs('archives/deregistration', 'docker-compose/docker-compose-basic-nrf.yaml', 'docker-compose/conf/basic_nrf_config.yaml')
dir ('docker-compose') { dir ('docker-compose') {
sh 'docker-compose -f docker-compose-basic-nrf.yaml down -t 3' sh 'docker-compose -f docker-compose-basic-nrf.yaml down -v'
} }
cleanUpDockerCompose() cleanUpDockerCompose()
} }
...@@ -462,12 +462,12 @@ pipeline { ...@@ -462,12 +462,12 @@ pipeline {
sh 'docker-compose -f docker-compose-omec-gnbsim.yaml down -t 0' sh 'docker-compose -f docker-compose-omec-gnbsim.yaml down -t 0'
} }
dir ('docker-compose') { dir ('docker-compose') {
sh 'docker-compose -f docker-compose-basic-nrf.yaml stop -t 3' sh 'docker-compose -f docker-compose-basic-nrf.yaml stop -t 30'
} }
sleep 5 sleep 5
retrieveLogs('archives/deregistration', 'docker-compose/docker-compose-basic-nrf.yaml', 'docker-compose/conf/basic_nrf_config.yaml') retrieveLogs('archives/deregistration', 'docker-compose/docker-compose-basic-nrf.yaml', 'docker-compose/conf/basic_nrf_config.yaml')
dir ('docker-compose') { dir ('docker-compose') {
sh 'docker-compose -f docker-compose-basic-nrf.yaml down -t 3' sh 'docker-compose -f docker-compose-basic-nrf.yaml down -v'
} }
cleanUpDockerCompose() cleanUpDockerCompose()
} }
...@@ -478,12 +478,12 @@ pipeline { ...@@ -478,12 +478,12 @@ pipeline {
steps { steps {
script { script {
dir ('docker-compose') { dir ('docker-compose') {
sh 'docker-compose -f docker-compose-basic-nrf.yaml stop -t 3' sh 'docker-compose -f docker-compose-basic-nrf.yaml stop -t 30'
} }
sleep 5 sleep 5
retrieveLogs('archives/deregistration', 'docker-compose/docker-compose-basic-nrf.yaml', 'docker-compose/conf/basic_nrf_config.yaml') retrieveLogs('archives/deregistration', 'docker-compose/docker-compose-basic-nrf.yaml', 'docker-compose/conf/basic_nrf_config.yaml')
dir ('docker-compose') { dir ('docker-compose') {
sh 'docker-compose -f docker-compose-basic-nrf.yaml down -t 3' sh 'docker-compose -f docker-compose-basic-nrf.yaml down -v'
} }
cleanUpDockerCompose() cleanUpDockerCompose()
} }
......
...@@ -97,7 +97,7 @@ readinessProbe: false ...@@ -97,7 +97,7 @@ readinessProbe: false
livenessProbe: false livenessProbe: false
terminationGracePeriodSeconds: 5 terminationGracePeriodSeconds: 60
nodeSelector: {} nodeSelector: {}
......
...@@ -81,7 +81,7 @@ readinessProbe: true ...@@ -81,7 +81,7 @@ readinessProbe: true
livenessProbe: false livenessProbe: false
terminationGracePeriodSeconds: 5 terminationGracePeriodSeconds: 60
nodeSelector: {} nodeSelector: {}
......
...@@ -73,7 +73,7 @@ resources: ...@@ -73,7 +73,7 @@ resources:
cpu: 100m cpu: 100m
memory: 128Mi memory: 128Mi
terminationGracePeriodSeconds: 5 terminationGracePeriodSeconds: 60
readinessProbe: true readinessProbe: true
......
...@@ -94,7 +94,7 @@ resources: ...@@ -94,7 +94,7 @@ resources:
readinessProbe: true readinessProbe: true
livenessProbe: false livenessProbe: false
terminationGracePeriodSeconds: 5 terminationGracePeriodSeconds: 60
nodeSelector: {} nodeSelector: {}
......
...@@ -79,7 +79,7 @@ readinessProbe: true ...@@ -79,7 +79,7 @@ readinessProbe: true
livenessProbe: false livenessProbe: false
terminationGracePeriodSeconds: 5 terminationGracePeriodSeconds: 60
nodeSelector: {} nodeSelector: {}
......
...@@ -112,7 +112,7 @@ readinessProbe: true ...@@ -112,7 +112,7 @@ readinessProbe: true
livenessProbe: false livenessProbe: false
terminationGracePeriodSeconds: 5 terminationGracePeriodSeconds: 60
nodeSelector: {} nodeSelector: {}
......
...@@ -255,6 +255,32 @@ def detailsCoreDeployment(): ...@@ -255,6 +255,32 @@ def detailsCoreDeployment():
detailsHtml += generate_button_footer() detailsHtml += generate_button_footer()
return (status, detailsHtml) return (status, detailsHtml)
def detailsCoreUndeployment():
cwd = os.getcwd()
status = True
detailsHtml = generate_button_header('cn5g-undeploy-details', 'Details on the OAI CN5G Undeployment')
detailsHtml += generate_list_header()
coreElements = ['oai-nrf', 'oai-amf', 'oai-smf', 'oai-upf', 'oai-ausf', 'oai-udm', 'oai-udr']
for element in coreElements:
byeMessagePresent = False
if not os.path.isfile(f'{cwd}/archives/{element}.logs'):
detailsHtml += generate_list_row(f'{element} has NO LOGS', 'remove-sign')
status = False
continue
with open(f'{cwd}/archives/{element}.logs', mode='r', errors='ignore') as nfRuntimeLogFile:
for line in nfRuntimeLogFile:
result = re.search('system.*info.* Bye. Shutdown Procedure took (?P<duration>[0-9]+) ms', line)
if result is not None:
byeMessagePresent = True
duration = int(result.group('duration'))
detailsHtml += generate_list_row(f'{element} has the bye message -- Shutdown took {duration} ms', 'info-sign')
if not byeMessagePresent:
detailsHtml += generate_list_row(f'{element} has NO Bye message', 'remove-sign')
status = False
detailsHtml += generate_list_footer()
detailsHtml += generate_button_footer()
return (status, detailsHtml)
def checkAMFconnection(): def checkAMFconnection():
cwd = os.getcwd() cwd = os.getcwd()
count = 0 count = 0
...@@ -446,6 +472,7 @@ if __name__ == '__main__': ...@@ -446,6 +472,7 @@ if __name__ == '__main__':
ueStop1Status = True ueStop1Status = True
else: else:
ueStop1Status = False ueStop1Status = False
(undeployStatus, undeployDetails) = detailsCoreUndeployment()
cwd = os.getcwd() cwd = os.getcwd()
with open(os.path.join(cwd, REPORT_NAME), 'w') as wfile: with open(os.path.join(cwd, REPORT_NAME), 'w') as wfile:
...@@ -464,7 +491,8 @@ if __name__ == '__main__': ...@@ -464,7 +491,8 @@ if __name__ == '__main__':
wfile.write(ueStartTest1) wfile.write(ueStartTest1)
wfile.write(generate_chapter('Second COTS-UE Deconnection', 'PDU Session release / Deregistration', ueStop1Status)) wfile.write(generate_chapter('Second COTS-UE Deconnection', 'PDU Session release / Deregistration', ueStop1Status))
wfile.write(ueStopTest1) wfile.write(ueStopTest1)
wfile.write(generate_chapter('Post-Run PCAP Analysis', 'To be done', True)) wfile.write(generate_chapter('Shutdown Analysis', 'Status for undeployment', undeployStatus))
wfile.write(undeployDetails)
wfile.write(generate_footer()) wfile.write(generate_footer())
if not coreStatus or not ranStatus or not ueStart0Status or not ueStop0Status or not ueStart1Status or not ueStop1Status: if not coreStatus or not ranStatus or not ueStart0Status or not ueStop0Status or not ueStart1Status or not ueStop1Status:
sys.exit(1) sys.exit(1)
......
...@@ -43,6 +43,9 @@ from common.python.generate_html import ( ...@@ -43,6 +43,9 @@ from common.python.generate_html import (
generate_list_sub_header, generate_list_sub_header,
generate_list_sub_footer, generate_list_sub_footer,
generate_list_sub_row, generate_list_sub_row,
generate_command_table_header,
generate_command_table_row,
generate_command_table_footer,
) )
REPORT_NAME = 'test_results_oai_cn5g_load_test.html' REPORT_NAME = 'test_results_oai_cn5g_load_test.html'
...@@ -70,6 +73,7 @@ class HtmlReport(): ...@@ -70,6 +73,7 @@ class HtmlReport():
log_files = sorted(os.listdir(cwd + '/archives/' + testPath)) log_files = sorted(os.listdir(cwd + '/archives/' + testPath))
deployedContainerImages = [] deployedContainerImages = []
byeMessages = []
for log_file in log_files: for log_file in log_files:
if not log_file.endswith(".log"): if not log_file.endswith(".log"):
continue continue
...@@ -104,8 +108,19 @@ class HtmlReport(): ...@@ -104,8 +108,19 @@ class HtmlReport():
result = re.search('Date = (?P<date>[a-zA-Z0-9\-\_:]+)', line) result = re.search('Date = (?P<date>[a-zA-Z0-9\-\_:]+)', line)
if result is not None: if result is not None:
imageDate = re.sub('T', ' ', result.group('date')) imageDate = re.sub('T', ' ', result.group('date'))
imageDetailsFile.close()
deployedContainerImages.append((containerName, f'{imageRootName}{imageTag}', imageSize, imageDate)) deployedContainerImages.append((containerName, f'{imageRootName}{imageTag}', imageSize, imageDate))
if fileRootName == '5gc-gnbsim':
continue
byeMessagePresent = False
with open(cwd + f'/archives/{testPath}/{containerName}.log','r') as nfRuntimeLogFile:
for line in nfRuntimeLogFile:
result = re.search('system.*info.* Bye. Shutdown Procedure took (?P<duration>[0-9]+) ms', line)
if result is not None and not byeMessagePresent:
byeMessagePresent = True
duration = int(result.group('duration'))
byeMessages.append((containerName, f'{containerName} -- properly shutdown in {duration} ms -- See {testPath}/{containerName}.log for details', True))
if not byeMessagePresent:
byeMessages.append((containerName, f'{containerName} -- {testPath}/{containerName}.log -- does not show Bye message', False))
instancesDetails = [] instancesDetails = []
fullTestStatus = True fullTestStatus = True
...@@ -160,6 +175,10 @@ class HtmlReport(): ...@@ -160,6 +175,10 @@ class HtmlReport():
testDetails += generate_image_table_separator() testDetails += generate_image_table_separator()
testDetails += generate_image_table_row(cName, iTag, 'N/A', iDate, iSize) testDetails += generate_image_table_row(cName, iTag, 'N/A', iDate, iSize)
testDetails += generate_image_table_footer() testDetails += generate_image_table_footer()
testDetails += re.sub('Command', 'Shutdown procedure', generate_command_table_header())
for (containerName, byeMessage, byeStatus) in byeMessages:
testDetails += generate_command_table_row(byeMessage, byeStatus)
testDetails += generate_command_table_footer()
testDetails += generate_list_header() testDetails += generate_list_header()
for (comp, status, pName, pType, passUe, failUe) in instancesDetails: for (comp, status, pName, pType, passUe, failUe) in instancesDetails:
if status: if status:
......
...@@ -99,7 +99,7 @@ def main() -> None: ...@@ -99,7 +99,7 @@ def main() -> None:
ausfCpuY.append(float(result.group('cpu_usage'))) ausfCpuY.append(float(result.group('cpu_usage')))
ausfMemY.append(float(result.group('memory_usage'))) ausfMemY.append(float(result.group('memory_usage')))
if line.count('oai-udm') > 0: if line.count('oai-udm') > 0:
esult = re.search(' (?P<cpu_usage>[0-9\.]+)% *(?P<memory_usage>[0-9\.]+)MiB / ', line) result = re.search(' (?P<cpu_usage>[0-9\.]+)% *(?P<memory_usage>[0-9\.]+)MiB / ', line)
if result is not None: if result is not None:
udmTimeX.append(x * LOOP_INTERVAL) udmTimeX.append(x * LOOP_INTERVAL)
udmCpuY.append(float(result.group('cpu_usage'))) udmCpuY.append(float(result.group('cpu_usage')))
......
...@@ -53,7 +53,6 @@ class HtmlReport(): ...@@ -53,7 +53,6 @@ class HtmlReport():
wfile.write(generate_header(args)) wfile.write(generate_header(args))
tutorials = ['mini-gnbsim', 'static-ue-ip', 'vpp-upf-gnbsim', 'slicing-with-nssf', 'ulcl-scenario', 'mongodb-test', 'upf-ebpf-gnbsim'] tutorials = ['mini-gnbsim', 'static-ue-ip', 'vpp-upf-gnbsim', 'slicing-with-nssf', 'ulcl-scenario', 'mongodb-test', 'upf-ebpf-gnbsim']
tutorials = ['mini-gnbsim', 'static-ue-ip', 'vpp-upf-gnbsim', 'slicing-with-nssf', 'ulcl-scenario', 'mongodb-test']
for tutorial in tutorials: for tutorial in tutorials:
if not os.path.isfile(cwd + '/archives/' + tutorial + '.log'): if not os.path.isfile(cwd + '/archives/' + tutorial + '.log'):
continue continue
...@@ -100,6 +99,7 @@ class HtmlReport(): ...@@ -100,6 +99,7 @@ class HtmlReport():
log_files = sorted(os.listdir(cwd + '/archives/' + tutorial)) log_files = sorted(os.listdir(cwd + '/archives/' + tutorial))
deployedContainerImages = [] deployedContainerImages = []
byeMessages = []
for log_file in log_files: for log_file in log_files:
if not log_file.endswith(".log"): if not log_file.endswith(".log"):
continue continue
...@@ -138,8 +138,19 @@ class HtmlReport(): ...@@ -138,8 +138,19 @@ class HtmlReport():
result = re.search('Date = (?P<date>[a-zA-Z0-9\-\_:]+)', line) result = re.search('Date = (?P<date>[a-zA-Z0-9\-\_:]+)', line)
if result is not None: if result is not None:
imageDate = re.sub('T', ' ', result.group('date')) imageDate = re.sub('T', ' ', result.group('date'))
imageDetailsFile.close()
deployedContainerImages.append((containerName, imageRootName + imageTag, imageSize, imageDate)) deployedContainerImages.append((containerName, imageRootName + imageTag, imageSize, imageDate))
if re.search('vpp-upf', rootName) is not None:
continue
byeMessagePresent = False
with open(cwd + f'/archives/{tutorial}/{log_file}','r') as nfRuntimeLogFile:
for line in nfRuntimeLogFile:
result = re.search('system.*info.* Bye. Shutdown Procedure took (?P<duration>[0-9]+) ms', line)
if result is not None and not byeMessagePresent:
byeMessagePresent = True
duration = int(result.group('duration'))
byeMessages.append((containerName, f'{containerName} -- {rootName} properly shutdown in {duration} ms -- See {tutorial}/{log_file} for details', True))
if not byeMessagePresent:
byeMessages.append((containerName, f'{containerName} -- {tutorial}/{log_file} -- {rootName} does not show Bye message', False))
if tutoName == '': if tutoName == '':
return '' return ''
...@@ -159,6 +170,10 @@ class HtmlReport(): ...@@ -159,6 +170,10 @@ class HtmlReport():
for (cmd,cmdStatus) in listOfCmds: for (cmd,cmdStatus) in listOfCmds:
tutoText += generate_command_table_row(cmd, cmdStatus) tutoText += generate_command_table_row(cmd, cmdStatus)
tutoText += generate_command_table_footer() tutoText += generate_command_table_footer()
tutoText += re.sub('Command', 'Shutdown procedure', generate_command_table_header())
for (containerName, byeMessage, byeStatus) in byeMessages:
tutoText += generate_command_table_row(byeMessage, byeStatus)
tutoText += generate_command_table_footer()
tutoText += generate_button_footer() tutoText += generate_button_footer()
return tutoText return tutoText
......
...@@ -183,7 +183,7 @@ def undeploy(file_name): ...@@ -183,7 +183,7 @@ def undeploy(file_name):
None None
""" """
logging.debug('\033[0;34m UnDeploying OAI 5G core components\033[0m....') logging.debug('\033[0;34m UnDeploying OAI 5G core components\033[0m....')
cmd = f'docker-compose -f {file_name} down -t 0' cmd = f'docker-compose -f {file_name} down -t 30'
res = run_cmd(cmd, False) res = run_cmd(cmd, False)
if res is None: if res is None:
sys.exit(f'\033[0;31m Incorrect/Unsupported executing command {cmd}') sys.exit(f'\033[0;31m Incorrect/Unsupported executing command {cmd}')
......
...@@ -47,7 +47,7 @@ services: ...@@ -47,7 +47,7 @@ services:
environment: environment:
- TZ=Europe/Paris - TZ=Europe/Paris
depends_on: depends_on:
- oai-udr - oai-nrf
networks: networks:
public_net: public_net:
ipv4_address: 192.168.70.137 ipv4_address: 192.168.70.137
...@@ -62,7 +62,7 @@ services: ...@@ -62,7 +62,7 @@ services:
environment: environment:
- TZ=Europe/Paris - TZ=Europe/Paris
depends_on: depends_on:
- oai-udm - oai-nrf
networks: networks:
public_net: public_net:
ipv4_address: 192.168.70.138 ipv4_address: 192.168.70.138
...@@ -91,9 +91,7 @@ services: ...@@ -91,9 +91,7 @@ services:
environment: environment:
- TZ=Europe/Paris - TZ=Europe/Paris
depends_on: depends_on:
- mysql
- oai-nrf - oai-nrf
- oai-ausf
networks: networks:
public_net: public_net:
ipv4_address: 192.168.70.132 ipv4_address: 192.168.70.132
...@@ -110,7 +108,6 @@ services: ...@@ -110,7 +108,6 @@ services:
- TZ=Europe/Paris - TZ=Europe/Paris
depends_on: depends_on:
- oai-nrf - oai-nrf
- oai-amf
networks: networks:
public_net: public_net:
ipv4_address: 192.168.70.133 ipv4_address: 192.168.70.133
...@@ -129,7 +126,6 @@ services: ...@@ -129,7 +126,6 @@ services:
- TZ=Europe/Paris - TZ=Europe/Paris
depends_on: depends_on:
- oai-nrf - oai-nrf
- oai-smf
cap_add: cap_add:
- NET_ADMIN - NET_ADMIN
- SYS_ADMIN - SYS_ADMIN
......
...@@ -46,7 +46,7 @@ services: ...@@ -46,7 +46,7 @@ services:
environment: environment:
- TZ=Europe/Paris - TZ=Europe/Paris
depends_on: depends_on:
- oai-udr - oai-nrf
networks: networks:
public_net: public_net:
ipv4_address: 192.168.70.137 ipv4_address: 192.168.70.137
...@@ -61,7 +61,7 @@ services: ...@@ -61,7 +61,7 @@ services:
environment: environment:
- TZ=Europe/Paris - TZ=Europe/Paris
depends_on: depends_on:
- oai-udm - oai-nrf
networks: networks:
public_net: public_net:
ipv4_address: 192.168.70.138 ipv4_address: 192.168.70.138
...@@ -90,9 +90,7 @@ services: ...@@ -90,9 +90,7 @@ services:
environment: environment:
- TZ=Europe/Paris - TZ=Europe/Paris
depends_on: depends_on:
- mongodb
- oai-nrf - oai-nrf
- oai-ausf
networks: networks:
public_net: public_net:
ipv4_address: 192.168.70.132 ipv4_address: 192.168.70.132
...@@ -109,7 +107,6 @@ services: ...@@ -109,7 +107,6 @@ services:
- TZ=Europe/Paris - TZ=Europe/Paris
depends_on: depends_on:
- oai-nrf - oai-nrf
- oai-amf
networks: networks:
public_net: public_net:
ipv4_address: 192.168.70.133 ipv4_address: 192.168.70.133
...@@ -125,7 +122,6 @@ services: ...@@ -125,7 +122,6 @@ services:
- TZ=Europe/Paris - TZ=Europe/Paris
depends_on: depends_on:
- oai-nrf - oai-nrf
- oai-smf
cap_add: cap_add:
- NET_ADMIN - NET_ADMIN
- SYS_ADMIN - SYS_ADMIN
......
...@@ -49,7 +49,7 @@ services: ...@@ -49,7 +49,7 @@ services:
environment: environment:
- TZ=Europe/Paris - TZ=Europe/Paris
depends_on: depends_on:
- oai-udr - oai-nrf
networks: networks:
public_net: public_net:
# For CI purposes, we are keeping the line commented # For CI purposes, we are keeping the line commented
...@@ -65,7 +65,7 @@ services: ...@@ -65,7 +65,7 @@ services:
environment: environment:
- TZ=Europe/Paris - TZ=Europe/Paris
depends_on: depends_on:
- oai-udm - oai-nrf
networks: networks:
public_net: public_net:
# For CI purposes, we are keeping the line commented # For CI purposes, we are keeping the line commented
...@@ -96,9 +96,7 @@ services: ...@@ -96,9 +96,7 @@ services:
environment: environment:
- TZ=Europe/Paris - TZ=Europe/Paris
depends_on: depends_on:
- mysql
- oai-nrf - oai-nrf
- oai-ausf
networks: networks:
public_net: public_net:
# For CI purposes, we are keeping the line commented # For CI purposes, we are keeping the line commented
...@@ -116,7 +114,6 @@ services: ...@@ -116,7 +114,6 @@ services:
- TZ=Europe/Paris - TZ=Europe/Paris
depends_on: depends_on:
- oai-nrf - oai-nrf
- oai-amf
networks: networks:
public_net: public_net:
# For CI purposes, we are keeping the line commented # For CI purposes, we are keeping the line commented
...@@ -133,7 +130,6 @@ services: ...@@ -133,7 +130,6 @@ services:
- TZ=Europe/Paris - TZ=Europe/Paris
depends_on: depends_on:
- oai-nrf - oai-nrf
- oai-smf
cap_add: cap_add:
- NET_ADMIN - NET_ADMIN
- SYS_ADMIN - SYS_ADMIN
......
...@@ -47,7 +47,7 @@ services: ...@@ -47,7 +47,7 @@ services:
environment: environment:
- TZ=Europe/Paris - TZ=Europe/Paris
depends_on: depends_on:
- oai-udr - oai-nrf
networks: networks:
public_net: public_net:
ipv4_address: 192.168.70.137 ipv4_address: 192.168.70.137
...@@ -62,7 +62,7 @@ services: ...@@ -62,7 +62,7 @@ services:
environment: environment:
- TZ=Europe/Paris - TZ=Europe/Paris
depends_on: depends_on:
- oai-udm - oai-nrf
networks: networks:
public_net: public_net:
ipv4_address: 192.168.70.138 ipv4_address: 192.168.70.138
...@@ -91,10 +91,7 @@ services: ...@@ -91,10 +91,7 @@ services:
environment: environment:
- TZ=Europe/Paris - TZ=Europe/Paris
depends_on: depends_on:
- mysql - oai-nrf
- vpp-upf
- oai-ext-dn
- oai-ausf
networks: networks:
public_net: public_net:
ipv4_address: 192.168.70.132 ipv4_address: 192.168.70.132
...@@ -112,7 +109,7 @@ services: ...@@ -112,7 +109,7 @@ services:
extra_hosts: extra_hosts:
- "vpp-upf.node.5gcn.mnc95.mcc208.3gppnetwork.org:192.168.70.201" - "vpp-upf.node.5gcn.mnc95.mcc208.3gppnetwork.org:192.168.70.201"
depends_on: depends_on:
- oai-amf - oai-nrf
networks: networks:
public_net: public_net:
ipv4_address: 192.168.70.133 ipv4_address: 192.168.70.133
......
...@@ -47,7 +47,7 @@ services: ...@@ -47,7 +47,7 @@ services:
environment: environment:
- TZ=Europe/Paris - TZ=Europe/Paris
depends_on: depends_on:
- oai-udr - oai-nrf
networks: networks:
public_net: public_net:
ipv4_address: 192.168.70.137 ipv4_address: 192.168.70.137
...@@ -62,7 +62,7 @@ services: ...@@ -62,7 +62,7 @@ services:
environment: environment:
- TZ=Europe/Paris - TZ=Europe/Paris
depends_on: depends_on:
- oai-udm - oai-nrf
networks: networks:
public_net: public_net:
ipv4_address: 192.168.70.138 ipv4_address: 192.168.70.138
...@@ -92,12 +92,7 @@ services: ...@@ -92,12 +92,7 @@ services:
- TZ=Europe/Paris - TZ=Europe/Paris
depends_on: depends_on:
- mysql - mysql
- vpp-upf-ulcl - oai-nrf
- vpp-upf-aupf1
- vpp-upf-aupf2
- oai-ext-dn-internet
- oai-ext-dn-edge
- oai-ausf
networks: networks:
public_net: public_net:
ipv4_address: 192.168.70.132 ipv4_address: 192.168.70.132
...@@ -117,8 +112,7 @@ services: ...@@ -117,8 +112,7 @@ services:
- "aupf1.node.5gcn.mnc95.mcc208.3gppnetwork.org:192.168.70.202" - "aupf1.node.5gcn.mnc95.mcc208.3gppnetwork.org:192.168.70.202"
- "aupf2.node.5gcn.mnc95.mcc208.3gppnetwork.org:192.168.70.203" - "aupf2.node.5gcn.mnc95.mcc208.3gppnetwork.org:192.168.70.203"
depends_on: depends_on:
- oai-amf - oai-nrf
- oai-pcf
networks: networks:
public_net: public_net:
ipv4_address: 192.168.70.133 ipv4_address: 192.168.70.133
......
...@@ -55,7 +55,7 @@ docker-compose-host $: docker exec oai-ext-dn ping 12.1.1.4 -c4 ...@@ -55,7 +55,7 @@ docker-compose-host $: docker exec oai-ext-dn ping 12.1.1.4 -c4
For CI purposes please ignore this line For CI purposes please ignore this line
``` shell ``` shell
docker-compose-host $: docker-compose -f docker-compose-gnbsim.yaml stop -t 2 docker-compose-host $: docker-compose -f docker-compose-gnbsim.yaml stop -t 2
docker-compose-host $: docker-compose -f docker-compose-basic-nrf-mongodb.yaml stop -t 2 docker-compose-host $: docker-compose -f docker-compose-basic-nrf-mongodb.yaml stop -t 30
``` ```
--> -->
......
...@@ -234,7 +234,7 @@ rtt min/avg/max/mdev = 0.297/0.673/0.849/0.223 ms ...@@ -234,7 +234,7 @@ rtt min/avg/max/mdev = 0.297/0.673/0.849/0.223 ms
For CI purposes please ignore these lines For CI purposes please ignore these lines
``` shell ``` shell
docker-compose-host $: docker-compose -f docker-compose-gnbsim.yaml stop -t 2 docker-compose-host $: docker-compose -f docker-compose-gnbsim.yaml stop -t 2
docker-compose-host $: docker-compose -f docker-compose-basic-nrf.yaml stop -t 2 docker-compose-host $: docker-compose -f docker-compose-basic-nrf.yaml stop -t 30
``` ```
--> -->
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment