def _mapComponent(self, softpkg):
        # Defer most mapping to base class
        pycomp = super(GrFlowGraphComponentMapper,self)._mapComponent(softpkg)

        # Parse the component's description for the flow graph package and class
        # names.  There's only one implementation from our converter tooling.
        the_spd = spd.parse(softpkg.spdFile())
        the_impl = the_spd.get_implementation()[0]

        impdesc = the_impl.description
        fg_file_name  = re.search(FG_KEY_FILE + ':(.+)', impdesc).group(1)
        fg_class_name = re.search(FG_KEY_CLASS_NAME + ':(.+)', impdesc).group(1)
        pycomp['flowgraph'] = {
            'file':       fg_file_name,
            'class_name': fg_class_name
        }

        # Search the dependencies for the Docker image dependency
        fg_docker_image = None    
        for dep in the_impl.get_dependency():
            if dep.type_ == 'allocation' and dep.propertyref:
                if dep.propertyref.refid == 'DCE:c38d28a6-351d-4aa4-a9ba-3cea51966838':
                    fg_docker_image = dep.propertyref.value
        pycomp['flowgraph'].update({'docker_image': fg_docker_image})

        return pycomp
    def setUp(self):
        """
        Starts the component whose id matches the one stored in the IMPL_ID
        """
        
        signal.signal(signal.SIGINT, self.tearDown)
        signal.signal(signal.SIGTERM, self.tearDown)
        signal.signal(signal.SIGQUIT, self.tearDown)
        
        global SOFT_PKG
        global IMPL_ID
        self.comp_obj = None
        self.comp = None
        # Use the globals by default
        self.impl = IMPL_ID
        self.spd_file = SOFT_PKG
        self.spd = SPDParser.parse(SOFT_PKG)
        
        try:
            self.prf_file = self.spd.get_propertyfile().get_localfile().get_name()
            if (self.prf_file[0] != '/'):
                self.prf_file = os.path.join(os.path.dirname(self.spd_file), self.prf_file)
            self.prf = PRFParser.parse(self.prf_file)
        except:
            self.prf_file = None
            self.prf = None
        
        self.scd_file = self.spd.get_descriptor().get_localfile().get_name()
        if (self.scd_file[0] != '/'):
            self.scd_file = os.path.join(os.path.dirname(self.spd_file), self.scd_file)
        self.scd = SCDParser.parse(self.scd_file)

        # create a map between prop ids and names
        if self.prf:
            self._props = prop_helpers.getPropNameDict(self.prf)
        def runTests(self):
            # parse components.spd file
            spd = SPDParser.parse(self.mycfg.spd_file)

            #log.debug("runTests called")
            self.testRunner = nose.core.TextTestRunner(
                stream=self.config.stream,
                verbosity=self.config.verbosity,
                config=self.config)
            plug_runner = self.config.plugins.prepareTestRunner(
                self.testRunner)
            if plug_runner is not None:
                self.testRunner = plug_runner
            impl = self.mycfg.impl
            self.success = True
            self.exit = False
            for implementation in spd.get_implementation():
                IMPL_ID = implementation.get_id()
                if IMPL_ID == impl or impl is None:
                    ossie.utils.testing.setImplId(IMPL_ID)
                    ossie.utils.testing.setSoftPkg(self.mycfg.spd_file)
                    self.myxunit.impl = IMPL_ID
                    result = self.testRunner.run(self.test)
                    self.success = self.success and result.wasSuccessful()
                    self.results.append(result)
                    self.myxunit.resetReport()

            if self.exit:
                sys.exit(not self.success)
            return self.success
 def runTests(self):
     # Setup some globals to pass to the TestCase
     global SOFT_PKG
     global IMPL_ID
     SOFT_PKG = self.spd_file
     spd = SPDParser.parse(self.spd_file)
     
     if self.testRunner is None:
         self.testRunner = unittest.TextTestRunner(verbosity=self.verbosity)    
     
     for implementation in spd.get_implementation():
         IMPL_ID = implementation.get_id()
         if IMPL_ID == self.impl or self.impl is None:
             result = self.testRunner.run(self.test)
             self.results.append(result)
    def runTests(self):
        # Setup some globals to pass to the TestCase
        global SOFT_PKG
        global IMPL_ID
        SOFT_PKG = self.spd_file
        spd = SPDParser.parse(self.spd_file)

        if self.testRunner is None:
            self.testRunner = unittest.TextTestRunner(verbosity=self.verbosity)

        for implementation in spd.get_implementation():
            IMPL_ID = implementation.get_id()
            if IMPL_ID == self.impl or self.impl is None:
                result = self.testRunner.run(self.test)
                self.results.append(result)
Exemple #6
0
    def _get_impls_from_spd(self, dep_file):
        # try and get dependency spd file
        sdr_root = '/var/redhawk/sdr'
        if 'SDRROOT' in os.environ:
            sdr_root = os.path.abspath(os.environ['SDRROOT'])
        else:
            print "Warning: SDRROOT undefined, defaulting to ", sdr_root

        fname = os.path.join(sdr_root, 'dom', dep_file)
        if dep_file.startswith('/'):
            fname = os.path.join(sdr_root, 'dom', dep_file[1:])

        impls = {}
        try:
            parser = spd.parse(fname)
        except:
            print "Warning: Unable to open dependency file: ", fname
            return None
        for x in parser.get_implementation():
            impls[x.get_id()] = x
        return impls
    def __init__(
        self,
        name,
        implementation,
        outputDir=".",
        generator="cpp.component.pull",
        spdTemplateFile=OSSIEHOME + DEFAULT_SPD_TEMPLATE,
        scdTemplateFile=OSSIEHOME + DEFAULT_SCD_TEMPLATE,
        prfTemplateFile=OSSIEHOME + DEFAULT_PRF_TEMPLATE,
        loggingConfigUri=None,
    ):
        """
        Create a resource with no ports/properties.  Use helper methods to add
        additional elements.

        Note, "implementation" argument must be "cpp", "java", or "python"

        """

        SoftPackage.__init__(self, name, implementation, outputDir)

        self.spd = spd.parse(spdTemplateFile)
        self.scd = scd.parse(scdTemplateFile)
        self.prf = prf.parse(prfTemplateFile)

        self._setImplementation()
        self._setNameInSpd()
        self._setPropertyFileInSpd()
        self._setDescriptorInSpd()

        self._createWavedevContent(generator=generator)

        if loggingConfigUri:
            self.addSimpleProperty(
                id="LOGGING_CONFIG_URI",
                value=loggingConfigUri,
                type="string",
                complex=False,
                kindtypes=["configure", "execparam"],
            )
    def __init__(self,
                 name,
                 implementation,
                 outputDir=".",
                 generator="cpp.component.pull",
                 spdTemplateFile=OSSIEHOME + DEFAULT_SPD_TEMPLATE,
                 scdTemplateFile=OSSIEHOME + DEFAULT_SCD_TEMPLATE,
                 prfTemplateFile=OSSIEHOME + DEFAULT_PRF_TEMPLATE,
                 loggingConfigUri=None):
        '''
        Create a resource with no ports/properties.  Use helper methods to add
        additional elements.

        Note, "implementation" argument must be "cpp", "java", or "python"

        '''

        SoftPackage.__init__(self, name, implementation, outputDir)

        self.spd = spd.parse(spdTemplateFile)
        self.scd = scd.parse(scdTemplateFile)
        self.prf = prf.parse(prfTemplateFile)

        self._setImplementation()
        self._setNameInSpd()
        self._setPropertyFileInSpd()
        self._setDescriptorInSpd()

        self._createWavedevContent(generator=generator)

        if loggingConfigUri:
            self.addSimpleProperty(id="LOGGING_CONFIG_URI",
                                   value=loggingConfigUri,
                                   type="string",
                                   complex=False,
                                   kindtypes=["configure", "execparam"])

        self.setComponentType('resource')
        self.setComponentRepid('IDL:CF/Resource:1.0')
    def setUp(self):
        """
        Starts the component whose id matches the one stored in the IMPL_ID
        """

        signal.signal(signal.SIGINT, self.tearDown)
        signal.signal(signal.SIGTERM, self.tearDown)
        signal.signal(signal.SIGQUIT, self.tearDown)

        global SOFT_PKG
        global IMPL_ID
        self.comp_obj = None
        self.comp = None
        # Use the globals by default
        self.impl = IMPL_ID
        self.spd_file = SOFT_PKG
        self.spd = SPDParser.parse(SOFT_PKG)

        try:
            self.prf_file = self.spd.get_propertyfile().get_localfile(
            ).get_name()
            if (self.prf_file[0] != '/'):
                self.prf_file = os.path.join(os.path.dirname(self.spd_file),
                                             self.prf_file)
            self.prf = PRFParser.parse(self.prf_file)
        except:
            self.prf_file = None
            self.prf = None

        self.scd_file = self.spd.get_descriptor().get_localfile().get_name()
        if (self.scd_file[0] != '/'):
            self.scd_file = os.path.join(os.path.dirname(self.spd_file),
                                         self.scd_file)
        self.scd = SCDParser.parse(self.scd_file)

        # create a map between prop ids and names
        if self.prf:
            self._props = prop_helpers.getPropNameDict(self.prf)
    def __init__(self,
                 name,
                 implementation,
                 libraryLocation,
                 outputDir=".",
                 sharedLibraries=[],
                 spdTemplateFile=OSSIEHOME + DEFAULT_RESOURCE_TEMPLATE,
                 variant=""):

        SoftPackage.__init__(self, name, implementation, outputDir)

        # intantiate the class object representing the spd file
        self.spd = spd.parse(spdTemplateFile)

        self._setNameInSpd()
        self._setImplementation()

        self._createWavedevContent(
            generator="project.softPackageDependency.directory")

        # Create the output directory strucutre.  A share directory will be
        # created in the implemetation directory.  The share directory is
        # a symbolic link to the target directory.
        fullOutputDir = outputDir + "/" + name + "/"
        if not os.path.exists(fullOutputDir + implementation):
            os.makedirs(fullOutputDir + implementation)
        if not os.path.exists(fullOutputDir + implementation + "/share"):
            if not os.path.isabs(libraryLocation):
                libraryLocation = os.path.join(os.getcwd(), libraryLocation)
            shutil.copytree(libraryLocation,
                            fullOutputDir + implementation + "/share")

        # Add soft package dependencies to the package being created (in the
        # case that the soft package dependency being created has its own
        # soft package dependencies).
        for sharedLibrary in sharedLibraries:
            self.addSoftPackageDependency(sharedLibrary)
    def __init__(
            self,
            name,
            implementation,
            libraryLocation,
            outputDir=".",
            sharedLibraries  = [],
            spdTemplateFile = OSSIEHOME + DEFAULT_RESOURCE_TEMPLATE,
            variant = ""):

        SoftPackage.__init__(self, name, implementation, outputDir)

        # intantiate the class object representing the spd file
        self.spd = spd.parse(spdTemplateFile)

        self._setNameInSpd()
        self._setImplementation()

        self._createWavedevContent(generator="project.softPackageDependency.directory")

        # Create the output directory strucutre.  A share directory will be
        # created in the implemetation directory.  The share directory is
        # a symbolic link to the target directory.
        fullOutputDir = outputDir+"/" + name + "/"
        if not os.path.exists(fullOutputDir + implementation):
            os.makedirs(fullOutputDir + implementation)
        if not os.path.exists(fullOutputDir + implementation + "/share"):
            if not os.path.isabs(libraryLocation):
                libraryLocation = os.path.join(os.getcwd(), libraryLocation)
            shutil.copytree(libraryLocation, fullOutputDir + implementation + "/share")

        # Add soft package dependencies to the package being created (in the
        # case that the soft package dependency being created has its own
        # soft package dependencies).
        for sharedLibrary in sharedLibraries:
            self.addSoftPackageDependency(sharedLibrary)
    sys.exit(-1)

