CADSWES Maintenance Accomplishments -- July 2013 (edit 8-7-2013)
RIVERWARE
RELEASES, SOFTWARE MAINTENANCE and DEVELOPMENT ENVIRONMENT
Releases and Patches
RiverWare 6.3.2 was released on July 3, 2013. The release included the following release notes:
SUMMARY OF CHANGES IN RIVERWARE PATCH RELEASE 6.3.2 The following bugs were fixed:
Unit Schemes:
|
RIVERWARE
RELEASES, SOFTWARE MAINTENANCE and DEVELOPMENT ENVIRONMENT
Regression Tests
The regression tests continue to be maintained on a daily basis. This involves updating the regression tests to exercise new developments in the code. Also, as new code is added to the development area, the model comparisons performed in the nightly regression tests usually show differences (for example, because a new method category may have been added). When this occurs, the regression tests need to be updated to reflect the current state of the development area so model comparisons do not fail. In addition, every week, the daily history of each regression test is analyzed to determine if the run time or model size has significantly changed because of new development.
RIVERWARE
RELEASES, SOFTWARE MAINTENANCE and DEVELOPMENT ENVIRONMENT
Download, Installation and Release Process
RIVERWARE
RELEASES, SOFTWARE MAINTENANCE and DEVELOPMENT ENVIRONMENT
Licensing
RIVERWARE
RELEASES, SOFTWARE MAINTENANCE and DEVELOPMENT ENVIRONMENT
Development Environment
New versions of Qt4 and Qwt built without Qt3 Support:
(See also sections below on application-level Qt4 porting completion).
The latest patch releases of Qt and Qwt were acquired and built without support for Qt3 symbols and classes. (Qwt is our plotting library). This was done primarily to ensure completion of all Qt3-to-Qt4 porting of RiverWare, the Study Manager, and all ancillary CADSWES libraries. These new Qt and Qwt libraries were deployed in the RiverWare 6.4 and Study Manager builds. The new Qt and Qwt libraries are:
- Qt 4.8.5 (July 2013) -- replaces our use of Qt 4.8.4 (Nov. 2012)
... this includes WebKit 2.2.4 -- replaces WebKit 2.2.3.- Qwt 5.2.3 (Nov. 2012) -- replaces our use of Qwt 5.2.2 (Aug. 2011)
The RiverWare Remote Manager Framework (the basis for distributed Multiple Run Management) was ported to Qt 4.8.5 (without Qt 3 support). The framework contains four components - the Qt Solutions Service library, the RiverWare Remote Manager, Service and Service Controller, each of which was ported to Qt 4.8.5. Because the code was written against Qt 4 it didn't use any deprecated Qt 3 classes or methods and the port was straightforward. The port was used as an opportunity to remove eighteen obsolete source files from the Remote solution - files which were first implemented in the Remote solution and were then migrated to RiverWare proper.
RiverWare DSS connectivity, which was previously ported to Qt 4.8.4, was tested to verify it's working in the new environment.
The RiverWare overnight build scripts were modified to support a bifurcated environment - Qt 4.8.4 for prerel and Qt 4.8.5 for builds.
RIVERWARE
RELEASES, SOFTWARE MAINTENANCE and DEVELOPMENT ENVIRONMENT
Software Maintenance - Qt4 Port
Qt3-to-Qt4 Port Completion:
The ClientServer library was ported from Qt3 to Qt4. The Client/Server library had previously been deployed as an independent ancillary library but is now among the RiverWare source code libraries.
The port of the ClientServer code from using Q3SocketDevice to QTcpSocket was tested extensively with the HDB Server. This uncovered a problem when large quantities of character data were being pulled from HDB (such as in pulling a list of all agencies available as agency ids in the database). Only some of the data would be pulled by RiverWare and then RiverWare and the HDB server would get out of sync and the connection would be frozen. Stepping through ClientServer code with the debugger identified the problem as follows. When data exceeds 2048 characters, it is pulled from the QTcpSocket in chunks via a loop created between the wait() and the syncRead() methods of the Connection class. The socket's waitForReadyRead() method was called in this loop. If this method is re-called without data from the first call being completely pulled from the socket, its behavior is to block and wait for additional new data, eventually timing out and giving a return value of false, which terminates the original data pull with only partial completion and interrupts client/server communication. A fix was implemented so that if data is being pulled from the socket in chunks, the waitForReadyRead() method is not re-called on the socket until all data that is expected in the already initiated data pull has been read by the client.
DbDmi, the last RiverWare application-level, internal library still using Qt3 provisions was ported to Qt4. DbDmi modules ported in July include:
- DbDmi Import/Export dialog
- HDB Meta-Data dialog
- HDB Model-Run ID dialog
- HDB Model-Run ID Edit dialog
RiverWare (and the Study Manager, see below) were built with a new Qt4 build lacking Qt3 Support. This confirmed the completion of the Qt3-to-Qt4 ports of those applications.
RIVERWARE
RELEASES, SOFTWARE MAINTENANCE and DEVELOPMENT ENVIRONMENT
Software Maintenance - Icons
Simulation Object icons are now sourced via Qt Resources
The 40x40 pixel icons for Simulation Objects (from which the smaller icon versions are computed) have been moved from "XPM" source code to PNG image files which are compiled into RiverWare via Qt Resources. This set of icons had mistakenly been left out of the original migration of RiverWare icons to Qt Resources. The first step in this process was adding these object icons to RiverWare's mechanism of exporting the full set of RiverWare icons as image files and index webpages (HTML). These Simulation Object icon image files can be seen on this generated webpage:
RIVERWARE
RELEASES, SOFTWARE MAINTENANCE and DEVELOPMENT ENVIRONMENT
Software Maintenance - Tcl Interpreter Deletion
In fixing a diagnostic manager bug, it was noticed that in a couple of cases in RiverWare where Tcl Interpreters are dynamically allocated for loading files, they are not being deleted, creating potential memory leaks. Deletion calls were added to the cwOutputDevice and DiagGroupMgr classes.
STUDY MANAGER
RELEASES, SOFTWARE MAINTENANCE and DEVELOPMENT ENVIRONMENT
Software Maintenance - Qt4 Port
Qt3-to-Qt4 Port Completion:
The Study Manager was ported to Qt 4.8.5 (without Qt 3 support). Because the code was written against Qt 4 it didn't use any deprecated Qt 3 classes or methods and the port was straightforward. The port was used as an opportunity simplify the plugin and static library project files by refactoring their common portions to the new PluginBase.pri and StaticLibBase.pri project include files.
--- (end) ---