Multiple UUT Testing Over Temp - Which Thread or Process Should Control the Chamber?

I am using TestStand 3.5 to write an automated system that can test up to 4 UUTs inside a temperature chamber.  If any of the UUT's fail, the user will have the option to abort the UUT test and either leave the test socket empty or add a new UUT in it's place.  Each UUT must pass 6 cycles of hot and cold testing before temperature testing is complete.  Each UUT may be in a different cycle than the UUT's in the other test sockets.  The parallel process model seems to work best due to the fact that individual UUT tests can be stopped and started at any time.
I am trying to determine which part of the software should have control over the temperature chamber.  When all UUT's have completed testing at each hot or cold interval, the chamber must be commanded to proceed to the next temperature set point.  My first idea was to have a seperate software module (or TestStand sequence) that only controlled the chamber and gave start test commands to each UUT, but a NI apps engineer told me that this would be like writing my own test engine and not taking advantage of TestStand's capabilities.  He then advised me to let whatever test socket has an index of 0 control the chamber.  I know there will always be a 0-index socket, but I am not sure which order the sockets will run (maybe it doesn't matter). 
Has anyone ever dealt with this situation before?  What is the architecture for this scenario?

Instead of modifying the process model you could just override the ProcessSetup and ProcessCleanup sequence file callbacks in your client sequence file (go to the edit menu and choose sequence file callbacks). Then you can just add code to the ProcessSetup to launch the new thread or execution, and then add code to ProcessCleanup to tell it to exit. Unless you want a drastically different or simpler model from what is supplied I wouldn't recommend starting from scratch.
If you don't want to add code to the client sequence then editing the existing model might be your best approach. Make sure you copy the entire TestStandModels directory from components\ni\Models into components\user\Models first and modify the version under the user subdirectory. For the parallel model you would likely want to add code to the ProcessSetup and ProcessCleanup in the model itself, or to the Test UUTs sequence itself where you want your new thread to be created and exited.
Hope this helps.
-Doug

Similar Messages

  • I have multiple email accounts on my iPad. How do I control the order in which the accounts are displayed?

    I have multiple email accounts on my iPad. How do I control the order in which the accounts are displayed?

    In landscape mode, the mailbox list is automatically displayed (in portrait mode, you will need to tap the button to,show it).
    To edit the list, tap edit as shown below.

  • How to write a UDF which when encountered it should stop the map

    hi all,
    My task is to write a UDF which when encountered it should stop the map and return what is given as an input to the UDF For ex: UDF(map failed!)
    when this udf is encountered than the map should stop and the output output should be mapfailed!

    <i>But over there it is given to stop a particular mapping step only But my requirement is that i should stop the Entire Mapping process</i>
    UDFs r used in graphical mappings and the details in blog shows that when a UDF stops a mapping, it in turn stops whole messgae mapping. So ur entire Mapping process would get stopped
    Regards,
    Prateek

  • How to share one action to multiple UUT test?

    Hi,
    In fact, I don't know how to define the topic exactly.
    My request is like the following :
    For example, I have a signal generator and four UUTs.
    Signal Pattern 1 ON -> batch(4 UUT test...) -> Signal Pattern 1 OFF, Signal Pattern 2 ON -> Batch(4 UUT test...) ...so on...
    I got stuck how to put the action into the teststand and do once instead of 4 times.
    Something similar to the callback of  ProcessSetup, PreBatch, and PreUUTLoop,
    but I wonder if there is a way to call an action once within multiple UUTs in the MainSequence.
    Could someone give me some suggestion? Thanks a lot!
    Solved!
    Go to Solution.

    Hey William,
    You're probably going to want to use the "One Thread Only" option of a batch synchronization section to do this. It sounds like you're already using the Batch process model, so this should be fairly easy to implement. If it's a single step, you can go to the Synchronization tab of the step settings and change the Batch Synchronization setting. If it's multiple steps in a row, you could use the Enter Synchronized Section and Exit Synchronized Section modes of the Batch Synchronization step type.
    Also, we have an example that demonstrates this functionality. You can find it at <TestStand>\Examples\MultiUUT\BatchUUT.seq. If you look at the Set Chamber Temperature step, you will see that it is configured in this way.
    Daniel E.
    TestStand Product Support Engineer
    National Instruments

  • HT1386 How do I control which device's iCal is controlling the sync?

    I make changes to my calendar on my iPad, but when I sync it with my computer it defaults to the iMac calendar and erases what is on the iPad. How do I control which device is the sync-er and the sync-ee?

    Are you using iCloud?
    If so, both teh Mac and iPad should be using iCloud.
    Do not sync the calendar with iTunes.

  • Which thread will start first?

    Hi,
    I have a very basic question for you folks, considering the following example code,
    new thread(new Runnable(){
    public void run(){
    TestThread t1 = new Thread();
    t1.start();
    }).start();
    Now the question is which thread will start first. The outer one or t1?
    Any explanation would be greatly appreciated.
    /khurram

    Sorry - I should have been more clear
    Runnable r = new Runnable() {
      public void run() {
    }; //the run() method has not been called yet!
    r.run(); //now it has!is defining a class which is to be instantiated. By "defining" a class, I mean providing an implementation of one of the class's methods. This method will not be invoked until explicitly called on the Object "r". The is exactly what is done when the start() is called on the outer thread. Is this a bit clearer?

  • Which kerning option do you use in After Effects, and which should be the default?

    Which kerning option do you use, Metrics or Optical?
    Which do you think should be the default?
    How would you feel about us changing the default to Optical and creating a new preference where you can set the default?

    OK. Here's where we've ended up for now:
    One of our software engineers is working on fixing the bug that keeps the setting from being persistent. So, if you like Optical, you can set it that way once and it will be the default for new text layers created after that.
    We're not going to change the default right now. Our thinking is that fixing the bug makes it so that the people who want Optical only need to change it once, and we should continue to match Photoshop and Illustrator with their default. Also, Angie makes a good case that even if Optical is the right solution much of the time, having the default be Optical will cause people to miss out when a type designer has done the right thing and done the pairs correctly for the Metrics case.
    We'll revisit this decision if it turns out that our incremental step of just fixing the bug isn't enough to satisfy everyone.
    Thanks for the feedback, everyone.

  • Control the activity flow in thread T1 using thread T2

    Hi, im asking this question because i have two threads, one running at background, one at foreground directly interacting with users. the two should also intereact with each other, and perform correct actions depending on the command/request received from the other. for instance,
    Class BackgroundThread implements Runnable{
        private boolean _stop;
        public void run(){
            while(!shouldStop(){
                //do something
        public boolean shouldStop(){
            return _stop;
        public void signalStop(){
            _stop=false;
        public void signalContinue(){
            _stop=true;
    Class ForegroundThread implements Runnable{
        BackgroundThread _bgThread;
        public ForegroundThread (BackgroundThread bgThread){
            _bgThread=bgThread;
        public void run(){
            // lines of code that catches user input from console
            case 'r'
                _bgThread.signalContinue();    //LINE A
                break;
            case 's'
                _bgThread.signalStop();   
                break;
    public Class ClientMain(){
        public static void main(args[]){
            BackgroundThread bgT = new BackgroundThread();
            new Thread(bgT).start();
            new ForegroundThread (bgT).run;
        }these are just sample code, may have errors, but the logic i suppose is clear. basically users interact with foreground thread, and they can control the running of background thread by typing command, r and s. 's' signal stop, 'r' signal continue.
    at present i managed to stop the background thread - strictly not stopping it, but stop goin into the 'while' loop - once user key in 's'; but then if i key in 'r', the program does nothing. while what i want the system to do is to resume the execution of 'while'. i tried to replace the line A to
    _bgThread.signalContinue();
    _bgThread.run();and it does re-run, but then i cannot control the thread no more. ie, it doesnt stop upon command 's' anymore.
    how can i fix this please, any hints? thanks very much in advance!

    when the background thread exits the while loop, the thread stops and exits.
    try this, it works, but obviously will need to be customized for what you want to do. It should give you an idea though.
    class BackgroundThread implements Runnable
        private boolean _stop;
        private boolean _wait = true;
        public void run(){
             while(_wait)
                 while(!shouldStop()){
                      try{
                           Thread.sleep(1000);
                           System.out.println("Do Something");
                      catch(InterruptedException ie)
                 try{
                      Thread.sleep(1000);
                 catch(InterruptedException ie)
                 System.out.println("Paused...");
        public boolean shouldStop(){
            return _stop;
        public void signalStop(){
            _stop=true;
        public void signalContinue(){
            _stop=false;
        public void signalPause()
             _stop = true;
        public void signalExit()
             _wait = false;
             _stop = true;
    class ForegroundThread implements Runnable{
        BackgroundThread _bgThread;
        public ForegroundThread (BackgroundThread bgThread){
            _bgThread=bgThread;
        public void run(){
            // lines of code that catches user input from console
            Scanner scan = new Scanner(System.in);
            boolean exit = false;
             while(!exit)
                 System.out.println("enter action");
                 char resp = scan.next().charAt(0);
                 switch(resp)
                  case 'r':
                     _bgThread.signalContinue();    //LINE A
                     break;
                 case 's':
                     _bgThread.signalPause();   
                     break;
                 case 'e':
                      _bgThread.signalExit();
                      exit = true;
                      break;
    public class ClientMain
        public static void main(String [] args )
            BackgroundThread bgT = new BackgroundThread();
            new Thread(bgT).start();
            new ForegroundThread(bgT).run();
    }

  • How to run multiple CodedUI Ordered Tests over multiple Test Agents for parallel execution using Test Controller

    we are using VS 2013, I need to run multiple Coded UI Ordered Tests in parallel on different agents.
    My requirement :
    Example:   I have 40 Coded UI Test scripts in single solution/project. i want to run in different OS environments(example 5 OS ).  I have created 5 Ordered tests with the same 40 test cases. 
    I have one Controller machine and 5 test agent machines. Now I want my tests to be distributed in a way that every agent gets 1 Ordered test to execute. 
    Machine_C = Controller (Controls Machine_1,2,3,4,5)
    Machine_1 = Test Agent 1 (Should execute Ordered Test 1 (ex: OS - WIN 7) )
    Machine_2 = Test Agent 2 (Should execute Ordered Test 2 (ex:
    OS - WIN 8) )
    Machine_3 = Test Agent 3 (Should execute Ordered Test 3
    (ex: OS - WIN 2008 server)  )
    Machine_4 = Test Agent 4 (Should execute Ordered Test 4 (ex:
    OS - WIN 2012 server) )
    Machine_5 = Test Agent 5 (Should execute Ordered Test 5 (ex:
    OS - WIN 2003 server) )
    I have changed the  “MinimumTestsPerAgent” app setting value
    as '1' in controller’s configuration file (QTController.exe.config).
    When I run the Ordered tests from the test explorer all Test agent running with each Ordered test and showing the status as running. but with in the 5 Test Agents only 2 Agents executing the test cases remaining all 3 agents not executing the test cases but
    status showing as 'running' still for long time (exp: More then 3 hr) after that all so  its not responding. 
    I need to know how I can configure my controller or how I can tell it to execute these tests in parallel on different test agents. This will help me reducing the script execution time. 
     I am not sure what steps I am missing. 
    It will be of great help if someone can guide me how this can be achieved.
    -- > One more thing Can I Run one Coded UI Ordered Test on One Specific Test Agent?
    ex: Need to run ordered Test 1 in Win 7 OS (Test Agent 1) only.
    Thanks in Advance.

    Hi Divakar,
    Thank you for posting in MSDN forum.
    As far as I know, we cannot specify coded UI ordered test run on specific test agent. And it is mainly that test controller determine which coded UI ordered test assign to which test agent.
    Generally, I know that if we want to run multiple CodedUI Ordered Tests over multiple Test Agents for parallel execution using Test Controller.
    We will need to change the MinimumTestsPerAgent property to 1 in the test controller configuration file (QTControllerConfig.exe.config) as you said.
    And then we will need to change the bucketSize number of tests/number of machines in the test settings.
    For more information about how to set this bucketSize value, please refer the following blog.
    http://blogs.msdn.com/b/aseemb/archive/2010/08/11/how-to-run-automated-tests-on-different-machines-in-parallel.aspx
    You can refer this Jack's suggestion to run your coded UI ordered test in lab Environment or load test.
    https://social.msdn.microsoft.com/Forums/vstudio/en-US/661e73da-5a08-4c9b-8e5a-fc08c5962783/run-different-codedui-tests-simultaneously-on-different-test-agents-from-a-single-test-controller?forum=vstest
    Best Regards,
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • Applet UpCall from JS Event - Which Thread? Options

    Hi,
    With many direct references to the second lovely colour diagram on this
    page: -
    http://java.sun.com/javase/6/docs/technotes/guides/jweb/applet/applet...
    I completely understand the hour-glass pause on the single-JS-thread
    preservation architecture when the red arrow for the additional
    "applet-spawned" thread tries to call down when the applet worker thread is
    already calling down. Very clever; love it! Well done all involved.
    What I'd like to know : -
    1) When the additional applet-spawned thread calls down into Javascript and
    that JS calls setTimeout(myFunc,1000) and myFunc eventually [up]Calls back
    into the Applet, which thread will host the call to the applet method?
    Default-Worker or Applet-Spawned? Is the tenuous link/association to a
    round(ish)-trip preserved?
    2) What happens when a single JAVA thread is the target of affection from
    multiple Javascript UpCalls? (The scenario being a) an event upCalls to JAVA
    b) The Applet takes some time before returning c) The single Javascript
    thread is now free to accept further events or down-calls d) a subsequent
    event has triggered another UpCall request e) but the thread is
    busy/occupied with the first)
    I am desperately trying to pin down architected behaviour here that is the
    reciprocal of the down-call throttling. Please help if you can.
    Cheers Richard Maher

    Hi Baftos,
    Thanks for your reply and help. Yes, anecdotally, UpCalls back to the Applet are handled by the thread that called down to Javascript. (As advertised and documented in the Round-Trip scenario). And the good news is that events that call back into the Applet (regardless of provenance) are handled by the appropriate "Applet N LiveConnect Worker Thread". So if you want to callback to the Applet Worker Thread then just setTimeout(yourFunc,0) rather than just yourFunc().
    This is expected/wished-for behavior and it would be nice to see it documented somewhere? (The event-processing-thread" bit)
    Now, if someone can answer part 2 of my question then that would be magnificent!
    "> 1 Javascript UpCall" and "only one target Thread"
    Cheers Richard Maher

  • Printing multiple pages starts over after half a page

    I can print a single page of my real estate flyer OK.
    If I ask for multiple pages, half a page prints and the printer starts over.
    I copied a screen shot of the PDF to Word using OneNote, and Word prints multiple copies just fine.
    OS: Windows 7 Pro 64
    Printer: Brother mfc-9560 CDW
    Brother support says it's an adobe issue.
    Steps taken to resolve:
    Uninstalled Adobe Reader.
    Restarted PC
    Downloaded Reader Version XI (11.0.06) from adobe.com.
    Closed all windows, restarted PC, and installed the package.
    Same results: first page starts printing, then only half a page prints and the printer starts over.
    I get the same results no matter what PDF I try to print multiple copies of.
    I tested it on a Samsung ML2510, and they print OK, although it's not a color printer.

    That 'drag' resizing has only started with PSE12. I'm not sure if it's supposed to be a feature, or a bug (in my view a bug).
    Copy/paste works.
    You can drag the source file layer to the target image and it won't resize. If it's a many-layered image use Ctrl+Alt+Shift+E to make a new combined layer in the source and drag that across.
    You can drag from the source in the Edit window to the target in the Photo Bin without resizing.
    One thing to be aware of is the image resolution. When preparing your source images if they are not all the same resolution their relative dimensions will change when you create your composite. As you intend to resize them individually within the composite this is not such a big deal, but it might save you some puzzlement knowing it in advance.
    For resizing within the composite turn on the info window (use the F8 key) and you can see your individual image dimensions as you resize.
    Cheers,
    Neale
    Insanity is hereditary, you get it from your children
    If this post or another user's post resolves the original issue, please mark the posts as correct and/or helpful accordingly. This helps other users with similar trouble get answers to their questions quicker. Thanks.

  • [svn:fx-trunk] 14719: Bug: LCDS-1522 - RTE running reliable messaging test over NIO HTTP endpoint caused by checkin 272187 .

    Revision: 14719
    Revision: 14719
    Author:   [email protected]
    Date:     2010-03-12 02:20:41 -0800 (Fri, 12 Mar 2010)
    Log Message:
    Bug: LCDS-1522 - RTE running reliable messaging test over NIO HTTP endpoint caused by checkin 272187.
    QA: Yes
    Doc: No
    Checkintests: Pass
    Details: Checkin 272187 fixed small messages to work on NIO HTTP endpoints but this exposed a bug in HTTPChannel. HTTPChannel is not supposed to support small messaging feature but there was one place where small messages feature were still being enabled which caused the bug.
    Ticket Links:
        http://bugs.adobe.com/jira/browse/LCDS-1522
    Modified Paths:
        flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/HTTPChannel.as

  • Synchronizing multiple threads = sequential processing ???

    Hi !
    I am trying to solicit some comments and views.
    I tested a program which updates an account with two amounts each of 1000, via two different threads.
    I can see thread-1 kicks up , waits for some resource (e.g. from the db server ) while thread-2 kicks in and grab the cpu.
    Without sychronisation, they overwrote each other so that at the end I have only one amount credited to the account (plus the original balance).
    Now I simply add the directive "synchronized" and both amounts are added to the balance correctly !
    However, I can also see (via much use of PrintWriter) that thread-1 completes the synchronised block of java-code first (along with a palpable delay) before thread-2 kicks in.
    In the sychronized case, the cpu was idle while thread-1 waits for an I/O and idle again while thread-2 waits for an I/O.
    Isn't this simple sequential processing ?
    Is this an optimal model for concurrency ?
    I do not see any significant advantages !

    I know the book: Zukovski Java 2 from Sybex.
    Two threads are fighting for single resource. In such case synchronization does not defeat the purpose of concurrent programming. It just introduces the order: not too much of a good thing. Sure, you are better off with only one thread in your account, but think that they can service several diffrent accounts at once not just one.

  • Unit test, how to test a function which returns a PL/SQL table.

    I've got the following type definition:
    create or replace type method_tbl as table of varchar2(255);
    /I've got the following function
    function abc(p_param1 in varchar2) return method_tbl;When I create a unit test for this I am not able to specify what the table should contain on return of the function, all I can see is an empty table. Which is off course one of the unit tests. But I also want to test where the table that is returned contains a number of rows.
    Is there something that I'm missing?
    Typically the function is called like this:
    select * from table(abc('a'));Thanks,
    Ronald

    >
    When I create a unit test for this I am not able to specify what the table should contain on return of the function, all I can see is an empty table. Which is off course one of the unit tests. But I also want to test where the table that is returned contains a number of rows.
    Is there something that I'm missing?
    >
    You will have to create a collection that represents the result set and then compare that to the actual result set.
    Assuming tables A and B you would typically have to do
    1. SELECT * FROM A MINUS SELECT * FROM B -- what is in A that is NOT in B
    2. SELECT * FROM B MINUS SELECT * FROM A -- what is in B that is NOT in A
    You could combine those two queries into one with a UNION ALL but since the results are tables and the comparison is more complex it is common to write a function to determine the comparison result.
    Here is sample code that shows how to create an expected result collection.
    DECLARE
    expectedItemList sys.OdciVarchar2List;
    functionItemList sys.OdciVarchar2List;
    newItemList sys.OdciVarchar2List;
    expectedCount INTEGER;
    countFunctionItemList INTEGER;
    BEGIN
    expectedItemList := sys.OdciVarchar2List('car','apple','orange','banana','kiwi');
    expectedCount := 5; -- or query to count them
    functionItemList := sys.OdciVarchar2List('car','apple','orange','peanut');
    -- use your function to get the records
    -- select * from myFunctino BULK COLLECT INTO functionItemList
    IF functionItemList.count != expectedCount THEN
      DBMS_OUTPUT.PUT_LINE('Count is ' || functionItemList.count || ' but should be ' || expectedCount);
    END IF;
    END;
    Count is 4 but should be 5If the collections are the same type you can use the MULTISET operators.
    See Solomon's reply in this thread for how to use the MULTISET operators on collections.
    PLS-00306: wrong number or type of argument in call to 'MULTISET_UNION_ALL'
    See MultisetOperators in the SQL Reference doc
    http://docs.oracle.com/cd/B13789_01/server.101/b10759/operators006.htm
    >
    Multiset operators combine the results of two nested tables into a single nested table.

  • Multiple numeric test measurment name vb6

    I am trying to obtain the names of Multiple Numeric Test measurements from Visual Basic (vb6).
    I have read the knowledgebase article 2NE7K56E which gives excerpts from an example for LabWindows/CVI
    and am getting closer, but no solution yet.
    Here is what I have and the error I get:
        Dim stepAsPropObj As PropertyObject
        Dim measAsPropObj As PropertyObject
        Dim sName as String
        stepAsPropObj = currentStep.AsPropertyObject()
        i=0
        Do While (existsMultiResults)
            'the following works to obtain upper limit
            limitsArrayHigh(i) = FormatNumber(stepAsPropObj.GetValNumber("result.measurement[" & Format(i) & "].limits.high", 0), 3)
            'the following statement gives the error "Specified value does not have the expected type":
            measAsPropObj = stepAsPropObj.GetPropertyObjectByOffset(i, 0)
            sName = measAsPropObj.Name   'dont know if this works or not. not getting this far.
        Loop
    It seems that "result.measurement" has to be specified somewhere,
    but everything I try gives a different error.
    Can anyone show me how to do this.
    Thanks very much.
    Jon  

    Jon,
    I'm not sure at this point why you are getting the error when trying to access the name of the Measurement.  This is one of those cases where it might be easier for me to send you a small example that reads the measurement's name in VB.  This might be easier than me trying to find out what is the difference between your code and mine.
    Make sure to re-link the .Net assembly to point to the new location where you decompress the files.
    Let me know if this works on your computer and what differences you see between this and your code.
    Regards,
    Santiago D
    Attachments:
    Measurement_DotNet.zip ‏37 KB

Maybe you are looking for

  • Live Cam Voice on HP DV8305 -- Video image very slow

    I installed Live! Cam Voice on my HP DV8305 succussfully, it works, but the video image is very slow. it needs about 30sec to capture a frame, sometime just stucked. I changed the Display Adaptive Driver, used differrent USB IF, checked my CPU and Me

  • Acrobat 9.0 + Visual Studio 2003

    Hello Folks, I have a query regarding Acrobat 9.0 and Visual Studio 2003. In our project we are using Acrobat 9.0 SDK to develop an application that already has support for Acrobat 8.0.But we are facing some problems in aspects like Securing a docume

  • 1. Non-modal popup or 2.minimize button on titlebar of popup

    Hi All, Firstly, is it now possible to open non-modal pop-ups ( as many pop-ups after executing an action method :( ) , or has anyone come across this found a work-around for this ? currently, I am opening a modal dialog itself. But when I click the

  • APA Style Template in Pages for Mac?

    Does anyone know how to create an APA style Template in Pages for Mac?

  • Suddenly, no YouTube sound

    I have iMac OS X 10.5.8 purchased 2009.   Today I find that YouTube videos, whether played through facebook or directly on YouTube, there is no sound at all.  I went to Flash website and uninstalled my Flash player, although I did have the current on