Skip to content

Rework of observation staging and triggering needed #49

Description

@amullarney
  1. Associations between stimulus and observation are somewhat overloaded.
  2. A single observation class does not clearly expose the range of possible observation behaviors.

Observations are ordered by sequence number for evaluation after a stimulus injection completes.
Concurrent observations share the same sequence number.
Progression through the sequence occurs only when all observations with a given sequence number complete.
A 'simple' observation evaluates as soon as it becomes eligible - all preceding observations have completed.
Successful evaluation in the client test bench signals completion back to the test sequencer.
A polling observation may not complete at first evaluation; polling will cause re-evaluation until success or timeout.
A triggered observation does not proceed to evaluate immediately on eligibility, but waits to be triggered by some action.
In the main, triggered observations are expected to complete (or fail) on first evaluation - like a 'simple' observation.
However, there are some triggered observations that must allow repeated triggering - and this is where a problem surfaced.

Currently, R115 is established when an observation becomes eligible and, until Issue #48, remained until completion.
R115 provided a simple way for a completing observation to establish if any concurrent observations were outstanding.
Sequence progression cannot proceed until all concurrent observations have completed.

Now, R115 is used by trigger to select only those 'eligible' candidate observations among any associated with a trigger instance.
The problem surfaced when a repeated trigger invocation occurred before a triggered observation had signaled completion.
( Signaling completion involves inter-component messaging and event generation. )
So, the continued existence of R115 made this observation 'eligible' to be re-triggered - with undesired effects.

An 'emergency' solution, fixing issue 48, was to tear down R115 in the special case of a one-shot triggered operation.
Determination of 'one-shot' is made by establishing that there is no timer - poll/timeout - associated.
Consequently, any repeating triggered observation must be established with a timer.

A downside of this is that R115 cannot be relied upon to establish that all concurrent observations have completed.
Also, tear down of R115 on completion of other observation types becomes conditional.
It seems that eligibility for triggering and indicating currency of observations may need separate associations.
But what these are and how they are to established needs more thought.

It may be that subtyping observations would help; this has not been analyzed in any depth.
But without reliable polymorphism support, this would involve conditional navigation of subtype associations.

To be continued...

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions