def _handle_get_capability_spec(self, req): rospy.loginfo("Servicing request for get capability spec '{0}'...".format(req.capability_spec)) response = GetCapabilitySpecResponse() for package_name, package_dict in self.spec_file_index.items(): for spec_type in ['capability_interface', 'semantic_capability_interface', 'capability_provider']: for path in package_dict[spec_type]: with open(path, 'r') as f: raw = f.read() default_provider = '' # If a capability interface, try to lookup the default provider iface = None if spec_type == 'capability_interface': iface = capability_interface_from_string(raw, path) if spec_type == 'semantic_capability_interface': iface = semantic_capability_interface_from_string(raw, path) if spec_type in ['capability_interface', 'semantic_capability_interface']: iface.name = '{package}/{name}'.format(package=package_name, name=iface.name) if iface.name not in self.__default_providers: default_provider = '' else: default_provider = self.__default_providers[iface.name] if iface and iface.name == req.capability_spec: response.capability_spec = CapabilitySpec(package_name, spec_type, raw, default_provider) return response raise RuntimeError("Could not find requested spec '{0}'".format(req.capability_spec))
def test_capability_interface_from_string(): test_file = 'Minimal.yaml' checker, expected_exception, expected_exception_regex = test_files_map[test_file] test_file_path = os.path.join(test_data_dir, test_file) with open(test_file_path, 'r') as f: with assert_raises_regex(expected_exception, expected_exception_regex): cp = interface.capability_interface_from_string(f.read()) checker(cp)
def test_capability_interface_from_string(): test_file = 'Minimal.yaml' checker, expected_exception, expected_exception_regex = test_files_map[ test_file] test_file_path = os.path.join(test_data_dir, test_file) with open(test_file_path, 'r') as f: with assert_raises_regex(expected_exception, expected_exception_regex): cp = interface.capability_interface_from_string(f.read()) checker(cp)
def _handle_get_capability_specs(self, req): rospy.loginfo("Servicing request for capability specs...") response = GetCapabilitySpecsResponse() for package_name, package_dict in self.spec_file_index.items(): for spec_type in ["capability_interface", "semantic_capability_interface", "capability_provider"]: for path in package_dict[spec_type]: with open(path, "r") as f: raw = f.read() default_provider = "" # If a capability interface, try to lookup the default provider iface = None if spec_type == "capability_interface": iface = capability_interface_from_string(raw, path) if spec_type == "semantic_capability_interface": iface = semantic_capability_interface_from_string(raw, path) if spec_type in ["capability_interface", "semantic_capability_interface"]: iface.name = "{package}/{name}".format(package=package_name, name=iface.name) if iface.name not in self.__default_providers: default_provider = "" else: default_provider = self.__default_providers[iface.name] cs = CapabilitySpec(package_name, spec_type, raw, default_provider) response.capability_specs.append(cs) return response
def capability_interface_loader(interface_tuple, package_name, spec_index): raw, default_provider = interface_tuple interface = capability_interface_from_string(raw) interface.default_provider = default_provider spec_index.add_interface(interface, 'service call', package_name)