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 _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
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: