diff --git a/docs/source/instruments/2231A.rst b/docs/source/instruments/2231A.rst index 3cf9d12..6c14998 100644 --- a/docs/source/instruments/2231A.rst +++ b/docs/source/instruments/2231A.rst @@ -15,7 +15,7 @@ To initialize a controller you can execute the following directives on any Pytho from qtics import Keithley2231A - power_supply = Keithley2231A(name = "my_power_supply", address = "/dev/ttyACM0") + power_supply = Keithley2231A(address = "/dev/ttyACM0") power_supply.connect() diff --git a/docs/source/instruments/3494_64.rst b/docs/source/instruments/3494_64.rst index 23c0aa2..da7c600 100644 --- a/docs/source/instruments/3494_64.rst +++ b/docs/source/instruments/3494_64.rst @@ -19,7 +19,7 @@ To initialize a controller you can execute the following directives on any Pytho from qtics import Kratos_349464 - attenuator = Kratos_349464(name = "my_attenuator", address = "/dev/ttyACM0") + attenuator = Kratos_349464(address = "/dev/ttyACM0") attenuator.connect() To execute commands: diff --git a/docs/source/instruments/6514.rst b/docs/source/instruments/6514.rst index 295ca83..4c5b88e 100644 --- a/docs/source/instruments/6514.rst +++ b/docs/source/instruments/6514.rst @@ -15,7 +15,7 @@ To initialize a controller you can execute the following directives on any Pytho from qtics import Keithley6514 - electrometer = Keithley6514(name = "my_electrometer", address = "/dev/ttyACM0") + electrometer = Keithley6514(address = "/dev/ttyACM0") electrometer.connect() diff --git a/docs/source/instruments/N9916A.rst b/docs/source/instruments/N9916A.rst index bed345b..c8aba58 100644 --- a/docs/source/instruments/N9916A.rst +++ b/docs/source/instruments/N9916A.rst @@ -52,7 +52,7 @@ Example of operation from qtics import VNAN9916A - VNA = VNAN9916A(name = "myVNA", address = "192.168.40.10") + VNA = VNAN9916A(address = "192.168.40.10") VNA.connect() @@ -99,7 +99,7 @@ Example of operation from qtics import SAN9916A - SA = SAN9916A(name = "mySA", address = "192.168.40.10") + SA = SAN9916A(address = "192.168.40.10") SA.connect() diff --git a/docs/source/instruments/QUICKSYNTH.rst b/docs/source/instruments/QUICKSYNTH.rst index ede31d7..2db79a3 100644 --- a/docs/source/instruments/QUICKSYNTH.rst +++ b/docs/source/instruments/QUICKSYNTH.rst @@ -14,7 +14,7 @@ Example of operation from qtics import FSL0010 # also FSL0020, FSW0010, FSW0020 - synth = FSL0010(name = "mySynth", address = "/dev/ttyUSB0") + synth = FSL0010(address = "/dev/ttyUSB0") synth.connect() synth.freq = 5.3e9 synth.output_on = True diff --git a/docs/source/instruments/R591722600.rst b/docs/source/instruments/R591722600.rst index 0457428..7076355 100644 --- a/docs/source/instruments/R591722600.rst +++ b/docs/source/instruments/R591722600.rst @@ -18,7 +18,7 @@ To initialize a controller you can execute the following directives on any Pytho from qtics import Radiall_R591722600 - switch = Radiall_R591722600(name = "my_switch", address = "/dev/ttyACM0") + switch = Radiall_R591722600(address = "/dev/ttyACM0") switch.connect() diff --git a/docs/source/instruments/SIM928.rst b/docs/source/instruments/SIM928.rst index 632a32d..d5462d6 100644 --- a/docs/source/instruments/SIM928.rst +++ b/docs/source/instruments/SIM928.rst @@ -15,7 +15,7 @@ Example of operations from qtics import SRS_SIM928 - source = SRS_SIM928(name = "source", address = "/dev/ttyACM0") + source = SRS_SIM928(address = "/dev/ttyACM0") source.connect() @@ -41,8 +41,11 @@ Functions - connect_port(port) - reset() -- output_on +- output_on() - output_off() +- on() +- off() +- is_on() - battery_charger_override() - battery_state() - battery_spec(option) diff --git a/docs/source/instruments/SMA100B.rst b/docs/source/instruments/SMA100B.rst index c399713..2438c0b 100644 --- a/docs/source/instruments/SMA100B.rst +++ b/docs/source/instruments/SMA100B.rst @@ -13,7 +13,7 @@ Example of operations from qtics import SMA100B - sg = SMA_100B(name = "mySignalGenerator", address = "192.168.40.15") + sg = SMA_100B(address = "192.168.40.15") sg.connect() Set the frequency and the RF level applied to the DUT at 1 GHz and 1 V respectively. @@ -53,6 +53,9 @@ Functions - screen_saver_mode(state) - set_phase_ref() - sweep() +- on() +- off() +- is_on() Properties ------------ diff --git a/docs/source/instruments/VALON519.rst b/docs/source/instruments/VALON519.rst index 22f9171..8e80687 100644 --- a/docs/source/instruments/VALON519.rst +++ b/docs/source/instruments/VALON519.rst @@ -11,7 +11,7 @@ Example of operations from qtics import VALON5019 - fs = VALON5019(name = "myvalon", address = "/dev/ttyUSB0") + fs = VALON5019(address = "/dev/ttyUSB0") fs.connect() Commands diff --git a/docs/source/instruments/proteox.rst b/docs/source/instruments/proteox.rst index 5aac301..12c3204 100644 --- a/docs/source/instruments/proteox.rst +++ b/docs/source/instruments/proteox.rst @@ -124,7 +124,7 @@ Pressures Flows ^^^^^ -* ``get_3He_F()`` – :sup:`3`He flowmeter +* ``get_3He_F()`` – :sup:`3` He flowmeter Magnetic Field Control ^^^^^^^^^^^^^^^^^^^^^^ @@ -170,7 +170,7 @@ Example Temperature values are expected in **kelvin**. Temperature and Heater Control -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +------------------------------ * ``set_MC_T(value)`` – Set mixing chamber temperature setpoint * ``set_MC_H(value)`` – Set mixing chamber heater power @@ -179,7 +179,7 @@ Temperature and Heater Control * ``set_STILL_H_OFF(value=0)`` – Turn off still heater Magnet Control -^^^^^^^^^^^^^^ +-------------- * ``set_MAG_TARGET(value)`` – Set magnetic field target (vector or scalar depending on mode) * ``set_MAG_STATE(value)`` – Set magnet controller state diff --git a/docs/source/instruments/triton.rst b/docs/source/instruments/triton.rst index 660304e..8fb3e1e 100644 --- a/docs/source/instruments/triton.rst +++ b/docs/source/instruments/triton.rst @@ -12,7 +12,7 @@ Example of opertations from qtics import Triton - controller = Triton("name", "address") + controller = Triton(address="192.288.1919.11") controller.connect() print(f"Mixing chamber temp: {controller.get_mixing_chamber_temp() * 1000} mK") diff --git a/src/qtics/instruments/network/NA_N9916A.py b/src/qtics/instruments/network/NA_N9916A.py index 1d9a0e0..a509ccd 100644 --- a/src/qtics/instruments/network/NA_N9916A.py +++ b/src/qtics/instruments/network/NA_N9916A.py @@ -24,16 +24,16 @@ class N9916A(NetworkInst, ABC): def __init__( self, - name: str, address: str, port: int = 5025, timeout: int = 8000, sleep: float = 0.1, no_delay: bool = True, max_points: int = 10001, + name: str = "N9916A", ): """Initialize instrument.""" - super().__init__(name, address, port, timeout, sleep, no_delay) + super().__init__(address, port, timeout, sleep, no_delay, name) self._max_points = max_points def write_and_hold(self, cmd: str): diff --git a/src/qtics/instruments/network/RS_FSV3030.py b/src/qtics/instruments/network/RS_FSV3030.py index 4c47b12..3bd0c65 100644 --- a/src/qtics/instruments/network/RS_FSV3030.py +++ b/src/qtics/instruments/network/RS_FSV3030.py @@ -10,6 +10,18 @@ class FSV3030(NetworkInst): """R&S FSV3030 Spectrum Analyzer by Rohde & Schwarz.""" + def __init__( + self, + address: str, + port: int = 5025, + timeout: int = 8000, + sleep: float = 0.1, + no_delay: bool = True, + name: str = "FSV3030", + ): + """Initialize instrument.""" + super().__init__(address, port, timeout, sleep, no_delay, name) + def clear(self): """Clear the error queue and status registers.""" self.write("*CLS") diff --git a/src/qtics/instruments/network/RS_SMA100B.py b/src/qtics/instruments/network/RS_SMA100B.py index f54bcab..98aa061 100644 --- a/src/qtics/instruments/network/RS_SMA100B.py +++ b/src/qtics/instruments/network/RS_SMA100B.py @@ -11,6 +11,18 @@ class SMA100B(NetworkInst): """R&S SMA100B RF and microwave signal generator by Rohde & Schwarz.""" + def __init__( + self, + address: str, + port: int = 5025, + timeout: int = 8000, + sleep: float = 0.1, + no_delay: bool = True, + name: str = "SMA100B", + ): + """Initialize instrument.""" + super().__init__(address, port, timeout, sleep, no_delay, name) + def clear(self): """Clear the output buffer.""" self.write("*CLS") @@ -70,10 +82,22 @@ def screen_saver_mode(self, state: str = "OFF"): self.validate_opt(state, ("ON", "OFF")) self.write(f"DISP:PSAV:STAT {state}") + def on(self): + """Rename to standard name function.""" + self.rf_status = "ON" + + def off(self): + """Rename to standard name function.""" + self.rf_status = "OFF" + + def is_on(self): + """Return true if rf output is on.""" + return self.rf_status == "1" + @property def rf_status(self) -> str: """Activate the RF output signal.""" - return self.write("OUTP:STAT?") + return self.query("OUTP:STAT?") @rf_status.setter def rf_status(self, state: str): diff --git a/src/qtics/instruments/network/RS_ZNB.py b/src/qtics/instruments/network/RS_ZNB.py index 5e2f6f3..b2d3890 100644 --- a/src/qtics/instruments/network/RS_ZNB.py +++ b/src/qtics/instruments/network/RS_ZNB.py @@ -23,7 +23,6 @@ class RSZNB(NetworkInst): def __init__( self, - name: str, address: str, port: int = 5025, timeout: int = 8000, @@ -31,9 +30,10 @@ def __init__( no_delay: bool = True, max_points: int = 100001, channel: int = 1, + name: str = "RSZNB", ): """Initialize instrument.""" - super().__init__(name, address, port, timeout, sleep, no_delay) + super().__init__(address, port, timeout, sleep, no_delay, name) self._max_points = max_points self._channel = channel self._active_trace = "Trc1" diff --git a/src/qtics/instruments/network/triton_ctrl.py b/src/qtics/instruments/network/triton_ctrl.py index 0b47664..cca2e25 100644 --- a/src/qtics/instruments/network/triton_ctrl.py +++ b/src/qtics/instruments/network/triton_ctrl.py @@ -17,15 +17,15 @@ class Triton(NetworkInst): def __init__( self, - name: str, address: str = "212.189.204.22", port: int = 33576, timeout: int = 10, sleep: float = 0.1, no_delay: bool = True, + name: str = "Triton", ): """Initialize.""" - super().__init__(name, address, port, timeout, sleep, no_delay) + super().__init__(address, port, timeout, sleep, no_delay, name) def query(self, cmd: str) -> str: """Send a message, then read from the serial port.""" diff --git a/src/qtics/instruments/network_inst.py b/src/qtics/instruments/network_inst.py index a796f00..d2fb087 100644 --- a/src/qtics/instruments/network_inst.py +++ b/src/qtics/instruments/network_inst.py @@ -20,12 +20,12 @@ class NetworkInst(Instrument): def __init__( self, - name: str, address: str, port: int = 5025, # Keysight instruments standard port timeout: int = 10, sleep: float = 0.1, no_delay: bool = True, + name: str = "GenericNetworkInst", ): """Initialize.""" super().__init__(name, address) diff --git a/src/qtics/instruments/serial/keithley2231a.py b/src/qtics/instruments/serial/keithley2231a.py index ec4c1df..6df4234 100644 --- a/src/qtics/instruments/serial/keithley2231a.py +++ b/src/qtics/instruments/serial/keithley2231a.py @@ -2,9 +2,12 @@ Controller of the Keithley2231A DC Power Supply. .. module:: keithley2231a.py -.. moduleauthor:: Marco Gobbo """ +from typing import Literal + +import serial + from qtics import log from qtics.instruments import SerialInst @@ -12,6 +15,22 @@ class Keithley2231A(SerialInst): """Keithley Model 2231A-30-3 Triple Channel DC Power Supply by Keithley Instruments.""" + def __init__( + self, + address: str, + baudrate: int = 9600, + bytesize: int = serial.EIGHTBITS, + parity: Literal["N"] = serial.PARITY_NONE, + stopbits: int = serial.STOPBITS_ONE, + timeout: int = 10, + sleep: float = 0.3, + name: str = "Keithley2231A", + ): + """Initialize.""" + super().__init__( + address, baudrate, bytesize, parity, stopbits, timeout, sleep, name=name + ) + def connect(self): """Put Keithley 2231A DC Power Supply in remote.""" self.serial.open() diff --git a/src/qtics/instruments/serial/keithley6514.py b/src/qtics/instruments/serial/keithley6514.py index 86a034a..6413b4f 100644 --- a/src/qtics/instruments/serial/keithley6514.py +++ b/src/qtics/instruments/serial/keithley6514.py @@ -2,9 +2,12 @@ Controller of the Keithley6514 Electrometer. .. module:: keithley6514.py -.. moduleauthor:: Marco Gobbo """ +from typing import Literal + +import serial + from qtics import log from qtics.instruments import SerialInst @@ -12,6 +15,22 @@ class Keithley6514(SerialInst): """Keithley 6514 Programmable Electrometer by Keithley Instruments.""" + def __init__( + self, + address: str, + baudrate: int = 9600, + bytesize: int = serial.EIGHTBITS, + parity: Literal["N"] = serial.PARITY_NONE, + stopbits: int = serial.STOPBITS_ONE, + timeout: int = 10, + sleep: float = 0.3, + name: str = "Keithley6514", + ): + """Initialize.""" + super().__init__( + address, baudrate, bytesize, parity, stopbits, timeout, sleep, name=name + ) + def connect(self): """Put Keithley 6514 Electrometer in remote.""" self.serial.open() diff --git a/src/qtics/instruments/serial/quick_synth.py b/src/qtics/instruments/serial/quick_synth.py index caac7e4..b1c37b6 100644 --- a/src/qtics/instruments/serial/quick_synth.py +++ b/src/qtics/instruments/serial/quick_synth.py @@ -2,7 +2,6 @@ QuickSyn microwave synthesizers by National Instruments. .. module:: synth_FSL0010.py -.. moduleauthor:: Pietro Campana """ from typing import Literal @@ -19,7 +18,6 @@ class FSQS(SerialInst): def __init__( self, - name: str, address: str, baudrate: int = 115200, bytesize: int = serial.EIGHTBITS, @@ -27,10 +25,11 @@ def __init__( stopbits: int = serial.STOPBITS_ONE, timeout: int = 10, sleep: float = 0.1, + name: str = "FSQS", ): """Initialize.""" super().__init__( - name, address, baudrate, bytesize, parity, stopbits, timeout, sleep + address, baudrate, bytesize, parity, stopbits, timeout, sleep, name=name ) self.min_freq = 0.5e9 diff --git a/src/qtics/instruments/serial/rf_attenuator_3494_64/rf_attenuator_3494_64.py b/src/qtics/instruments/serial/rf_attenuator_3494_64/rf_attenuator_3494_64.py index df1e44d..9472852 100644 --- a/src/qtics/instruments/serial/rf_attenuator_3494_64/rf_attenuator_3494_64.py +++ b/src/qtics/instruments/serial/rf_attenuator_3494_64/rf_attenuator_3494_64.py @@ -12,7 +12,6 @@ class Attenuator_3494_64(SerialInst): def __init__( self, - name: str, address: str, baudrate: int = 9600, bytesize: int = serial.EIGHTBITS, @@ -20,10 +19,11 @@ def __init__( stopbits: int = serial.STOPBITS_ONE, timeout: int = 5, sleep: float = 0.1, + name: str = "Attenuator349464", ): """Initialize.""" super().__init__( - name, address, baudrate, bytesize, parity, stopbits, timeout, sleep + address, baudrate, bytesize, parity, stopbits, timeout, sleep, name=name ) self._attenuation: float = 0.0 diff --git a/src/qtics/instruments/serial/rf_switch_R591722600/rf_switch_R591722600.py b/src/qtics/instruments/serial/rf_switch_R591722600/rf_switch_R591722600.py index b1dff3d..ae7ec4a 100644 --- a/src/qtics/instruments/serial/rf_switch_R591722600/rf_switch_R591722600.py +++ b/src/qtics/instruments/serial/rf_switch_R591722600/rf_switch_R591722600.py @@ -12,7 +12,6 @@ class Switch_R591(SerialInst): def __init__( self, - name: str, address: str, baudrate: int = 9600, bytesize: int = serial.EIGHTBITS, @@ -21,10 +20,11 @@ def __init__( timeout: int = 10, sleep: float = 0.1, pulse_lenght: int = 5, # milliseconds + name: str = "Switch", ): """Initialize super and set pulse length.""" super().__init__( - name, address, baudrate, bytesize, parity, stopbits, timeout, sleep + address, baudrate, bytesize, parity, stopbits, timeout, sleep, name=name ) if self.serial.is_open: diff --git a/src/qtics/instruments/serial/valon_5019.py b/src/qtics/instruments/serial/valon_5019.py index 067b3e6..96bf367 100644 --- a/src/qtics/instruments/serial/valon_5019.py +++ b/src/qtics/instruments/serial/valon_5019.py @@ -16,7 +16,6 @@ class VALON5019(SerialInst): def __init__( self, - name: str, address: str, baudrate: int = 9600, bytesize: int = serial.EIGHTBITS, @@ -24,10 +23,11 @@ def __init__( stopbits: int = serial.STOPBITS_ONE, timeout: int = 10, sleep: float = 0.3, + name: str = "VALON", ): """Initialize.""" super().__init__( - name, address, baudrate, bytesize, parity, stopbits, timeout, sleep, "\r" + address, baudrate, bytesize, parity, stopbits, timeout, sleep, "\r", name ) self.last_cmd_lenght = 0 diff --git a/src/qtics/instruments/serial/voltage_source_SIM928.py b/src/qtics/instruments/serial/voltage_source_SIM928.py index 7407b80..b20be7e 100644 --- a/src/qtics/instruments/serial/voltage_source_SIM928.py +++ b/src/qtics/instruments/serial/voltage_source_SIM928.py @@ -18,7 +18,6 @@ class SIM928(SerialInst): def __init__( self, - name: str, address: str, baudrate: int = 9600, bytesize: int = serial.EIGHTBITS, @@ -26,11 +25,11 @@ def __init__( stopbits: int = serial.STOPBITS_ONE, timeout: int = 10, sleep: float = 0.1, + name: str = "SIM928", mainframe_port: int = 1, ): """Initialize the class.""" super().__init__( - name, address, baudrate, bytesize, @@ -38,9 +37,14 @@ def __init__( stopbits, timeout, sleep, + name=name, ) self._mainframe_port = mainframe_port + def query(self, cmd) -> str: + """Return query without terminal character.""" + return super().query(cmd)[:-1] + def connect(self): """Connect to the device.""" super().connect() @@ -76,6 +80,18 @@ def output_off(self): """Turn the output off.""" self.write("OPOF") + def on(self): + """Rename to standard name function.""" + self.output_on() + + def off(self): + """Rename to standard name function.""" + self.output_off() + + def is_on(self): + """Return true if output is on.""" + return self.query("EXON?") == "1" + @property def voltage(self) -> str: """Output voltage.""" diff --git a/src/qtics/instruments/serial_inst.py b/src/qtics/instruments/serial_inst.py index 26470a2..2bc70c5 100644 --- a/src/qtics/instruments/serial_inst.py +++ b/src/qtics/instruments/serial_inst.py @@ -14,7 +14,6 @@ class SerialInst(Instrument): def __init__( self, - name: str, address: str, baudrate: int = 9600, bytesize: int = serial.EIGHTBITS, @@ -23,6 +22,7 @@ def __init__( timeout: int = 10, sleep: float = 0.1, terminator: str = "\n", + name: str = "GenericSerialInst", ): """Initialize.""" super().__init__(name, address) diff --git a/tests/test_experiment.py b/tests/test_experiment.py deleted file mode 100644 index 0643dfe..0000000 --- a/tests/test_experiment.py +++ /dev/null @@ -1,183 +0,0 @@ -"""Test experiment class.""" - -from time import sleep - -import h5py -import numpy as np -import pytest - -from qtics.experiment import BaseExperiment, Experiment, MonitorExperiment -from qtics.instruments import Instrument - - -class DummyInstrument(Instrument): - """Dummy instrument class.""" - - def connect(self): - """Connect to the instrument.""" - pass - - def disconnect(self): - """Disconnect from the instrument.""" - pass - - def write(self, cmd, sleep=False): - """Send a command to the instrument.""" - pass - - def read(self): - """Read from the instrument.""" - return 1 - - def query(self, cmd) -> float: - """Send a command and read from the instrument.""" - self.write(cmd) - return self.read() - - -class DummyExperiment(Experiment): - """Dummy experiment class.""" - - instrument1 = DummyInstrument("instrument1", "address") - instrument2: DummyInstrument - exp_attr = "attr value" - - def main(self): - """Run main part of the experiment.""" - sleep(0.2) - _ = self.monitor_failed() - - -class DummyMonitor(MonitorExperiment): - """Dummy monitor experiment class.""" - - inst = DummyInstrument("inst", "address") - max_read = 1 - sleep = 0.05 - - def main(self): - """Run main part of the experiment.""" - if self.inst.read() > self.max_read: - raise RuntimeError("Read value over allowed maximum") - - -@pytest.fixture -def instrument(): - """Dummy instrument fixture.""" - return DummyInstrument("instrument2", "address") - - -@pytest.fixture -def experiment(tmpdir): - """Dummy experiment fixture.""" - datafile = str(tmpdir.join("datafile.hdf5")) - return DummyExperiment("exp", data_file="datafile.hdf5", data_dir=str(tmpdir)) - - -@pytest.fixture -def monitor(): - """Dummy monitor fixture.""" - return DummyMonitor("testmonitor") - - -def test_init(experiment, tmpdir): - """Test initialization.""" - assert isinstance(experiment, DummyExperiment) - assert isinstance(experiment, Experiment) - assert isinstance(experiment, BaseExperiment) - assert experiment.name == "exp" - assert experiment.inst_names == ["instrument1", "instrument2"] - assert experiment.data_dir == str(tmpdir) - assert experiment.data_file == str(tmpdir.join("datafile.hdf5")) - assert experiment.monitors == [] - assert not experiment.monitor_failed() - - -def test_add_instrument(experiment, instrument): - """Test adding instruments.""" - assert not hasattr(experiment, "instrument2") - experiment.add_instrument(instrument) - assert hasattr(experiment, "instrument2") - instrument.name = "not_allowed" - experiment.add_instrument(instrument) - assert not hasattr(experiment, "not_allowed") - - -def test_add_monitor(experiment, monitor): - """Test adding monitors.""" - experiment.add_monitor(monitor) - assert experiment.monitors == [monitor] - - -def test_all_instruments(experiment, instrument): - """Test applying function to all instruments.""" - experiment.add_instrument(instrument) - experiment.all_instruments("set", address="setaddr") - - assert experiment.instrument1.address == "setaddr" - assert experiment.instrument2.address == "setaddr" - - -def test_append_data_group(experiment): - """Test appending to data file.""" - datasets = {"data1": [1, 2, 3], "data2": [4, 5, 6]} - attributes = {"attr1": "value1", "attr2": "value2"} - - experiment.append_data_group("group1", datasets=datasets, **attributes) - - with h5py.File(experiment.data_file, "r") as file: - assert "group1" in file - group1 = file["group1"] - - for name, data in datasets.items(): - assert name in list(group1) - assert list(group1[name]) == data - - for key, value in attributes.items(): - assert key in group1.attrs - assert group1.attrs[key] == value - - -def test_get_datasets_dict(experiment): - """Test loading datasets as dictionary.""" - datasets = {"data1": 3, "data2": 5} - attributes = {"attr1": "value1", "attr2": "value2"} - - experiment.append_data_group("group1", datasets=datasets, **attributes) - experiment.save_config() - data = experiment.get_datasets_dict() - assert data == {"group1": {"data1": np.asarray(3), "data2": np.asarray(5)}} - - -def test_save_config(experiment): - """Test saving config to data file.""" - experiment.instrument1.update_defaults(address="default address") - experiment.instrument1.set_defaults() - experiment.save_config() - with h5py.File(experiment.data_file, "r") as file: - assert "config" in file - config = file["config"] - assert dict(config.attrs) == { - "exp_attr": "attr value", - "name": experiment.name, - "data_file": experiment.data_file, - "data_dir": experiment.data_dir, - } - assert dict(config["instrument1"].attrs) == {"address": "default address"} - - -def test_successful_run(experiment, monitor): - """Test successful run.""" - experiment.instrument1.update_defaults(name="reset occurred") - experiment.add_monitor(monitor) - experiment.run() - assert experiment.instrument1.name == "instrument1" - - -def test_unsuccessful_run(experiment, monitor): - """Test run with monitor failure.""" - monitor.max_read = 0 - experiment.instrument1.update_defaults(name="reset occurred") - experiment.add_monitor(monitor) - experiment.run() - assert experiment.instrument1.name == "reset occurred" diff --git a/tests/test_network_inst.py b/tests/test_network_inst.py index cfb3d00..1187738 100644 --- a/tests/test_network_inst.py +++ b/tests/test_network_inst.py @@ -27,14 +27,13 @@ def network_inst(self, mocker): mocker.patch("socket.socket.connect", new_callable=lambda: mock_pass) mocker.patch("socket.socket.shutdown", new_callable=lambda: mock_pass) mocker.patch("socket.socket.close", new_callable=lambda: mock_pass) - return NetworkInst("name_inst", "address") + return NetworkInst("address") def test_init(self, network_inst): """Test initialization.""" inst = network_inst assert isinstance(inst, NetworkInst) assert isinstance(inst, Instrument) - assert inst.name == "name_inst" assert inst.address == "address" assert inst.port == 5025 assert inst.sleep == 0.1