⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testexecquery.cpp

📁 Pegasus is an open-source implementationof the DMTF CIM and WBEM standards. It is designed to be por
💻 CPP
字号:
//%2006//////////////////////////////////////////////////////////////////////////// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;// IBM Corp.; EMC Corporation, The Open Group.// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;// EMC Corporation; VERITAS Software Corporation; The Open Group.// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;// EMC Corporation; Symantec Corporation; The Open Group.//// Permission is hereby granted, free of charge, to any person obtaining a copy// of this software and associated documentation files (the "Software"), to// deal in the Software without restriction, including without limitation the// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or// sell copies of the Software, and to permit persons to whom the Software is// furnished to do so, subject to the following conditions:// // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.////==============================================================================//// Author: Amit K Arora, IBM (amita@in.ibm.com)//// Modified By: ////%/////////////////////////////////////////////////////////////////////////////#include <Pegasus/Client/CIMClient.h>#define QUERY1 "Select * from TST_Person"#define QUERY2 "Select * from TST_Person where name = \"Mike\""#define NAME2  "Mike"#define QUERY3 "select * from TST_Person where Name = \"Saara\" and \                extraProperty = \"default\""#define NAME3  "Saara"#define PROP3  "default"#define QUERY4 "select * from TST_Person where Name = \"Mike\" or \                name = \"Father\""#define NAME4a "Mike"#define NAME4b "Father"PEGASUS_USING_PEGASUS;PEGASUS_USING_STD;CIMNamespaceName NAMESPACE("test/TestProvider");void testQuery1(CIMClient& client){   unsigned int matchedCount = 0;   Array<CIMObject> arr=client.execQuery(NAMESPACE,String("WQL"),                                         String(QUERY1));           Array<CIMInstance> instances = client.enumerateInstances(                                 NAMESPACE, CIMName("TST_Person"));   if(arr.size() != instances.size())   {      throw(Exception("Number of instances returned do not match."));   }   for(unsigned int i=0;i<arr.size();i++)   {     int idx = arr[i].findProperty(CIMName("name"));     CIMValue cv1 =  arr[i].getProperty(idx).getValue();     for(unsigned int j=0;j<instances.size();j++)     {       idx = instances[j].findProperty(CIMName("name"));       CIMValue cv2 =  instances[j].getProperty(idx).getValue();       if(cv1.equal(cv2))       {          matchedCount++;          instances.remove(j);       }       else          continue;     }   }      if(matchedCount != arr.size())         throw(Exception("The Property values do not match."));}void testQuery2(CIMClient& client){   unsigned int matchedCount = 0;   Array<CIMObject> arr=client.execQuery(NAMESPACE,String("WQL"),                                         String(QUERY2));           Array<CIMInstance> instancesAll = client.enumerateInstances(                                 NAMESPACE, CIMName("TST_Person"));   Array<CIMInstance> instances;   for(unsigned int i=0;i<instancesAll.size();i++)   {     int idx = instancesAll[i].findProperty(CIMName("name"));     CIMValue cv1 =  instancesAll[i].getProperty(idx).getValue();     if(String::equal(cv1.toString(), String(NAME2)))       instances.append(instancesAll[i]);   }      if(arr.size() != instances.size())   {      throw(Exception("Number of instances returned do not match."));   }   for(unsigned int i=0;i<arr.size();i++)   {     int idx = arr[i].findProperty(CIMName("name"));     CIMValue cv1 =  arr[i].getProperty(idx).getValue();     for(unsigned int j=0;j<instances.size();j++)     {       idx = instances[j].findProperty(CIMName("name"));       CIMValue cv2 =  instances[j].getProperty(idx).getValue();       if(cv1.equal(cv2))       {          matchedCount++;          instances.remove(j);       }       else          continue;     }   }   if(matchedCount != arr.size())         throw(Exception("The Property values do not match."));}void testQuery3(CIMClient& client){   unsigned int matchedCount = 0;   Array<CIMObject> arr=client.execQuery(NAMESPACE,String("WQL"),                                         String(QUERY3));           Array<CIMInstance> instancesAll = client.enumerateInstances(                                 NAMESPACE, CIMName("TST_Person"));   Array<CIMInstance> instances;   for(unsigned int i=0;i<instancesAll.size();i++)   {     Boolean testCond = false;     int idx = instancesAll[i].findProperty(CIMName("name"));     CIMValue cv1 =  instancesAll[i].getProperty(idx).getValue();     idx = instancesAll[i].findProperty(CIMName("extraProperty"));     if(idx >= 0)      {       CIMValue cv2 =  instancesAll[i].getProperty(idx).getValue();       if(String::equal(cv2.toString(),String(PROP3)))           testCond = true;     }     if(String::equal(cv1.toString(),String(NAME3)) && testCond)       instances.append(instancesAll[i]);   }   if(arr.size() != instances.size())   {      throw(Exception("Number of instances returned do not match."));   }   for(unsigned int i=0;i<arr.size();i++)   {     int idx = arr[i].findProperty(CIMName("name"));     CIMValue cv1 =  arr[i].getProperty(idx).getValue();     for(unsigned int j=0;j<instances.size();j++)     {       idx = instances[j].findProperty(CIMName("name"));       CIMValue cv2 =  instances[j].getProperty(idx).getValue();       if(cv1.equal(cv2))       {          matchedCount++;          instances.remove(j);       }       else          continue;     }   }   if(matchedCount != arr.size())         throw(Exception("The Property values do not match."));}void testQuery4(CIMClient& client){   unsigned int matchedCount = 0;   Array<CIMObject> arr=client.execQuery(NAMESPACE,String("WQL"),                                         String(QUERY4));           Array<CIMInstance> instancesAll = client.enumerateInstances(                                 NAMESPACE, CIMName("TST_Person"));   Array<CIMInstance> instances;   for(unsigned int i=0;i<instancesAll.size();i++)   {     int idx = instancesAll[i].findProperty(CIMName("name"));     CIMValue cv1 =  instancesAll[i].getProperty(idx).getValue();     if(String::equal(cv1.toString(),String(NAME4a)) ||        String::equal(cv1.toString(),String(NAME4b)))       instances.append(instancesAll[i]);   }   if(arr.size() != instances.size())   {      throw(Exception("Number of instances returned do not match."));   }   for(unsigned int i=0;i<arr.size();i++)   {     int idx = arr[i].findProperty(CIMName("name"));     CIMValue cv1 =  arr[i].getProperty(idx).getValue();     for(unsigned int j=0;j<instances.size();j++)     {       idx = instances[j].findProperty(CIMName("name"));       CIMValue cv2 =  instances[j].getProperty(idx).getValue();       if(cv1.equal(cv2))       {          matchedCount++;          instances.remove(j);       }       else          continue;     }   }   if(matchedCount != arr.size())         throw(Exception("The Property values do not match."));}int main(int argc, char** argv){  CIMClient client;  String testName;  try  {    client.connectLocal();    testName = String("testQuery1");    testQuery1(client);    testName = String("testQuery2");    testQuery2(client);    testName = String("testQuery3");    testQuery3(client);    testName = String("testQuery4");    testQuery4(client);  }  catch(Exception& e)  {    cout << argv[0] << ": "<< e.getMessage() << endl;    cout << argv[0] << " ----- " << testName << " testcase failed" << endl;    client.disconnect();     return 1;  }   client.disconnect();   cout << argv[0] << " +++++ passed all tests" << endl;  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -