Timing Related Testing
----------------------

This directory contains the sample provider for timing related test cases.
Its an attempt to find out any inconsistencies in the provider load/unload 
(if any) logic.The ideal test case requires that a provider unloads when
another client is invoking enumerate instances for a provider class and 
vice versa. It is quite difficult to create this kind of situation with this 
set of test programs. By running these tests for long hours we might hit some 
problem.

The files included in this test are:

1. TimingProvider.cpp - Provider classes implementation
2. TimingProvider.h - Header for the classes.
3. TimingProviderMain.cpp - Entry point to the provider
4. TimingProvider.mof - Class registration
5. TimingProviderR.mof - Timing provider registration

The provider implements the base class TimingSampleClass with 3 derived classes
TimeOne, TimeTwo, TimeThree.

The instances of the TimeOne and TimeTwo classes are created inside the 
TimingProvider:initialize method in the provider.

build
-----
Run this script to build the provider, compile the MOFs, register the provider,
compile the client program and finally restarting the cimserver.

Client 
------
Makefile.Client - Makefile for compiling TimingClient
TimingClient.cpp

This program tests the TimingProvider implemented by running multiple threads
performing different CIM operations.
main() forks and child calls EnumerateInstances for one class. The parent make
calls to EnumerateInstances and EnumerateClass.
Long sleeps are inserted between the calls to enumerateinstances and 
enumerateClasses.

testscript
----------
This script contains the combination of TimingClient and CLI client programs
with random sleeps inserted between them.
CLI is used to enumerate instances/ instancenames and enumerate classes for the
root/SampleProvider namespace created by the test provider.

Note: Please note, this test program is tested on intel x86 machines running
RedHat Linux 8.0 and AIX, and might not work on other platforms because of the
platform specific implementation of the system calls like fork(), sleep();

TODOS
-----
Currently the test case is tested on Linux and AIX and it needs to be ported
to the windows and other Non-unix platforms.
