OmniArchive
OmniArchive is a utility which records and replays events on arbitrary corba interfaces. It is available at
http://sourceforge.net/projects/omniarchive/
What can OmniArchive be used for?
Examining all details and parameter values of calls on a corba interface, without affecting the running system.
Creating unit test cases: simply record sessions of corba calls, then re-play the resulting xml files into the target interface later.
Tweaking corba calls to generate new test cases: xml archives of calls can be edited (programmatically, if desired) to alter parameter values or event timing.
Facilitating an offline proxy interface, when connection to the server is not always available. For one-way (client->server) interfaces, OmniArchive may serve as a proxy implementation, archiving all calls into xml files. When network connection is available between the client and server, OmniArchive can forward all cached calls to the server implementation.
Cutting your team's system integration time drastically. Ever had a bug where a call is not getting handled properly, but the team that wrote the client and the team that wrote the server both say it's the other guy's fault? Getting a detailed and exact description of all calls on the relevant interface is as easy as reproducing the bug. For corba based systems, OmniArchive is so easy to run that it is often the first tool a system test engineer will use to describe errant corba interactions.
Why is OmniArchive more useful than a custom test interface implementation?
OmniArchive will archive ALL interfaces that can be defined in idl.
OmniArchive does not require work to keep the test code in sync with changing idl. Test code is often poorly maintained and needs to be updated when idl files change. Ever wanted to run a corba test harness that hasn't been used for a couple of releases? You usually have to update the harness to handle all the code that other engineers added to the product but not the test code. With OmniArchive, you simply update the idl files and type 'make', and the utility is up to date.
OmniArchive is a man-in-the-middle implementation, archiving calls before forwarding them to the intended target. This allows test code to be run without interrupting a running system.
What do I need to run OmniArchive?
Python. OmniArchive is an omniidl back end which uses omniORBPy to implement your interfaces. Python's dynamic typing makes it easy to generate interface code. Also, OmniArchive uses Gnosis utilities (in Python), which archive Python objects in xml. Several people have expressed a desire for a C++ OmniArchive implementation, which is an eventual goal of the project. Python is available for all the platforms that support omniORB.
The omniArchive utility: 900 lines of script, plus xml-archiving code, free from sourceforge.
The idl for your software.
If you want to use OmniArchive but think it lacks a feature that you need, contact
markjanes@fastmail.fm.
