fix(ci): better handling of wrong exit during iperf/ping tests; adding PCAP capture
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user