These builds for both the Emulation Service and Studio feature both enhancements and bug fixes.
Flynet Viewer Base Product and Components (Version: 4.1.29)
FVTerm – Flynet Web Terminal Emulator
- Support has been further rounded-out to integrate the Flynet DHTML Terminal Emulation with Flynet Web Services. This allows a set of web services to work on a problem, and if the problem cannot be solved through programmed automation, the active session can be displayed at an operator’s desktop in a browser window. Support for queuing session keys and managing the requests by the operator in a browser are not provided by the Flynet Viewer generated frameworks, but please contact Flynet or Inventu for further assistance in implementing this powerful solution.
- Logging now supported for emulation sessions, so that logging can be integrated with web services to create a contiguous log showing all interaction (both automated and human). Logging is activated by adding appSetting “loggingFolder” to the FVTerm web.config file. If a folder is named as the value in the loggingFolder key of an add element in appSettings, logging is activated, but only if the session is initialized with an existing web service sessionKey. loggingDefinition can also be specified in appSettings, which will provide the name of a Flynet definition xml file providing screen recognition and field mapping information.
- In addition to screen logging, an external plug-in .NET assembly can be produced that can extend logging to include the values of specific, mapped fields. This facility is documented at http://www.flynetsoftware.com/FVExtLogger/index.html
- Bug fixed: Numeric 3270 fields that were negative were treated as a 5250 Signed Numeric, which replaces the last digit in a number with a specific alpha letter when the number is negative.
Flynet Microsoft Management Console (MMC) Snap-In
- New Server Property sheet tab that includes Client settings such as range of sessions to view and so on.
- Changes made to options for a monitored server are now persisted between sessions
Recorder 2.0
- The FVRecorder.exe added a new command-line switch as well as command-line help (FVRecorder -?). The new switch enables the specification of the active recordings folder. The switch is -recfolder which should be followed by the recording folder desired. Without this switch, the defined Flynet Viewer default recordings folder will be read from the registry and used.
- Flynet Viewer Studio’s Tools / Recorder 2.0 now uses the above described switch when loading the recorder. For Studio projects that utilize the Project folder approach, this is the recommended way to load the recorder (where the project’s recordings are stored in a “Recordings” sub-folder instead of in the default Flynet recordings folder).
- Recordings now display each Screen’s Timestamp next to the name, to help in correlating a screen in a recording with a Test case and when selecting screens while defining a Task in the New Task Wizard
Simulated Host (SimHost) – New Script Version 2.0
- Now sets a TN3270 Logical Unit name on return of a new connect, which can be used to detect that the active connection is with the Simulated Host
- Supports a shared memory interface that enables another process to provide a screen-context list. The Screen context list can then be used to differentiate between different outcomes when a transition from one screen to another has many outcomes in recordings that are different. In cases where the data entry is inadeqate to provide uniqueness, the context list provides the desired outcome. This is particularly valuable when testing against a host that provides data screens from a queue; now the Simhost (and the unit test cases) can provide a simulation of more than one result whereas before, only the first read from a queue would provide a single result (all the time). The memory is accessed using the FVTestCase.dll assembly by the Unit Test GUI and, optionally, individual Task methods in a web service for use during Integration Testing.
- Miscellaneous fixes were made to the new logic introduced in installers 42H.
Pooled Sessions Management Class DLL (ViewerLibPools.dll)
- Pool management was vulnerability to multithreading issues fixed; pool statistics and allocation were not accurately incremented and decremented during rapid pool interactions.
Installer FVSetup.exe
- Further fixes to detection of the MMC 3.0 console on Vista and Windows Server 2008
- Repair installations no longer require FVSetup to be run twice on certain platforms (was dependent on active version of Windows Installer, but very common)
Flynet Emulation Service (FlyServer.exe)
- Session Initialization no longer copies original LU name to StartupLU, enabling use of LU name assigned by host in TN3270E and Simulated Host environments
- Console Port now supports a specification of a source recordings folder in the listrecs get request, as well as the viewrec request.
- On start of a session, any prior session’s screen data is cleared before opening the socket to the host…if the connection failed, erroneous data was displaying in the new (inactive and in-error) session
Flynet .NET Integration Assembly (ViewerLib.dll – Version 4.2.15)
- New property: hostLUName provides the LU name assigned by the host. Used in testing to detect and utilize the Simulated Host session when testing with the Simulated Host
Flynet Viewer Studio (Build: 4.1.2.40209)
Installer (FVStudio2008.exe)
- The FV Studio installer now creates file associations for the .fvproj and .fvsln file types (projects and solutions). This associates these file types with FV Studio so that double-clicking on them will load in Studio. The Task GUI Unit Tester export file format (.fvtxz) and export control file (.fvtxc) are also created at install time. A Visual Studio Developer with a Flynet Viewer developer’s installation can double-click on the .fvtxz file to perform an import with extract operation. Following testing and any modifications of the solution, the Visual Studio developer can then double-click on the solution’s .fvtxc file to re-package the solution as a .fvtxz file for emailing back to the Flynet Viewer Studio developer.
- A number of DLL’s were not being replaced consistently during Repair installations, which could lead to invalid format exceptions on loading of FV Studio
Flynet Viewer Studio General Enhancements and Fixes
- Project Folders a .fvsln and .fvproj file can now be in a separate folder structure, with a subfolder named Recordings holding the project’s recordings. When a project is loaded in Studio, a check is made for the Recordings subfolder, and if found, all recordings operations will be listed and opened from this folder instead of the active one defined in the Flynet base emulation service. When exporting the project using the Export / Application Archive, any Recordings subfolder will be used to save Recordings, and the archive zip file can be unzipped on another machine in any location.
- Auto Solution to Project Resolution if a Solution file is opened in Flynet Studio and it contains a project reference that is invalid, the Solution’s home folder will be checked for the defined project (fvproj), and if found, a MessageBox will ask the user if the Solution’s reference should be fixed to reflect the correct project file location. This makes it easy for an application archive to be used on another user’s machine without worrying about exact replacation of the original folder locations.
- Linker tab view now includes the screen’s timestamp and ID, which match the id’s used in test cases and any generated Simulated Host script. This can help in choosing a test case in a Task’s GUI Unit Tester
- Heatmap viewer now includes the ability to turn-off the heatmap colors and view the screen as it appears in a terminal emulator.
- Heatmap viewer now provides browsing clickable arrows that enable the user to visit every instance of a particular screen across all recordings. This can help in reviewing the various formats a screen can have, as well as resolving the nature of changes that may have been identified in the initial heatmap view. The right and left arrow keys are also supported when browsing the heatmap view.
- CustomCode property editor added. This supports a number of new code generation properties described below in the web service generator section. Initially, this is a simple text editor, but over time it may be enhanced to support color-coding and Intellisense…but for now, we leave that to Visual Studio and use the Import/Export facilities for Task Unit Test solutions to auto-populate these properties (see below).
- Screen Clipboard Copy Support a full screen node can be copied to the clipboard (ScreenDef: right-click / Edit / Copy XML to Clipboard). A screen can then be copied to a different project by right-clicking on the Project node and selecting: Paste Screen from Clipboard XML
- Screen sizing fixed: in the 42H installers, the Screen image displayed in the primary panel was frequently sized incorrectly, requiring the user to alter the size of the surrounding frame in order trigger a resized configuration that displayed all columns and rows.
Web Service Generator Projects
- A Generate / Web Service Test Cases wizard has been added to the TaskProject object. When selected, the related Recording files for the active project will be scanned to find all instances of a user navigating away from the home screen and back. Data entry field changes are then captured into a Test case file. A test case file browser is now incorporated into the Unit Test GUI application that can be generated for individual web service tasks. For each task, those test cases that are relevant (have screens visited and fields entered that match the parameters of the task) can be selected and the parameters of the GUI tester are auto-populated based on the test case. This facility is particularly useful when used in conjunction with the new Simulated Host script generator introduced in the 42H installers.
- New Web.config appSetting, <add key=”[TaskName]Context” value=”[RecordingName]:ContextList”> which is used in conjunction with the new Task property, SimHostContextSupport which, when set true generates support for integrating navigation context from test cases with the Simulated Host (when the Simulated Host is used in integration testing).
- c# Region-Based 2-way Generation: for selected regions, and in some cases entire modules, changes made to the generated solution can be stored in Code Properties in the Flynet project. If a code property is not empty, the contents are always used to generated the subject region or module. This enables propagation of unit test changes to other unit tests and the full web service generation.
- Import/Export capability is now available in Flynet Viewer Studio of the generated GUI Unit Test Visual Studio Solution folders. The Export of a solution produces a special zip file with a unique extension (.fvtxz) which includes all necessary files for an individual with Visual Studio and Flynet Studio to Import for the purposes of modifying the application. With the addition of the Visual Studio Add-In, modifications to selected regions on the solution are easily performed.The developer can then Export the solution back to the original Studio user, who imports it, specifying that the import is for “Capturing Changes”. The Import functionality will identify any supported changes and set the CustomCode properties accordingly (not all possible changes are supported and then need to be manually propagated to the full web service if not limited to the unit test environment). CustomCode property descriptions are found below.
- TaskScreens with Add New Data (Enter data) as a TaskIOType now can have customized data entry performed using the WriteFilter property. The WriteFilter custom property editor treeview (which displays the maps and fields available for writing) now allows the user to click on a field name in order to set a literal data entry value for the field. When a field has a literal value set in the filter, any built-in navigation based on recordings for that field will be overridden. In addition, if the field would normally be defined as a parameter for the web service, no parameter will be defined and the value set will simply be hard-coded in the generated Write handler.
- The New Task Wizard supports the new WriteFilter support for hard-coding literals for Add New Data tasks. It also saves screens selected into the TaskScreen Screen property, for improved navigation between task screens in the generated application.
- The HostLogon, HostLogoff, NavToHomeScreen and a few other navigation methods have been re-factored. These methods now exist as Static methods in a new class module, SharedNav.cs which is part of the Etc project. The re-factoring was to support having a common location for the logic contained in these methods between Pooled sessions, which connect using the FVPooledSession class, and standard sessions, which connect using the TaskSession class. In prior releases, these were both generated with the same logic, but were duplicated in different modules, making modifications and customization problematic. In addition to moving to a common location, there is a User Region in the SharedNav.cs module that can be customized on a persistent basis using one of the new CustomCode properties (the SharedNavCode property of the TaskProject object).
- Interfaces.cs was added to the generated Etc project, to define two interfaces used in the re-factoring of the HostLogon and other methods into the SharedNav.cs module.
- New Multirow FieldMap Property: ListClass which is one of the new CustomCode properties enabling two-way code generation. When the ListClass property for a multirow fieldmap is set, when the class module (Fieldmap name + “List.cs”) is generated, instead of using the contents of the definition to generate the class, the entire file’s contents will be copied from this property. This allows a complete and persistent customization of a Fieldmap’s class that will be generated for any Unit Test modules as well as full Web Service generations
- New Multirow FieldMap Property: ListUserRegion which is also a CustomCode property. There is a small user region inside each multirow list class module that is designed for small changes that are common. This property can provide the contents of this region, so that any customizations performed to a Unit Test GUI Visual Studio solution can be propagated to other Task unit tests as well as the full Web Service
- New TaskProject object property: SharedNavCode which can contain the user region of the SharedNav.cs class. All customized HostLogon, HostLogoff, NavToHomeScreen and a few other methods can be customized in a Unit Test solution and then persisted for other unit tests and the full web service generation using this property.
- New TaskProject object property: TSCustomMethods provides a place to persist customizations to the User Region inside the TaskSession.cs module, relating to logging on, Debug file (application log file) customized names and AS400-specific screen identification, for example.
- New TaskProject object property: UserClassCode provides a place to persist the Task User Class, which is the parent class to all individual Task classes. This is generally a small class, which sits in the inheritance hierarchy between the grand-pappa class, the TaskCG class (which should generally not be touched for purposes of customization) and the Task classes. It is a great place to put general navigation fixes and other global task-wide changes that improve upon the generated class.
- New Task object property: ParameterOverrides allows hardcoding of a parameter value at the ASMX.CS level (so that the parameter is not formally defined in the web method and instead is hard-coded in the code itself. Can also define a text expression that allows splitting what was one parameter into multiple parameters (along with string concatenation of literals). This provides the ability to publish more meaningful parameters in cases where they may have been a single, complex transaction string.
- New Task object Property: UserLogicClass is a CustomCode property that can provide the complete User class code for a Finite State Task Project’s Task. Use this property if you have customized your Task during a unit test (in the GUI Unit Test Visual Studio Solution) and would like the changes to be propogated to the full Web service on generation.
- New Task object Property: InfoDefinitionClass allows the customization of the returned complex type for your Task’s web service method. If the active Info class has been customized in a unit test solution, by copying the contents of the Info definition region to this property, the customized type can be propagated to the complete web service on generation.
- New Task object Property: SimHostContextSupport which is used to generate optional code into the ASMX.CS and TaskSession modules to support specific testing contexts when the Simulated Host is being used for Unit and Integration testing. The Simhost installed with this set of installers now supports communication through shared memory of specific screens to visit. The SimHostContextSupport property enables accessing this capabilty in the full web service (the GUI Unit Tester, when selecting a generated test case, supports this automatically). See the help for the SimHostContextSupport (F1 with cursor in the property) for more information on how to set the context for runtime testing.
- New Task object property, SimHostContextSupport which is a boolean, which when set true will generate support in the TaskSession.cs module and the Task’s asmx.cs module to read a value from the web.config ([TaskName]Context appSetting) that specifies a Recording name and context. This may be used in tasks that depend on non-deterministic navigation, such as a menu option that reads from a queue in the host application, where recordings may contain many unique results but without context, the Simulated Host can only display the first one found in any recording.
- New TaskScreen property: EntryErrorMessages provides a way to search for a one or more error messages following a screen transition. If any of the error messages are found in any field with a name starting with “Message” then an error is returned. The Wildcard asterisk (*) is also supported, which means that if any field with a name starting with message is non-blank, an error is returned and the Task will not continue.
- New TaskScreen property: Screen which is the same property found in the Screen Definition object in the Project Explorer treeview. The Screen property points to a specific screen in a specific recording. During code generation, the specific navigation found in the recording will override more generic navigation when transitioning between two TaskScreen’s in the Task. This improves the accuracy of generated navigation when a host has non-deterministic navigation (same actions can result in different screens, or different actions can result in the same screens).
- New Field Property: AlertWhenNotBlank will cause a web service result of error if the contents of the subject field are non-blank during the processing of the Result state of a data entry or selection screen
- Screen I/O Preview tester had some invalid parameter lists for Finite State tasks that were fixed
- Parameter overrides, defined at the TaskModule level, were incorporated into the Screen I/O preview window
- TaskScreen navigation was improved, using the new Screen property of the TaskScreen object, which is a pointer to a specific screen in a recording. By tying the Screen property to the TaskScreen object, specific navigation from one TaskScreen to the next can be achieved in a more context-sensitive manner. This is particularly useful when the same transition between two screens is performed using different keys depending on the context of the activity being performed.
New Test Case Generator
- Will read through all the provided recordings, and using start points and the active “home page” definition, will create a batch of XML files containing parameter values
- Each Task project has a new menu option to generate Test Cases for that project
- Test cases also include screen contexts, which may be provided to the Simulated Host at runtime to provide accurate screen results for each test case
- When Testing an individual Task, the GUI Task tester first page will “find” the qualifying test cases by filtering them based on the screens represented in the test case (the data entry screens need to match the data entry screens for the task)
GUI Task Tester
- Import/Export capabilities to facilitate sending a full GUI Unit test solution to a developer for enhancements/fixes, described in the Web Service section, above.
- Support for Task Chaining: when a Task has the property OnTaskCompletion or OnTaskError set to Preserve Session State, on completion of the test run in the generated GUI Task Tester, the simple (non-multiplerow) results along with the Flynet SessionKey will be stored in the Flynet TestCases folder in the file FVTestResult.xml. A task with these settings will also not perform a HostLogoff, and will leave the session active that was acquired at the beginning of the task.When another Task, presumably related to the first task described, has the property TaskInitationType set to InheritNavigation, the GUI Unit tester for the task will be generated without a Logon tab, and with a different approach to input parameters; it will open the TestCasesFVTestResult.xml file saved by a prior GUI Unit tester (a predecessor Task in a workflow scenario). The active SessionKey used to reconnect to an existing session will be read (and used to connect to the active session), along with any pertinent input parameters returned by the prior task.This facility enables testing of related Tasks that are designed to handle complex host application situations by breaking alternate handling scenarios into individual web service methods (Tasks) rather than trying to handle all possible outcomes in a single web service.
- Test Case integration–Test case browse button, as well as a “save as” for current input parameters, to enable saving a set of input parameters as a specific named test case. Test cases are generated using a right-click on the TaskProject.
- Integration with the Simulated Host if used as the testing host–if a test case is selected, ambiguous path selection in the Simulated host script will be resolved based on cues in the test case extracted from the same recordings that the simulated host script and the test case were generated from
- New Checkbox to clear the target folder prior to generation. This is recommended in instances where it appears that a prior generation failed at a point that caused the project and solution files to become faulty, causing compilation errors.
- New Checkbox to preserve all changes: when checked, no generated files will replace any changed files in the GUI Unit test solution. Otherwise, normal merge requirements will be required.
- New Radio Buttons to select Visual Studio 2005 or Visual Studio 2008. Since some users will be exporting Unit test solution folders for modification by Visual Studio developers, the target is not based on any installed version of Visual Studio. Default is Visual Studio 2008 with Framework 3.5 if installed with Framework 2.0 as a fallback.
- Backup folder for Task Tester projects now supported, so that changes can be merged in the case of a code generated/programmer change conflict
Simulated Host Script Generator
- Upgraded the generated screen context definition attributes in sync with improvements to the Simulated Host 2.0 Script interpreter.
Miscellaneous Fixes
- Option to overwrite the web.config file has been added so that changes affecting the web.config (like changing target host) will be reflected in a new web service generation
- Duplicate field names in a field map are now caught during code generation validation, with a message displayed. This avoids exceptions and compile errors due to duplicate definitions in the generation. Also, the message displayed has been improved from “Argument already exists in collection (key)” to Duplicate Field names in the same FieldMap are not supported ([fieldname])
- Fixes to Finite State method generation for a number of different TaskScreen IO Types and combinations, avoiding compile errors and invalid runtime execution
- Studio: When importing a recording from the Recordings tab, a warning will no longer be displayed about the recording already existing in the references list
- A number of TaskScreen properties, when changed, were not setting the “application is dirty” flag, thus not triggering a save messagebox when closing Studio, and possibly causing loss of changes
- When dragging the mouse in a screen display in studio, on occasion a clipboard exception could occur and be displayed (operator could choose continue to avoid any loss of work).