Studio:Interfacing Sample
Introduction
The following content relates to the sample files and workspaces installed in %STRIDE_DIR%\Samples\Scripting\AutoScript. This sample consists of a Visual Studio workspace for building an off-target simulator, sample source code, and a STRIDE workspace for sample code execution.
Getting Started
To begin, open the Visual Studio Solution file in the sample directory. This solution (and corresponding project) were created for Visual Studio 2005. If you have a later version of Visual Studio installed, you should be able to open this solution and it will be automatically upgraded if necessary. If you do not currently have any version of Visual Studio, we recommend that you install the current free version of Visual Studio Express.
Once you have successfully opened the solution, rebuild it. The build process has custom STRIDE build rules integrated and will produce a STRIDE database, intercept module source files, and an off-target simulator application that incorporates the sample source code.
Once the build is complete, perform the following steps to run the sample scripts in the workspace:
- launch the off-target simulator, Ascript_Samples.exe. This will run in a standard console window.
- open a command prompt window and change to this sample's directory.
- at the command prompt, run the command WorkspaceRun.pl -x setup -x teardown. This will execute all of the sample test scripts in the workspace and displays the results. You may open a browser and display the report written to the Ascript_Samples.html file in the sample's directory .
- quit the Ascript_Samples.exe application by typing 'q' in its console window.
Sample Tests
Now that you have built the off-target simulator and executed the scripting samples, you can take time to peruse the sample scripts and the corresponding results that each produces. This section provides a brief description for each script.
User Owner
This folder contains scripts that implement both the user and owner sides of a function call. This sample is completely host based - no target simulator is required. Only the user script is executed by the Studio test runner; the owner script is started by the user script, running it with a non-blocking call (using the studio object, described in the Studio Online Help).
The user.pl script first runs the owner script, as described. Then it loops until it determines that the test function has been owner registered. Once this has occurred it calls the function, blocking until the call is returned.
The owner.pl script registers as an owner of the test function and loops until the function call event is received. From there it sets the function OutPointer and return values, returns the call, and exits the loop and script.
Register Override
This folder contains scripts that again implement both the user and owner sides of a function call. The difference here is that this time the scripted owner is registered as an override owner - which will receive calls from the user instead of the original function owner. This sample is not completely host based - the target simulator is required to provide the original owner of the function. Only the user script is executed by the Studio test runner; the owner script is started by the user script, running it with a non-blocking call.
The regOverrideUser.pl script first calls the original owner of the function, which is the function implemented in the target simulator application, which should be running and connected at this time (the setup folder runs the console application, and the OnRunConnect property should be set on the Register Override folder to connect before executing the scripts). Once the function call is returned, the user script starts the owner script. After that the user script loops until it detects that the function has been registered override (for synching purposes with the owner script) and then it calls the function again.
The regOverrideOwner.pl script is started by the regOverrideUser.pl script, as described above. It immediately registers itself as an override owner for the test function and loops until the function call event is received. From there it sets the function OutPointer and return values, returns the call, and exits the loop and script.
Collections
The MultiFnUser.pl script
The MultiFnOwner.pl script