BaseCscTestCase¶
-
class
lsst.ts.salobj.BaseCscTestCase¶ Bases:
objectBase class for CSC tests.
Subclasses must:
- Inherit both from this and
asynctest.TestCase. - Override
basic_make_cscto return a CSC.
Also we suggest:
- Add a method
test_standard_state_transitionswhich callscheck_standard_state_transitions. - Add a method
test_bin_scriptwhich callscheck_bin_script, assuming you have a binary script to run your CSC.
Methods Summary
assert_next_sample(topic[, flush, timeout])Wait for the next data sample for the specified topic, check specified fields for equality, and return the data. assert_next_summary_state(state[, flush, …])Wait for and check the next summaryStateevent.basic_make_csc(initial_state, config_dir, …)Make and return a CSC. check_bad_commands([bad_commands, good_commands])Check that bad commands fail. check_bin_script(name, index, exe_name[, …])Test running the CSC command line script. check_standard_state_transitions(…[, …])Test standard CSC state transitions. make_csc(initial_state[, config_dir, …])Create a CSC and remote and wait for them to start. next_index()Methods Documentation
-
assert_next_sample(topic, flush=False, timeout=10, **kwargs)¶ Wait for the next data sample for the specified topic, check specified fields for equality, and return the data.
Parameters: - topic :
topics.ReadTopic Topic to read, e.g.
remote.evt_logMessage.- flush :
bool, optional Flush the read queue before waiting?
- timeout :
double, optional Time limit for getting the data sample (sec).
- kwargs :
dict Dict of field_name: expected_value The specified fields will be checked for equality.
Returns: - data : topic data type
The data read.
- topic :
-
assert_next_summary_state(state, flush=False, timeout=10, remote=None)¶ Wait for and check the next
summaryStateevent.Parameters: - state :
lsst.ts.salobj.Stateorint Desired summary state.
- flush :
bool, optional Flush the read queue before waiting?
- timeout :
float, optional Time limit for getting the data sample (sec).
- remote :
Remote, optional Remote to use;
self.remoteif None.
- state :
-
basic_make_csc(initial_state, config_dir, simulation_mode, **kwargs)¶ Make and return a CSC.
- initial_state :
lsst.ts.salobj.Stateorint, optional - The initial state of the CSC. Ignored except in simulation mode because in normal operation the initial state is the current state of the controller.
- config_dir :
str - Directory of configuration files, or None for the standard
configuration directory (obtained from
ConfigureCsc._get_default_config_dir). - simulation_mode :
int - Simulation mode.
- kwargs :
dict - Extra keyword arguments, if needed.
- initial_state :
-
check_bad_commands(bad_commands=None, good_commands=None)¶ Check that bad commands fail.
Parameters: Notes
If a command appears in both lists, it is considered a good command, so it is skipped.
-
check_bin_script(name, index, exe_name, initial_state=<State.STANDBY: 5>, cmdline_args=())¶ Test running the CSC command line script.
Parameters: - name :
str Name of SAL component, e.g. “Rotator”
- index :
intorNone SAL index of component.
- exe_name :
str Name of executable, e.g. “run_rotator.py”
- initial_state :
lsst.ts.salobj.Stateorint, optional The expected initial state of the CSC.
- cmdline_args :
List[str] Additional command-line arguments, such as “–simulate”.
- name :
-
check_standard_state_transitions(enabled_commands, skip_commands=None, settingsToApply='', timeout=10)¶ Test standard CSC state transitions.
Parameters: - enabled_commands :
List[str] List of CSC-specific commands that are valid in the enabled state. Need not include the standard commands, which are “disable” and “setLogLevel” (which is valid in any state).
- skip_commands :
List[str] orNone, optional List of commands to skip.
- settingsToApply :
str, optional Value for the
settingsToApplyargument for thestartcommand.- timeout :
float, optional Time limit for state transition commands (seconds).
Notes
timeoutis only used for state transition commands that are expected to succceed.STD_TIMEOUTis used for things that should happen quickly:- Commands that should fail, due to the CSC being in the wrong state.
- The
summaryStateevent after each state transition:
- enabled_commands :
-
make_csc(initial_state, config_dir=None, simulation_mode=0, log_level=None, timeout=60, **kwargs)¶ Create a CSC and remote and wait for them to start.
The csc is accessed as
self.cscand the remote asself.remote.Parameters: - name :
str Name of SAL component.
- index :
intorNone, optional SAL component index, or 0 or None if the component is not indexed. A value is required if the component is indexed.
- initial_state :
lsst.ts.salobj.Stateorint, optional The initial state of the CSC.
- config_dir :
str, optional Directory of configuration files, or None for the standard configuration directory (obtained from
ConfigureCsc._get_default_config_dir).- simulation_mode :
int, optional Simulation mode.
- log_level :
intorNone, optional Logging level, such as
logging.INFO. If None then do not set the log level, leaving the default behavior ofSalInfo: increase the log level to INFO.- timeout :
float Time limit for the CSC to start (seconds).
- **kwargs :
dict Extra keyword arguments for
basic_make_csc.
Notes
Adds a logging.StreamHandler if one is not alread present.
- name :
-
next_index()¶
- Inherit both from this and