06-27-2006 10:00 AM
06-28-2006 06:24 PM
06-28-2006 11:11 PM
Capt. Jack -
I think I can shed some light on the change of behavior. Specifically, in 3.0 and earlier, if a user suspends on a step that caused an error because on the run-time error dialog box, and the user terminated the execution because of the error, TestStand was incorrectly changing the Error status to Terminated for that step. We feel that the Error status should not be altered, so there was a change made in 3.1 to ensure that if a termination does not affect the status of a step that has already executed and set its status. In addition, if the termination occurs while a step is executing and the status has not yet been set, the termination status is given to the executing step upon completion, independent of whether the step is monitoring for a termination status change.
When you say that "This Step Terminates on Failures", I assume that the step calls termination but the step is also directly setting the status. One option is to modify the step to either not set the status on termination or explicitly set the status to "Terminated". For example, if your step type is using the Status Expression like the NI Pass/Fail step type, you could set the status to Terminated as shown below:
Step.DataSource != "Step.Result.PassFail" ? Step.Result.PassFail = Evaluate(Step.DataSource) : False; Step.Result.PassFail ? "Passed" : "Terminated")
Hope this helps...
06-29-2006 10:20 AM
06-29-2006 02:31 PM
06-29-2006 05:25 PM
Scott,
I was able to implement this using the ProcessModelPostResultListEntry callback, which is already enabled in the Sequential Process Model for use with the Database and OTF functionality. It was a simple matter to add Active X checks for the termination state, and then overwrite the Step.Result.Status with "Terminated" as necessary. The reason why I prefer this is that upper level calling sequences would return Passed when a Termination Event occurred inside them, and the report was incorrectly documenting the calling sequence as Passed rather than incomplete (Terminated). While I realize this could be solved by proper initialization of the Pass/Fail or evaluation return value to a failing value at the beginning of the call, I would prefer a method that guarantees documenting that the step did not complete properly (i.e.; no false Passes).
The overhead is negligible and acceptable during normal execution, and while several additional steps where involved once termination was active, it still should not be an issue for what we are doing. If we where worried about time-critical events, we'd be looking into RTOS functionality for our tests.
Thanks for your help and suggestions!
-Jack
06-29-2006 11:19 PM
Capt. Jack -
I am glad that you were able to get what you wanted with the callback. Thanks for letting us know.
06-30-2006 07:40 AM