I am not currently logging people inside TestStand and I was used for a couple of years to dynamically fill the correct user of my test sequence inside the PreUUT step on my test sequences.
It still works correctly with TestStand reports, but when I am connecting to SystemLink I can only see the "administrator" Operator on the Test Header as shown below.
My first thought is that the SystemLink report is created before I am filling the field Operator, but it works for the Batch Serial Number, the Serial Number & the Part Number, so any help?
Is it possible to change it somewhere on the sequence we're using? Or in the process model?
- can I override the TestProgram that is automatically send? We're using a MainSequence to decide which Test Program we have to launch. I have the same problem on the TestStand test report this time, and it might be a TestStand question, but is it related with the Operator field?
Third and Last question:
- What's the difference for Product and Part Number for SystemLink? I only fill the PartNumber field in TestStand, is it considered the same for SystemLink?
Hope everyone is doing great in those difficult times!
Solved! Go to Solution.
Ok I just found that changing the TS StationGlobal during the PreUUT is working for the Operator field in SystemLink.
Still have to find a way for question 2!
1. Indeed, you can override the operator by writing to that StationGlobal from the PreUUT callback. This StationGlobal integrates with TestStand's user management system - for instance, if the station is configured with users which map to Windows system users, the current Windows user will be stored there. If you have a pre-existing way to get operator/user identifiers, it can just be written directly to the StationGlobal as you discovered!
2. TestStand passes the name of the sequence/test program to each model plugin directly from the process model. It is passed in via a parameter to the "Model Plugin - UUT Start" callbacks within the plugins. This can be seen by opening SequentialModel.seq (<TestStand Directory>/Components/Models/TestStandModels), in the "Model Plugins - UUT Start" step of the "Test UUTs" sequence. Changing the value that is passed in here will affect all model plugins, including both the SystemLink one and the TestStand report generator. It looks like it grabs the value to pass from RunState.ProcessModelClient. I am not sure how often the TestStand engine updates/overwrites the RunState variables, but you might be able to get away with setting that RunState variable in the Pre UUT callback. Otherwise, the process model itself must be modified to know the name of the "real" sequence file, and pass it into the plugins. Either way, this name is passed to the plugins before the MainSequence Callback executes, so the program name must be known before that time. The Pre UUT callback seems to be the latest point at which this can be modified.
3. Products are resources which are uniquely identified by a part number - each unique part number corresponds to one product. Each product contains one part number, along with additional data such as the product's name and family, plus places for custom metadata and files. TestStand is only concerned with part numbers, and SystemLink will automatically create a corresponding product for new incoming part numbers, if one doesn't already exist.
Thanks for your answer! It took me time to reply sorry 😉
1. Yes, I was used to override the Parameters.ModelData.StationInfo.LoginName inside the PreUUT and it was doing the job in the reports until now. Well it's working great also with the StationGlobals.TS.CurrentUser.LoginName
2. Still my main concern! I found before you answered me the RunState.SequenceFile.Path variable but I was not able to try easily with SL because I was working at home.
So I understand that changing the process model is the state of the art solution, but I am not really fond of at the end of changing the Sequential Process model. It will work great right now, but one day the TS version is changing, the process model too, or we forgot to install it, etc.
I finally try to override the variable at the end of the PreUUT of my MainSequence. Before that I was calling the PreUUT of the TestSequence I want to launch.
And the behavior is weird, it's working but weird! The step following the PreUUT of my MainSequence is the MainSequence of my TestSequence, quite logic. But after the MainSequence of the TestSequence, it's coming back to the PostUUT of the MainSequence under the name of the TestSequence. Quite funny, isn't it? So I override the variable inside the PostUUT (and also the PostUUTLoop) to get back to the MainSequence in a correct way.
Weird behavior but this is not a right use I understand. We missed a software name, and a software version field in TS I guess.
3. Thank you for your clear explanation!
Hi and sorry for the delay, I did not have any notification.
We did not find any clean other way to do it. We're overriding the RunState.SequenceFile.Path inside the PreUUT...