BaseCscTestCase¶
- class lsst.ts.hexrotcomm.BaseCscTestCase¶
Bases:
BaseCscTestCaseA variant of salobj.BaseCscTestCase that captures all but the last controller state in make_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.
Get the next SAL index.
run([result])Set a random LSST_DDS_PARTITION_PREFIX and set LSST_SITE=test for every test.
Methods Documentation
- async assert_next_sample(topic: ReadTopic, flush: bool = False, timeout: float = 60, **kwargs: Any) BaseMsgType¶
Wait for the next data sample for the specified topic, check specified fields for equality, and return the data.
- Parameters:
- Returns:
- datatopic data type
The data read.
- Raises:
- asyncio.TimeoutError
If no message is available within the specified time limit.
- async assert_next_summary_state(state: State, flush: bool = False, timeout: float = 60, remote: lsst.ts.salobj.remote.Remote | None = None) 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
- Raises:
- asyncio.TimeoutError
If summary state is not seen within the specified time limit.
- abstract basic_make_csc(initial_state: lsst.ts.salobj.sal_enums.State | int, config_dir: str | pathlib.Path | None, simulation_mode: int, **kwargs: Any) BaseCsc¶
Make and return a CSC.
- Parameters:
- initial_state
lsst.ts.salobj.Stateorint The initial state of the CSC.
- config_dir
strorpathlib.PathorNone 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
- async check_bad_commands(bad_commands: collections.abc.Sequence[str] | None = None, good_commands: collections.abc.Sequence[str] | None = None) 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.
- async check_bin_script(name: str, index: int | None, exe_name: str, cmdline_args: list[str] = []) None¶
Test running the CSC command line script.
- async check_standard_state_transitions(enabled_commands: Sequence[str], skip_commands: collections.abc.Sequence[str] | None = None, override: str = '', timeout: float = 60) None¶
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.
- override
str, optional Configuration override file to apply when the CSC is taken from state
State.STANDBYtoState.DISABLED.- timeout
float, optional Time limit for state transition commands (seconds).
- enabled_commands
- Raises:
- asyncio.TimeoutError
If any state transition takes longer than the specified time limit.
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:
- make_csc(initial_state: State = State.STANDBY, config_dir: str | pathlib.Path | None = None, simulation_mode: int = 0, log_level: int | None = None, timeout: float = 60, **kwargs: dict[str, Any]) BaseCsc¶
Create a CSC and remote and wait for them to start.
The csc is accessed as
self.cscand the remote asself.remote.This override reads and checks all but the last
controllerStateevent during startup, in addition to thesummaryStateevent.- Parameters:
- name
str Name of SAL component.
- initial_state
lsst.ts.salobj.Stateorint, optional The initial state of the CSC. Defaults to STANDBY.
- config_dir
str, optional Directory of configuration files, or
None(the default) for the standard configuration directory (obtained fromConfigureCsc._get_default_config_dir).- simulation_mode
int, optional Simulation mode. Defaults to 0 because not all CSCs support simulation. However, tests of CSCs that support simulation will almost certainly want to set this nonzero.
- log_level
intorNone, optional Logging level, such as
logging.INFO. IfNonethen 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. For a configurable CSC this may includeoverride, especially ifinitial_stateis DISABLED or ENABLED.
- name
Notes
Adds a logging.StreamHandler if one is not already present.