import subprocess
import time
+from threading import Timer
import pkg_resources
import prettytable
from ruamel.yaml import YAML
visibility = 'public'
shared_network = True
allow_no_fip = True
- task_timeout = '3600'
+ task_timeout = 3600
def __init__(self, **kwargs):
"""Initialize RallyBase object."""
self.run_cmd = ''
self.network_extensions = []
self.services = []
+ self.task_aborted = False
def build_task_args(self, test_name):
"""Build arguments for the Rally task."""
else:
LOGGER.info('Test scenario: "%s" Failed.', test_name)
+ def kill_task(self, proc):
+ """ Kill a task."""
+ proc.kill()
+ self.task_aborted = True
+
def run_task(self, test_name):
"""Run a task."""
LOGGER.info('Starting test scenario "%s" ...', test_name)
LOGGER.debug('running command: %s', self.run_cmd)
proc = subprocess.Popen(self.run_cmd, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
+ self.task_aborted = False
+ timer = Timer(self.task_timeout, self.kill_task, [proc])
+ timer.start()
output = proc.communicate()[0]
-
+ if self.task_aborted:
+ LOGGER.error("Failed to complete task")
+ raise Exception("Failed to complete task")
+ timer.cancel()
task_id = self.get_task_id(output)
LOGGER.debug('task_id : %s', task_id)
if task_id is None:
if self.file_is_empty(file_name):
LOGGER.info('No tests for scenario "%s"', test_name)
return False
- self.run_cmd = (["timeout", "-t", self.task_timeout,
- "rally", "task", "start", "--abort-on-sla-failure",
+ self.run_cmd = (["rally", "task", "start", "--abort-on-sla-failure",
"--task", self.task_file, "--task-args",
str(self.build_task_args(test_name))])
return True
class RallyFull(RallyBase):
"""Rally full testcase implementation."""
+ task_timeout = 7200
+
def __init__(self, **kwargs):
"""Initialize RallyFull object."""
if "case_name" not in kwargs:
"""Rally OpenStack CI testcase implementation."""
stests = ["neutron"]
- task_timeout = '7200'
+ task_timeout = 7200
def __init__(self, **kwargs):
"""Initialize RallyJobs object."""
os.makedirs(self.temp_dir)
task_file_name = os.path.join(self.temp_dir, task_name)
self.apply_blacklist(task, task_file_name)
- self.run_cmd = (["timeout", "-t", self.task_timeout,
- "rally", "task", "start", "--task", task_file_name,
+ self.run_cmd = (["rally", "task", "start", "--task", task_file_name,
"--task-args", str(self.build_task_args(test_name))])
return True