BaseCscTestCase¶
- class lsst.ts.salobj.BaseCscTestCase¶
Bases:
object
Base class for CSC tests.
Subclasses must:
Inherit both from this and
unittest.IsolatedAsyncioTestCase
.Override
basic_make_csc
to return a CSC.
Also we suggest:
Add a method
test_standard_state_transitions
which callscheck_standard_state_transitions
.Add a method
test_bin_script
which 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
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, after setting a random $LSST_DDS_PARTITION_PREFIX.
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: lsst.ts.salobj.topics.read_topic.ReadTopic, flush: bool = False, timeout: float = 60, **kwargs: Any) lsst.ts.salobj.type_hints.BaseMsgType ¶
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.
- topic
- Returns
- datatopic data type
The data read.
- async assert_next_summary_state(state: lsst.ts.salobj.sal_enums.State, flush: bool = False, timeout: float = 60, remote: Optional[lsst.ts.salobj.remote.Remote] = 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
- abstract basic_make_csc(initial_state: Union[lsst.ts.salobj.sal_enums.State, int], config_dir: Optional[Union[str, pathlib.Path]], simulation_mode: int, **kwargs: Any) lsst.ts.salobj.base_csc.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: Optional[Sequence[str]] = None, good_commands: Optional[Sequence[str]] = 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, exe_name: str, default_initial_state: lsst.ts.salobj.sal_enums.State = State.STANDBY, initial_state: Optional[lsst.ts.salobj.sal_enums.State] = None, override: Optional[str] = None, cmdline_args: Sequence[str] = (), timeout: float = 60) None ¶
Test running the CSC command line script.
- Parameters
- name
str
Name of SAL component, e.g. “Rotator”
- index
int
orNone
SAL index of component.
- exe_name
str
Name of executable, e.g. “run_rotator.py”
- default_initial_state
lsst.ts.salobj.State
, optional The default initial state of the CSC. Ignored unless
initial_state
is None.- initial_state
lsst.ts.salobj.State
orint
orNone
, optional The desired initial state of the CSC; used to specify the
--state
command-argument.- override
str
orNone
, optional Value for the
--override
command-line argument, which is omitted if override is None.- cmdline_args
List
[str
] Additional command-line arguments, such as “–simulate”.
- timeout
float
, optional Time limit for the CSC to start and output the summaryState event.
- name
- async check_standard_state_transitions(enabled_commands: Sequence[str], skip_commands: Optional[Sequence[str]] = 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
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: lsst.ts.salobj.sal_enums.State = State.STANDBY, config_dir: Optional[Union[str, pathlib.Path]] = None, simulation_mode: int = 0, log_level: Optional[int] = None, timeout: float = 60, **kwargs: Any) AsyncGenerator[None, None] ¶
Create a CSC and remote and wait for them to start, after setting a random $LSST_DDS_PARTITION_PREFIX.
The csc is accessed as
self.csc
and the remote asself.remote
.Reads and checks all but the last
summaryState
event during startup.- 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
, optional Time limit for the CSC to start (seconds).
- **kwargs
dict
, optional Extra keyword arguments for
basic_make_csc
. For a configurable CSC this may includeoverride
, especially ifinitial_state
is DISABLED or ENABLED.
- name