STRIDE 2.1.00xx: Difference between revisions
No edit summary |
(→Fixes) |
||
Line 219: | Line 219: | ||
* A macro that determines the existence of vsnprintf() has been updated in srtest.c and srtest.cpp in order to make it able to compile with GCC and other non-Microsoft compilers.<br>'''Note:''' If customers are using test functions and C++ test classes, they should be using compilers that support vsnprintf (variable argument lists), which is a standard in C99 and supported in C90. | * A macro that determines the existence of vsnprintf() has been updated in srtest.c and srtest.cpp in order to make it able to compile with GCC and other non-Microsoft compilers.<br>'''Note:''' If customers are using test functions and C++ test classes, they should be using compilers that support vsnprintf (variable argument lists), which is a standard in C99 and supported in C90. | ||
[[Category | [[Category: Release Notes]] |
Revision as of 21:14, 2 June 2010
Release Notes
STRIDE 2.1.0000 (D Street, Tower 1)
Runtime
All STRIDE Host Releases in the 2.1.0001 series are compatible with the Runtime version 2.05.
The following Runtime files have been modified in the 2.0.x Release Series:
sr.h srapi.c srerr.c srcgutil.c srconn.c sribtr.c sribtr.h srmsgmar.c srmsgmar.h srmsgptr.c srmsgrt.c srutil.h
The following Runtime files have been added in the 2.1.x Release Series:
srtest.h - public APIs used for writing target test code srtest.c - implementation of C functions srtest.cpp - implementation of C++ classes srtestutil.h - APIs for utility/internal routines srtestutil.c - implementation of internal routines
Enhancements
- STRIDE now supports harnessing target test code through the C++ Test Class and C Test Functions. Extensive information on each is available in this Wiki.
- Announcing the new SCL Wizard!
The ease of working with SCL has been greatly improved with the introduction of the SCL Wizard. The SCL Wizard provides you with the tools to streamline and simplify the creation of SCL pragmas by allowing you to quickly capture interfaces and qualify payloads and types. Detailed information on getting started and working with the SCL Wizard is available in the Studio->SCL Wizard section of the STRIDE Online Help. - Announcing the new Script Wizard!
The ability to leverage STRIDE knowledge across an organization has been substantially enhanced by the introduction of the Script Wizard. The Script Wizard allows you to create a common script execution and reporting framework using template scripts. Template scripts guarantee correct operation and uniform results. Test logic is mainly implemented on the target, so the tasks performed in template scripts generally consist of boilerplate functionality for common tasks, where identical actions are performed on multiple interfaces. For example, template scripts could be used to execute functions on the target, or to create a script to generate an Intercept Module.
- Samples are installed with STRIDE, in the installation directory’s $STRIDE_DIR%\templates\ScriptWizard directory.
Detailed information on working with the Script Wizard is available in the Studio->Script Wizard section of the STRIDE Online Help.
- Samples are installed with STRIDE, in the installation directory’s $STRIDE_DIR%\templates\ScriptWizard directory.
- Simplified Intercept Module header file organization.
Several enhancements have been made to the Intercept Module to increase usability, reduce dependencies on customer header files, and make it easier to use dynamic delegates. Some minor changes may be required to customer source and/or build scripts to enable delegate name mangling.
- The IM.h file now contains only delegate mangling macros. It no longer includes any customer header files, eliminating the need to provide include paths to unneeded dependencies. This change means that it must now be included in any source file after all other header files.
- The Intercept Module entry point function prototypes have been moved to a new file called IMEntry.h. This file need only be included by the file(s) which call functions in the IM.c file (e.g. IMStubReadThread()).
- A new generic delegate mangling macro imDELEGATE() has been created for explicitly mangled functions. This replaces the one-per-function macros that were formally generated; e.g., imFOO(foo) was used to mangle function foo() – now it is simply imDELEGATE(foo). The old macros are still generated to support backwards compatibility, but have been deprecated and may be removed.
- Delegate functions have a Group ID assigned to them in the IM Wizard, and that Group ID must now always use a #define to enable mangling (either explicit or implicit). Previously, the Group ID was only required to enable implicit mangling.
- Support for so-called no-data tracing delegates has been removed. The Studio.Workspace.Intercept.Item().Delegate.Data property in the object model has been deprecated.
- The IM.h file now contains only delegate mangling macros. It no longer includes any customer header files, eliminating the need to provide include paths to unneeded dependencies. This change means that it must now be included in any source file after all other header files.
- There are two new Studio Automation properties at the workspace level:
- studio.Workspace.PreCompileScript
This is a read/write property that specifies a pre-compile script to execute before compilation. The full path to the pre-compile script file must be specified. - studio.Workspace.PostCompileScript
This is a read/write property that specifies a post-compile script to execute after compilation. The full path to the post-compile script file must be specified.
- studio.Workspace.PreCompileScript
The pre- and post-compile scripts only run when using Compile All. Compiling one or more header files by right-clicking and selecting Compile from the context menu will not run the pre- and post-compile scripts.
- Full support for the const keyword in SCL has been implemented.
The following restrictions apply:
- A data object that is const-qualified may only reside in an IN, INOUT, RETURN or INRETURN block.
- A const-qualified data object that resides in an OUT block returns an error.
- Any pointer that is const-qualified and resides in an INOUT block cannot be RETURN- or INRETURN-qualified.
- For example, the following SCL is now prohibited:
- A data object that is const-qualified may only reside in an IN, INOUT, RETURN or INRETURN block.
void f( const char * p);
#pragma scl_function(f);
#pragma scl_ptr(f.p, OUT, PRIVATE);
The reason that this fragment is prohibited is that it is contradictory in nature. The declaration of “f” says that p is a pointer to a constant char. This means the owner (callee) will not be able to assign to values to the char (aka *p). The scl_ptr pragma says that the constant char resides in an OUT block. This means that user (caller) cannot pass a value from user to owner. But rather the owner is supposed to assign the value to *p to the owner; thus the contradiction is apparent.
- [1391] Individual files can now be compiled. To compile all header files in the workspace, use studio.Workspace.Compile(). To compile a single file, use studio.Workspace.Files.Item().Compile().
- Individual files can now be preprocessed. To preprocess all header files in the workspace, use studio.Workspace.Preprocess(). To compile a single file, use studio.Workspace.Files.Item().Preprocess().
- There is a new option, “Compile as Cpp”, available in Studio, under Tools -> Settings -> Compiler. This option allows the compilation of SCL header files that include or mix in code that contains C++ syntax but does not contain SCL pragmas. When this option is selected, C++ files are accepted along with allowed C and SCL. When this option is on and a database is created, the generated Intercept Module will consist of a .h/.cpp file pair instead of a .h/.c file pair.
- The ascript object model now allows unstructured data transfer via three new properties: HexString, Base64String, and SafeArray. All of these properties will be exposed off the ascript.Functions.Item(““).Owner/User and Input/Output objects, when the data item is the payload of a function.
- The COM Component Manager and S2 Object Browser have been removed from STRIDE, as they are no longer core features.
Fixes
This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].
- The const keyword no longer causes a warning when used in a typedef such as the following:
typedef const struct { …
}
- [1054] The _inline_ keyword is now supported by the compiler.
- [1364] Compiling a single file no longer changes function SUIDs.
- [1397], [1399] The Intercept Module IM.c file now includes only header files required by intercepted interfaces.
- [1474] Comments within an SCL pragma statement are ignored by the compiler.
- [1507] Unicode strings are no longer truncated.
- [1512] 64-bit constants can now be retrieved as text strings (but not as integers).
- panel.Transports.Item().Load() or panel.Transports.Item().Unload() now return a value of True or False, so an exception is not thrown in a script when the Transport is already loaded.
- A script no longer hangs when using panel.Target.Database.Load(“ “) to try to load a nonexistent database.
- In order to determine whether the Panel is open, you can call
panel.Open()
multiple times. This call will open the Panel if it is not already open, and return True. The call will also return True if Panel is already open. - panel.Quit() may be called multiple times without an exception being thrown.
- Multiple scripts may now use the Panel object (i.e., call panel.Open()) at the same time.
- The timeout value in the Panel is now set by default to 0, which specifies an infinite timeout.
- Panel crashes will no longer block attempts to restart communicate with a new Panel instance.
- studio.Workspace.Folders.Item(“Header Files”) and studio.Workspace.Files.Item(“xyz.xxx”).IsHeader have been deprecated and replaced with studio.Workspace.Folders.Item(“Source Files”) and studio.Workspace.Files.Item(“xyz.xxx”).IsSource, respectively. The deprecated objects are still supported as pseudonyms for the new objects for the purposes of backwards compatibility.
- You can configure the STRIDE Runtime to use either an index-based or search-based SUID table by setting the constant srCFG_SUID_TABLE_TYPE. By default, the Runtime uses a search-based SUID table.
- The System/Access Class bits in the SMID have been rearranged:
- The bits in srAC_SYS are now 10 (0x80000000) instead of 11 (0xC0000000). Now 11 is reserved/not in use.
- In addition, the legacy define srAC_APP and macro srSMID_AC_APP have been removed.
- A default active union member is now permitted. You can reset the internal discriminant value to the default (the first valid element/value). To do this, select “Reset to Default” from the context menu.
STRIDE 2.1.0000a patch
Enhancements
- STRIDE Host Apps now support Visual Studio C++ 2005 (8.0). A training library which supports a single IM thread, s2shostapp.lib, is available. This library is not dependent on MFC and only exports C APIs, so it does not need to be rebuilt for each version of Visual Studio C++.
Fixes
This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].
- A conflict with SCL merges has been fixed.
STRIDE 2.1.0000b patch
Enhancements
- A new component, STRIDE.vsbuild, is now available. This optional Visual Studio build component can help automate the building of Visual Studio projects on the host. This component might be useful, for instance, when host-based simulators (such as STRIDE HostApps) are used in some phase of your testing. Detailed information is available here.
- Installing the C++ Test Class feature is now optional. The STRIDE installer will not allow this option to be selected if Perl is not installed. If Perl is already installed, the C++ Test Class feature is selected by default.
- The installation of Perl libraries and scripts (e.g., test libraries and utilities) is also optional.
Fixes
This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].
- [1307] The thread representing the STID is now terminated by a timeout or other exception when the associated script is terminated.
- Load Transport now works if another script is executed in blocking mode before Load Transport is called.
- Special registration is now conducted for the arrival/departure notification of USB devices in the Panel. "Device Removed" notifications in Windows are now detected and handled in the Panel; i.e., if a device is removed that is a port device and the current transport is using that device's port, the transport is immediately unloaded. Previously, the transport would not be unloaded and under certain conditions the Panel.exe would use 100% of the CPU.
STRIDE 2.1.0000c patch
Fixes
This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].
- [1540] "Pointer Setup" logic in the intercept module that was incorrect for some nested discriminanted unions has been corrected.
- A compile time improvement has been made that affects compilation of files with complex type hierarchies.
- Changes have been made to the processing of macros and their entries in the symbolic constants table. The macro values in effect at the end of the compilation unit are entered into the table.
STRIDE 2.1.0000d patch
Fixes
This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].
- [1553] A fix has been made to the intercept module generation that distinguishes between the three types signed char, unsigned char and char because some target compilers do not consider char and signed char to be compatible.
STRIDE 2.1.0000e patch
Fixes
This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].
- [1556] Exceptions encountered in Studio while tracing interfaces with complex unions have been eliminated.
STRIDE 2.1.0000g patch
Fixes
This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].
- This patch repairs a problem with single file compile introduced in the 2.1.0000f patch.
STRIDE 2.1.0000i patch
Fixes
This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].
- [1561] Extraneous const in proxy signature
- [1563] This patch repairs a problem with scl_string and 2d arrays (SCR 8528)
STRIDE 2.1.0001 (D Street, Tower 2)
Enhancements
- Test automation has has been made more powerful. It is possible to programatically identify, and recover from, test script errors and timeouts that, until now, halted a test prematurely. This new power comes primarily in the form of a an "OnError Script" and "OnTimeout Script" that can be associated with test objects (scripts) and test suites (folders) in the test hierarchy. Now, when an error or timeout occurs, custom logic can be written to deal with the issue and recover. The recovery logic can interact with the test automation runner by instructing the runner to skip the rest of the scripts in this suite and continue at an ancestor suite in the hierarchy. This "pruning" behavior is controlled through the new property "Execution State" exposed by the Workspace object.
- In more detail:
- On each test object (script) (e.g., studio.Workspace.Folders.Item("Script Files").Files.Item("script.js")), two new properties have been added:
- OnErrorScript
- OnTimeoutScript
- For each test suite (folder) (e.g., studio.Workspace.Folders.Item("Script Files")).Folders.Item("suite1")), three new properties have been added:
- OnErrorScript
- OnTimeoutScript
- ScriptTimeout
- The changes above are reflected in the STRIDE Studio UI property sheets.
- A new property, studio.Workspace.ExecutionState, has been added. Scripts set the excution state in order to affect the next script run by the automation framework.
- On each test object (script) (e.g., studio.Workspace.Folders.Item("Script Files").Files.Item("script.js")), two new properties have been added:
Fixes
This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].
- [1557] A check has been implemented to verify that a write-protected SCL directory has had the settings changed to write to a read/write directory
- [1558] A check has been implemented for write-protected SCL files to detect whether an SCL file is write-protected; the user is then informed and the capture/qualify operation is cancelled.
- [1560] Predefinitions have been removed from stdarg.h.
- Explicit running of a script is now allowed even if Execute = false
- "Excluded from Run" has been added to the context menu for both folders and files in STRIDE Studio. This menu item is used to exclude file(s) and/or folder(s) from execution.
- In STRIDE Studio, the property sheets for both files and folders contain an "Included" checkbox. This is checked by default and ensures all files and folders are executed. This box can be unchecked to exclude files and/or folders from execution.
- The following changes have been implemented:
- Automation object model:
- studio.Workspace.Description has been removed. studio.Workspace.Folders.Item("Script Files").Description is used instead.
- studio.Workspace.Folders.Item().ResultsLinked has been removed.
- studio.Workspace.ReportFile has been removed. studio.Workspace.Folders.Item("Script Files").ReportFile is used instead.
- STRIDE Studio:
- The changes described above are reflected in the property sheets.
- Automation object model:
STRIDE 2.1.0001a patch
Fixes
This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].
- [1562] Compilation times for files with a large number of frequently used macro definitions (#defines) and enumerations have been greatly reduced.
STRIDE 2.1.0001b patch
Fixes
This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].
- [1567] Intercept module "pointer setup" for sized pointer of unions occurs only for the first union in the sequence.
STRIDE 2.1.0001c patch
Fixes
This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].
- [1570] ascript.Call() immediately following a call timeout returns erroneous results under some circumstances.
- [1568] const keyword causes autosense to fail.
STRIDE 2.1.0002 (D Street, Tower 3)
Runtime
- STRIDE Host Release 2.1.0002 is compatible with the Runtime version 2.06.
Note: If you do not use Runtime Test Services and Test Classes, you do not need to upgrade to Runtime version 2.06. - In order to eliminate redundancy and promote an object-oriented design, "Member Methods" have been removed from srTest; only "Member Objects" exist now in srTest. In addition, accessing the functionality of Member Objects in this way is similar to accessing scripting objects through the STRIDE Reporter object model. For a detailed explanation, refer to this article on the STRIDE Support Wiki.
- The following Runtime files have been modified:
srconn.c
srtest.h srtest.cpp
Fixes
This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].
- The following statement in Runtime files srtest.c and srtest.cpp has been changed:
va_list args = 0;
is now
va_list args;
with no initializer. This makes it portable and able to compile under Linux. - A macro that determines the existence of vsnprintf() has been updated in srtest.c and srtest.cpp in order to make it able to compile with GCC and other non-Microsoft compilers.
Note: If customers are using test functions and C++ test classes, they should be using compilers that support vsnprintf (variable argument lists), which is a standard in C99 and supported in C90.