diff --git a/ci-scripts/cls_containerize.py b/ci-scripts/cls_containerize.py index 6cf3e95db7d7cdca5d6f84710690c61742c66679..ea09cd058564fa665bfa2cd2f6a7a11ea09d5a6b 100644 --- a/ci-scripts/cls_containerize.py +++ b/ci-scripts/cls_containerize.py @@ -93,6 +93,7 @@ class Containerize(): self.allImagesSize = {} self.collectInfo = {} + self.tsharkStarted = False self.pingContName = '' self.pingOptions = '' self.pingLossThreshold = '' @@ -597,6 +598,10 @@ class Containerize(): time.sleep(10) if count == 100 and healthy == self.nb_healthy[0]: + if self.tsharkStarted == False: + logging.debug('Starting tshark on public network') + self.CaptureOnDockerNetworks() + self.tsharkStarted = True HTML.CreateHtmlTestRow('n/a', 'OK', CONST.ALL_PROCESSES_OK) logging.info('\u001B[1m Deploying OAI Object(s) PASS\u001B[0m') else: @@ -604,6 +609,20 @@ class Containerize(): HTML.CreateHtmlTestRow('Could not deploy in time', 'KO', CONST.ALL_PROCESSES_OK) logging.error('\u001B[1m Deploying OAI Object(s) FAILED\u001B[0m') + def CaptureOnDockerNetworks(self): + cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml config | grep com.docker.network.bridge.name | sed -e "s@^.*name: @@"' + networkNames = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10) + cmd = 'sudo nohup tshark -f "not tcp and not arp and not port 53 and not host archive.ubuntu.com and not host security.ubuntu.com"' + for name in networkNames.split('\n'): + res = re.search('rfsim', name) + if res is not None: + cmd += ' -i ' + name + cmd += ' -w /tmp/capture_' + ymlPath = self.yamlPath[0].split('/') + cmd += ymlPath[1] + '.pcap > /tmp/tshark.log 2>&1 &' + logging.debug(cmd) + networkNames = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10) + def UndeployGenObject(self, HTML): self.exitStatus = 0 ymlPath = self.yamlPath[0].split('/') @@ -638,6 +657,18 @@ class Containerize(): cmd = 'mkdir -p '+ logPath + ' && mv ' + self.yamlPath[0] + '/*.log ' + logPath logging.debug(cmd) deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10) + if self.tsharkStarted: + self.tsharkStarted = True + ymlPath = self.yamlPath[0].split('/') + cmd = 'sudo chmod 666 /tmp/capture_' + ymlPath[1] + '.pcap' + logging.debug(cmd) + copyStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10) + cmd = 'cp /tmp/capture_' + ymlPath[1] + '.pcap ' + logPath + logging.debug(cmd) + copyStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10) + cmd = 'sudo rm /tmp/capture_' + ymlPath[1] + '.pcap' + logging.debug(cmd) + copyStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10) cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml down' logging.debug(cmd) @@ -715,9 +746,16 @@ class Containerize(): if status: HTML.CreateHtmlTestRowQueue(self.pingOptions, 'OK', 1, html_queue) else: - self.exitStatus = 1 - logging.error('\u001B[1;37;41m ' + message + ' \u001B[0m') + logging.error('\u001B[1;37;41m ping test FAIL -- ' + message + ' \u001B[0m') HTML.CreateHtmlTestRowQueue(self.pingOptions, 'KO', 1, html_queue) + # Automatic undeployment + logging.debug('----------------------------------------') + logging.debug('\u001B[1m Starting Automatic undeployment \u001B[0m') + logging.debug('----------------------------------------') + HTML.testCase_id = 'AUTO-UNDEPLOY' + HTML.desc = 'Automatic Un-Deployment' + self.UndeployGenObject(HTML) + self.exitStatus = 1 def IperfFromContainer(self, HTML): self.exitStatus = 0 @@ -836,5 +874,13 @@ class Containerize(): if status: HTML.CreateHtmlTestRowQueue(self.cliOptions, 'OK', 1, html_queue) else: - self.exitStatus = 1 + logging.error('\u001B[1m Iperf Test FAIL -- ' + message + ' \u001B[0m') HTML.CreateHtmlTestRowQueue(self.cliOptions, 'KO', 1, html_queue) + # Automatic undeployment + logging.debug('----------------------------------------') + logging.debug('\u001B[1m Starting Automatic undeployment \u001B[0m') + logging.debug('----------------------------------------') + HTML.testCase_id = 'AUTO-UNDEPLOY' + HTML.desc = 'Automatic Un-Deployment' + self.UndeployGenObject(HTML) + self.exitStatus = 1 diff --git a/ci-scripts/xml_files/container_5g_f1_rfsim.xml b/ci-scripts/xml_files/container_5g_f1_rfsim.xml index 400cd86fcd37935fd1c3f08f8b721f80d5683fb2..501f2fe46ff6043468c0b3e7e940bfb8ee36932e 100644 --- a/ci-scripts/xml_files/container_5g_f1_rfsim.xml +++ b/ci-scripts/xml_files/container_5g_f1_rfsim.xml @@ -26,6 +26,7 @@ <htmlTabIcon>wrench</htmlTabIcon> <TestCaseRequestedList> 100021 + 000020 000021 000022 000023 @@ -33,16 +34,23 @@ 020021 020022 030021 - 030022 100021 </TestCaseRequestedList> <TestCaseExclusionList></TestCaseExclusionList> + <testCase id="000020"> + <class>DeployGenObject</class> + <desc>Deploy MySql Database</desc> + <yaml_path>yaml_files/5g_f1_rfsimulator</yaml_path> + <services>mysql</services> + <nb_healthy>1</nb_healthy> + </testCase> + <testCase id="000021"> <class>DeployGenObject</class> <desc>Deploy OAI 5G CoreNetwork</desc> <yaml_path>yaml_files/5g_f1_rfsimulator</yaml_path> - <services>mysql oai-nrf oai-amf oai-smf oai-spgwu oai-ext-dn</services> + <services>oai-nrf oai-amf oai-smf oai-spgwu oai-ext-dn</services> <nb_healthy>6</nb_healthy> </testCase> @@ -92,7 +100,7 @@ <server_container_name>rfsim5g-oai-nr-ue</server_container_name> <client_container_name>rfsim5g-oai-ext-dn</client_container_name> <server_options>-B 12.1.1.2 -u -i 1 -s</server_options> - <client_options>-c 12.1.1.2 -u -i 1 -t 30 -b 400K</client_options> + <client_options>-c 12.1.1.2 -u -i 1 -t 30 -b 200K</client_options> </testCase> <testCase id="030022"> @@ -101,7 +109,7 @@ <server_container_name>rfsim5g-oai-ext-dn</server_container_name> <client_container_name>rfsim5g-oai-nr-ue</client_container_name> <server_options>-u -i 1 -s</server_options> - <client_options>-B 12.1.1.2 -c 192.168.72.135 -u -i 1 -t 30 -b 20K</client_options> + <client_options>-B 12.1.1.2 -c 192.168.72.135 -u -i 1 -t 30 -b 5K</client_options> </testCase> <testCase id="100021"> diff --git a/ci-scripts/xml_files/container_5g_rfsim.xml b/ci-scripts/xml_files/container_5g_rfsim.xml index 31d7c1429b3b14552ba70c80bf42736eb526fb21..da727f59c44099473420a8fd4a7ee8010915ed61 100644 --- a/ci-scripts/xml_files/container_5g_rfsim.xml +++ b/ci-scripts/xml_files/container_5g_rfsim.xml @@ -26,6 +26,7 @@ <htmlTabIcon>wrench</htmlTabIcon> <TestCaseRequestedList> 100001 + 000000 000001 000002 000003 @@ -37,11 +38,19 @@ </TestCaseRequestedList> <TestCaseExclusionList></TestCaseExclusionList> + <testCase id="000000"> + <class>DeployGenObject</class> + <desc>Deploy MySql Database</desc> + <yaml_path>yaml_files/5g_rfsimulator</yaml_path> + <services>mysql</services> + <nb_healthy>1</nb_healthy> + </testCase> + <testCase id="000001"> <class>DeployGenObject</class> <desc>Deploy OAI 5G CoreNetwork</desc> <yaml_path>yaml_files/5g_rfsimulator</yaml_path> - <services>mysql oai-nrf oai-amf oai-smf oai-spgwu oai-ext-dn</services> + <services>oai-nrf oai-amf oai-smf oai-spgwu oai-ext-dn</services> <nb_healthy>6</nb_healthy> </testCase>