One important characteristic of the WBEM/CIM architecture is the standard CIM-XML interface between WBEM clients and WBEM servers. This means that you can pick-and-mix clients and servers: use, for example, a test client from one WBEM implementation to test a server from another. I regularly use the WBEM Services Java client to access the openPegasus C++ WBEM server.
CimNavigator is a WBEM client written in Java which provides a generic graphical user interface into a WBEM server, allowing the user to manipulate the schema, create and modify instances and namespaces, and invoke extrinsic methods .
Being written in Java, it is very portable and can be downloaded without charge (although the source code is not made available) from http://www.cimn avigator.com .
Most of the tools described in this chapter have been written by companies but CimNavigator has been written and released by an individual, Andy Abendschein.
The SBLIM project has released a generic CLI called wbemcli . This is a stand-alone program with an input and output syntax suited for use by Shell and Perl scripts and is available from the SBLIM home Web site: http://www-124.ibm.com/sblim/index.html .
SBLIM has also released a tool, called evsub, which is a client application that automates the process of setting up subscriptions to indications. The package also provides indication handlers which signal the indications as they arrive by a creating a pop-up menu, sending an e-mail, executing a shell command or invoking a method on a particular instance of a class. This tool takes a lot of the labour out of testing indication providers.
The openPegasus distribution includes a generic Web browser-based client which can be used for test purposes. At the time of writing it is effectively moribund and incomplete ”most users of openPegasus using instead the WBEM Services client. The openPegasus client does, however, support the operations of retrieving and listing classes and instances.
openPegasus also includes a very simple generic CLI called cimop . In principle, this allows you to issue any of the intrinsic commands. In practice, not all of these have currently been implemented: in particular, enumerateClasses() , invokeMethod() , createClass() , modifyClass() , associators() , references() , getQualifier() , setQualifier() , execQuery() , referenceNames() , associatorNames() , deleteQualifier() , and enumerateQualifiers() are not implemented.
As part of their WBEM Services product, Sun releases a generic WBEM client, known as CIM Workshop which is a graphical application that allows you to browse the CIM schema and to perform operations on CIM classes and instances.
As part of the SBLIM project, IBM has made available a program, known as psg, which generates skeleton code for providers in CMPI C, NPI C and NPI C++ formats.
As part of the same project, IBM has also released a plug-in for Rational Rose which allows CIM models to be imported to and exported from Rational Rose in mof format.
Vintela Inc has released a Java-based code generation tool called CodeGen which uses the Velocity Template Engine (see http://jakarta.apache.org/velocity/). CodeGen surprisingly does not use the mof files to find the necessary details of the classes ”instead it connects to a WBEM server into which the class has been loaded and extracts the details from it.
CodeGen can produce provider stub code or documentation in this manner. It is available from http:// sourceforge .net .
Probably the most useful set of WBEM server tests are those being created by the SBLIM project. This project has developed a test suite including a test infrastructure which you can use to automate your regression testing. The test suite is well documented in a report which can be downloaded from oss.software.ibm.com/sblim/doc/SBLIMTestSuite.pdf . The test suite covers three types of test:
Interface tests to test the providers: do they accept the complete set of parameters, do they correctly return exceptions when they cannot (or should not) carry out the operation?
Consistency tests to test the overall consistency of the management view presented by the providers and WBEM server: is the number of instances of a particular class always the same irrespective of the way in which they are enumerated, are property values consistent with their specification?
Specification tests which use the meta-information about the model to check whether providers implement the class definitions properly: if a property is marked as required, does the provider always return it?
The openPegasus implementation contains a number of simple but useful test tools. Since the openPegasus source is freely available, these tools make useful starting points for you to develop more sophisticated ones. In particular openPegasus comes with a useful scripting tool called wbemexec. This program acts as a WBEM client and takes a file containing XML (valid or not) and sends it to the WBEM server. Whatever is returned is displayed on stdout . This is really useful for checking the WBEM server's response to invalid XML and for checking the reaction of providers to invalid or edge-case parameters.
Intel has made available a CIM Compatibility Checker known as CCX. This is now a little long in the tooth, but it still provides a platform-independent application for testing a CIM implementation against the DMTF's core and common models. Two tests are provided:
CIM Class Definitions testing
CIM Class Instance and Associations testing
In both tests, schema definitions and class definitions such as class properties and associations are verified for existence and correct data type.
There is a number of CIM tools available on the home page of Langdale Consultants ( http://www.langdale.com.au/ ) including CIMValidate, a tool for validating CIM power system models developed by the Electric Power Research Institute (EPRI).
This site provides an interesting viewpoint on WBEM/CIM as the introductory text on the home page says, "The CIM/XML language is a language for representing power system models." SNIA, of course, thinks that CIM is a language for representing storage area networks and in the telecommunications industry we see it as a language for representing network components and services. It is good to see these disparate views since they reflect the wide applicability of WBEM/CIM.
Although driven by Langdale Consultants, CIMValidate is an open source project to which anyone can contribute. The project is maintained on sourceforge.
As part of their support for WMI, Microsoft has developed the WMI Software Developer Kit (SDK). Unfortunately not only does this require a computer running Microsoft's Windows operating system to run, it needs a Microsoft Web browser even to download it!
The WMI SDK includes a program, CIM Studio, which can be used to browse CIM models.
Microsoft also makes available a simple mof editor to allow mof files to be produced somewhat more easily. This is not actually a graphical editor; instead it is a text-based editor specialised for mof programs. This tool is available from the DMTF Web site but it comes with quite an onerous licence including the term : "You may not rent, lease, or lend the software product" which would seem to imply that every member of a team must download his or her own copy.
WBEM Solutions Inc also produces and sells a WBEM SDK which includes automated code generation as well as various generic clients.
Sun Microsystems has released a software development toolkit (SDK) with its WBEM server.
Sun Microsystems has also released a tool, mib2mof , which converts Solaris SNMP MIBs to mof files.
Nortel Networks has released a simple tool into the public domain called mof2html . This tool, which is written in C++, should compile on almost any operating system (it has been tested on various versions of Linux and SUN Solaris). If it is executed pointing to the top-level mof file of a DMTF release (normally called CIM_SchemaXX.mof where XX is the version number, e.g., CIM_Schema28.mof) then it creates html files allowing the various classes and properties to be browsed with a Web browser with hot links to superclasses, etc.