Exemple #1
0
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
Exemple #2
0
    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)