
Development of this project has ended. This web space is maintained only for archival reasons.
The Common Object Request Broker Architecture (CORBA) supports the construction of distributed systems containing many components. These components can interact in complex ways, not necessarily conforming to a strict client-server model. This generality is necessary to enable many real-world systems to be built on a distributed architecture. However, it is also the reason why testing these systems is so difficult. Because each component can have complex dependencies on any number of other components, it is often impossible to test them in isolation.
The Manufacturer's CORBA Interface Testing Toolkit (MCITT, or "M-kit") mitigates this problem by minimizing the amount of effort needed to produce simple emulations -- test servers -- that can be used to replace actual servers in a testing scenario. The person doing the testing only needs to specify the behaviors that are important for the specific scenario being examined, and MCITT will do the rest. CORBA boilerplate code, memory management, and stubs for unused operations are generated automatically.
There are two ways of defining behaviors for MCITT: the procedural way, using Interface Testing Language (ITL), and the declarative way, using Component Interaction Specifications (CISs). Currently, Component Interaction Specifications have some limitations, but are mostly implemented.
Server emulation is useful for unit testing, where one component must be tested in isolation; for system testing and integration testing when some components are not available or not trusted; and for conformance testing, to provide a more controlled testing environment. MCITT provides additional services in support of conformance and performance testing with specialized ITL language constructs: conformance test assertions, automatic inclusion of conformance test boilerplate, and timed loops for performance evaluation. Test assertions can even be derived automatically from Component Interaction Specifications.
Interface Testing Language is a super-simplified procedural language for specifying and testing the behavior of CORBA clients and servers. The ITL compiler, itlc, uses a set of files called a binding to translate ITL into an implementation language. Different bindings can be created to absorb the differences between one platform and the next, thus achieving a higher degree of platform independence.
Currently, the MCITT distribution comes with bindings for Orbix 2 with the Sparcworks C++ compiler (Solaris) and the Visual C++ compiler (NT 4.0), for VisiBroker 3.3 with the Sparcworks C++ compiler, and a partial binding for OrbixWeb 3. Bindings for other platforms are easily created by copying and modifying the existing bindings with a text editor. The platform changes are then automatically applied to all ITL compilations that select the new binding.
ITL provides the following advantages over C++:
For specific details on the ITL language, please see the ITL documentation or the MCITT User's Guide.
Instead of defining all behaviors procedurally, an ITL file may instead reference a Component Interaction Specification. A Component Interaction Specification, or CIS, is a textual specification of an interaction scenario for an entire distributed system. A CIS can be used to generate servers that will execute the scenario that it describes.
An interaction scenario consists of a tree of CORBA requests having specified inputs, outputs, and/or return values. The tree is rooted at the test client that initiates the entire chain of events. In order to capture the tree structure of the interactions in a flat ASCII script, an outline numbering convention similar to that of UML Collaboration Diagrams is used:
1 ... first request by testing client on server A ...
2 ... second request by testing client on server A ...
2.1 ... request by server A on server B ...
2.2 ... request by server A on server C ...
3 ... third request by testing client ...
The meaning of the above outline is that the requests on server B and server C are both made by server A before it responds to the second request made by the test client. That is, the implementation of the operation requested in the testing client's second request makes requests on servers B and C before it returns a result to the testing client.
For further details, limitations, and examples of Component Interaction Specifications, please see the CIS documentation or the MCITT User's Guide.
All of the previously described functionality pertains to itlc, the ITL compiler. This is only one of the tools in MCITT, which also contains idlmkmf ("IDL make makefiles") and TEd (the NIST Test Editor).
Idlmkmf generates makefile rules for all of the IDL files in the working (current) directory, plus a few useful variable definitions. Then it is only necessary to add rules specific to the clients and servers being built to produce a complete makefile for the CORBA application.
TEd is a tool for non-interactive editing of test scripts and programs. It is used, for example, to automate the migration of ITL files from a C++ binding to Java. Written by Chris Schanzle for the NIST SQL conformance testing program, it provides much of the functionality of the standard Unix tool sed, but it is more portable and has some operational differences that make it better suited for editing test cases. Because of its usefulness in this regard, it has been included in MCITT.
Additional detail on the usage of idlmkmf and TEd can be found in the documentation directory in the MCITT distribution.
The MCITT distribution and instructions for downloading can be found at ftp://ftp.cme.nist.gov/pub/mcitt.
The MCITT distribution contains a directory of demos (example programs) and a directory of documentation.
This software was developed at the National Institute of Standards and Technology by employees of the Federal Government in the course of their official duties. Pursuant to title 17 Section 105 of the United States Code this software is not subject to copyright protection and is in the public domain.
You can redistribute it and/or modify it freely provided that any derivative works bear some notice that they are derived from it, and any modified versions bear some notice that they have been modified. We would appreciate acknowledgement if the software is used.
This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. NIST does not assume legal liability or responsibility for anything done with this software.
Where necessary, certain software packages are identified in this document. Such identification does not imply recommendation or endorsement by the National Institute of Standards and Technology, nor does it imply that the packages identified are necessarily the best available for the purpose.
Because the NT binaries for MCITT are compiled with the version of gcc provided in the Cygnus Development Kit, they depend on Cygnus' Cygwin32 library. This library is licensed under the terms of the GNU General Public License (*NOT* the GNU Library General Public License). Therefore, the NT distribution of MCITT is also constrained by the terms of the GNU General Public License, and cannot be commercialized in its present form.
Cygnus sells a commercial version of the Cygwin32 library in their GNUPro Toolkit. This could be licensed in order to commercialize an NT version of MCITT. One could also simply port MCITT to a completely different compiler. (NIST does not endorse any commercial products.)
The NT binary distribution of MCITT also includes two executables from the CDK (g++.exe and cpp.exe) that are needed to allow the IDL CFE to use the GNU C preprocessor. It would be necessary to modify the IDL CFE to reference a different preprocessor in order to commercialize MCITT.
A copy of the GNU General Public License is provided in the doc subdirectory of the MCITT distribution. A full copy of the Cygnus Developer's Kit is available from http://sourceware.cygnus.com/cygwin/.
MCITT incorporates the IDL Compiler Front End, which is licensed as follows:
Copyright 1992, 1993, 1994 Sun Microsystems, Inc. Printed in the United States of America. All Rights Reserved.
This product is protected by copyright and distributed under the following license restricting its use.
The Interface Definition Language Compiler Front End (CFE) is made available for your use provided that you include this license and copyright notice on all media and documentation and the software program in which this product is incorporated in whole or part. You may copy and extend functionality (but may not remove functionality) of the Interface Definition Language CFE without charge, but you are not authorized to license or distribute it to anyone else except as part of a product or program developed by you or with the express written consent of Sun Microsystems, Inc. ("Sun").
The names of Sun Microsystems, Inc. and any of its subsidiaries or affiliates may not be used in advertising or publicity pertaining to distribution of Interface Definition Language CFE as permitted herein.
This license is effective until terminated by Sun for failure to comply with this license. Upon termination, you shall destroy or return all code and documentation for the Interface Definition Language CFE.
INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED WITH NO SUPPORT AND WITHOUT ANY OBLIGATION ON THE PART OF Sun OR ANY OF ITS SUBSIDIARIES OR AFFILIATES TO ASSIST IN ITS USE, CORRECTION, MODIFICATION OR ENHANCEMENT.
SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES SHALL HAVE NO LIABILITY WITH RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY INTERFACE DEFINITION LANGUAGE CFE OR ANY PART THEREOF.
IN NO EVENT WILL SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES BE LIABLE FOR ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL DAMAGES, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
Use, duplication, or disclosure by the government is subject to restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR 52.227-19.
Sun, Sun Microsystems and the Sun logo are trademarks or registered trademarks of Sun Microsystems, Inc.
NIST/CSL/SDCT Conformance Testing Group Projects and Activities Software Acknowledgment and Redistribution
The conformance test suites provided here are released by the National Institute of Standards and Technology (NIST), an agency of the U.S. Department of Commerce, Gaithersburg MD 20899, USA. The test suites bear no warranty, either express or implied. NIST does not assume legal liability nor responsibility for a User's use of a test suite or the results of such use.
Please note that within the United States, copyright protection, under Section 105 of the United States Code, Title 17, is not available for any work of the United States Government and/or for any works created by United States Government employees. User acknowledges that these test suites contain work which was created by NIST employees and is therefore in the public domain and not subject to copyright. The User may use, distribute, or incorporate these test suites provided the User acknowledges this via an explicit acknowledgment of NIST-related contributions to the User's work. User also agrees to acknowledge, via an explicit acknowledgment, that any modifications or alterations have been made to these test suites before redistribution.
Certain software products are identified in this document to foster understanding. Such identification does not imply recommendation or endorsement by the National Institute of Standards and Technology, nor does it imply that the products identified are necessarily the best available for the purpose.
Date Created: 1997-11-25
Last modified: Tue Jan 22 10:39:28 EST 2002
National Institute of Standards & Technology
[Disclaimer/Privacy]