Changeset 13082 in vbox for trunk/src/VBox/Main/testcase
- Timestamp:
- Oct 8, 2008 2:36:19 PM (17 years ago)
- svn:sync-xref-src-repo-rev:
- 37570
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/testcase/tstAPI.cpp
r12668 r13082 970 970 // Setup base metrics 971 971 // Note that one needs to set up metrics after a session is open for a machine. 972 com::SafeIfaceArray<IPerformanceMetric> affectedMetrics; 972 973 com::SafeIfaceArray<IUnknown> objects(2); 973 974 host.queryInterfaceTo(&objects[0]); 974 975 machine.queryInterfaceTo(&objects[1]); 975 976 CHECK_ERROR_BREAK (collector, SetupMetrics(ComSafeArrayAsInParam(baseMetrics), 976 ComSafeArrayAsInParam(objects), 1u, 10u) ); 977 ComSafeArrayAsInParam(objects), 1u, 10u, 978 ComSafeArrayAsOutParam(affectedMetrics)) ); 979 listAffectedMetrics(virtualBox, 980 ComSafeArrayAsInParam(affectedMetrics)); 981 affectedMetrics.setNull(); 977 982 978 983 // Get console … … 996 1001 queryMetrics(virtualBox, collector, ComSafeArrayAsInParam(objects)); 997 1002 998 com::SafeIfaceArray<IPerformanceMetric> affectedMetrics;999 1003 printf("\nDrop collected metrics: ----------------------------------------\n"); 1000 1004 CHECK_ERROR_BREAK (collector, 1001 SetupMetrics Ex(ComSafeArrayAsInParam(baseMetrics),1002 1003 1005 SetupMetrics(ComSafeArrayAsInParam(baseMetrics), 1006 ComSafeArrayAsInParam(objects), 1007 1u, 5u, ComSafeArrayAsOutParam(affectedMetrics)) ); 1004 1008 listAffectedMetrics(virtualBox, 1005 1009 ComSafeArrayAsInParam(affectedMetrics)); … … 1012 1016 printf("\nDisable collection of VM metrics: ------------------------------\n"); 1013 1017 CHECK_ERROR_BREAK (collector, 1014 DisableMetrics Ex(ComSafeArrayAsInParam(baseMetrics),1015 1016 1018 DisableMetrics(ComSafeArrayAsInParam(baseMetrics), 1019 ComSafeArrayAsInParam(vmObject), 1020 ComSafeArrayAsOutParam(affectedMetrics)) ); 1017 1021 listAffectedMetrics(virtualBox, 1018 1022 ComSafeArrayAsInParam(affectedMetrics)); … … 1023 1027 printf("\nRe-enable collection of all metrics: ---------------------------\n"); 1024 1028 CHECK_ERROR_BREAK (collector, 1025 EnableMetrics Ex(ComSafeArrayAsInParam(baseMetrics),1026 1027 1029 EnableMetrics(ComSafeArrayAsInParam(baseMetrics), 1030 ComSafeArrayAsInParam(objects), 1031 ComSafeArrayAsOutParam(affectedMetrics)) ); 1028 1032 listAffectedMetrics(virtualBox, 1029 1033 ComSafeArrayAsInParam(affectedMetrics)); … … 1073 1077 com::SafeArray<BSTR> retNames; 1074 1078 com::SafeIfaceArray<IUnknown> retObjects; 1079 com::SafeArray<BSTR> retUnits; 1080 com::SafeArray<ULONG> retScales; 1081 com::SafeArray<ULONG> retSequenceNumbers; 1075 1082 com::SafeArray<ULONG> retIndices; 1076 1083 com::SafeArray<ULONG> retLengths; … … 1080 1087 ComSafeArrayAsOutParam(retNames), 1081 1088 ComSafeArrayAsOutParam(retObjects), 1089 ComSafeArrayAsOutParam(retUnits), 1090 ComSafeArrayAsOutParam(retScales), 1091 ComSafeArrayAsOutParam(retSequenceNumbers), 1082 1092 ComSafeArrayAsOutParam(retIndices), 1083 1093 ComSafeArrayAsOutParam(retLengths), … … 1087 1097 for (unsigned i = 0; i < retNames.size(); i++) 1088 1098 { 1089 // Get info for the metric 1090 com::SafeArray<BSTR> nameOfMetric(1); 1091 Bstr tmpName(retNames[i]); 1092 tmpName.detachTo (&nameOfMetric[0]); 1093 com::SafeIfaceArray<IUnknown> anObject(1); 1094 ComPtr<IUnknown> tmpObject(retObjects[i]); 1095 tmpObject.queryInterfaceTo(&anObject[0]); 1096 com::SafeIfaceArray <IPerformanceMetric> metricInfo; 1097 CHECK_RC_BREAK (collector->GetMetrics( ComSafeArrayAsInParam(nameOfMetric), 1098 ComSafeArrayAsInParam(anObject), 1099 ComSafeArrayAsOutParam(metricInfo) )); 1100 BSTR metricUnitBSTR; 1101 CHECK_RC_BREAK (metricInfo[0]->COMGETTER(Unit) (&metricUnitBSTR)); 1102 Bstr metricUnit(metricUnitBSTR); 1099 Bstr metricUnit(retUnits[i]); 1103 1100 Bstr metricName(retNames[i]); 1104 LONG minVal, maxVal; 1105 CHECK_RC_BREAK (metricInfo[0]->COMGETTER(MinimumValue) (&minVal)); 1106 CHECK_RC_BREAK (metricInfo[0]->COMGETTER(MaximumValue) (&maxVal)); 1107 RTPrintf("%-10ls %-20ls ", getObjectName(aVirtualBox, anObject[0]).raw(), metricName.raw()); 1101 RTPrintf("%-10ls %-20ls ", getObjectName(aVirtualBox, retObjects[i]).raw(), metricName.raw()); 1108 1102 const char *separator = ""; 1109 1103 for (unsigned j = 0; j < retLengths[i]; j++) 1110 1104 { 1111 if ( strcmp((const char *)metricUnit.raw(), "%"))1105 if (retScales[i] == 1) 1112 1106 RTPrintf("%s%d %ls", separator, retData[retIndices[i] + j], metricUnit.raw()); 1113 1107 else 1114 RTPrintf("%s%d.%02d%%", separator, retData[retIndices[i] + j] / 1000, (retData[retIndices[i] + j] / 10) % 100); 1108 RTPrintf("%s%d.%02d%ls", separator, retData[retIndices[i] + j] / retScales[i], 1109 (retData[retIndices[i] + j] * 100 / retScales[i]) % 100, metricUnit.raw()); 1115 1110 separator = ", "; 1116 1111 }
Note:
See TracChangeset
for help on using the changeset viewer.