Ejemplo n.º 1
0
  def check_runnable(self):
    """
      Checks if this test can be run.
      @ In, None
      @ Out, check_runnable, boolean, If True can run this test.
    """
    i = 0
    if len(self.minimum_libraries) % 2:
      self.set_skip('skipped (libraries are not matched to versions numbers: '
                    +str(self.minimum_libraries)+')')
      return False
    while i < len(self.minimum_libraries):
      library_name = self.minimum_libraries[i]
      library_version = self.minimum_libraries[i+1]
      found, _, actual_version = RavenUtils.module_report(library_name, library_name+'.__version__')
      if not found:
        self.set_skip('skipped (Unable to import library: "'+library_name+'")')
        return False
      if distutils.version.LooseVersion(actual_version) < \
         distutils.version.LooseVersion(library_version):
        self.set_skip('skipped (Outdated library: "'+library_name+'")')
        return False
      i += 2

    if len(self.required_executable) > 0:
      try:
        args_list = [self.required_executable]
        args_list.extend(self.required_executable_check_flags)
        ret_value = subprocess.call(args_list, stdout=subprocess.PIPE)
        if ret_value != 0:
          self.set_skip('skipped (Failing executable: "'
                        +self.required_executable+'")')
          return False
      except Exception:
        self.set_skip('skipped (Error when trying executable: "'
                      +self.required_executable+'")')
        return False

    if self.specs['requires_swig2'] and not RavenPython.has_swig2:
      self.set_skip('skipped (No swig 2.0 found)')
      return False
    missing, too_old, _ = RavenUtils.check_for_missing_modules()
    if len(missing) > 0:
      self.set_skip('skipped (Missing python modules: '+" ".join(missing)+
                    " PYTHONPATH="+os.environ.get("PYTHONPATH", "")+')')
      return False
    if len(too_old) > 0 and RavenUtils.check_versions():
      self.set_skip('skipped (Old version python modules: '+" ".join(too_old)+
                    " PYTHONPATH="+os.environ.get("PYTHONPATH", "")+')')
      return False
    for lib in self.required_libraries:
      found, _, _ = RavenUtils.module_report(lib, '')
      if not found:
        self.set_skip('skipped (Unable to import library: "'+lib+'")')
        return False
    if self.specs['python3_only'] and not RavenUtils.in_python_3():
      self.set_skip('Python 3 only')
      return False

    return True
Ejemplo n.º 2
0
def checkVersions():
    """
    Method to check if versions of modules are new enough. Will call sys.exit
    if they are not in the range specified.
    @ In, None
    @ Out, None
  """
    sys.path.append(
        os.path.join(os.path.dirname(frameworkDir), "scripts", "TestHarness",
                     "testers"))
    import RavenUtils
    sys.path.pop()  #remove testers path
    missing, outOfRange, notQA = RavenUtils.checkForMissingModules(False)
    if len(missing) + len(outOfRange) > 0 and RavenUtils.checkVersions():
        print(
            "ERROR: too old, too new, or missing raven libraries, not running:"
        )
        for error in missing + outOfRange + notQA:
            print(error)
        sys.exit(-4)
    else:
        if len(missing) + len(outOfRange) > 0:
            print("WARNING: not using tested versions of the libraries:")
            for warning in notQA + missing + outOfRange:
                print(warning)
