Off-Target Environment: Difference between revisions

From STRIDE Wiki
Jump to navigation Jump to search
(Undo revision 10347 by Ivailop (Talk))
(Redirected page to STRIDE Off-Target Environment)
 
(48 intermediate revisions by 4 users not shown)
Line 1: Line 1:
== Overview ==
#REDIRECT [[STRIDE Off-Target Environment]]
Two of the provided by STRIDE Platform SDKs (Software Development Kit), [[Linux_SDK|Linux]] and [[Windows_SDK|Windows]], are designed to be also used as an off-target evaluation or development sandbox. This allows you to use STRIDE in a small, controlled environment without needing to make changes to your target build. In addition, the SDK Makefile can serve as an example of the steps needed to add STRIDE instrumentation to your target build.
 
Each SDK package has almost identical functionality, but targets a specific operating system. The SDK contains the following items:
 
* STRIDE runtime source
* PAL source for interface with the Target OS
* Makefile to build a core STRIDE library, test and sample applications
* Compiler setting file for target processor
 
== Evaluation Steps ==
To simplify the evalution, we recommend using a single Windows or Linux computer for both the target and host systems. Host and target code will run in separate processes and communicate via TCP/IP, thus simulating an embedded target with host computer configuration. All code and techniques used in the sandbox evaluation are directly transferrable to a production environment.
 
The recommended evaluation steps are as follows:
 
# Build the STRIDE runtime library
# Build and test the target app with S2 diagnostic tests
# Build and test the target app with the TestIntro sample
# Explore other sample tests
 
==Building the STRIDE Runtime Library==
 
===Linux===
The Makefile assumes a gnu toolchain. (Other toolchains can be used; see the comments in the Makefile.)
 
# Build the library
<source lang="bash">
cd ~/stride/SDK/Linux/src
make library
</source>
# The file <tt>~/stride/SDK/Linux/out/lib/libstride.a</tt> will be produced
 
