def test_search(happi_client: Client, valve: OphydItem, item_info: Dict[str, Any]): happi_client.add_item(valve) res = happi_client.search(name=item_info['name']) # Single search return assert len(res) == 1 loaded_item = res[0].item assert loaded_item.prefix == item_info['prefix'] assert loaded_item.name == item_info['name'] # No results assert not happi_client.search(name='not') # Returned as dict res = happi_client.search(**item_info) loaded_item = res[0].item assert loaded_item['prefix'] == item_info['prefix'] assert loaded_item['name'] == item_info['name'] # Search off keyword res = happi_client.search(beamline='LCLS') assert len(res) == 2
def add_client(self, client: Client): self._clients.append(client) if isinstance(client.backend, JSONBackend): client_item = QStandardItem(client.backend.path) elif isinstance(client.backend, MongoBackend): client_item = QStandardItem( f"{client.backend._client.HOST}/{client.backend._collection.full_name}" ) self.appendRow(client_item) for result in client.search(): # add an OphydItem self.add_device(client_item, result.item) client_item.setData(client)
def make_tile_configs(tile, directory, dbpath): """ Write TILE IOC configs based on database entries. """ # Hack in our test device types registry._registry['pcdsdevices.Elliptec'] = Elliptec registry._reverse_registry[Elliptec] = 'pcdsdevices.Elliptec' registry._registry['pcdsdevices.Qmini'] = Qmini registry._reverse_registry[Qmini] = 'pcdsdevices.Qmini' registry._registry['pcdsdevices.SmarActMotor'] = SmarActMotor registry._reverse_registry[SmarActMotor] = 'pcdsdevices.SmarActMotor' registry._registry['pcdsdevices.SmarActTipTiltMotor'] = SmarActTipTiltMotor registry._reverse_registry[SmarActTipTiltMotor] = \ 'pcdsdevices.SmarActTipTiltMotor' registry._registry['pcdsdevices.LasBasler'] = LasBasler registry._reverse_registry[LasBasler] = 'pcdsdevices.LasBasler' registry._registry['pcdsdevices.ThorlabsWfs'] = ThorlabsWfs registry._reverse_registry[ThorlabsWfs] = 'pcdsdevices.ThorlabsWfs' registry._registry['pcdsdevices.ThorlabsPM101PowerMeter'] = \ ThorlabsPM101PowerMeter registry._reverse_registry[ThorlabsPM101PowerMeter] = \ 'pcdsdevices.ThorlabsPM101PowerMeter' registry._registry['pcdsdevices.EnvironmentalMontior'] = \ EnvironmentalMonitor registry._reverse_registry[EnvironmentalMonitor] = \ 'pcdsdevices.EnvironmentalMonitor' # Just use our test devices for now if tile not in ['lm1k4_com']: raise ValueError("Unrecognized TILE {}".format(tile)) client = Client(path=dbpath) results = client.search(location_group=tile) for dev in dev_map.keys(): # Aggregate devices based on container type devs = [result for result in results if result['type'] == dev] print("Found {} devices of type {}".format(len(devs), dev)) func = dev_map[devs[0]['type']] func(devs, directory)