Ejemplo n.º 3
0
    def checkRunnable(self, option):
        missing, too_old = _missing_modules, _too_old_modules
        if len(missing) > 0:
            return (False,
                    'skipped (Missing python modules: ' + " ".join(missing) +
                    " PYTHONPATH=" + os.environ.get("PYTHONPATH", "") + ')')
        if len(too_old) > 0 and RavenUtils.checkVersions():
            return (False, 'skipped (Old version python modules: ' +
                    " ".join(too_old) + " PYTHONPATH=" +
                    os.environ.get("PYTHONPATH", "") + ')')
        if len(self.specs['skip_if_env']) > 0:
            env_var = self.specs['skip_if_env']
            if env_var in os.environ:
                return (False, 'skipped (found environmental variable "' +
                        env_var + '")')
        for lib in self.required_libraries:
            found, message, version = RavenUtils.moduleReport(lib, '')
            if not found:
                return (False,
                        'skipped (Unable to import library: "' + lib + '")')

        i = 0
        if len(self.minimum_libraries) % 2:
            return (
                False,
                'skipped (libraries are not matched to versions numbers: ' +
                str(self.minimum_libraries) + ')')
        while i < len(self.minimum_libraries):
            libraryName = self.minimum_libraries[i]
            libraryVersion = self.minimum_libraries[i + 1]
            found, message, actualVersion = RavenUtils.moduleReport(
                libraryName, libraryName + '.__version__')
            if not found:
                return (False, 'skipped (Unable to import library: "' +
                        libraryName + '")')
            if distutils.version.LooseVersion(
                    actualVersion) < distutils.version.LooseVersion(
                        libraryVersion):
                return (False,
                        'skipped (Outdated library: "' + libraryName + '")')
            i += 2

        if len(self.required_executable) > 0 and \
           not os.path.exists(self.required_executable):
            return (False, 'skipped (Missing executable: "' +
                    self.required_executable + '")')
        try:
            if len(self.required_executable) > 0 and \
               subprocess.call([self.required_executable],stdout=subprocess.PIPE) != 0:
                return (False, 'skipped (Failing executable: "' +
                        self.required_executable + '")')
        except:
            return (False, 'skipped (Error when trying executable: "' +
                    self.required_executable + '")')
        return (True, '')
Ejemplo n.º 4
0
    def checkRunnable(self, option):
        i = 0
        if len(self.minimum_libraries) % 2:
            return (
                False,
                'skipped (libraries are not matched to versions numbers: ' +
                str(self.minimum_libraries) + ')')
        while i < len(self.minimum_libraries):
            libraryName = self.minimum_libraries[i]
            libraryVersion = self.minimum_libraries[i + 1]
            found, message, actualVersion = RavenUtils.moduleReport(
                libraryName, libraryName + '.__version__')
            if not found:
                return (False, 'skipped (Unable to import library: "' +
                        libraryName + '")')
            if distutils.version.LooseVersion(
                    actualVersion) < distutils.version.LooseVersion(
                        libraryVersion):
                return (False,
                        'skipped (Outdated library: "' + libraryName + '")')
            i += 2

        if len(self.required_executable) > 0:
            try:
                argsList = [self.required_executable]
                argsList.extend(self.required_executable_check_flags)
                retValue = subprocess.call(argsList, stdout=subprocess.PIPE)
                if retValue != 0:
                    return (False, 'skipped (Failing executable: "' +
                            self.required_executable + '")')
            except:
                return (False, 'skipped (Error when trying executable: "' +
                        self.required_executable + '")')

        if self.specs['requires_swig2'] and not RavenPython.has_swig2:
            return (False, 'skipped (No swig 2.0 found)')
        missing, too_old, notQA = RavenUtils.checkForMissingModules()
        if len(missing) > 0:
            return (False,
                    'skipped (Missing python modules: ' + " ".join(missing) +
                    " PYTHONPATH=" + os.environ.get("PYTHONPATH", "") + ')')
        if len(too_old) > 0 and RavenUtils.checkVersions():
            return (False, 'skipped (Old version python modules: ' +
                    " ".join(too_old) + " PYTHONPATH=" +
                    os.environ.get("PYTHONPATH", "") + ')')
        for lib in self.required_libraries:
            found, message, version = RavenUtils.moduleReport(lib, '')
            if not found:
                return (False,
                        'skipped (Unable to import library: "' + lib + '")')

        return (True, '')
Ejemplo n.º 5
0
 def check_runnable(self):
     """
   This method checks if the the test is runnable within the current settings
   @ In, None
   @ Out, check_runnable, boolean, If True this test can run.
 """
     missing, too_old, _ = RavenUtils.check_for_missing_modules()
     if len(missing) > 0:
         self.set_skip('skipped (Missing python modules: ' +
                       " ".join(missing) + " PYTHONPATH=" +
                       os.environ.get("PYTHONPATH", "") + ')')
         return False
     if len(too_old) > 0:
         self.set_skip('skipped (Old version python modules: ' +
                       " ".join(too_old) + " PYTHONPATH=" +
                       os.environ.get("PYTHONPATH", "") + ')')
         return False
     for lib in self.required_libraries:
         if platform.system() == 'Windows':
             lib += '.pyd'
         else:
             lib += '.so'
         if not os.path.exists(lib):
             self.set_skip('skipped (Missing library: "' + lib + '")')
             return False
     if self.specs['python3_only'] and not RavenUtils.in_python_3():
         self.set_skip('Python 3 only')
         return False
     if len(self.required_executable) > 0 and \
        not os.path.exists(self.required_executable):
         self.set_skip('skipped (Missing executable: "' +
                       self.required_executable + '")')
         return False
     try:
         if len(self.required_executable) > 0 and \
            subprocess.call([self.required_executable], stdout=subprocess.PIPE) != 0:
             self.set_skip('skipped (Failing executable: "' +
                           self.required_executable + '")')
             return False
     except Exception:
         self.set_skip('skipped (Error when trying executable: "' +
                       self.required_executable + '")')
         return False
     if len(self.specs['skip_if_env']) > 0:
         env_var = self.specs['skip_if_env']
         if env_var in os.environ:
             self.set_skip('skipped (found environmental variable "' +
                           env_var + '")')
             return False
     return True