===Windows===
The Makefile <ref>The Makefile requires [http://www.gnu.org/software/make/ GNU make] to run, a Windows version of it is supplied in the <tt>SDK\Windows\bin</tt> directory</ref> assumes a Visual Studio toolchain. (Other toolchains can be used; see the comments in the Makefile.)
 
# If using Microsoft Visual Studio, open a Visual Studio command prompt to ensure that the compiler and linker are on your PATH.<ref>You can get a VS command prompt via the Start menu. Choose: Start -> All Programs -> Microsoft Visual Studio 200X -> Visual Studio Tools -> Visual Studio 200X Command Prompt</ref>
# Build the library using the supplied gnu make. (You will get Makefile errors if you use the default make.)
<source lang="dos">
cd stride\SDK\Windows\src
..\bin\make library
</source>
# The file <tt>stride\SDK\Windows\out\lib\stride.lib</tt> will be produced
 
== Building the TestApp ==
This step builds the first version of an instrumented target application. This application links with the STRIDE runtime library and includes the S2 diagnostic tests.
 
This step requires an installation of the STRIDE build tools. If not installed, please see [[Package_Installation#Build_Tools|Package Installation]] for more information.
 
===Linux===
# Build the test app
<source lang="bash">
cd ~/stride/SDK/Linux/src
make testapp
</source>
# The file <tt>~/stride/SDK/Linux/out/bin/TestApp</tt> will be produced
# Note also that the STRIDE database file <tt>~/stride/SDK/Linux/out/TestApp.sidb</tt> is also produced
 
===Windows===
 
# If using Microsoft Visual Studio, open a Visual Studio command prompt to ensure that the compiler and linker are on your PATH.
# Build the test app using the supplied gnu make. (You will get Makefile errors if you use the default make.)
<source lang="dos">
cd stride\SDK\Windows\src
..\bin\make testapp
</source>
# The file <tt>stride\SDK\Windows\out\bin\TestApp.exe</tt> will be produced
# Note that the STRIDE database file <tt>stride\SDK\Windows\out\TestApp.sidb</tt> is also produced
 
== Running the S2 Diagnostic Tests ==
In this step, we will use the stride executable to run the S2 [[STRIDE_Diagnostic_Tests|diagnostic tests]].
 
This step requires an installation of the STRIDE host tools. If not installed, please see [[Package_Installation#Host_Tools|Package Installation]] for more information.
<ol>
<li>Invoke the TestApp. In order to see TestApp's output, we recommend that you manually open a new console (or Windows equivalent):
<source lang="bash">
~/stride/SDK/Linux/out/bin/TestApp
</source>
<li> Note TestApp's output upon startup.
<pre>
starting up...
"_srThread" thread started.
"stride" thread started.
Listening on TCP port 8000
</pre>
</li>
<li>From a console window, invoke <tt>[[STRIDE_Runner|stride]]</tt> as follows, to verify connectivity with the target app (or Windows equivalent):
<br/>''Note: if this is the first time stride has been run on this computer, you will be prompted for a license activation key. If you access the Internet via a proxy see the information [[STRIDE_Runner#Using_a_Proxy|here]]''.
<source lang="bash">
stride --diagnostics --database=~/stride/SDK/Linux/out/TestApp.sidb --device=TCP:localhost:8000
</source>
 
As the tests run you will see output in both the TestApp (target) and stride (host) windows.
 
The host window output is shown here:
<pre>
Loading database...
Connecting to device...
  runtime version: 4.1.01
Diagnosing target application...
  link
  payload fragmentation
  runtime configuration
  stub-proxy deadlock
  target characteristics
  ---------------------------------------------------------------------
  Summary: 52 passed, 0 failed, 0 in progress, 12 not in use.
 
Disconnecting from device...
Saving result file...
</pre>
</li>
<li>Note the Summary results shown in the host output; all in use tests should pass.
</li>
<li>To exit TestApp, give the target window focus and enter ctrl-c (or 'q' under Windows).
</ol>
 
==== Viewing Detailed Test Results ====
If you now list the files in the directory from which you ran stride, you will see the files TestApp.xml and--if you were connected to the Internet when you ran the tests--TestApp.xsl.
 
By opening TestApp.xml in a web browser, the xsl is automatically applied to create html in the browser.
 
Details regarding individual diagnostic tests can be found at [[STRIDE_Diagnostic_Tests|this link]].
 
== Building the TargetApp to Include Test Intro Sample ==
In this step, will will add a set of sample tests that provide an overview of STRIDE testing techniques. The [[Test Intro Sample]] tests are described in the linked article.
 
This step requires an installation of the STRIDE Samples package. If not installed, please see [[Package_Installation#Samples|Package Installation]] for more information.
 
The SDK Makefile is set up so that all .c .cpp and .h files found in the directory <tt>SDK/Linux/sample_src</tt> (or, alternatively <tt>SDK\Windows\sample_src</tt>) are included in the compile and link of the '''testapp''' target.
 
Further--as a pre-compilation step--any .h files found in <tt>sample_src</tt> are submitted to the [[s2scompile|S2 compiler]] and subsequent [[Build Tools]]. This will result in
* the detection of [[SCL Pragmas#Test_Units| SCL Pragmas]] which declare Test Units in these .h files
* the inclusion of metadata into the sidb file to describe these Test Units
* the generation of test harnessing code to run the indicated Test Units and collect results
 
To begin, be sure that TestApp is not running, then copy the .c and .h files found in <tt>Samples/TestIntro</tt> to <tt>SDK/Linux/sample_src</tt> (or Windows equivalent). Then [[#Building_the_TestApp|build the TestApp]] as described above.
 
== Listing Test Units in the Database File ==
In this step, we will use stride to list the Test Units in the <tt>TestApp.sidb</tt> database.
 
Run stride as follows (or Windows equivalent):
<source lang="bash">
stride --list --database=~/stride/SDK/Linux/out/TestApp.sidb
</source>
 
You should see output like this:
 
<pre>
Loading database...
  s2_testintro_cclass
  s2_testintro_flist
  s2_testintro_testdoubles
  s2_testintro_testpoints
</pre>
 
Note that the S2 diagnostic tests (which are present in this TestApp) are not listed.
 
== Running Test Intro Samples ==
 
=== Running All Tests ===
Here we will run all tests in the <tt>TestApp.sidb</tt> database.<ref>Note that the S2 diagnostic tests are treated separately, and are not run unless the <tt>--diagnostics</tt> option is specified to <tt>stride</tt>.</ref>
 
# Invoke TestApp in a target console as in earlier steps.
# Invoke <tt>stride</tt> as shown below and verify Summary results.
 
<source lang="bash">
stride --database=~/stride/SDK/Linux/out/TestApp.sidb --device=TCP:localhost:8000
</source>
<pre>
Loading database...
Connecting to device...
  runtime version: 4.1.01
Executing test units...
  s2_testintro_cclass
    > 1 passed, 1 failed, 0 in progress, 0 not in use.
  s2_testintro_flist
    > 2 passed, 1 failed, 0 in progress, 0 not in use.
  s2_testintro_testdoubles
    > 3 passed, 0 failed, 0 in progress, 0 not in use.
  s2_testintro_testpoints
    > 3 passed, 0 failed, 0 in progress, 0 not in use.
  ---------------------------------------------------------------------
  Summary: 9 passed, 2 failed, 0 in progress, 0 not in use.
 
Disconnecting from device...
Saving result file...
</pre>
 
=== Running a Subset of Tests ===
Here we will run only the Test Units named <tt>s2_testintro_cclass</tt> and <tt>s2_testintro_flist</tt> against TestApp.
 
<source lang="bash">
stride -r "s2_testintro_cclass, s2_testintro_flist" --database=~/stride/SDK/Linux/out/TestApp.sidb --device=TCP:localhost:8000
</source>
<pre>
Loading database...
Connecting to device...
  runtime version: 4.1.01
Executing test units...
  s2_testintro_cclass
    > 1 passed, 1 failed, 0 in progress, 0 not in use.
  s2_testintro_flist
    > 2 passed, 1 failed, 0 in progress, 0 not in use.
  ---------------------------------------------------------------------
  Summary: 3 passed, 2 failed, 0 in progress, 0 not in use.
 
Disconnecting from device...
Saving result file...
</pre>
 
== Additional Samples ==
Additional samples are included in the STRIDE Samples package. (See [[Package_Installation#Samples|Package Installation]] for installation information.)
 
These samples explore each of the techniques outlined in the Test Intro sample in greater depth. See [[Test Unit Samples]] for details.
 
To include any of the samples into your TestApp, just copy the sources into the <tt>sample_src</tt> and rebuild. To execute the tests, use the stride test runner as before.
 
== Related Links ==
* [[:Category:SDKs|Platform SDKs]]
* [[Build Tools|STRIDE Build Tools]]
* [[Test Units|STRIDE Test Units]]
* [[SCL Pragmas|SCL Pragmas]]
* [[Test Unit Samples|Test Unit Samples]]
* [[Stride Runner|STRIDE Test Runner]]
 
== Notes ==
<references/>
[[Category:Deployment]]
[[Category:SDKs]]

Latest revision as of 18:15, 9 June 2011