void CompareClasses( CIMRepository& r1, CIMRepository& r2, const CIMNamespaceName& namespaceName) { Array<CIMName> classNames1 = r1.enumerateClassNames(namespaceName); Array<CIMName> classNames2 = r2.enumerateClassNames(namespaceName); BubbleSort(classNames1); BubbleSort(classNames2); PEGASUS_TEST_ASSERT(classNames1 == classNames2); for (Uint32 i = 0; i < classNames1.size(); i++) { CIMClass class1 = r1.getClass(namespaceName, classNames1[i]); CIMClass class2 = r2.getClass(namespaceName, classNames2[i]); if (verbose) { cout << "testing class " << namespaceName.getString() << "/"; cout << classNames1[i].getString() << "..." << endl; } if (!class1.identical(class2)) { PutClass("file1", class1); PutClass("file2", class2); cout << "========================================================="; cout << "========================================================="; cout << endl; cout << "ERROR: not identical! - "; cout << "ERROR FOUND testing class: " << namespaceName.getString(); cout << "/"; cout << classNames1[i].getString(); cout << " .... differences follow:" << endl << endl; if (system("diff file1 file2") == -1) { cout << "Error: system(\"diff file1 file2\") failed." << endl; } if (verbose) { XmlWriter::printClassElement(class1, cout); XmlWriter::printClassElement(class2, cout); } failures++; } } }
void CompareInstances( CIMRepository& r1, CIMRepository& r2, const CIMNamespaceName& namespaceName) { Array<CIMName> classNames1 = r1.enumerateClassNames(namespaceName); Array<CIMName> classNames2 = r2.enumerateClassNames(namespaceName); BubbleSort(classNames1); BubbleSort(classNames2); PEGASUS_TEST_ASSERT(classNames1 == classNames2); for (Uint32 i = 0; i < classNames1.size(); i++) { Array<CIMObjectPath> objectPaths1 = r1.enumerateInstanceNamesForClass( namespaceName, classNames1[i]); Array<CIMObjectPath> objectPaths2 = r2.enumerateInstanceNamesForClass( namespaceName, classNames2[i]); // BubbleSort(objectPaths1); // BubbleSort(objectPaths2); PEGASUS_TEST_ASSERT(objectPaths1 == objectPaths2); for (Uint32 j = 0; j < objectPaths2.size(); j++) { CIMInstance inst1 = r1.getInstance(namespaceName, objectPaths1[j]); CIMInstance inst2 = r2.getInstance(namespaceName, objectPaths2[j]); if (verbose) { cout << "testing instance " << namespaceName.getString() << "/"; cout << objectPaths1[j].toString() << "..." << endl; } PEGASUS_TEST_ASSERT(inst1.identical(inst2)); } } }
void Test01(Uint32 mode) { String repositoryRoot; const char* tmpDir = getenv ("PEGASUS_TMP"); if (tmpDir == NULL) { repositoryRoot = "."; } else { repositoryRoot = tmpDir; } repositoryRoot.append("/repository"); FileSystem::removeDirectoryHier(repositoryRoot); CIMRepository r (repositoryRoot, mode); // Create a namespace: const CIMNamespaceName NAMESPACE = CIMNamespaceName ("zzz"); r.createNameSpace(NAMESPACE); // Create a qualifier (and read it back): CIMQualifierDecl q1(CIMName ("abstract"), false, CIMScope::CLASS); r.setQualifier(NAMESPACE, q1); CIMConstQualifierDecl q2 = r.getQualifier(NAMESPACE, CIMName ("abstract")); PEGASUS_TEST_ASSERT(q1.identical(q2)); // Create two simple classes: CIMClass class1(CIMName ("Class1")); class1.addQualifier( CIMQualifier(CIMName ("abstract"), true, CIMFlavor::DEFAULTS)); CIMClass class2(CIMName ("Class2"), CIMName ("Class1")); r.createClass(NAMESPACE, class1); r.createClass(NAMESPACE, class2); // Enumerate the class names: Array<CIMName> classNames = r.enumerateClassNames(NAMESPACE, CIMName(), true); BubbleSort(classNames); PEGASUS_TEST_ASSERT(classNames.size() == 2); PEGASUS_TEST_ASSERT(classNames[0] == "Class1"); PEGASUS_TEST_ASSERT(classNames[1] == "Class2"); // Get the classes and determine if they are identical with input CIMClass c1 = r.getClass(NAMESPACE, CIMName ("Class1"), true, true, false); CIMClass c2 = r.getClass(NAMESPACE, CIMName ("Class2"), true, true, false); PEGASUS_TEST_ASSERT(c1.identical(class1)); PEGASUS_TEST_ASSERT(c1.identical(class1)); Array<CIMClass> classes = r.enumerateClasses(NAMESPACE, CIMName (), true, true, true); // Attempt to delete Class1. It should fail since the class has // children. try { r.deleteClass(NAMESPACE, CIMName ("Class1")); } catch (CIMException& e) { PEGASUS_TEST_ASSERT(e.getCode() == CIM_ERR_CLASS_HAS_CHILDREN); } // Delete all classes created here: r.deleteClass(NAMESPACE, CIMName ("Class2")); r.deleteClass(NAMESPACE, CIMName ("Class1")); // Be sure the classes are really gone: try { CIMClass c1 = r.getClass( NAMESPACE, CIMName ("Class1"), true, true, true); PEGASUS_TEST_ASSERT(false); } catch (CIMException& e) { PEGASUS_TEST_ASSERT(e.getCode() == CIM_ERR_NOT_FOUND); } try { CIMClass c2 = r.getClass( NAMESPACE, CIMName ("Class2"), true, true, true); PEGASUS_TEST_ASSERT(false); } catch (CIMException& e) { PEGASUS_TEST_ASSERT(e.getCode() == CIM_ERR_NOT_FOUND); } FileSystem::removeDirectoryHier(repositoryRoot); }