Ejemplo n.º 6
0
 def getCommand(self, options):
   ravenflag = ''
   if self.specs['test_interface_only'].lower() == 'true': ravenflag = 'interfaceCheck '
   if RavenUtils.inPython3():
     return "python3 " + self.driver + " " + ravenflag + self.specs["input"]
   else:
     return "python " + self.driver + " " + ravenflag + self.specs["input"]
Ejemplo n.º 7
0
 def getCommand(self, options):
     """This method returns the command to execute for the test"""
     ravenflag = ''
     if self.specs['test_interface_only'].lower() == 'true':
         ravenflag = 'interfaceCheck '
     if RavenUtils.inPython3():
         return "python3 ../../../framework/Driver.py " + ravenflag + self.specs[
             "input"]
     else:
         return "python ../../../framework/Driver.py " + ravenflag + self.specs[
             "input"]
Ejemplo n.º 8
0
 def getCommand(self, options):
     """
   This method returns the command to execute for the test
   @ In, options, argparse.Namespace, functionally a dictionary of options from the input
   @ Out, getCommand, string, the command to run
 """
     ravenflag = ''
     if self.specs['test_interface_only'].lower() == 'true':
         ravenflag = 'interfaceCheck '
     if RavenUtils.inPython3():
         return ' '.join(["python3", raven, ravenflag, self.specs["input"]])
     else:
         return ' '.join(["python", raven, ravenflag, self.specs["input"]])
Ejemplo n.º 9
0
 def checkRunnable(self, option):
     """This method checks if the the test is runnable within the current settings"""
     missing, too_old, notQA = RavenUtils.checkForMissingModules()
     if len(missing) > 0:
         self.setStatus(
             'skipped (Missing python modules: ' + " ".join(missing) +
             " PYTHONPATH=" + os.environ.get("PYTHONPATH", "") + ')',
             self.bucket_skip)
         return False
     if len(too_old) > 0:
         self.setStatus(
             'skipped (Old version python modules: ' + " ".join(too_old) +
             " PYTHONPATH=" + os.environ.get("PYTHONPATH", "") + ')',
             self.bucket_skip)
         return False
     for lib in self.required_libraries:
         if platform.system() == 'Windows':
             lib += '.pyd'
         else:
             lib += '.so'
         if not os.path.exists(lib):
             self.setStatus('skipped (Missing library: "' + lib + '")',
                            self.bucket_skip)
             return False
     if len(self.required_executable) > 0 and \
        not os.path.exists(self.required_executable):
         self.setStatus(
             'skipped (Missing executable: "' + self.required_executable +
             '")', self.bucket_skip)
         return False
     try:
         if len(self.required_executable) > 0 and \
            subprocess.call([self.required_executable],stdout=subprocess.PIPE) != 0:
             self.setStatus(
                 'skipped (Failing executable: "' +
                 self.required_executable + '")', self.bucket_skip)
             return False
     except:
         self.setStatus(
             'skipped (Error when trying executable: "' +
             self.required_executable + '")', self.bucket_skip)
         return False
     if len(self.specs['skip_if_env']) > 0:
         env_var = self.specs['skip_if_env']
         if env_var in os.environ:
             self.setStatus(
                 'skipped (found environmental variable "' + env_var + '")',
                 self.bucket_skip)
             return False
     return True
Ejemplo n.º 10
0
import RavenUtils
import os
import subprocess
import sys
import distutils.version

# Set this outside the class because the framework directory is constant for
#  each instance of this Tester, and in addition, there is a problem with the
#  path by the time you call it in __init__ that causes it to think its absolute
#  path is somewhere under tests/framework.
# Be aware that if this file changes its location, this variable should also be
#  changed.
myDir = os.path.dirname(os.path.realpath(__file__))
RAVEN_DIR = os.path.abspath(os.path.join(myDir, '..', '..', '..', 'framework'))

