TestStand 2.0.1
We have tests that generate a lot of results for each UUT. This causes TestStand to run out of memory either before the sequence finishes executing, or while the report is being generated. We have already Eliminated "record results" for each step where it is not absolutely necessary, but still the results are taking up too much memory. We have looked at and incorporated OnTheFlyReports, but we still need the finished report in correct heirarchical form.
We are currently investigating writing the results to disk after every step in MainSequence completes. To do this, we call PropertyObject.write on the first element in RunState.Main.Locals.ResultList from ProcessModelPostResultListEntry
. Then we delete this element from the array to free up memory. (After this we check for and write all other results from looping to disk using the same technique as well.) In the report generation, we then call PropertyObject.read to read the results in from a file before we process them.
Now we are finding that in some cases, the contents of the ResultList are not exactly preserved on the transfer to and from disk. Particularly, when we have a multi-numeric limit step (of type NI_MultiNumericLimitTest), certain fields get created regardless of whether or not they existed in the original ResultList entry. Specifically, elements in the Measurement Container (instances of type NI_LimitMeasurement) have properties Limits.High and Units, regardless of whether these properties existed in the original copy of the ResultList entry. For this specific case, we can tailor the report generation to ignore Limits.High or Units appropriately.
Are there any other types that we should look
at that may not be the same after they are written to and read from disk using PropertyObject read and write?
Thanks,
Peter Dobratz