1 //%/////////////////////////////////////////////////////////////////////////////
\r
3 // Copyright (c) 2000, 2001 The Open group, BMC Software, Tivoli Systems, IBM
\r
5 // Permission is hereby granted, free of charge, to any person obtaining a copy
\r
6 // of this software and associated documentation files (the "Software"), to
\r
7 // deal in the Software without restriction, including without limitation the
\r
8 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
\r
9 // sell copies of the Software, and to permit persons to whom the Software is
\r
10 // furnished to do so, subject to the following conditions:
\r
12 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
\r
13 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
\r
14 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
\r
15 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
\r
16 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
\r
17 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
\r
18 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
\r
19 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\r
21 //==============================================================================
\r
23 // Author: Mike Brasher (mbrasher@bmc.com)
\r
27 //%/////////////////////////////////////////////////////////////////////////////
\r
30 #include <Pegasus/Common/Selector.h>
\r
31 #include <Pegasus/Client/CIMClient.h>
\r
33 PEGASUS_USING_PEGASUS;
\r
36 const String NAMESPACE = "root/cimv2";
\r
38 static void TestGetClass(CIMClient& client)
\r
40 CIMClass c = client.getClass(
\r
41 NAMESPACE, "CIM_ComputerSystem", false, false, true);
\r
46 static void TestClassOperations(CIMClient& client)
\r
50 CIMClass c1("SubClass", "CIM_ManagedElement");
\r
51 c1.addQualifier(CIMQualifier("abstract", Boolean(true)));
\r
52 c1.addProperty(CIMProperty("count", Uint32(99)));
\r
53 c1.addProperty(CIMProperty("ratio", Real64(66.66)));
\r
54 c1.addProperty(CIMProperty("message", String("Hello World")));
\r
55 client.createClass(NAMESPACE, c1);
\r
59 CIMClass c2 = client.getClass(NAMESPACE, "SubClass", false);
\r
60 // assert(c1.identical(c2));
\r
62 // Modify the class:
\r
64 c2.removeProperty(c2.findProperty("message"));
\r
65 client.modifyClass(NAMESPACE, c2);
\r
69 CIMClass c3 = client.getClass(NAMESPACE, "SubClass", false);
\r
70 // assert(c3.identical(c2));
\r
72 // EnumerateClassNames:
\r
74 Array<String> classNames = client.enumerateClassNames(
\r
75 NAMESPACE, "CIM_ManagedElement", false);
\r
77 Boolean found = false;
\r
79 for (Uint32 i = 0; i < classNames.size(); i++)
\r
81 if (CIMName::equal(classNames[i], "SubClass"))
\r
89 client.deleteClass(NAMESPACE, "SubClass");
\r
91 // Get all the classes;
\r
94 classNames = client.enumerateClassNames(NAMESPACE, String(), false);
\r
96 Array<CIMClass> classDecls = client.enumerateClasses(
\r
97 NAMESPACE, String(), false, false, true, true);
\r
99 assert(classDecls.size() == classNames.size());
\r
101 for (Uint32 i = 0; i < classNames.size(); i++)
\r
103 CIMClass tmp = client.getClass(
\r
104 NAMESPACE, classNames[i], false, true, true);
\r
106 assert(CIMName::equal(classDecls[i].getClassName(), classNames[i]));
\r
108 assert(tmp.identical(classDecls[i]));
\r
112 static void TestQualifierOperations(CIMClient& client)
\r
114 // Create two qualifier declarations:
\r
116 CIMQualifierDecl qd1("qd1", false, CIMScope::CLASS, CIMFlavor::TOSUBCLASS);
\r
117 client.setQualifier(NAMESPACE, qd1);
\r
119 CIMQualifierDecl qd2("qd2", "Hello", CIMScope::PROPERTY | CIMScope::CLASS,
\r
120 CIMFlavor::OVERRIDABLE);
\r
121 client.setQualifier(NAMESPACE, qd2);
\r
123 // Get them and compare:
\r
125 CIMQualifierDecl tmp1 = client.getQualifier(NAMESPACE, "qd1");
\r
126 assert(tmp1.identical(qd1));
\r
128 CIMQualifierDecl tmp2 = client.getQualifier(NAMESPACE, "qd2");
\r
129 assert(tmp2.identical(qd2));
\r
131 // Enumerate the qualifiers:
\r
133 Array<CIMQualifierDecl> qualifierDecls = client.enumerateQualifiers(NAMESPACE);
\r
135 for (Uint32 i = 0; i < qualifierDecls.size(); i++)
\r
137 CIMQualifierDecl tmp = qualifierDecls[i];
\r
139 if (CIMName::equal(tmp.getName(), "qd1"))
\r
140 assert(tmp1.identical(tmp));
\r
142 if (CIMName::equal(tmp.getName(), "qd2"))
\r
143 assert(tmp2.identical(tmp));
\r
146 // Delete the qualifiers:
\r
148 client.deleteQualifier(NAMESPACE, "qd1");
\r
149 client.deleteQualifier(NAMESPACE, "qd2");
\r
152 static void TestInstanceOperations(CIMClient& client)
\r
154 // Delete the class if it already exists:
\r
158 client.deleteClass(NAMESPACE, "myclass");
\r
162 // Ignore delete class!
\r
166 // Create a new class:
\r
168 CIMClass cimClass("myclass");
\r
170 .addProperty(CIMProperty("last", String())
\r
171 .addQualifier(CIMQualifier("key", true)))
\r
172 .addProperty(CIMProperty("first", String())
\r
173 .addQualifier(CIMQualifier("key", true)))
\r
174 .addProperty(CIMProperty("age", Uint8(0))
\r
175 .addQualifier(CIMQualifier("key", true)));
\r
176 client.createClass(NAMESPACE, cimClass);
\r
178 // Create an instance of that class:
\r
180 CIMInstance cimInstance("myclass");
\r
181 cimInstance.addProperty(CIMProperty("last", "Smith"));
\r
182 cimInstance.addProperty(CIMProperty("first", "John"));
\r
183 cimInstance.addProperty(CIMProperty("age", Uint8(101)));
\r
184 String instanceName = cimInstance.getInstanceName(cimClass);
\r
185 client.createInstance(NAMESPACE, cimInstance);
\r
187 // Get the instance and compare with created one:
\r
190 CIMReference::instanceNameToReference(instanceName, ref);
\r
191 CIMInstance tmp = client.getInstance(NAMESPACE, ref);
\r
193 // cimInstance.print();
\r
195 // assert(cimInstance.identical(tmp));
\r
199 int main(int argc, char** argv)
\r
204 CIMClient client(&selector);
\r
206 client.connect("localhost:5988");
\r
207 // client.connect("216.218.247.109:5988");
\r
208 // TestGetClass(client);
\r
209 TestQualifierOperations(client);
\r
210 TestClassOperations(client);
\r
211 TestInstanceOperations(client);
\r
213 catch(Exception& e)
\r
215 PEGASUS_STD(cerr) << "Error: " << e.getMessage() << PEGASUS_STD(endl);
\r
219 PEGASUS_STD(cout) << "+++++ passed all tests" << PEGASUS_STD(endl);
\r