Mastering Teststand Deployment Images J. Eagar, Control
Overview What TestStand deployment images are and why you would want to use them Licensing considerations for deployment images How to use TestStand's Deployment Utility to create deployment images and installers Common problems and pitfalls with the deployment utility How to architect your test sequence to minimize problems with the deployment utility
What are Testststand Deployment Images? Teststand Deployment Images are conceptually analogous to a built executable in LabVIEW. Both Teststand Deployment Images and LabVIEW executables serve the same purpose—they both package all of the core code dependencies into a read-only form that can be installed onto test systems that just have runtime engines installed. There are some significant gotchas when you work with deployment images so think of them conceptually like LabVIEW executables but do not treat them as executables and do not think of the deployment utility as the same as LabVIEW’s application builder.
Why would you want to use Teststand Deployment Images? Scalability Deployment Images solve some core problems with scaling up test sequences in production. Cost Consistency Traceability Protect intellectual property Flaws in the deployment utility force better code practices Enforces process flow
Why would you want to use Teststand Deployment Images? (Scalability) Cost A typical single seat of Teststand and LabVIEW is ~$10,000 vs $500 for a base Teststand Deployment license Quickly adds up for a15+ test platform installation $7,500 vs $150,000 in licensing costs Consistency No source code on production testers means no temptation to ‘Tweak’ in code under pressure Traceability Read-Only Deployment images are versioned. This allows you to have a high level of confidence that what the product was tested with was what is approved
Why would you want to use Teststand Deployment Images? (Scalability) Protect Intellectual Property Mostly for code going to off-shore partners or sub- contractors. Allows you to NOT ship the source code with the test sequence.
Why would you want to use Teststand Deployment Images? (Better coding through flawed tools) Flaws in the deployment utility force better code practices Deployment utility treats your code as if it Follows best coding practices Doesn’t contain any partially completed development remnants Won’t have any complex linking issues post re-linking* This includes third-party libraries and drivers… If your code is not all of the above you will randomly hit brick walls until it does. Very painful when under deadlines You have been warned
Why would you want to use Teststand Deployment Images? (Enforces Process Flow) Enforces Process Flow Deployment Images give you a “release candidate” for a test sequence. Discreet versioned package that can be signed off on. Reduces pressure for “can you just make one little change please”
Licensing considerations for deployment images Base Deployment ~$500 Debug Deployment ~$2,200 Can be included in Ni Enterprise Agreements
Licensing considerations for deployment images
How to use TestStand's Deployment Utility to create deployment images and installers
Starting The Deployment Utility
The Mode Tab The Mode Tab is where you can change versioning for the deployment image ( it will auto increment ) For new deployments most of the options are grayed out If you build a deployment and then save it you will get additional options if you want to use patches Patches reduces the size of new deployment images by only including changed files in the deployment image Good idea in concept. In practice I never touch anything on this tab.
System Sources Tab
The System Sources Tab Used to select where the build utility gets the source files from and where to put the deployment image Most common selections are Check the “From Teststand Workspace File option” Browse to your Teststand workspace (File->New in Teststand if you don’t have one) Change the Location of the Deployment Images to a build directory Warning:: Whatever directory you put for the location of the deployment image should be empty I don’t recommend using the use directory option
Concerning Teststand Workspace Files Extremely crude compared to LabVIEW project manager No Auto-updating folders Deployment utility won’t pickup unsaved changes
Distributed Files Tab
Distributed Files Tab Post Analysis
Distributed Files Tab Always double check where your source files are coming from are where you think they are coming from Note the “Include without Processing Item or Dependencies checkbox” If all you use the workspace and project file for is the deployment you can safely uncheck them. Some older versions of the deployment utility (2009) would randomly corrupt the deployment script if you unchecked some files. This was fixed in newer versions. If you see this error then start over and don’t uncheck anything
Installer Options Tab
If you are creating an installer then this tab allows you to configure it Pretty straightforward, only real tricky part is knowing which additional NI installers you need to include VISA? NI-DAQ? Etc
Build Status Tab
Most frustrating Tab NI has ever created Outputs cryptic nonsensical error messages Most of the time more useless than not
Building the Deployment and Installer Press Build If everything is working correctly than it will spit out some status text and eventually a build complete message. A new deployment image will be located in the deployment directory specified and a new installer will be in the installer directory specified
Common problems and pitfalls with the deployment utility If anything goes wrong with the build then the error message probably has nothing to do with what is actually going wrong Even if the deployment utility builds successfully you have no guarantee the deployment image will work. Test everything Running vis in a deployment environment has less overhead than in a development environment, this can cause subtle timing differences that can change the test Deployment images that just use raw vis are dangerous to open in a development environment
Tools and Techniques to fix deployments that just aren’t working Load all your vis into a LabVIEW project and check for dependency issues Create a LabVIEW auto opener vi
LabVIEW Auto opener
LabVIEW Auto Opener Explanation The LabVIEW Auto Open works by opening up all of the vis in a directory and trying to load and then save them. This will recover any vi with bad dependency links by auto finding them or letting you choose where to find them if needed It will also find any broken vis and leave them open for further review
Best Practices to minimize problems with the deployment utility Use LabVIEW Packed Project Libraries Necessary Vis from vi.lib will get built into the Packed Project Library LPP’s can be run under the LabVIEW runtime without modification Remember to use the “do not check dependencies option”
Best Practices to minimize problems with the deployment utility Use good relative paths Single Main Sequence in Root Folder SupportFiles Directory for packed project libraries, DLLs, limit files, and whatever else needs to be deployed Source Directory for sequence specific vis Source directory should have a LabVIEW project that builds a packed project library in the SupportFiles Directory. Debug vis in source, change the sequence to use the packed project library when the code is stable
Best Practices to minimize problems with the deployment utility Avoid Library Conflicts! When you build your PPLs if you reference any DLLS apply a prefix to them so they don’t fight
Best Practices to minimize problems with the deployment utility Once all vis are built into packed project libraries and all paths are relative you technically don’t need to build a deployment image. Very difficult to get to this point! Still useful to do for versioning, installers, process flow, etc
Best Practices to minimize problems with the deployment utility The less you have to rely on the Deployment Utility the more success you will have with it.
Questions?