_missing_modules, _too_old_modules, _notQAModules = RavenUtils.checkForMissingModules(
)


class RavenFramework(Tester):
    @staticmethod
    def validParams():
        params = Tester.validParams()
        params.addRequiredParam('input',
                                "The input file to use for this test.")
        params.addParam('output', '',
                        "List of output files that the input should create.")
        params.addParam('csv', '', "List of csv files to check")
        params.addParam('UnorderedCsv', '',
                        "List of unordered csv files to check")
        params.addParam('xml', '', "List of xml files to check")
        params.addParam('UnorderedXml', '',
Ejemplo n.º 11
0
    def checkRunnable(self, option):
        missing = _missing_modules
        too_old = _too_old_modules
        # remove tests based on skipping criteria
        ## required module is missing
        if len(missing) > 0:
            self.setStatus(
                'skipped (Missing python modules: ' + " ".join(missing) +
                " PYTHONPATH=" + os.environ.get("PYTHONPATH", "") + ')',
                self.bucket_skip)
            return False
        ## required module is present, but too old
        if len(too_old) > 0 and RavenUtils.checkVersions():
            self.setStatus(
                'skipped (Old version python modules: ' + " ".join(too_old) +
                " PYTHONPATH=" + os.environ.get("PYTHONPATH", "") + ')',
                self.bucket_skip)
            return False
        ## an environment varible value causes a skip
        if len(self.specs['skip_if_env']) > 0:
            env_var = self.specs['skip_if_env']
            if env_var in os.environ:
                self.setStatus(
                    'skipped (found environmental variable "' + env_var + '")',
                    self.bucket_skip)
                return False
        ## OS
        if len(self.specs['skip_if_OS']) > 0:
            skip_os = [
                x.strip().lower() for x in self.specs['skip_if_OS'].split(',')
            ]
            # get simple-name platform (options are Linux, Windows, Darwin, or SunOS that I've seen)
            currentOS = platform.system().lower()
            # replace Darwin with more expected "mac"
            if currentOS == 'darwin':
                currentOS = 'mac'
            if currentOS in skip_os:
                self.setStatus('skipped (OS is "{}")'.format(currentOS),
                               self.bucket_skip)
                return False
        for lib in self.required_libraries:
            found, message, version = RavenUtils.moduleReport(lib, '')
            if not found:
                self.setStatus(
                    'skipped (Unable to import library: "' + lib + '")',
                    self.bucket_skip)
                return False

        i = 0
        if len(self.minimum_libraries) % 2:
            self.setStatus(
                'skipped (libraries are not matched to versions numbers: ' +
                str(self.minimum_libraries) + ')', self.bucket_skip)
            return False
        while i < len(self.minimum_libraries):
            libraryName = self.minimum_libraries[i]
            libraryVersion = self.minimum_libraries[i + 1]
            found, message, actualVersion = RavenUtils.moduleReport(
                libraryName, libraryName + '.__version__')
            if not found:
                self.setStatus(
                    'skipped (Unable to import library: "' + libraryName +
                    '")', self.bucket_skip)
                return False
            if distutils.version.LooseVersion(
                    actualVersion) < distutils.version.LooseVersion(
                        libraryVersion):
                self.setStatus(
                    'skipped (Outdated library: "' + libraryName + '")',
                    self.bucket_skip)
                return False
            i += 2

        if len(self.required_executable) > 0 and \
           not os.path.exists(self.required_executable):
            self.setStatus(
                'skipped (Missing executable: "' + self.required_executable +
                '")', self.bucket_skip)
            return False
        try:
            if len(self.required_executable) > 0 and \
               subprocess.call([self.required_executable],stdout=subprocess.PIPE) != 0:
                self.setStatus(
                    'skipped (Failing executable: "' +
                    self.required_executable + '")', self.bucket_skip)
                return False
        except:
            self.setStatus(
                'skipped (Error when trying executable: "' +
                self.required_executable + '")', self.bucket_skip)
            return False
        filenameSet = set()
        duplicateFiles = []
        for filename in self.__getCreatedFiles():
            if filename not in filenameSet:
                filenameSet.add(filename)
            else:
                duplicateFiles.append(filename)
        if len(duplicateFiles) > 0:
            self.setStatus(
                '[incorrect test] duplicated files specified: ' +
                " ".join(duplicateFiles), self.bucket_skip)
            return False
        return True
Ejemplo n.º 12
0
    def checkRunnable(self, option):
        missing, too_old = _missing_modules, _too_old_modules
        if len(missing) > 0:
            self.setStatus(
                'skipped (Missing python modules: ' + " ".join(missing) +
                " PYTHONPATH=" + os.environ.get("PYTHONPATH", "") + ')',
                self.bucket_skip)
            return False
        if len(too_old) > 0 and RavenUtils.checkVersions():
            self.setStatus(
                'skipped (Old version python modules: ' + " ".join(too_old) +
                " PYTHONPATH=" + os.environ.get("PYTHONPATH", "") + ')',
                self.bucket_skip)
            return False
        if len(self.specs['skip_if_env']) > 0:
            env_var = self.specs['skip_if_env']
            if env_var in os.environ:
                self.setStatus(
                    'skipped (found environmental variable "' + env_var + '")',
                    self.bucket_skip)
                return False
        for lib in self.required_libraries:
            found, message, version = RavenUtils.moduleReport(lib, '')
            if not found:
                self.setStatus(
                    'skipped (Unable to import library: "' + lib + '")',
                    self.bucket_skip)
                return False

        i = 0
        if len(self.minimum_libraries) % 2:
            self.setStatus(
                'skipped (libraries are not matched to versions numbers: ' +
                str(self.minimum_libraries) + ')', self.bucket_skip)
            return False
        while i < len(self.minimum_libraries):
            libraryName = self.minimum_libraries[i]
            libraryVersion = self.minimum_libraries[i + 1]
            found, message, actualVersion = RavenUtils.moduleReport(
                libraryName, libraryName + '.__version__')
            if not found:
                self.setStatus(
                    'skipped (Unable to import library: "' + libraryName +
                    '")', self.bucket_skip)
                return False
            if distutils.version.LooseVersion(
                    actualVersion) < distutils.version.LooseVersion(
                        libraryVersion):
                self.setStatus(
                    'skipped (Outdated library: "' + libraryName + '")',
                    self.bucket_skip)
                return False
            i += 2

        if len(self.required_executable) > 0 and \
           not os.path.exists(self.required_executable):
            self.setStatus(
                'skipped (Missing executable: "' + self.required_executable +
                '")', self.bucket_skip)
            return False
        try:
            if len(self.required_executable) > 0 and \
               subprocess.call([self.required_executable],stdout=subprocess.PIPE) != 0:
                self.setStatus(
                    'skipped (Failing executable: "' +
                    self.required_executable + '")', self.bucket_skip)
                return False
        except:
            self.setStatus(
                'skipped (Error when trying executable: "' +
                self.required_executable + '")', self.bucket_skip)
            return False
        filenameSet = set()
        duplicateFiles = []
        for filename in self.__getCreatedFiles():
            if filename not in filenameSet:
                filenameSet.add(filename)
            else:
                duplicateFiles.append(filename)
        if len(duplicateFiles) > 0:
            self.setStatus(
                '[incorrect test] duplicated files specified: ' +
                " ".join(duplicateFiles), self.bucket_skip)
            return False
        return True
Ejemplo n.º 13
0
# Set this outside the class because the framework directory is constant for
#  each instance of this Tester, and in addition, there is a problem with the
#  path by the time you call it in __init__ that causes it to think its absolute
#  path is somewhere under tests/framework.
# Be aware that if this file changes its location, this variable should also be
#  changed.
myDir = os.path.dirname(os.path.realpath(__file__))
RAVEN_DIR = os.path.abspath(os.path.join(myDir, '..', '..', '..', 'framework'))

#Need to add the directory for AMSC for doing module checks.
os.environ["PYTHONPATH"] = os.path.join(RAVEN_DIR, 'contrib') +\
  os.pathsep + os.environ.get("PYTHONPATH", "")


_missing_modules, _too_old_modules, _notQAModules = RavenUtils.check_for_missing_modules()

class RavenFramework(Tester):
  """
  RavenFramework is the class to use for testing standard raven inputs.
  """

  @staticmethod
  def get_valid_params():
    """
      Returns the parameters that can be used for this class.
      @ In, None
      @ Out, params, _ValidParameters, return the parameters.
    """
    params = Tester.get_valid_params()
    params.add_required_param('input', "The input file to use for this test.")