Exemple #1
0
 def load(self):
     """ Load test results """
     super().load()
     try:
         results = tmt.utils.yaml_to_dict(self.read('results.yaml'))
         self._results = [
             tmt.Result(data, test) for test, data in results.items()]
     except tmt.utils.FileError as error:
         self.debug('Test results not found.', level=2)
Exemple #2
0
 def check_shell(self, test):
     """ Check result of a shell test """
     # Prepare the log path
     data = {'log': self.log(test, 'out.log')}
     # Process the exit code
     try:
         data['result'] = {0: 'pass', 1: 'fail'}[test.returncode]
     except KeyError:
         data['result'] = 'error'
     return tmt.Result(data, test.name)
Exemple #3
0
 def check_beakerlib(self, test):
     """ Check result of a beakerlib test """
     # Initialize data, prepare log paths
     data = {'result': 'error',
             'log': [],
             'duration': test.real_duration}
     for log in [TEST_OUTPUT_FILENAME, 'journal.txt']:
         if os.path.isfile(self.data_path(test, log, full=True)):
             data['log'].append(self.data_path(test, log))
     # Check beakerlib log for the result
     try:
         beakerlib_results_file = self.data_path(
             test, 'TestResults', full=True)
         results = self.read(beakerlib_results_file, level=3)
     except tmt.utils.FileError:
         self.debug(f"Unable to read '{beakerlib_results_file}'.", level=3)
         data['note'] = 'beakerlib: TestResults FileError'
         return tmt.Result(data, test.name)
     try:
         result = re.search(
             'TESTRESULT_RESULT_STRING=(.*)', results).group(1)
         # States are: started, incomplete and complete
         # FIXME In quotes until beakerlib/beakerlib/pull/92 is merged
         state = re.search(r'TESTRESULT_STATE="?(\w+)"?', results).group(1)
     except AttributeError:
         self.debug(
             f"No result or state found in '{beakerlib_results_file}'.",
             level=3)
         data['note'] = 'beakerlib: Result/State missing'
         return tmt.Result(data, test.name)
     # Check if it was killed by timeout (set by tmt executor)
     if test.returncode == tmt.utils.PROCESS_TIMEOUT:
         data['result'] = 'error'
         data['note'] = 'timeout'
         self.timeout_hint(test)
     # Test results should be in complete state
     elif state != 'complete':
         data['result'] = 'error'
         data['note'] = f"beakerlib: State '{state}'"
     # Finally we have a valid result
     else:
         data['result'] = result.lower()
     return tmt.Result(data, test.name)
Exemple #4
0
 def load(self, extra_keys=None):
     """ Load test results """
     extra_keys = extra_keys or []
     extra_keys.append(REBOOT_TOKEN_KEY)
     super().load(extra_keys)
     try:
         results = tmt.utils.yaml_to_dict(self.read('results.yaml'))
         self._results = [
             tmt.Result(data, test) for test, data in results.items()]
     except tmt.utils.FileError as error:
         self.debug('Test results not found.', level=2)
Exemple #5
0
 def check_shell(self, test):
     """ Check result of a shell test """
     # Prepare the log path
     data = {'log': self.data_path(test, TEST_OUTPUT_FILENAME)}
     # Process the exit code
     try:
         data['result'] = {0: 'pass', 1: 'fail'}[test.returncode]
     except KeyError:
         data['result'] = 'error'
         # Add note about the exceeded duration
         if test.returncode == tmt.utils.PROCESS_TIMEOUT:
             data['note'] = 'timeout'
     return tmt.Result(data, test.name)
Exemple #6
0
 def check_beakerlib(self, test):
     """ Check result of a beakerlib test """
     # Initialize data, prepare log paths
     data = {'result': 'error', 'log': []}
     for log in ['out.log', 'journal.txt']:
         if os.path.isfile(self.log(test, log, full=True)):
             data['log'].append(self.log(test, log))
     # Check beakerlib log for the result
     try:
         beakerlib_results_file = self.log(test, 'TestResults', full=True)
         results = self.read(beakerlib_results_file, level=3)
     except tmt.utils.FileError:
         self.debug(f"Unable to read '{beakerlib_results_file}'.", level=3)
         return tmt.Result(data, test.name)
     try:
         matched = re.search('TESTRESULT_RESULT_STRING=(.*)', results)
         result = matched.group(1)
     except AttributeError:
         self.debug(f"No result in '{beakerlib_results_file}'.", level=3)
         return tmt.Result(data, test.name)
     data['result'] = result.lower()
     return tmt.Result(data, test.name)