files = []
components = []
searchPath = '.'
for root, dirs, fnames in _os.walk(searchPath):
    for filename in _fnmatch.filter(fnames, "*spd.xml"):
        files.append((_os.path.join(root,filename),root+'/'))

tex = '\\documentclass[12pt]{report}\n\\usepackage{tabularx}\n\\begin{document}\n'

for (file_entry,dir_entry) in files:
    print "Evaluating: "+file_entry
    comp = {}
    try:
        tmp = _SPDParser.parse(file_entry)
    except:
        print "Could not parse", file_entry
        continue
    comp['name'] = str(tmp.get_name())
    components.append(str(tmp.get_name()))
    if tmp.description == None:
        comp['description'] = ''
    else:
        comp['description'] = str(tmp.description)
    if tmp.descriptor == None:
        comp['SCD'] = None
    else:
        comp['SCD'] = _SCDParser.parse(dir_entry+str(tmp.descriptor.localfile.get_name()))
    if tmp.propertyfile == None:
        comp['PRF'] = None
Exemple #13
0
    sys.exit(-1)

files = []
components = []
searchPath = '.'
for root, dirs, fnames in _os.walk(searchPath):
    for filename in _fnmatch.filter(fnames, "*spd.xml"):
        files.append((_os.path.join(root, filename), root + '/'))

tex = '\\documentclass[12pt]{report}\n\\usepackage{tabularx}\n\\begin{document}\n'

for (file_entry, dir_entry) in files:
    print "Evaluating: " + file_entry
    comp = {}
    try:
        tmp = _SPDParser.parse(file_entry)
    except:
        print "Could not parse", file_entry
        continue
    comp['name'] = str(tmp.get_name())
    components.append(str(tmp.get_name()))
    if tmp.description == None:
        comp['description'] = ''
    else:
        comp['description'] = str(tmp.description)
    if tmp.descriptor == None:
        comp['SCD'] = None
    else:
        comp['SCD'] = _SCDParser.parse(
            dir_entry + str(tmp.descriptor.localfile.get_name()))
    if tmp.propertyfile == None: