BaseCscTestCase¶
- class lsst.ts.hexrotcomm.BaseCscTestCase¶
Bases:
BaseCscTestCase
A 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
summaryState
event.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
summaryState
event.- Parameters:
- state
lsst.ts.salobj.State
orint
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.remote
if 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.State
orint
The initial state of the CSC.
- config_dir
str
orpathlib.Path
orNone
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.STANDBY
toState.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
timeout
is only used for state transition commands that are expected to succceed.STD_TIMEOUT
is used for things that should happen quickly:Commands that should fail, due to the CSC being in the wrong state.
The
summaryState
event 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.csc
and the remote asself.remote
.This override reads and checks all but the last
controllerState
event during startup, in addition to thesummaryState
event.- Parameters:
- name
str
Name of SAL component.
- initial_state
lsst.ts.salobj.State
orint
, 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
int
orNone
, optional Logging level, such as
logging.INFO
. IfNone
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
. For a configurable CSC this may includeoverride
, especially ifinitial_state
is DISABLED or ENABLED.
- name
Notes
Adds a logging.StreamHandler if one is not already present.